首先抱歉好久没来论坛发帖了,以前曾经发过一个关于物流中心配送问题的求助帖,问题虽然在论坛内没有得到解决,但是后来我阅读了一些关于遗传算法的文献最终解决了该问题,现将MATLAB程序给大家分享一下,有什么不对的地方希望大家多批评指正:

原始问题:

某物流中心拥有一支货运车队,每台货运车辆的载重量(吨)相同、平均速度(千米/小时)相同,该物流中心用这样的车为若干个客户配送物资,物流中心与客户以及客户与客户之间的公路里程(千米)为已知。每天,各客户所需物资的重量(吨)均已知,并且每个客户所需物资的重量都小于一台货运车辆的载重量,所有送货车辆都从物流中心出发,最后回到物流中心。物流中心每天的配送方案应当包括:当天出动多少台车?行驶路径如何?由此形成的当天总运行里程是多少?一个合格的配送方案要求送货车辆必须在一定的时间范围内到达客户处,早到达将产生等待损失,迟到达将予以一定的惩罚;而一个好的配送方案还应该给出使配送费用最小或总运行里程最短的车辆调度方案。要求:

1. 建立送货车辆每天总运行里程最短的一般数学模型,并给出求解方法。

2. 具体求解以下算例,并给出你们实际使用的软件名称、命令和编写的全部计算机源程序。

〔算例〕载重量为Q =8 吨、平均速度为v = 50千米/小时的送货车辆从物流中心(i =0)出发,为编号是i =1,2,…,8 的8个客户配送物资。某日,第i个客户所需物资的重量为qi吨(qi < Q),在第i 个客户处卸货时间为si小时,第i个客户要求送货车辆到达的时间范围[ai,bi]由表1给出。物流中心与各客户以及各客户间的公路里程(单位:千米)由表2给出。问当日如何安排送货车辆(包括出动车辆的台数以及每一台车辆的具体行驶路径)才能使总运行里程最短。

表1 物资配送任务及其要求

客户i           1    2     3   4    5   6    7   8

i q (吨 )2  1.5  4.5  3  1.5  4    2.5  3

i s (小时)1   2      1    3   2  2.5   3  0.8

【ai,bi】 [1, 4] [4, 6] [1, 2] [4, 7] [3, 5.5] [2, 5] [5, 8] [1.5, 4]

表2 配送点之间的公路里程(千米)

0 1   2  3    4   5   6     7     8

0  0 40 60 75 90 200 100 160 80

1 40 0 65 40 100 50 75 110 100

2 60 65 0 75 100 100 75 75 75

3 75 40 75 0 100 50 90 90 150

4 90 100 100 100 0 100 75 75 100

5 200 50 100 50 100 0 70 90 75

6 100 75 75 90 75 70 0 70 100

7 160 110 75 90 75 90 70 0 100

8 80 100 75 150 100 75 100 100 0(0代表出发点)

以下是基于Matlab的遗传算法程序:

clc,clear

w=20,g=50;%种群大小为20,进化代数为50 代

rand('state',sum(clock));

for i=1:20%选取初始种群

c1=randperm(8);%调用随机置换向量函数

k1=juli(c1);%调用用户自定义函数juli

c2=randperm(8);%调用随机置换向量函数

k2=juli(c2);%调用用户自定义函数juli

if k1>=k2

J(i,c2)=1:8;%记录每个点出现在物流链中的位置

else

J(i,c1)=1:8

end

end

J=J/8;%染色体编码

for k=1:g %该层循环进行遗传算法的操作

A=J;

c=randperm(w);%生成1 到20 的随机数

for i=1:2:w%该层进行交叉操作

F=ceil(8*rand(1));%调用向正无穷取整函数

temp=A(c(i),[F:8]);%交叉操作

A(c(i),[F:8])=A(c(i+1),[F:8]);%交叉操作

A(c(i+1),[F:8])=temp;%交叉操作

end

by=[];%为了防止下面产生空地址,这里先初始化

while ~length(by)

7

by=find(rand(1,w)<0.1);%%调用产生均匀分布随机数函数,变异概率小于

0.1

end

B=A(by,:);%提取变异的染色体

for j=1:length(by)%该层进行变异操作

bw=sort(ceil(8*rand(1,3)));%调用向正无穷取整函数

B(j,:)=B(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:8]);%变异操作

