一、联运运输简介

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

二、部分源代码

clear
clc
close all
tic
%% 用importdata这个函数来读取文件
shuju= xlsread(‘shuju.xlsx’, ‘Sheet1’);
bl=0;
cap=100; %车辆最大装载量
%% 提取数据信息
zuobiao=shuju(:,2:3); %所有点的坐标x和y
customer=zuobiao(2:end,:); %顾客坐标
cusnum=size(customer,1); %顾客数
v_num=8; %车辆最多使用数目
demands=shuju(2:end,4); %需求量
a=shuju(2:end,5); %顾客时间窗开始时间[a[i],b[i]]
b=shuju(2:end,6); %顾客时间窗结束时间[a[i],b[i]]
s=shuju(2:end,7); %客户点的服务时间
%% 距离矩阵
h=pdist(zuobiao);
lldist=squareform(h).*1.5; %路路距离矩阵
htdist=squareform(h); %飞机距离矩阵
hydist=squareform(h).*1.2; %%火车距离矩阵
%% 遗传算法参数设置
alpha=100000; %违反的容量约束的惩罚函数系数
belta=0.5;%违反时间窗约束的惩罚函数系数
belta2=0.5;
chesu=[1,5,2];
NIND=300; %种群大小
MAXGEN=500; %迭代次数
Pc=0.9; %交叉概率
Pm=0.05; %变异概率
GGAP=0.9; %代沟(Generation gap)
N=cusnum+v_num-1; %染色体长度=顾客数目+车辆最多使用数目-1
%% 粒子群参数
lx=3;
w=1; %惯性因子
wdamp=0.99; %惯性因子衰减率
c1=1.5; %个体学习因子
c2=2.0; %全局学习因子
XvMin=1; %Xv下限
XvMax=lx; %Xv上限
VvMin=-(lx-1); %Vv下限
VvMax=lx-1; %Vv上限
%% 初始化种群
Chrom=InitPopCW(NIND,N,cusnum,a,demands,cap,XvMin,XvMax,VvMin,VvMax); %构造初始解
%% 输出随机解的路线和总距离
disp(‘初始种群中的一个随机值:’)
[VC,NV,PD]=decode(Chrom{1},cusnum);
% disp([‘总距离:’,num2str(TD)]);
disp([‘车辆使用数目:’,num2str(NV)]);
disp(’~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~’)
%% 优化
gen=1;
figure;
hold on;box on
xlim([0,MAXGEN])
title(‘优化过程’)
xlabel(‘代数’)
ylabel(‘最优值’)
ObjV=calObj(Chrom,cusnum,cap,demands,a,b,s,lldist,htdist,hydist,alpha,belta,belta2,chesu,bl); %计算种群目标函数值
preObjV=min(ObjV);
[~,minInd]=min(ObjV);
gbest_pos=Chrom{minInd,1}(2,:); %假设第一个粒子位置为全局最优位置
gbest_obj=preObjV; %第一个粒子位置的目标函数值
pbest_pos=cell(NIND,1); %初始化各个粒子的个体最优位置
pbest_obj=ObjV; %初始化各个粒子的个体最优的目标函数值
for i=1:NIND
particle=Chrom{i,1}; %第i个粒子
position=particle(2,:); %第i个粒子的位置
pbest_pos{i,1}=position; %初始化这个粒子的个体最优
if pbest_obj(i,1)<gbest_obj
%更新初始种群中的全局最优粒子
gbest_obj=pbest_obj(i,1);
gbest_pos=position;
end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

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

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【多式联运】基于matlab粒子群结合遗传算法求解陆海空多式联运问题【含Matlab源码 2061期】相关推荐

  1. 【多式联运】基于matlab粒子群结合遗传算法求解陆海空多式联运问题【含Matlab源码 1963期】

    一.联运运输简介 1 引言 随着全球经济一体化进程的加快, 产业供应链变得越来越复杂, 运输网络变得越来越广泛, 货物运输需求也发生了变化---以顾客需求为中心的方便.快捷.高效.低价的货物运输已成为 ...

  2. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  3. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  5. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  6. 【Matlab通信】DTMF双音多频电话拨号仿真【含GUI源码 805期】

    一.代码运行视频(哔哩哔哩) [Matlab通信]DTMF双音多频电话拨号仿真[含GUI源码 805期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  7. 【多式联运】基于粒子群结合遗传算法实现陆海空多式联运问题附matlab代码

    1 简介 物流运输方式由公路.水路.空运及管道等 3 种方式组成,3 种运输方式在技术上.经济上各有长短,都有适宜的 使用范围,每种运输方式单独运用很难实现节约资源.降本增效.随着我国经济不断发展以及 ...

  8. 【PSO三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 015期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  9. 【PSO三维路径规划】基于matlab粒子群算法无人机三维路径规划【含Matlab源码 1260期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

最新文章

  1. 清华学霸直博简历火了!CPU、操作系统、编译器全自主写,刘知远点赞
  2. 访问支付宝(淘宝)首页IE自动关闭解决方案
  3. UI设计师必须了解:2015年十大移动端APP设计主流趋势
  4. c++ 对象起始地址 指针靠齐_你需要知道的各种指针运算
  5. loj2090. 「ZJOI2016」旅行者
  6. [react] shouldComponentUpdate方法是做什么的
  7. c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...
  8. 两步路轨迹文件位置_最新Uber ATG的轨迹预测方法LiRaNet介绍
  9. 2008下mysql补丁_windows Server 2008 R2安装Mysql 8的打补丁顺序
  10. mysql命令报错-bash: mysql: command not found
  11. C++的输入、输出与文件
  12. 使用000webhost.com免费主机搭建一个WordPress站点
  13. win10 安装“msi”文件提示 “Windows Installer无法打开此安装程序包。请确认该程序包存在,并且你有权访问它,或者与应用程序供应商联” error 2502 2503
  14. 奔波霸儿大战邮箱服务器
  15. 2022年轨道交通行业研究报告
  16. 省钱兄校园跑腿源码(公众号+APP+小程序+Android+IOS)校园跑腿社区跑腿同城跑腿任务兼职小程序uniapp前端模版
  17. Python正则表达式用法详解
  18. charles证书过期如何处理
  19. 进程冻结(freezing of task)
  20. mysql本地localhost连接不上

热门文章

  1. 黄金K线图经典图解之“五毛”
  2. 哔哩大学计算机学院:如何学好C语言
  3. css3图片飞走动画特效
  4. Unity2D入门1 简单角色移动与动画 基础
  5. Proxyee_down 3.2的下载与安装
  6. java商城并发_一次线上商城系统高并发优化,涨姿势了~
  7. 火山安卓分割文本的使用
  8. 第十二周实践项目一--图及存储结构算法库
  9. android arrayadapter自定义,android – 如何向Arrayadapter添加自定义布局?
  10. Java系列之:Collections实现斗地主游戏