一、联运运输简介

1 引言
随着全球经济一体化进程的加快, 产业供应链变得越来越复杂, 运输网络变得越来越广泛, 货物运输需求也发生了变化———以顾客需求为中心的方便、快捷、高效、低价的货物运输已成为必然趋势, 单一的集装箱运输模式已经不能满足当今全球供应链管理的发展要求, 因此, 以货物运输为主的集装箱多式联运在全球范围内得到了广泛的认可与使用, 创建高效的集装箱多式联运模式也已成为各国经济可持续发展的关键因素之一。

集装箱多式联运的发展是建立在完善的综合运输体系之上的。然而, 长期以来广西的交通运输已成为其经济发展的瓶颈, 由于基础设施不完善, 没有一个统一的综合运输统筹部门, 各种运输方式没有真正发挥组合优化的作用, 通畅的、安全的、便捷的集装箱多式联运网络尚未建立。

2 遗传算法的原理及优化模型的建立和实现
2.1 遗传算法的原理

遗传算法简称GA (Genetic Algorithm) , 在本质上是一种不依赖具体问题的直接搜索方法。遗传算法的基本思想是基于Darwin进化论和Mendel的遗传学说, Darwin进化论最重要的是适者生存原理:它认为每一物种在发展中会越来越适应环境, 物种每个个体的基本特征由后代所继承, 但后代又会产生一些异于父代的新变化。在环境变化时, 只有那些能适应环境的个体才能保留下来。Mendel遗传学说最重要的是基因遗传原理。它认为遗传以密码方式存在于细胞中, 并以基因形式包含在染色体内。每个基因有特殊的位置并控制某种特殊性质, 所以, 每个基因产生的个体对环境具有某种适应性。基因突变和基因杂交可产生更适应环境的后代。经过存优去劣的自然淘汰, 适应性高的基因结构得以保存下来。

下图是遗传算法的运算过程图:

基于上述思路, 在应用上设计多式联运最优路径求解的步骤。将数据随机置于起始点, 对每条路线按照多个起始点计算其运输费用。

图1 遗传算法的运算过程图

2.2 优化模型的建立和实现
(1) 根据集装箱多式联运运输资源配置的分析可知, 该问题属于非线性约束组合问题, 即使问题规模较小时也难以解决, 随着规模的增大, 解决问题的复杂度也增大。近几年来随着仿真优化方法研究的逐渐完善, Tabu算法越来越多应用到仿真模型优化中, 该算法具有大量随机参数的组合优化问题等特点。

(2) 运用仿真优化方法, 结合仿真模型算法的特点对系统资源配置协调优化问题进行求解, 通过运行仿真模型得到相应的评价指标, 在满足约束条件的基础上, 对仿真方案进行不断的矫正, 最后得出较优的运输方案。

(3) 优化模块。主要通过遗传算法算出问题的最优解, 根据具体的目标, 采用科学算法, 搜索仿真模型的最优解, 并对其进行优化组合。

3 基于遗传算法的集装箱多式联运运输优化实例分析
3.1 问题假设

假设某多式联运经营人准备建立和开发一条由广西柳州 (O) 至广西钦州 (D) 的集装箱多式联运路线, 中途可选择若干个 (n个) 城市作为中间节点, 任意相邻的两个城市之间都有若干种 (g种) 运输方式可供选择, 在相邻的两个城市之间各种运输方式的运输时间、运费、运输能力不同, 当从一种运输方式转换到另一种运输方式时, 需要一定的中转时间和中转费用, 而且在整个运输过程中的总时间不能超过运输期限 (T) , 在考虑上述各种因素的前提下确定最佳的运输路线和组合方式, 使得总运费和总运输时间为最少。

为了对问题进行有效的求解, 参考Spiess和Florian提出的多式联运的优化算法, 本文将每一个城市到另一个城市的每一种运输方式都单独作为一条运输路线加入到运输网络中。即如图2城市1到城市2是连通的, 我们用一条有向箭头表示城市1到城市2之间连通, 但实际城市1到城市2共有三种运输方式可行, 所以将图2进行改进后成为了图3, 两种从城市1到达城市2的运输方式成为了三条可选的运输路线。这样就可以将这个多式联运运输优化问题转化成一个最短路问题。

图2 城市1到城市2的连通图

图3 改进后的连通图

3.2 优化模型的建立
针对最短路问题的特点先对模型作以下假设:
(1) 运量在某两个城市之间不能分割, 即在某两个特定的城市之间, 只能选择一种运输方式;
(2) 运输成本与距离成线性关系。
为了建立模型用有向图G (N, A) 来代表多式联运的运输网络图, 其中N表示结点集合, A表示边集合, N表示G图的结点总个数。C=[Cijk]表示图G的邻接权矩阵———即运输费用矩阵, k={1, 2, 3}代表三种可行的运输方式, 其中T=[tijk]表示第二邻接权矩阵———即运输时间矩阵, 当城市i、j没有任何方式相邻的时候:Cijk=tijk=N (N为一非常大的正整数) 。始点与终点分别以O和D来表示。Ii表示节点i是否被选择到运输路线中。Ii=1代表节点被选取到运输路线中, 0代表没有被选取。Wijk等于I (i) 与I (j) 相与, 即I (i) 与I (j) 是否以第k种运输方式被选入到运输路线中, 当I (i) &I (j) =1时Wijk=1;当I (i) &I (i) =0时, Wijk=N, 即节点i, j之间没有被选择作为运输路线。