end

G=[J;A;B];%父代和子代种群合在一起

[SG,ind1]=sort(G,2);%将染色体翻译成整数序列

num=size(G,1);long=zeros(1,num);

for j=1:num

long(j)=juli(ind1(j,:));%调用用户自定义函数juli

k(j)=lujinshu(ind1(j,:));%调用用户自定义函数lujinshu

z(j)=long(j)+(k(j)-3)*10000;%适应度公式

end

[slong,ind2]=sort(z);%从小到大排列适应度函数

J=G(ind2(1:w),:); %精选前w 个较短的路径对应的染色体

end

path=ind1(ind2(1),:), flong=slong(1);

用户自定义函数juli:

function juli=juli(l); %l 为八维行向量

d=load('distance.txt');%加载距离矩阵

q=[2 1.5 4.5 3 1.5 4 2.5 3];%各物流点所需货物量

for i=1:8

p(i)=q(l(i));%将需求量矩阵提取出来

end

for a1=1:8%该层进行路径数目的判断

if (sum(p(1:a1))<=8&sum(p(1:a1+1))>8)%调用求和函数

k=1;j=a1+1;break;

end

end

for a2=j:8

if (sum(p(j:a2))<=8&sum(p(j:a2+1))>8)

k=2;j=a2+1;break;

end

end

if sum(p(j:8))<=8

8

k=3;L1=zeros(1,12);L1(1)=9;L1(12)=9;L1(a1+2)=9;L1(a2+3)=9;%为了

方便编程,将物流中心编号为9

for i=1:a1%该层循环用于计算三条路径的里程值之和

L1(i+1)=l(i)

end

for i=a1+1:a2

L1(i+2)=l(i)

end

for i=a2+1:8

L1(i+3)=l(i)

end

for i=1:11

D1(i)=d(L1(i),L1(i+1))

end

juli=sum(D1(1:11));

else

for e=j:8

if (sum(p(j:e))<=8&sum(p(j:e+1))>8)

k=4;a3=e;break;

end

end

L2=zeros(1,13);L2(1)=9;L2(13)=9;L2(a1+2)=9;L2(a2+3)=9;L2(a3+4)=9;%为了

方便编程,将物流中心编号为9

for i=1:a1%计算四条路径的里程数之和

L2(i+1)=l(i)

end

for i=a1+1:a2

L2(i+2)=l(i)

end

for i=a2+1:a3

L2(i+3)=l(i)

end

for i=a3+1:8

L2(i+4)=l(i)

end

for i=1:12

D2(i)=d(L2(i),L2(i+1))

end

juli=sum(D2(1:12));

end

9

用户自定义函数lujinshu:

function lujinshu=lujinshu(l);%l 为8 维行向量

d=load('distance.txt');%加载距离矩阵

q=[2 1.5 4.5 3 1.5 4 2.5 3];%各物流点所需货物量

for i=1:8

p(i)=q(l(i));%提取货物需求量矩阵

end

for a1=1:8%该层用于判断路劲数

if (sum(p(1:a1))<=8&sum(p(1:a1+1))>8)

k=1;j=a1+1;break;

end

end

for a2=j:8

if (sum(p(j:a2))<=8&sum(p(j:a2+1))>8)

k=2;j=a2+1;break;

end

end

if sum(p(j:8))<=8

lujinshu=3;

else

lujinshu=4;

end

距离矩阵distance:

000 065 040 100 050 075 110 100 040

065 000 075 100 100 075 075 075 060

040 075 000 100 050 090 090 150 075

100 100 100 000 100 075 075 100 090

050 100 050 100 000 070 090 075 200

075 075 090 075 070 000 070 100 100

110 075 090 075 090 070 000 100 160

100 075 150 100 075 100 100 000 080

040 060 075 090 200 100 160 080 000

最终运行结果:

(1)总共使用3 辆货车参与物流配送。

(2)3 辆货车的配送路径为:0-1-5-6-0;0-2-7-4-0;0-3-8-0。

(3)行驶的总里程数为865Km。

