多式联运基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)含matlab源码1995期

佛怒火莲 佛怒火莲     2022-11-29     216

关键词:


一、联运运输简介

1 引言
运输问题(Transportation Problem)[1]是一类特殊的线性规划问题,最早是由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的整数;

【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码


上述多式联运运输问题的数学模型如下:

【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码


若是从某个产地i到销地j的分段运输区间小于l段,则可令对应的运输区间选择任何一种运输方式所需的单位费用以及中转费用均为0后扩展为l段;同样若从产地i运往销地j的物资在第k段运输区间的运输方式小于g种,则可令对应的运输方式所需的中转费用为充分大的正数从而扩展为g种。由于不平衡运输问题可以通过设立虚拟产地或是虚拟销地转化为平衡运输问题,从而下面增加一个平衡假设,即:

【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码

3 求解多式联运运输问题的混合遗传算法
由前面的分析可以看出,多式联运运输问题是一个组合优化问题其中包括运输量的分配以及运输方式的选择两个方面。用遗传算法来进行求解,由于运输问题本身是一个约束优化问题,对于约束的处理一般有两种方法,一种是采用罚函数的方法将解从不可行区域引导至可行区域;另一种是设计可行解的生成方法及保持可行性的遗传算子,使得解始终在可行区域中寻优。采用第二种方法,通过设计满足可行性的混合编码以及两种保持可行性混合遗传算子来实现遗传算法的寻优。

3.1 染色体混合编码

采用两种方式的混合编码,首先对于运输量,采用最自然的矩阵编码方式,即用矩阵[xij]mn表示一个运输方案,其中xij表示从产地i到销地j的运输量;其次对于从产地i到销地j的多式联运运输方式采用长度为l的自然数编码,每个位置的取值为1到g的整数,表示对应运输区间的运输方式。如

【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码


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=minai,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 中国碳交易市场发展论坛”明确表示碳税在我国的必要性和可行性,并正在与财政部等部门积极准备启动碳税的前期工作。碳交易是指政府根据各地温室气体排放量、控排企业纳入情况等,核定一定时期内的碳排放总额,单位配额即每吨二氧化碳当量排放权,当初始配额不足或多余时企业按自身需要进行买卖,属于数量干预的减排措施,其本质是科斯理论中提到的产权。在我国现行的碳交易政策下,交易价格作为一种市场机制,具有动态性和随机性,时空差异性尤为显著。碳交易的核心是排放额度,企业不仅可以通过支付相应的资金进行购买来获得额外排放额度补贴,也可以通过出售多余的碳排放额度来获取一定的资金,产生相应的碳排放成本或收益。

二、部分源代码

data = xlsread(data.xlsx,A2:E35);
N = 15; % 节点数量
C = [0.526 0.497 0.361
0.392 0.340 0.273
0.090 0.073 0.051]; %公路、 铁路、水路运输成本
E = [0.071 0.042 0.012]; % 碳排放
V = [80 60 30]; %速度
Ct = [0 8 9; 8 0 10; 9 10 0]; % 转运成本
Et = [0 0.128 0.117; 0.128 0 0.113; 0.117 1 0.133]; %转运碳排放系数
Tt = [0 50 50; 50 0 50; 50 50 0] / 100; % 转运时间
q0 = 100; % 货物量
TW = [150 200]; % 时间窗
Emax = 0; %强制碳排放
P = [15 30]; %时间窗惩罚
D = nan(N, N, 3); % 距离矩阵
data(:,1) = data(:,1) + 1;
data(:,2) = data(:,2) + 1;
for k = 1 : size(data,1)
D(data(k,1),data(k,2),1) = data(k,3); D(data(k,2),data(k,1),1) = data(k,3);
D(data(k,1),data(k,2),2) = data(k,4); D(data(k,2),data(k,1),2) = data(k,4);
D(data(k,1),data(k,2),3) = data(k,5); D(data(k,2),data(k,1),3) = data(k,5);
end

%% 计算各个体的目标函数值
function f = Fitness(ch, N, q0, D, C, E, V, Ct, Et, Tt, TW, P, Emax, big)
x = ch(1:N); % 线路编码
y = ch(N+1:end); % 运输方式编码
K = find(x == N); % 线路经过K个城市
route = x(1: K); % 线路
type = y(1: K-1); % 运输方式
% 先判断是不是可行解,是可行解咱就好好算时间,不是可行解就不搭理他
punish = 0;
for k = 2 : K
if D(route(k-1),route(k),type(k-1)) == big
punish = punish + 1;
end
end
if punish == 0 % 可行解
C1 = 0; % 运输成本
C2 = 0; % 转运成本
Esum = 0; % 碳排放
% 计算出发时间
tclock = 0;
for k = 2 : K
% 到达时间
tclock = tclock + D(route(k-1),route(k),type(k-1)) / V(type(k-1));
% 运输成本
if D(route(k-1),route(k),type(k-1)) <= 500
c = C(:,1);
elseif D(route(k-1),route(k),type(k-1)) <= 500
c = C(:,2);
else
c = C(:,3);
end
C1 = C1 + q0 * c(type(k-1)) * D(route(k-1),route(k),type(k-1));
%
Esum = Esum + q0 * E(type(k-1)) * D(route(k-1),route(k),type(k-1));
if k < K
if type(k-1) ~= type(k) % 换乘时考虑
% 计算转运时间
tclock = tclock + q0 * Tt(type(k-1),type(k));
% 转运成本
C2 = C2 + q0 * Ct(type(k-1),type(k)); % 转运成本
%
Esum = Esum + q0 * Et(type(k-1),type(k));
end
end
end
C3 = P(1) * max(TW(1)-tclock,0) + P(2) * max(tclock-TW(2),0);
g = 0;
f = C1 + C2 + C3 + g * 1e9;
else
f = punish * 1e19;

