【物流选址】基于matlab节约算法求解考虑碳排放及带时间窗的物流选址问题【含Matlab源码 1589期】
一、节约算法简介
基本思想
行时通过这一条弧。
迭代步骤
二、部分源代码
clc
clear all
p1=0.9;
customer=xlsread('customer.xlsx'); %需求点信息
facility=xlsread('facility.xlsx'); %设施点信息
facilityposition=facility(:,2:3); %设施坐标
customerposition=customer(:,2:3); %需求点坐标
position=[facilityposition;customerposition];
xlswrite('position.xlsx',position)
position1=[position(:,1) position(:,2)];
distMatrix=dists(position1); %计算得出的两点之间的距离
xlswrite('distMatrix.xlsx',distMatrix)ttimeu=fix(distMatrix); %两点之间的距离
%%%%%%%%%%%%%%%%%%%%%%%%%固定数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Qofcar=200; %车辆容量
costofallcar=5000; %车辆固定成本
costofunitdistance=9; %单位距离成本
tanpaifangyinzi=1; %车辆碳排放因子
danweiyouhao=1; %车辆单位油耗
%%%%%%%%%%%%%%%%%%%%%%%计算出来的数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Numberofpoints=size(customer,1); %需求点数量
Numberoffacilities=size(facility,1); %设施点数量
quantity=[customer(:,1) customer(:,4) customer(:,4)]; %需求点需求量
Qoffacilities=[facility(:,1) facility(:,4)]; %设施容量
timewindow=[customer(:,1) customer(:,6:7)]; %需求点时间窗
countfacility=facility(:,5); %建立设施固定成本
codeofpicture=1;timewindowassignofpoint=[2 1 2 1 3 3 1 2 1 1 2 3 2];
[outcome1,outcome2,outcome3]=cw(Numberoffacilities,assignofpoint,ttimeu,timewindow,distMatrix,quantity,Qofcar,p1);
%outcome1=[1 1 2 1 2 3 3 4 4 3 5 5 5];
%outcome2=[9 2 10 4 7 13 1 11 8 3 12 5 6];
[outcome1,outcome2,outcome3]=tabu(outcome1,outcome2,outcome3,distMatrix,ttimeu,Numberoffacilities,timewindow);[Picture]=picture(codeofpicture,outcome1,outcome2,outcome3,customer,facility);function [outcome1,outcome2,outcome3]=cw(Numberoffacilities,assignofpoint,ttimeu,timewindow,distMatrix,quantity,Qofcar,p1) H=1;outcome3=zeros(1,Numberoffacilities);%与设施点的伪编号是一一对应的 %%%%%%%找到实际分配的设施点,因为之前的chrom中为1的点,可能%%%%%%%%%%%%%facilitypop=zeros(1:Numberoffacilities);facilitypop(assignofpoint)=1;trueSelectefacilities=find(facilitypop(1,:)==1); %被选择的设施编号 trueselectNumberoffacilities=size(trueSelectefacilities,2);outcome1=cell(1,trueselectNumberoffacilities);outcome2=cell(1,trueselectNumberoffacilities); for i=1:trueselectNumberoffacilities%此时的设施为ia=trueSelectefacilities(i);%设施的伪编号 pointofsubroute=find(assignofpoint==a);%属于该设施点的所有需求点的伪编号Numberofpointsofsubroute=size(pointofsubroute,2);%该设施点的需求点数量 judge=zeros(1,Numberofpointsofsubroute); %判断需求点的位置情况 chrom1=zeros(1,Numberofpointsofsubroute);%最后输入的是伪编号 chrom2=sort(pointofsubroute); %需求点伪编号从小到大排序 originalchrom2=chrom2;%%对关键节点先分配一个车辆给它?????????????????????对不对?%for j=1:Numberofpointsofsubroute %if timewindow(chrom2(j),2)==timewindow(chrom2(j),3) %chrom1(j)=H;%H=H+1; %end%end %%%%%%%%计算到达时间%%%%%%%%%%%%%%%%%%%% arrivetime=zeros(1,Numberofpointsofsubroute);%需求点的到达时间,与当前的originalchrom2位置一一对应,与分配给该设施点的需求点一一对应 for j=1:Numberofpointsofsubroute if ttimeu(chrom2(j)+Numberoffacilities,a)<timewindow(chrom2(j),2) arrivetime(j)=timewindow(chrom2(j),2); elsearrivetime(j)=ttimeu(chrom2(j)+Numberoffacilities,a); endend %%%%%%%%%%%%%%%%%%%%%%%%%路径节约值列表%%%%%%%%%%%%%%%%%%%%%% savingnumber=zeros(Numberofpointsofsubroute);%与分配给该设施的需求点的伪编号一一对应 for j=1:Numberofpointsofsubroute for z=1:Numberofpointsofsubroute if j~=z savingnumber(j,z)=distMatrix(chrom2(j)+Numberoffacilities,a)+distMatrix(chrom2(z)+Numberoffacilities,a)-distMatrix(chrom2(j)+Numberoffacilities,chrom2(z)+Numberoffacilities); endendend [a b]=max(savingnumber);%a输入值,b中对应的数字为行,对应的列数为列 [c d]=max(a);%c输入具体的当前节约值,d为列数 e=b(d);%e为行 %%%在节约值列表中e行d列是当前最大的节约量E=chrom2(e);%此时的E为节约量最大的需求点伪编号之一D=chrom2(d);%此时的D为节约量最大的需求点伪编号之1 done=1; while(done<2) if judge(e)==0&&judge(d)==0 PD=0; a=quantity(E,2)+quantity(D,2);aa=quantity(E,3)+quantity(D,3);pp1=normcdf(Qofcar,a,sqrt(aa));a2=find(chrom2==D); b2=find(chrom2==E);if pp1>p1 EFj=arrivetime(e)+ttimeu(E+Numberoffacilities,D+Numberoffacilities)-arrivetime(d); if EFj<0 aheadtime=arrivetime(d)-timewindow(D,2); if aheadtime>=-EFj PD=1; endelseif EFj==0PD=1; elseif EFj>0 delaytime=timewindow(D,3)-arrivetime(d); if delaytime>=EFj PD=1; endendif PD==1 chrom1(e)=H; chrom1(d)=H;%H为车辆编号 judge(e)=1;%与设施直接相连的起点为1 judge(d)=2;%与设施直接相连的终点为2 H=H+1; arrivetime(d)=arrivetime(d)+EFj;if b2>a2chrom2(a2)=E;chrom2(b2)=D;endendendsavingnumber(e,d)=0; elseif judge(e)==0&&judge(d)==1; a2=find(chrom2==D); b2=find(chrom2==E); a=find(chrom1==chrom1(a2)); b=sum(quantity(chrom2(a),2))+quantity(E,2);bb=sum(quantity(chrom2(a),3))+quantity(E,3); pp1=normcdf(Qofcar,b,sqrt(bb)); c=size(a,2);if pp1>p1 EFj=arrivetime(e)+ttimeu(E+Numberoffacilities,D+Numberoffacilities)-arrivetime(d); if EFj<0 a1=10000; for j=1:c b1=find(originalchrom2==chrom2(a(j))); Aheadtime=arrivetime(b1)-timewindow(chrom2(a(j)),2); if Aheadtime<a1 aheadtime=Aheadtime; a1=Aheadtime; endendif aheadtime>=-EFj PD=1; endelseif EFj==0 PD=1; elseif EFj>0 a1=10000; for j=1:c b1=find(originalchrom2==chrom2(a(j))); Delaytime=timewindow(chrom2(a(j)),3)-arrivetime(b1); if Delaytime<a1 delaytime=Delaytime; a1=Delaytime; endend
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
【物流选址】基于matlab节约算法求解考虑碳排放及带时间窗的物流选址问题【含Matlab源码 1589期】相关推荐
- 【优化选址】基于节约算法求解考虑碳排放及带时间窗的物流选址问题附matlab代码
1 简介 基于节约算法求解带时效性约束的物流中心选址问题.分析选址问题的时效性约束条件,构造带时效性约束的物流中心选址模型,利用节约算法设计选址模型的精确算法,并给出具体算例,验证模型和算法的可行性. ...
- 【微电网优化】基于matlab粒子群算法求解微网经济调度和环境友好调度优化问题【含Matlab源码 2283期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[微电网优化]基于matlab粒子群算法求解微网经济调度和环境友好调度优化问题[含Matlab源码 2283期] 点击上面蓝色字体,直接付 ...
- 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】
一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...
- 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】
一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
- 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...
最新文章
- mysql中sql语句
- v9更新栏目缓存提示PHP has encountered a Stack overflow解决方法
- mysql eager mode_MySQL Connector Net 6.6.5 Entity Framework 显式预加载 Eager Load Bug
- (下)python3 selenium3 从框架实现代码学习selenium让你事半功倍
- Sharepoint学习笔记—error处理-- The user does not exist or is not unique.
- code1068 乌龟棋
- html设置js的cookies,javascript怎么修改cookie?
- CentOs7中安装python模块psycopg2,报错Error: pg_config executable not found.
- 判断一颗二叉树是否为二叉平衡树 python 代码
- 计算机网络:应用层 - 万维网 WWW、HTTP 协议以及 HTML 语言
- 杨强教授漫谈《西部世界》、生成式对抗网络及迁移学习
- Where Have You Gone扒谱
- 小米-9-14-笔试
- 电脑蓝屏造成的数据丢失如何恢复
- 从NCBI 上下载 gbff 文件并得到 CDS 信息
- 数组和字符串赋值的问题(定义时不初始化)
- drv10893器件的使用
- Prolog不是hentai
- 利用matlab实现h 控制,利用Matlab实现H∞控制
- count() over()开窗函数用法
热门文章
- 富文本编辑器使用案例
- 20145235 《Java程序设计》第8周学习总结
- win32SDK的hello,world程序(二)
- 学习《银光志 silverlight 3.0》 不错的实例讲解【含源码】
- 文献管理三剑客之Mendeley最新版使用小记2
- Origin打断图像的y坐标和在柱状图上显示数字
- Atitit. 资深高级软件工程师and 普通的区别 高度金字塔 深度 广度 1. 高度金字塔 深度 广度	1 1.1. 角色差异高度金字塔 使用者 维修者 制造者	1 1.2. 广度圈	1 1
- Atitit mongodb 使用总结 1.1. 下载有点不太好下载不像mysql导出都是。。70M	1 1.2. gui工具Robomongo(MongoDB/GUI管理工具) v1.0.3 官方
- Atitit 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)的区别和联系
- atitit.按钮光标滑过高亮切换以及其他动态效果的实现css html js --attilax总结