✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。
更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)
⛄一、多式联运简介
1 引言
运输问题(Transportation Problem)是一类特殊的线性规划问题,最早是由Hichcock于1941年提出的,由于它不仅能解决物资的合理调运和车辆的合理调度,而且许多实际问题如生产存储问题、工厂选址问题等经过适当变换后可转化为运输问题进行求解,一些理论问题如最小费用流问题也与它息息相关,因此研究运输问题具有相当重要的实际意义。
多式联运(Multimode Transportation)是现代物流系统中竞争协作的最佳方式,研究多式联运的运输方式选择,对于实现运输费用或时间的节约,提高交通运输服务水平以及社会效益具有重要的意义。建立了多城市间选择最优运输方式组合的模型并给出了基于Dijkstra的启发式算法;建立了基于多维权有向图的多式联运运输方式选择模型。
2 多式联运运输问题的数学模型
设有一个多式联运运输问题:某种物资有m个产地,n个销地,从每个产地至每个销地都要经过l段运输区间,任意一段运输区间有g种运输方式可以选择,各运输方式所需的费用c不同,当从一种运输方式转换到另一种运输方式时,需要一定的中转费用d,问如何选择从不同产地到不同销地的运输量以及各自的运输方式使得既满足产销地的供需约束,又使得所需的总费用最少。
模型记号:
ai:各产地的产量,i=1,2,…,m;
bj:各销地的销量,j=1,2,…,n;
cpijk:从产地i运往销地j的物资在第k段运输区间选择第p种运输方式所需的单位运费,p=1,2,…,g,k=1,2,…,l;
dpqijk:从产地i运往销地j的物资在第k段运输区间开始时从第p种运输方式转换至第q种运输方式所需的中转需用,p,q=1,2,…,g,k=2,3,…,l;
xij:从产地i运往销地j的物资运输量;
yijk:从产地i运往销地j的物资在第k运输区间选择的运输方式,取值为1至g的整数;
上述多式联运运输问题的数学模型如下:
若是从某个产地i到销地j的分段运输区间小于l段,则可令对应的运输区间选择任何一种运输方式所需的单位费用以及中转费用均为0后扩展为l段;同样若从产地i运往销地j的物资在第k段运输区间的运输方式小于g种,则可令对应的运输方式所需的中转费用为充分大的正数从而扩展为g种。由于不平衡运输问题可以通过设立虚拟产地或是虚拟销地转化
为平衡运输问题,从而下面增加一个平衡假设,即:
3 求解多式联运运输问题的混合遗传算法
由前面的分析可以看出,多式联运运输问题是一个组合优化问题其中包括运输量的分配以及运输方式的选择两个方面。用遗传算法来进行求解,由于运输问题本身是一个约束优化问题,对于约束的处理一般有两种方法,一种是采用罚函数的方法将解从不可行区域引导至可行区域;另一种是设计可行解的生成方法及保持可行性的遗传算子,使得解始终在可行区域中寻优。采用第二种方法,通过设计满足可行性的混合编码以及两种保持可行性混合遗传算子来实现遗传算法的寻优。
3.1 染色体混合编码
采用两种方式的混合编码,首先对于运输量,采用最自然的矩阵编码方式,即用矩阵[xij]mn表示一个运输方案,其中xij表示从产地i到销地j的运输量;其次对于从产地i到销地j的多式联运运输方式采用长度为l的自然数编码,每个位置的取值为1到g的整数,表示对应运输区间的运输方式。如
3.2 适应度函数定义
令yijk表示向量yij的第k个分量,其值即表示某种运输方式,则给定一组解([xij]mn,[yij]mn),其适应度函数为式(1)所示。
3.3 初始可行解的生成方法
由于多式联运运输问题是一个约束优化问题,故如何生成初始可行解相当重要。针对前述混合编码方式,设计如下的初始解生成方法:
{repeat
从集合T={1,2,…,mn}中随机取一个整数T®;
将T®转化为相应的行列:i=[(T®-1)/n+1],这里[]表示函数取整;j=(T®-1)mod n+1;
令xij=min{ai,bj};令yij为分量取值在{1,2,…,g}之间长度为l的随机向量;
更新ai:=ai-xij;bj:=bj-xij;T:=T\T®;
Until T=Ø}
3.4 算法流程
步骤1 产生一个初始种群,种群规模为N,计算出种群中个体的适应值,适应度函数即问题式(1)的目标函数值,令t:=1。
步骤2 在父代种群中以轮盘赌方式选择个体形成杂交种群池C(t),设其规模为M。
步骤3 随机选择C(t)中的个体P1和P2进行杂交算子操作以生成新个体C1和C2。
步骤4 重复步骤3直到产生2M个新个体形成杂交子种群。
步骤5 从父代种群及杂交子种群以pm的概率选取个体用变异算子进行变异。
步骤6 从父代种群、杂交子种群以及变异子种群中计算各个体的适应值,取其中适应值最小的N个个体形成子代种群,令t:=t+1。
步骤7 判断终止条件是否满足,如果满足则输出当前种群的最优个体作为问题的最优解,否则转步骤2继续迭代。
4 碳政策介绍
碳排放是指每个人、家庭或每家公司日常释放的温室气体数量,以二氧化碳的影响为单位,用以衡量人类活动对生态环境的影响。强制碳排放政策是一种基于政府规定的碳排放上限的碳政策,在此政策下企 业不会产生额外的碳排放成本。碳税是针对二氧化碳排放所征收的税费,即以政府规定的每单位碳排放税率与企业碳排放量的乘积作为所需要缴纳的碳排放费用,并将其计入成本中构成系统总成本。截至2019 年,已有芬兰、澳大利亚、英国、瑞典、加拿大和日本等国开征碳税,尽管当前我国并未实施,但发改委早在“2016 中国碳交易市场发展论坛”明确表示碳税在我国的必要性和可行性,并正在与财政部等部门积极准备启动碳税的前期工作。碳交易是指政府根据各地温室气体排放量、控排企业纳入情况等,核定一定时期内的碳排放总额,单位配额即每吨二氧化碳当量排放权,当初始配额不足或多余时企业按自身需要进行买卖,属于数量干预的减排措施,其本质是科斯理论中提到的产权。在我国现行的碳交易政策下,交易价格作为一种市场机制,具有动态性和随机性,时空差异性尤为显著。碳交易的核心是排放额度,企业不仅可以通过支付相应的资金进行购买来获得额外排放额度补贴,也可以通过出售多余的碳排放额度来获取一定的资金,产生相应的碳排放成本或收益。
⛄二、部分源代码
% clc,clear,close all
function [finalrouts,ALL_cost]=main2(distance_road,distance_rail,distance_water,qi,zdd,tw,name)
% [distance_road,distance_rail,distance_water]=data();
% Name = {‘草莓’,‘哈密瓜’,‘圣女果’,‘冻羊肉’};
% TW = [48,350,168,7200];
% tw=TW(4);
% name=Name{4};
% Name = {‘草莓’,‘哈密瓜’,‘圣女果’,‘冻羊肉’};
% name=Name{1};
% 数据
% 单位运输距离成本及空间距离
Modd.unitcost.road=9.39; %公路
Modd.unitcost.rail=4.14; %铁路
Modd.unitcost.rail_2=572; %铁路 572 + 4.14 * 运输距离
Modd.unitcost.water=2.34; %水路
Modd.distan.road=distance_road; % 公路
Modd.distan.rail=distance_rail; %铁路
Modd.distan.water=distance_water; %水路
% 装卸费用 各运输方式间中转费用元/TEU
Modd.loadupcost= [0 150 826
150 0 826
826 826 0];
% 装卸时间 各运输方式间中转时间(h)
Modd.loaduptim=[0 0.5 0.5
0.5 0 1
0.5 1 0];
% 公 铁 水
% TW = [75,350,168,7200];
Modd.TW = tw;%时间窗
Modd.pentcof=50 ; %惩罚系数
%% 参数
GA.popsize= 100; % 种群规模(取偶数)
a = size(distance_road,1);
GA.pc=0.7; % 交叉概率
GA.pm=0.05; % 变异概率
GA.MaxCycles=400; % 最大迭代次数
Math = cell(a,a);
P = cell(1,a);
for i =1:a
p=[];
for j =1:a
falg = 0;
math = [];
if distance_road(i,j)~=10000 && distance_road(i,j)~=0
math = [math,1];
falg = 1;
end
if distance_rail(i,j)~=10000 && distance_road(i,j)~=0
math = [math,2];
falg = 1;
end
if distance_rail(i,j)~=10000 && distance_road(i,j)~=0
math = [math,3];
falg = 1;
end
Math(i,j) = {math};
if falg ==1
p= [p,j];
end
end
P(i) = {p};
end
% 生成可行的初始方案
% 21 ->20
% qi = 19;%起点
% zdd = 1;%终点
% n = 10;
spt=19;ept=1;
re =[];
pop = proM(qi,zdd,P,Math,GA.popsize);
GlobalMins= cell(GA.MaxCycles,2); %最优值记录
% GlobalOptpop= cell(1,GA.MaxCycles); %最优值记录
% 进入主循环
for t =1 :GA.MaxCycles
for i=1: GA.popsize % 目标函数值计算
[Objfit(i),]=Objfun2( cell2mat(pop(i)),Modd);
end
if t==1
[minvd, mindx]=min( Objfit) ;
GlobalMins(t,1)={minvd};% 值
GlobalMins(t,2)= pop(mindx);%找到成本最低的
else
%找到成本最低的存下来,否则就复制上一次最低的
% [GlobalMins(t) , mindx]=min( Objfit) ;
% GlobalOptpop(t)=pop( mindx );
if cell2mat(GlobalMins(t-1,1))> min( Objfit)
[minvd, mindx]=min( Objfit) ;
GlobalMins(t,1)={minvd};% 值
GlobalMins(t,2)= pop(mindx);%找到成本最低的
else
GlobalMins(t,1)=GlobalMins(t-1,1);
GlobalMins(t,2)= GlobalMins(t-1,2);%找到成本最低的
end
end
%% 选择操作(轮盘赌机制)
IX=find( Objfit~=inf );
prob =1./ Objfit(IX)/sum(1./ Objfit(IX )); % 选择概率
cuLprob= cumsum(prob);
selectionpop=cell(size(pop));
%轮盘赌选择
for i=1:GA.popsize
indx=find( rand<cuLprob ,1);
j=IX(indx);
selectionpop(i)=pop(j);
end
%% 交叉操作
crosspop=cross(selectionpop,GA,Modd,qi,zdd) ;
%% 变异操作
% 对于多式联运路径,随机选择除起讫节点外的基因作为变异点,当变异点为偶数位
% 基因位则变异的是运输方式,若为奇数基因位则变异的是中转节点,为了保证变异过后
% 的路径是有效的;当变异位为偶数基因位时,在两个节点之间存在的运输方式中随机选
% 取;当该变异位为除起讫点外的奇数位时,该个体代表的路径,随机变异成其前一个奇
% 数位基因可到达终点的有效路径.
%% 变异操作
mupop=mutetu(crosspop,GA,Math,P,qi,zdd);
pop =YiMing(mupop,GA,qi,zdd,P,Math,Modd);
%% 循环
end
%% curve convergence of Transportation cost
for i =1:GA.MaxCycles
Values(i) = cell2mat(GlobalMins(i,1));
end
% total_va = cell2mat(GlobalMins()
indv=cell2mat(GlobalMins(end,2));
[finalObjfit, ALL_cost , finalrouts ]=Objfun2( indv,Modd);
transportway={‘公路’ ,‘铁路’ ,‘水运’ };
disp(name)
starpoint = {‘广州’ ,‘南宁’,‘福州’, ‘白色’,‘长沙’,‘南昌’,‘杭州’,‘武汉’,‘重庆’,‘合肥’,‘上海’,‘郑州’,‘西安’,‘兰州’,‘济南’,‘天津’,‘北京’,‘呼和浩特’,‘赤峰’,‘乌鲁木齐’,‘临沂’,‘沈阳’,‘长春’,‘哈尔滨’};
endpoint = {‘广州’ ,‘南宁’,‘福州’, ‘白色’,‘长沙’,‘南昌’,‘杭州’,‘武汉’,‘重庆’,‘合肥’,‘上海’,‘郑州’,‘西安’,‘兰州’,‘济南’,‘天津’,‘北京’,‘呼和浩特’,‘赤峰’,‘乌鲁木齐’,‘临沂’,‘沈阳’,‘长春’,‘哈尔滨’};
if size(finalrouts,1)==1
str=[ starpoint{finalrouts(1,1) } ’ 经 ',transportway{finalrouts(1,3)} ’ 到 ’ endpoint{ finalrouts(1,2) } ];
% str=[ '运 输 方 式 为 : ',transportway{finalrouts(end)} ];
disp(str);
else
for i=1:size( finalrouts,1)
str=[ starpoint{finalrouts(i,1) } ’ 经 ',transportway{finalrouts(i,3)} ’ 到 ’ endpoint{ finalrouts(i,2) } ];
disp(str);
end
end
disp(sprintf(‘最低成本为 %8.3f ‘, finalObjfit));
fprintf(‘运输成本:%8.3f,中转成本: %8.3f,冷藏成本:%8.3f,时间窗惩罚成本:%8.3f\n’,ALL_cost(1),ALL_cost(2),ALL_cost(3),ALL_cost(4))
disp(’------------------------------------------------------------------------------------’)
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]俞武扬.多式联运运输问题的混合遗传算法[J].计算机工程与应用. 2009,45(33)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合