三、运行结果

【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码


【多式联运】基于matlab改进的模拟退火优化遗传算法求解多式联运运输问题(含碳政策)【含Matlab源码

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]俞武扬.多式联运运输问题的混合遗传算法[J].计算机工程与应用. 2009,45(33)


优化调度基于matlab遗传和模拟退火算法求解码头泊位分配调度优化问题含matlab源码247期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

钢带厚度预测基于matlab模拟退火遗传算法优化bp神经网络钢带厚度预测含matlab源码1285期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

多式联运基于matlab遗传算法求解多式联运冷链运输成本优化问题含matlab源码2207期

...息息相关,因此研究运输问题具有相当重要的实际意义。多式联运(MultimodeTran 查看详情

多式联运基于帝国企鹅算法+遗传算法+粒子群算法求解不确定多式联运路径优化问题含matlab源码2073期

...息息相关,因此研究运输问题具有相当重要的实际意义。多式联运(MultimodeTran 查看详情

多式联运基于帝国企鹅算法+遗传算法+粒子群算法求解不确定多式联运路径优化问题含matlab源码2073期

...息息相关,因此研究运输问题具有相当重要的实际意义。多式联运(MultimodeTran 查看详情

多式联运基于matlab遗传算法求解多式联运冷链运输成本优化问题含matlab源码2207期(代码片段)

...息息相关,因此研究运输问题具有相当重要的实际意义。多式联运(MultimodeTran 查看详情

路径规划基于matlab遗传和模拟退火算法机器人路径规划含matlab源码1206期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

twvrp基于matlab遗传和模拟退火算法求解带时间窗的取送货问题含matlab源码1139期(代码片段)

一、简介1遗传算法概述遗传算法(GeneticAlgorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通... 查看详情

tsp基于matlabgui模拟退火+蚁群+遗传算法求解旅行商问题含matlab源码1611期(代码片段)

一、TSP简介旅行商问题,即TSP问题(TravelingSalesmanProblem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是... 查看详情

优化调度基于matlab改进的遗传算法求解风电场优化调度问题含matlab源码1245期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

优化求解模拟退火结合粒子群优化算法matlab源码(代码片段)

1引言  粒子群算法(ParticalSwarmOptimization-PSO)是1995年由Eberhart博士和kennedy博士共同提出的一种优化算法[1][2]。它属于群智能算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,通过适应度... 查看详情

优化求解模拟退火结合粒子群优化算法matlab源码(代码片段)

1引言  粒子群算法(ParticalSwarmOptimization-PSO)是1995年由Eberhart博士和kennedy博士共同提出的一种优化算法[1][2]。它属于群智能算法的一种,和遗传算法相似,它也是从随机解出发,通过迭代寻找最优解,通过适应度... 查看详情

优化求解基于matlab模拟退火算法求解函数极值问题含matlab源码1203期

...拟退火算法求解组合最优化问题[1]。模拟退火算法是一种基于MonteCarlo迭代求解策略的随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。其目的在于为具有NP(Non-deter 查看详情

优化求解基于matlab改进的遗传算法求解考虑环境效益dg优化问题含matlab源码1483期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

优化求解基于matlab改进的遗传算法求解考虑环境效益dg优化问题含matlab源码1483期

一、遗传算法简介1引言2遗传算法理论2.1遗传算法的生物学基础2.2遗传算法的理论基础 查看详情

tsp基于matlab遗传和模拟退火算法求解中国省会城市旅行商问题含matlab源码1254期

一、TSP简介旅行商问题,即TSP问题(TravelingSalesmanProblem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次... 查看详情

路径规划基于matlabgui改进的遗传算法机器人避障路径规划含matlab703期(代码片段)

一、简介1遗传算法概述遗传算法(GeneticAlgorithm,GA)是进化计算的一部分,是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。该算法简单、通用,鲁棒性强,适... 查看详情

图像分割基于matlab粒子群算法优化模拟退火算法图像分割含matlab源码2020期

...退火算法图像分割简介(具体理论见参考文献)1基于模拟退火思想的粒子群算法1.1基本PSO算法首先,粒子群算法是由Eberhan博士和Kennedy博士最先提出的全局优化进化算法。该算法源于对鸟群捕食行为的灵感,其基本思想是通... 查看详情