货物配送问题的matlab,使用遗传算法求解物流中心配送问题相关推荐

  1. MATLAB编写遗传算法求解vrp问题

    MATLAB编写遗传算法求解vrp问题 vrp问题是有载重限制的物流配送线路优化问题,详细可表述为:有1个配送中心,向m个客户点送货,从配送中心出发,货物不足时回配送中心装货,配送完成后回到配送中心. ...

  2. 【Matlab】 遗传算法求解TSP问题

    [Matlab] 遗传算法求解TSP问题 文章目录 [Matlab] 遗传算法求解TSP问题 前言 一.问题描述 二.实验设计 1.问题案例 2.读入数据 3.适应度计算 4. 选择子代 5. 结果输 ...

  3. matlab约束非线性规划,MATLAB中用遗传算法求解约束非线性规划问题

    <MATLAB中用遗传算法求解约束非线性规划问题>由会员分享,可在线阅读,更多相关<MATLAB中用遗传算法求解约束非线性规划问题(3页珍藏版)>请在人人文库网上搜索. 1.维 ...

  4. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题

    文章目录 文中涉及源代码请参见,感兴趣的小伙伴可自行订阅下载! 数学建模源码集锦-基于多层编码遗传算法的车间调度算法应用实例 1. 关于遗传算法的一个小故事 2. 遗传算法操作流程 3. 车间调度问题 ...

  5. 【老生谈算法】matlab实现遗传算法求解TSP问题——TSP问题

    遗传算法求解TSP问题MATLAB实现 1.文档下载: 本算法已经整理成文档如下,有需要的朋友可以点击进行下载 序号 文档(点击下载) 本项目文档 [老生谈算法]遗传算法求解TSP问题MATLAB实现 ...

  6. LRP选址配送—物流选址问题杂谈-遗传算法求解

    文章目录 前言 一.选址问题的发展脉络 二.LRP问题是什么? 1.本质 2.重难点 3.思路 总结 前言 物流设施选址问题从诞生之日起就一直都是企业乃至学术界研究的热点问题.虽然企业实际选址时考虑的 ...

  7. 货物配送问题的matlab,免疫算法求解配送中心选址问题matlab代码

    免疫算法求解配送中心选址问题matlab代码 所属分类:matlab例程 开发工具:matlab 文件大小:31KB 下载次数:3 上传日期:2020-12-01 16:11:00 上 传 者:代码大 ...

  8. 【GA MTSP】基于matlab GUI遗传算法求解多旅行商问题(多起点不同终点)【含Matlab源码 935期】

    一.TSP简介 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择 ...

  9. 【路径规划】基于遗传算法实现物流中心配送方案matlab源码

    定义 遗传算法(Genetic Algorithm, GA)起源于对生物系统所进行的计算机模拟研究.它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说. ...

最新文章

  1. 平均 15189 元!2021 年 3 月程序员工资统计出炉
  2. python画柱形图-Python绘制柱状图
  3. Python3远程监控程序实现
  4. XML 和 JSON 的使用场景
  5. wxWidgets:wxSpinButton类用法
  6. 如何制作Windows镜像
  7. C#三层架构之第三次课 业务逻辑层
  8. SICK TiM561激光雷达的使用
  9. Android开发/源码资源汇总
  10. IOS UI 第一篇:基本UI
  11. 5. Linux 设备文件名
  12. 周报中竟然出现学习时间,主管怎么当的
  13. Java怎样求解n的阶乘 n!(详解)
  14. 汇率换算(android安卓版)
  15. 巴菲特致股东的一封信:2004年
  16. zyt-Linux云计算
  17. svg爱心小熊眼睛睁开动画
  18. python itchat 抢红包-Python itchat模块在微信上的各种小应用
  19. 计算机组成原理孙启良,[计算机硬件及网络]第1章 概论 计算机的基本组成.ppt
  20. 扒一扒数据黑色产业链:猖獗内鬼、黑客联盟,你中招了吗?

热门文章

  1. ROS1中rosbridge使用rosauth认证连接
  2. 将 SharePoint 网站另存为模板
  3. Redis 击穿、穿透和雪崩的理解
  4. 曾国藩六戒—送给自己和大家
  5. 5G短信能为个人及企业带来什么?
  6. 商品信息页面放大镜功能
  7. Linux显示文件目录分屏显示,Linux分屏显示文件内容-linux more命令详解-嗨客网
  8. AcWing 257. 关押罪犯
  9. ROS部署乐视奥比中光(astra pro)摄像头
  10. 通辽市视频信息共享平台助力智慧城市建设