最短路问题优化模型表示为:

3.3 优化模型的求解算法
基于上面的问题模型可以看出这个问题是一个NP难题, 很难得到全局最优解或满意解, 如用改进的遗传算法对其进行求解, 能取得较好的效果[i]。在用遗传算法对该模型进行求解时主要要进行下面几项工作。

(1) 确定个体的编码方式:对于遗传算法来说, 它的可行解由个体来表示, 主要在个体之间中进行交叉、变异的操作生成新的个体, 直到得到合乎条件的个体为止。所以如何决定个体的编码方式, 对问题的求解速度、误码率、最优解的范围都有很大影响。拿一个8城市3种运输方式的运输网络来说, 染色体长度就是8x (8+1) =72, 其中城市选取用0-1来代表节点是否被选中, 而运输方式的选取用1-3的自然数编码来表示。

(2) 确定初始群体:若干个染色体或个体组成的一组向量称为一个群体, 遗传算法计算的第一步首先要确定一个初始群体, 在此基础上才可以进行之后的遗传进化过程。初始群体的选择应该具有较为广泛的代表性, 并且要有足够多的染色体 (个体) , 否则有可能陷人局部最优解而出现早熟现象。论文的染色体生产的方式是随机生成大部分染色体, 再在群体中加入一部分可行解染色体, 作为初始群体。

(3) 确定适应度函数:在遗传算法中用适应度函数来表明个体和解的优劣性, 用来确定个体遗传到下一带的概率, 适应度越高的个体遗传到下代的概率就越高, 这样就保证了个体向最优解的方向发展。本文直接用目标函数作为适应度函数, 即f (x) =z (x) 。

(4) 确定交叉和变异规则:交叉是指种群中确定的染色体做为父代, 通过一定规则产生子代染色体的过程, 这一过程所遵循的规则称为交叉规则。这里我们采用两点交叉法, 在这种方法中, 在亲代中选择好两个染色体, 随机产生两个点, 作为交叉点, 然后将两个染色体中两个交叉点之间的对应信息码相交换得到两个子代的染色体。然而, 经过该操作后, 新产生的后代不一定符合约束条件, 所以还要对产生的新个体进行检验, 如果不符合约束条件, 还要重新进行交叉, 直到满足约束条件为止。

二、部分源代码

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上限

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
1.申慧芝,经素萍,黄睿伶.基于遗传算法的广西集装箱多式联运运输优化研究[J].科技视界. 2017,(21)

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

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

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

    一.联运运输简介 1 引言 运输问题(Transportation Problem)是一类特殊的线性规划问题,最早是由Hichcock于1941年提出的,由于它不仅能解决物资的合理调运和车辆的合理调度 ...

  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. POI实现Excel导入时提示NoSuchMethodError: org.apache.poi.util.POILogger.log
  2. 树莓派AI视觉云台——7、树莓派系统备份
  3. Harbour.Space Scholarship Contest 2021-2022 E. Permutation Shift 思维 + 剪枝
  4. Google Guava –与Monitor同步
  5. 撸个微信小程序的省市区选择器
  6. 使用方法实现数组的对调与输出
  7. 工作68:子路由跳转
  8. java 两个数组交叉_java – 如何交叉两个没有重复的排序整数数组?
  9. JDK源码解析之 java.lang.Error
  10. Appfuse2学习笔记--GzipFilter的应用
  11. 【资源分享】ArcFace Demo [Android]
  12. King Arthur's Birthday Celebration
  13. 眼图Matlab初学者代码
  14. 解决WIN10家庭版无法远程桌面连接的问题
  15. 初学者之路——————对抗神经网络
  16. IEtester 中文官方网站 raquo; IETester 最新版下载 V0.4.6 支持WIN7 支持IE9 马上下载
  17. 20144306《网络对抗》MAL_恶意代码分析
  18. MATLAB之function函数
  19. 用 PyQt5 制作动态钟表
  20. Java五子棋Ai-权值法

热门文章

  1. 恶意软件、恶意软件反杀技术以及反病毒技术的详细介绍
  2. Linux Wireless netlink socket nl80211
  3. 幻想传说:全技能奥义、料理、物品、称号、交易品 获得条件(图文)
  4. 浅谈:多光谱和高光谱图像有什么区别?
  5. git报错:remote: [session-474e1980] Access denied fatal: unable to access... 403
  6. 三消游戏的一个重要帮助函数
  7. java 下载文件名 编码
  8. 腾讯云~安装ActiveMQ
  9. 自己制作deb包(转)
  10. ssm毕设项目交通违章举报平台lxsqm(java+VUE+Mybatis+Maven+Mysql+sprnig)