【路径规划-多式联运】基于遗传算法求解多式联运运输问题(考虑碳交易)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机

⛄ 内容介绍

随着"一带一路"倡议的提出,中欧运输得到了迅速发展,中欧班列将中欧经贸合作扩展至城市和城市之间.中欧之间形成了复杂的国际多式联运物流网络,虽然为中欧多式联运的发展提供了巨大的机遇,但也加剧了各种运输路线的无序竞争,不利于货物运输的高效运行.与此同时,全球愈发严重的温室效应让人们越来越关注低碳交通,我国也提出了优化运输结构,建设绿色运输体系的目标,这对减少多式联运中的碳排放量,提升多式联运水平提出了更高的要求.因此对中欧多式联运及其碳排放进行研究有着重要的现实意义.

⛄ 部分代码

%%%% 遗传算法求解多式联​

clc

clear

close all

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 = 120;          % 货物量

TW = [55  65];    % 时间窗

Emax = 7000;

P = [15   30];

beta = 15;

Etol = 5000;

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

big = 1e6;

D(isnan(D)) = big;

CTR = {'O', '1', '2','3','4','5','6','7','8','9','10','11','12','13','D'};

%%

tic

NP = 40;          % 种群大小

maxgen = 200;     % 最大进化代数

Pc = 0.8;         % 交叉概率

Pm = 0.2;         % 变异概率

Pe = 0.1;         % 精英比例

%% 初始化种群

X0 = InitPop(NP, N, D, big);

%% 遗传进化

gen=1;

fx0 = zeros(NP,1);

for i = 1 : NP

    fx0(i,1) = Fitness(X0(i,:), N, q0, D, C, E, V, Ct, Et, Tt, TW, P, Emax,beta, Etol,  big);  % 计算目标函数值

end

fpbest = min(fx0);

while gen <= maxgen

    % 计算适应度

    fit = max(fx0) - fx0;

    % 选择

    X1 = Select(X0, fit);

    % 交叉操作

    X1 = Cross(X1, N, Pc);

    % 变异

    X1 = Mutate(X1, N, Pm);

    % 计算目标函数值

    fx1 = zeros(NP,1);

    for i = 1 : NP

        fx1(i,1) = Fitness(X1(i,:), N, q0, D, C, E, V, Ct, Et, Tt, TW, P, Emax, beta, Etol, big);  % 计算目标函数值

    end

    % 精英保留

    [X0, fx0] = Elitism(X0, X1, fx0, fx1, Pe);

    % 记录各代最优值

    fpbest = min(fx0);

    FG(gen) = min(fx0);       % 各代最优值

    % 更新迭代次数

    gen = gen+1

end

%% 结果

[fgbest,minInd] = min(fx0);

gbest = X0(minInd(1),:);

figure

plot(FG(FG < 1e9),'r-')

hold on

xlabel('迭代次数')

ylabel('最优成本')

title('GA迭代曲线')

yuancode(gbest, N, q0, D, C, E, V, Ct, Et, Tt, TW, P, Emax, beta, Etol,  big, CTR)

toc

⛄ 运行结果

【路径规划-多式联运】基于遗传算法求解多式联运运输问题(考虑碳交易)附Matlab代码_第1张图片

【路径规划-多式联运】基于遗传算法求解多式联运运输问题(考虑碳交易)附Matlab代码_第2张图片

⛄ 参考文献

[1]刘畅. 考虑碳排放的中欧多式联运路径选择优化[D]. 大连海事大学, 2020.

❤️ 关注我领取海量matlab电子书和数学建模资料

❤️部分理论引用网络文献,若有侵权联系博主删除

你可能感兴趣的:(路径规划,matlab,开发语言)