模型

配送网点包括:
自提柜——提供自提服务
联盟网点——提供送货上门或自提
在一个区域内有x个备选的用来提供两种服务的配送网点,已知备选共同配送网点的单日成本和可以提供的最大运营能力。有x个客户需求点,已知各个需求点的位置和需求量,并且每个需求点都存在【自提】和【送货上门】两种末端配送需求,
网点用s表示——数量x个
客户点用t表示——数量y个
L——网点类型,L={M,N},l=M,联盟网点 l=N自提柜
P——客户需求类型,P={m,n,o}p=m 送货上门 p=n 自提 p=o 既有送货又有自提
Csl——l类型网点S固定成本
qtp ——P类型客户点t的日均订单量
dl——L类型网点s的最小服务半径
Dl——L类型网点s的最大服务半径
dlst——L类型网点s到客户t的距离
λt——需要送货上门客户占比
1-λt——需要自提的客户占比
决策变量:
Xsl——0-1变量 表示是否选择l类型网点作为配送网点
Ystlp——0-1变量 表示l类型网点s是否为 p 类型客户提供服务

主程序展示

clear
clc
close all
tic
%% 用importdata这个函数来读取文件
% shuju=importdata('cc101.txt');
load('cc101');
shuju=c101;
% bl=importdata('103.txt');
bl=3;
cap=60;                                                        %车辆最大装载量
%% 提取数据信息E=shuju(1,5);                                                    %配送中心时间窗开始时间
L=shuju(1,6);                                                    %配送中心时间窗结束时间
zuobiao=shuju(:,2:3);                                       %所有点的坐标x和y
pszx=zuobiao(1:4,:);
customer=zuobiao(5:end,:);                                       %顾客坐标
cusnum=size(customer,1);                                         %顾客数
v_num=20;                                                        %车辆最多使用数目
demands=shuju(5:end,4);                                          %需求量
a=shuju(5:end,5);                                                %顾客时间窗开始时间[a[i],b[i]]
b=shuju(5:end,6);                                                %顾客时间窗结束时间[a[i],b[i]]
s=shuju(5:end,7);                                                %客户点的服务时间
h=pdist(zuobiao);
dist=squareform(h);
% dist=load('dist.mat');
% dist=struct2cell(dist);
% dist=cell2mat(dist);
dist=dist./1000;%距离矩阵,满足三角关系,暂用距离表示花费c[i][j]=dist[i][j]
%% 遗传算法参数设置
alpha=100000;                                                       %违反的容量约束的惩罚函数系数
belta=90;%违反时间窗约束的惩罚函数系数
belta2=60;
chesu=20;NIND=300;                                                       %种群大小
MAXGEN=10;                                                     %迭代次数
Pc=0.9;                                                         %交叉概率
Pm=0.05;                                                        %变异概率
GGAP=0.9;                                                       %代沟(Generation gap)
N=cusnum+v_num-1;                                %染色体长度=顾客数目+车辆最多使用数目-1
% N=cusnum;
%% 初始化种群
% init_vc=init(cusnum,a,demands,cap);
dpszx = struct('ps',[], 'Chrom',[]);
dpszx.Chrom=InitPopCW(NIND,N,cusnum,a,demands,cap);     %构造初始解
ps=pszxxz(dpszx.Chrom,cusnum);
%% 输出随机解的路线和总距离
disp('初始种群中的一个随机值:')[VC,NV,TD,violate_num,violate_cus]=decode(dpszx.Chrom(1,:),cusnum,cap,demands,a,b,L,s,dist,chesu,bl);
% [VC,NV]=cls(dpszx.Chrom(1,:),cusnum);% [~,~,bsv]=violateTW(VC,a,b,s,L,dist,chesu,bl);
% disp(['总距离:',num2str(TD)]);
disp(['车辆使用数目:',num2str(NV),',车辆行驶总距离:',num2str(TD)]);
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
%% 优化
gen=1;
figure;
hold on;box on
xlim([0,MAXGEN])
title('优化过程')
xlabel('代数')
ylabel('最优值')
ObjV=calObj(dpszx.Chrom,cusnum,cap,demands,a,b,L,s,dist,alpha,belta,belta2,chesu,bl,ps);             %计算种群目标函数值
preObjV=min(ObjV);
%%
while gen<=MAXGEN%% 计算适应度ObjV=calObj(dpszx.Chrom,cusnum,cap,demands,a,b,L,s,dist,alpha,belta,belta2,chesu,bl,ps);             %计算种群目标函数值line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)%画图 最优函数preObjV=min(ObjV);FitnV=Fitness(ObjV);%% 选择[SelCh,psc]=Select(dpszx.Chrom,FitnV,GGAP,ps);%% OX交叉操作[SelCh,psc]=Recombin(SelCh,Pc,psc,cusnum);%% 变异[SelCh,psc]=Mutate(SelCh,Pm,psc,cusnum);%% 重插入子代的新种群[dpszx.Chrom,ps]=Reins(dpszx.Chrom,SelCh,ObjV,psc,ps);%% 打印当前最优解ObjV=calObj(dpszx.Chrom,cusnum,cap,demands,a,b,L,s,dist,alpha,belta,belta2,chesu,bl,ps);             %计算种群目标函数值[minObjV,minInd]=min(ObjV);disp(['第',num2str(gen),'代最优解:'])[bestVC,bestNV,bestTD,best_vionum,best_viocus]=decode(dpszx.Chrom(minInd(1),:),cusnum,cap,demands,a,b,L,s,dist,chesu,bl);disp(['车辆使用数目:',num2str(bestNV),',车辆行驶总距离:',num2str(bestTD)]);fprintf('\n')%% 更新迭代次数gen=gen+1 ;
end
%% 画出最优解的路线图
ObjV=calObj(dpszx.Chrom,cusnum,cap,demands,a,b,L,s,dist,alpha,belta,belta2,chesu,bl,ps);             %计算种群目标函数值
[minObjV,minInd]=min(ObjV);
%% 输出最优解的路线和总距离
disp('最优解:')
bestChrom=dpszx.Chrom(minInd(1),:);
bestps=ps(minInd(1),:);
[bestVC,bestNV,bestTD,best_vionum,best_viocus]=decode(bestChrom,cusnum,cap,demands,a,b,L,s,dist,chesu,bl);
disp(['车辆使用数目:',num2str(bestNV),',车辆行驶总距离:',num2str(bestTD)]);
disp('-------------------------------------------------------------')
% [cost]=costFuction(bestVC,a,b,s,L,dist,demands,cap,alpha,belta,belta2,chesu,bl,);
%% 画出最终路线图
draw_Best(bestVC,zuobiao,bestps);
% save c101.mat
% toc



选址点1:1->29->28->27->26->25->24->23->22->21->20->1
选址点2:4->33->43->41->40->39->38->37->36->35->34->32->4
选址点3:2->48->62->60->58->56->55->54->53->52->51->50->49->47->76->75->74->73->72->71->70->69->2
选址点4:4->78->90->85->84->83->82->81->80->79->77->4
选址点5:1->92->100->105->108->107->106->104->103->101->2->14->13->12->59->99->86->57->97->96->95->93->9->8->7->5->4->3->1->91->89->88->87->1
选址点6:1->16->11->10->94->1
选址点7:1->19->18->17->15->31->30->46->98->102->6->65->64->63->61->67->68->66->45->44->42->1

最开始的点为选择的配送中心(代码中一共四个备选中心)

如需帮助
VX:zhangshu2274

matlab遗传算法选址(多约束条件)相关推荐

  1. 基于Matlab遗传算法工具箱解决物流中心选址

    目录 1.问题 2.建模 3.Matlab编程.求解 1.问题 物流配送中6个客户的位置坐标和配数数量如表1所示,如何设置物流配数中心使得配送量最小. 2.建模 3.Matlab编程.求解 编写目标函 ...

  2. MATLAB遗传算法求解超市物流配送选址问题实例

    遗传算法编程问题实例: MATLAB遗传算法求解超市物流配送中心选址问题代码实例 添加链接描述 在范围为(0,0)到(100,100)的矩形区域内,散布着40个连锁超市,各个连锁超市的坐标及需求量见表 ...

  3. MATLAB遗传算法求解物流配送中心选址问题优化代码实例

    1.简介 物流分配中心选址问题是指一定数量的客户,它们有不同数量的货物需求,有一定数量的备选中心作为配送中心.配送中心向客户提供货物的配送服务,现需要选择合适的配送中心位置(选址数量一定)或合适的配送 ...

  4. 遗传算法 gui matlab,用matlab遗传算法工具gui优化轴承

    用matlab遗传算法工具gui优化轴承 设计变量滚珠数目 Z=23 滚珠直径 Db 为变量 1,即 x(1) 节圆直径 dm 为变量 2,即 x(2)fi, fo 分别为轴承内外滚道曲率半径系数 f ...

  5. 2021-05-11 Matlab遗传算法工具箱的使用及实例(非线性规划)

    Matlab遗传算法工具箱的使用及实例(非线性规划) 本文将介绍MATLAB遗传算法工具箱求解非线性规划问题.在阅读本文之前,建议读者阅读上一期"MATLAB遗传算法工具箱求解线性规划问题& ...

  6. MATLAB遗传算法工具箱的使用及实例(线性规划)

    一.引言 在使用遗传算法(Genetic Algorithm,GA)之前,你得了解遗传算法是干什么的.遗传算法一般用于求解优化问题.遗传算法最早是由美国的 John holland于20世纪70年代提 ...

  7. MATLAB遗传算法工具箱的使用及实例(非线性规划)

    本文将介绍MATLAB遗传算法工具箱求解非线性规划问题.在阅读本文之前,建议读者阅读上一期"MATLAB遗传算法工具箱求解线性规划问题".文章传送门:https://blog.cs ...

  8. c遗传算法的终止条件一般_Matlab2 :Matlab遗传算法(GA)优4~-r-具箱是基于基本操作 联合开发网 - pudn.com...

    Matlab2 所属分类:matlab例程 开发工具:PDF 文件大小:115KB 下载次数:76 上传日期:2007-09-07 20:04:29 上 传 者:钱广 说明:  :Matlab遗传算法 ...

  9. matlab bs2rv.m,matlab遗传算法工具箱中的例子不能用?

    matlab遗传算法工具箱中的例子不能用,我也发现了,求助 figure(1); fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);   %画出函数曲 ...

  10. 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [生产优化]基于matlab遗传算法求解帐篷工序问题[含Matlab源码 2145期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

最新文章

  1. d3.json php,使用d3.json从PHP进行JSON输出
  2. linux 查看磁盘空间_Linux下删点日志也能搞死人
  3. 去年的今天,我和小叶子完成了《阿猫阿狗2》,缅怀一下。
  4. json数据在js中的常见操作
  5. 透明计算:对当前主流计算模式的革命
  6. MySQL left join right join inner join 区别
  7. steam的APEX客户端的游戏账号已遭禁用_玩个游戏也能被黑客盯上?电脑设备一不小心就沦为“肉鸡”。...
  8. 从零开始学Android应用安全测试
  9. Win10如何查看打印机端口号?
  10. Firemonkey下使用StyleBook的一些经验
  11. 三星识别文字_Samsung OCR Software三星光学字符识别软件下载_Samsung OCR Software三星光学字符识别软件官方下载-太平洋下载中心...
  12. matlab dff求导,matlab的多元函数微积分学.ppt
  13. python中base函数_详细的python basemap中各函数的所有参量注释
  14. [poj3889]Fractal Streets
  15. 二代身份证文字照片位置定位mask
  16. 抖音微商引流之抖音实战引流技巧,,抖音/快手/火山热门技术---
  17. 软件测试的自我发展规划
  18. 风清月明,山清水明,心清志明,思清念明
  19. 计算机桌面显示器,屏幕分辨率
  20. docker修改容器内nginx配置文件

热门文章

  1. 服务器换主板要重装系统吗,换主板需要重装系统吗【解决方案】
  2. windows internals(深入解析windows操作系统)笔记
  3. 陈纪修老师《数学分析》 第06章:不定积分 笔记
  4. u大师装iso系统linux,【iso怎么用u盘装系统】iso镜像怎么用u盘装_iso用u盘装系统-系统城...
  5. sql2005安装图解
  6. LINGO编程简介与实例
  7. 翻译任务中的BPE词表实践总结
  8. 计算机vfp系统,计算机等级考试VFP教程:第一章数据库系统
  9. 网络安全05_VMware 虚拟机软件安装_准备Kali- Linux虚拟机_Windows Server 2003 Enterprise 虚拟机下载和安装
  10. 浏览器userAgent大全