基于遗传算法的多式联运组合优化.docx
- 文档编号:7093089
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:11
- 大小:498.62KB
基于遗传算法的多式联运组合优化.docx
《基于遗传算法的多式联运组合优化.docx》由会员分享,可在线阅读,更多相关《基于遗传算法的多式联运组合优化.docx(11页珍藏版)》请在冰豆网上搜索。
基于遗传算法的多式联运组合优化
第四章基于遗传算法的集装箱多式联运运输组合优化模型的求解
4.1遗传算法简介
4.1.1遗传算法
遗传算法(GeneticAlgorithm,GA)是在20世纪六七十年代由美国密歇根大学的HollandJ.H.教授及其学生和同事在研究人工自适应系统中发展起来的一种随机搜索方法,通过进一步的研究逐渐形成了一个完整的理论和方法体系取名为基本遗传算法(SimpleGeneticAlgorithm)。
在接下来几年的研究过程中Holland在研究自然和人工系统的自适应行为的过程中采用了这个算法,并在他的著作《自然系统和人工系统的适配》中对基本遗传算法的理论和方法进行了系统的阐述与描写,同时提出了在遗传算法的理论研究和发展中具有极为重要的作用的模式理论,它的编码技术和遗传操作成为了遗传算法被广泛并成功的应用的基础,经过许多学者多年来的研究,遗传算法逐渐成熟起来,到现在已经成为了一个非常大的体系,广泛的应用于组合优化、系统优化、过程控制、经济预测、模式识别以及智能控制等多个领域。
DeJong于1975年在他的博士论文中设计了一系列针对于各种函数优化问题的遗传算法的执行策略,详细分析了各项性能的评价指标。
在此基础上,美国伊利诺大学的Goldberg于1989年系统全面的阐述了遗传算法理论,并通过例证对遗传算法的多领域应用进行了分析,为现代遗传算法的研究和发展奠定了基础。
遗传算法是一种模仿基于自然选择的生物进化过程的随机方法,它以类似于基因的编码作为种群的个体,首先,随机的产生初始种群的个体,从这个群体开始进行搜索,根据类似于生物适应能力的适应度函数值的大小,按照不同问题各自的特点,在当前的种群中运用适当的选择策略选择适应能力大的个体,其中所选择出来的个体经过遗传操作、交叉操作以及变异操作产生下一代种群个体。
如此反复,像生物的进化过程一样逐代进化,直到满足期望的终止条件为止。
4.1.2遗传算法的基本结构
遗传算法是由种群、染色体、适应度函数三个基本要素所组成的,其中种群是由作为个体的染色体组合而成的,适应度函数是对解的优劣程度进行评价的一个函数。
遗传算法不同于其他搜索算法之处在于,它的搜索过程中的每一步操作都是对整个种群进行的搜索,然后再按照每个染色体被选为优质个体的概率重新安排个体在种群中的顺序,最后根据优胜劣汰、适者生存的生物进化原理对种群进行演化操作,这时候,首先需要根据个体的适应度函数从当前的种群中挑选出相对优等的染色体,其中个体被选择的概率是根据适应度函数来确定的,对选择出来的优质个体,通过一定的交叉、变异操作产生新的个体,其中,交叉操作是对已选出的优等染色体编码进行位置的互换,变异操作是对某一染色体上某个编码位置进行随机的变化。
经过选择、交叉、变异操作之后,新产生的一些染色体构成了新的种群。
遗传算法的实现过程主要包括编码、初始化种群、适应度计算、选择、交叉、变异等六个主要的遗传操作。
利用遗传算法对问题进行求解的流程如图4.1所示,具体操作步骤如下所述:
图4.1遗传算法的过程
第一步,确定种群(population)的规模。
首先根据特定问题的大小以及可行解的多少确定合适的种群规模,也就是在应用遗传算法求解问题时初始种群中个体的数量。
第二步,对个体进行编码,产生初始种群。
编码是遗传算法进化过程的基础,影响着算法的搜索能力、种群的多样性等性能。
在对个体编码的时候需要根据特定问题的具体特点确定适当的编码方法,如二进制编码、浮点数编码、字符编码等编码方法(如二进制编码、浮点数编码、字符编码等编码方法),随机地产生由可行解组成的初始种群,这是应用遗传算法进行优化求解的开始,然后,该算法会通过一些模拟生物进化过程中的优胜劣汰规律的操作,包括遗传操作、选择操作、交叉操作、变异操作(包括遗传操作、选择操作、交叉操作、变异操作),得出种群中的最优个体,即为问题的最优解。
第三步,设计适应度函数(fitnessfunction)。
适应度函数是用来计算群体中的个体对环境的适应程度的函数,适应度值在遗传算法中表示个体被遗传到下一代种群的概率大小,它是个体进化的主要依据。
个体的适应度值是用来对种群中的每个染色体的优劣程度进行评价的唯一依据,对种群的操作包括选择、交叉、变异等操作都是根据个体的适应度值来进行的。
一般来说,适应度值越大,遗传到下一代的可能性就会越大,在求得个体的适应度值之后,一般都会将个体按照适应度值进行排序,以便于下一步所进行的选择操作。
第四步,选择操作(selection)。
在对种群进行个体的选择之前,首先确定在进行选择的时候所根据的规则和方法,选择操作一般以将个体的适应度值作为依据,按照所选定的选择方法从当前的种群中选出适应度高的优质个体,作为进行下一代遗传操作的种群中的父代进一步繁殖子孙。
遗传算法中的选择操作在本质上就是一种优胜劣汰的操作,选择操作所依据的原则是适应性强,即为个体为下一代的贡献能力大。
第五步,交叉操作(crossover)。
交叉操作是对两个父代染色体的部分结构进行替换重组生成新的个体的运算过程,是遗传算法中产生新的个体的重要方式。
具体的操作过程是这样的,首先将已经选择出来的个体,按照一定的方法搭配成对,以一定的交叉概率对每一对染色体中的部分基因进行交换重组,产生可以描述父辈个体特性的新个体。
第六步,变异(mutation)操作。
变异操作本身是一种局部随机搜索方法,其目标是保持种群个体的多样性,保证遗传算法的有效性。
具体操作过程是将从群体中随机选出来的某一个个体按照一定的变异率对其染色体结构中的某个或某几个串值进行随机的改变产生新的个体,保持个体的多样性。
第七步,判断终止的条件。
如果个体达到了运算终止的条件,那么该搜索过程也就完成了,然后输出群体中具有最大适应度值的个体,这就是问题的最优解,到此整个遗传算法的搜索过程也就结束了,如果没有达到终止条件,则对第二步到第六步迭代执行。
4.1.3遗传算法的优势
1975年Holland提出并研究遗传算法主要有两个目标:
第一是用简单的位串编码的形式来实现对各种复杂的结构的表示;第二要通过简单的变换来改进这种复杂的结构。
遗传算法是一种具有运算速度快、容错性强、有较强的鲁棒性的、简便的随机搜索算法,在求解并优化各类结构对象的过程中优势显著。
相比传统的枚举法、启发式算法、搜索方法等主要的优化算法而言,遗传算法具有以下六大优势:
(1)遗传算法具有自组织性、自适应和自学习性。
在运用遗传算法对问题进行求解的时候,算法将利用已经确定的编码方案、适应度函数自己组织进化过程对问题的解进行搜索,在进化的过程中按照一定的概率进行基因重组和基因突变等遗传操作。
遗传算法的这种特性使得该算法能够根据环境的变化自动的发现规律;
(2)传算法是以决策变量的编码为其运算对象的。
因此,算法才能够根据染色体和基因的原理通过模拟生物的遗传进化过程来完成问题的求解和优化过程;(3)并行性。
遗传算法在本质上是并行性的。
遗传算法是按照并行的方式对种群进行搜索,主要表现在两方面,一是内在并行性(inherentparallelism)遗传算法适合大规模的并行运算。
可以先让多台计算机各自进行独立的种群进化计算,各自运算完成后相互之间才进行通信比较以选择最佳的个体,二是内含并行性(implicitparallelism)遗传算法的种群方式搜索,能够同时对解空间内的多个区域进行搜索,在搜索的过程中相互交流信息,这种并行方式极大的降低了遗传算法计算过程的时间复杂度;(4)算法简单。
遗传算法无需进行求导、求微积分或者其他的辅助运算等数学方面的要求,而是直接以目标函数和所确定的适应度函数为方向进行搜索,而且遗传算法可以直接应用于问题的求解过程;(5)遗传算法对问题的求解,产生的可以是一个最优解,也可以是多个潜在解,因此问题最终的解是可以由使用者根据具体的情况进行选择确定的。
(6)遗传算法适用范围广泛,任何形式的目标函数,包括单目标和多目标函数,和约束条件都可以运用遗传算法来求解。
4.1.4遗传算法的应用
由于遗传算法具有以上所述的种种优势,同时遗传算法作为一种全新的搜索与优化方法,广泛的应用于很多的学科领域,尤其是在对复杂系统的简单化及优化操作上。
最近这几年里,由于遗传算法对问题的具体领域没有什么特别的要求,其在函数优化、组合优化、机器人智能控制、生产调度问题等不同的领域都得到了成功的应用。
(1)函数优化。
函数优化作为遗传算法的经典应用领域,是评价遗传算法性能的最常用的算例,如今各种复杂形式的函数被许多的学者构造出来作为测试函数用来对遗传算法性能进行评价。
既有连续函数、凸函数、确定函数,也包括离散函数、凹函数、随机函数等。
在运用遗传算法对非线性、多目标、多模型的函数优化问题进行求解会比其他优化算法更方便、简单并且能够得到更好的解。
(2)组合优化
组合优化问题是运筹学的一个经典分支,它是采用数学方法对一个离散问题进行求解寻找最优分组、筛选或次序等,这类问题的搜索空间会随着问题规模的变大而迅速的增大,因此用枚举法等传统的优化算法求解会比较困难,甚至可能得不到精确的最优解。
而采用遗传算法可以得到令人们满意的解,求解起来也比较简单、方便。
实践证明,在求解组合优化问题中的NP完全问题时是非常有效的,比如说在对旅行商问题、装箱问题、背包问题等问题进行求解中都已经取得了非常好的效果。
(3)机器人智能控制
遗传算法本身就是起源于对人工自适应系统的研究过程中,因而机器人智能控制也就理所当然地成为了遗传算法的一个重要应用领域。
目前,遗传算法已经广泛应用在移动机器人的路径规划方面、关节的运动轨迹、细胞机器人的结构优化和行动协调等方面。
(4)生产调度问题
当前的生产调度问题主要根据调度人员的经验安排的,一般的调度问题的数学模型都很难求得精确的最优解。
即使通过一系列的简化运算能够求解模型,但是太多的简化容易使所得到的结果与实际问题有很大的差距,导致模型与实际不相符合,然而在采用了遗传算法这个计算机工具后,这些复杂的问题也能够在有效地时间里求得满意解,遗传算法的出现与完善极大的简化了对车间调度、流水线生产、任务分配以及生产规划等方面问题的求解,为现实生产生活中的调度问题提供了参考依据。
除此之外,遗传算法也已经被广泛应用于自动控制、图像处理与模式识别、医学工程、人工生命等生产生活的各个方面,并取得了较大的成果,提高了生产效率,进一步提高了经济效益。
4.2基于遗传算法的多式联运组合优化模型求解设计
遗传算法的搜索过程是从随机产生的一个种群开始的,其中,种群是由问题可行解所组成的,在种群中被称为染色体,它是由多个基因组成的一个集合。
在搜索的过程中,根据优胜劣汰、适者生存的进化原理,逐代演化以得到越来越好的近似最优解,在每一代中用来评价染色体用来评价染色体好与不好的标准是适应度值,这也是用来选择进入下一代遗传的个体的依据,一般的适应度值高的染色体被遗传到下一代中的概率相对比较高。
然后被选出来的染色体两两配对进行交叉和变异运算,生产组成新一代种群的新染色体,称为后代。
如此反复进行,初始种群在经历了若干代的进化后,遗传算法会逐渐的收敛到适应度值最高、最接近于问题最优解的染色体,这个染色体便可以当作是问题的近似最优解或者是满意解。
4.2.1染色体编码设计
对问题的解进行编码表示是运用标准遗传算法求解的关键问题。
最初为了便于使用计算机进行运算,大都是采用0-1串的编码方法,近几年来,随着遗传算法被应用到求解各种具有不同要求的问题中去,许多学者提出了多种非0-1串的编码方法,如约束优化问题中的实数编码,组合优化问题的整数编码以及浮点数编码等编码方法。
为可行解选择适当的编码表示方法是应用遗传算法求解实际问题的前提条件,对于所有的应用问题,在应用遗传算法进行求解的时候,都要把解的编码表示方法与适用于该问题的遗传操作方法相结合起来进行考虑,设计适用于具体问题的编码方法和遗传操作对问题进行优化求解。
在该多式联运运输组合优化问题中,问题涉及到运输路径中区段运输的运输方式和进行转运换装的节点两部分,因此在对染色体进行编码的时候应该将这两种不同的因素同时作为染色体中的基因。
故而在求解该多式联运组合优化模型问题的遗传算法中,其染色体由一系列的城市节点和区段运输方式序列共同组成的,其中,序列中的第,位表示该序列的总长度,奇数位表示的是在一个运输方案中所经过的节点的信息,而偶数位则表示在该运输方案中,在该偶数位前后两个节点之间进行区段运输时所采用的运输方式的信息。
如图4.2所示为对一种运输方案进行编码表示的示例。
图4.2运输路径以及其编码方式
在应用遗传算法求解多式联运组合优化模型的编码过程中,要求每个个体的染色体编码中不允许有重复的节点基因码,也就是说在染色体编码的偶数位上不允许有相同的基因存在,这是为了保证在同一个运输方案中,任何一个城市节点在已经选择的路径方案中只能被经过一次。
在该编码方法中,任何一个染色体编码的第1个位置(位置编号从0开始)总是源节点S,最后一个位置是目的节点D,染色体的长度不是固定的,是可变的,但是其长度不可能超过最大长度2N(N个节点,N-1条路径上的运输方式,一个0位的染色体长度)。
在该多式联运模型中,具体的编码过程如下,染色体编码的第1位基因(节点)是货物的源节点S,从节点S开始,第3位置基因是从与源节点通过某种方式相连接的其他节点中随机的选择的,其中第2位置基因则表示的是在这第1位节点与第3位节点之间进行区段运输时所采用的运输方式,它是从在该两个节点之间允许的运输方式中随机选择的,然后将选择的节点的信息从网络图的结构信息中删除,以避免重复选择,这样将该过程重复下去,直到达到目的节点。
如此便生成了第一个染色体,重复进行该过程,便可以得到一系列的染色体个体,组成一个初始种群。
4.2.2适应度函数设计
遗传算法的进化搜索过程是以每个个体的适应度值为选择依据的,基本上不利用外部的信息,因而适应度函数在遗传算法中具有非常重要的作用,它的好坏对算法的收敛速度以及能否得到最优解均具有直接的影响。
一般地,对目标函数做一些相应的变换便能够容易的得到一个比较简单的适应度函数。
最常用的适应度函数基本上有如下3种:
(1)直接将目标函数作为适应度函数。
这是最简单最直观的适应度函数。
但是这种适应度函数存在两个不足之处,一是适应度函数可能为正值也可能为负值,这样在采用轮盘赌方法进行选择时,可能会出现不满足条件的意外,二是有些目标函数在其值域上可能相差很大,在这种情况下得到的平均适应度值,可能体现不出来种群的真实平均性能,影响了遗传算法的整体性能。
(2)界限构造法。
这种适应度函数设计方法首先要对目标函数的最值进行预先的估计,对于求最小值的问题要估计其上限,而求最大值的问题需要估计其下限。
界限构造法是对前一种方法的改进,但是有些具体的问题可能很难估计其界限值,因而也有一定的局限性。
(3)改进的界限构造法。
首先对目标函数的上下界限进行保守的估计。
然后根据保守估计值设计适应度函数。
在以个体的适应度值来为参考标准对群体进行搜索时,适应度值越大被选择遗传到下一代的概率就更大。
在该多式联运路径组合优化模型中,为了简化运算,采用以每一个运输方案的整个过程中的总运输费用的倒数作为适应度函数。
假设初始种群的大小为:
P={
},其中
其中只表示的是代表某一个运输方案的染色体编码,
表示染色体
所的总代价值,因此,定义染色体
的适度函数为:
。
4.2.3选择运算
选择操作是用来确定父代种群中哪些个体能够以多大可能性被选中并遗传到下一代的进化操作。
选择操作一般要包含两个阶段,第一是计算每个个体的适应度值,即根据所选择的个体适应度函数,计算出来每个个体的适度值,第二是根据所确定的选择方法对染色体进行选择。
在对多式联运组合优化模型进行求解的选择方法进行设计之前,首先介绍最常用的基本的选择算法。
(1)轮盘赌选择法。
这种选择方法是比较简单的一种方法,它根据个体的适应度值、随机产生的选择概率以及累积概率通过多轮选择,确定进入下一代的个体。
(2)随机遍历抽样法。
应用这种选择方法对个体进行选择的时候,首先需要随机的选择第一个位置,然后根据已确定的间隔等距离的从种群中选择个体。
(3)局部选择法。
在这种选择算法中,首先将当前待搜索的种群按照一定的原则划分成若干个局部的小种群,个体之间的交配只在个体所在的小种群内部进行,为了保证所有的个体直接能够交换信息,不同的小种群之间要有一定的重叠性。
(4)截断选择法。
这是一种适用于大种群的人工选择算法。
这种选择方法首先将个体按照适应度值进行排序,根据截断阈值、选择强度对种群中的个体进行选择。
在应用遗传算法对该多式联运运输组合优化问题进行求解时,该问题的目标函数就是为了寻求一个满足约束条件的最小的成本值,因此我们采用改进的截断选择方法,在此,确定选择的规则是适度值大的被选择出来作为下一代种群的父代,继续进行运算。
因此,首先需要按照染色体的适度值从大到小排列顺序,即:
4-
(2)
这样,适度值比较大的个体就是我们所需要的,这些能够被优先选择作为下一代种群的父代来继续进行运算,其中,每一个个体被选择的概率和染色体的适度函数值成正比例,即个体的适度值越大,被选择的概率就会越高。
在进行选择的过程中,如果出现了两个相同的染色体,那么只需要保留一个染色体即可,将另外一个染色体删掉,重复这个过程以选择新一代的染色体个体。
4.2.4交叉运算
交叉操作也被称为基因重组,是指把从种群中选取出来的两个父代个体的部分结构按照一定的规则相互替换重新组合,产生两个新的个体。
交叉操作是遗传算法中产生新的优等个体的最重要的手段,通过个体交叉操作而产生的两个新个体,同时包含着两个亲代个体的遗传基因,但又与亲代个体不完全相同。
因此,交叉操作使得遗传算法的搜索能力得以飞跃的提高。
常用的交叉操作方法有:
实值重组(包括离散重组、中间重组、线性重组)、二进制交叉(有单点交叉、多点交叉、均匀交叉)、部分匹配交叉、顺序交叉、洗牌交叉等多种交叉方法,在具体应用时需要根据特定问题的具体特点选择适合的交叉方法完成基因的重组,使得种群向着多样化发展,进而使搜索能够到达更多的个体,使最后的得到的解是最优的。
在该多式联运路径运输组合优化问题中,交叉不同于传统的单点交叉,两个染色体选择一个公共的节点基因(除第一个节点和最后一个节点外)作为交叉基因,该节点不依赖于节点在路径中的位置,当有两个以上的公共节点时,只需要选择其中一个作为交叉点即可,通常选择第一个公共点进行交叉。
如果不存在公共的基因节点,那么将两个父代个体作为子代个体遗传到下一代中。
如图4.3所示为染色体交叉处理过程示例:
图4.3染色体交叉的处理过程
4.2.5变异运算
变异运算是在选择和交叉操作之后进行的,它是在染色体上以一个很小的概率或步长随机产生的基因变化。
变异能够提供初始种群中没有的基因,或者是找回在进行选择操作时所丢失的基因,为种群补充新的基因,防止基因丢失现象的出现。
一般的变异概率都是一个很小的随机数,与种群的规模没有关系。
变异是一种局部随机搜索方式,它与选择操作相结合,共同保证遗传算法的有效性和多样性,避免了非成熟收敛现象的出现。
变异操作依赖于具体的染色体编码方式,一般有两种最常用的方式:
实值变异和二进制变异。
如图4.4所示为在该多式联运运输组合优化问题中染色体变异操作的处理过程。
首先从染色体中随机的选择一个基因(比如
)作为变异点,保持从源节点到变异点的基因不改变,而变异点之后的基因是从与该变异点相连接的节点中随机选择的,选择方法同染色体编码过程,直到到达目的节点为止。
图4.4染色体变异的处理过程
4.3算例分析
4.3.1已知条件
假设有一批货物需要从一个城市运往到另一个城市,在这两个城市之间存在着多条运输路线、多种运输方式供联运经营人从中选择,不同的运输方式之间进行转运时需要一定的转运时间和转运成本,而且转运只能在城市节点进行而不能在运输途中完成。
我们以一个具有6节点的运输网络为例,如图4.5所示:
从源节点S有一批运量为q的集装箱货物计划运输到目的城市D,在运输途中需要经过若干城市并通过一定的运输方式进行组合运输,以将货物送达目的城市D。
其中允许经过的城市有
四个城市各个城市之间允许的运输路线以及运输方式如图4.5所示,每条连接两个节点的线段代表了再这两个节点之间存在着该种运输方式可以直达运输,该网络图中共有18条直达运输路线(包括公路运输、铁路运输、水路运输三种不同方式的运输路线)。
图4.5运输网络图
表4.1给出了运输网络中所存在的路径以及不同路段上的不同运输方式的运输单价、单位距离的运输时间以及运输能力;表4.2给出了在每个城市进行不同运输方式之间进行转运换装时的转换单价以及转换时间。
表4.1各个城市之间运输单价、单位距离的运输时间及运输能力
注:
运输单价的单位是:
元/t•km运输时间的单位是:
h/1000km,运输能力的单位是:
t
表4.2每个城市进行不同运输方式转换的中转费用和中转时间
注:
a/b,a表示单位量的中转费用,单位:
元/t;b为单位量的中转时间,单位:
h/1000t
4.3.2仿真结果
对于上文所设计的运输费用模型,运用C#进行编程,假设货运量分别为:
q=850t和q=1000t,要求的运输时间分别为18.5小时和19小时,进行仿真计算,迭代次数设置为150次,种群的规模为40,按照网络图4.5作为交通网进行仿真计算并求解,得出计算结果分别为:
4.4本章小结
本章首先对基本遗传算法的结构、特点以及应用进行了简单的介绍,然后根据集装箱多式联运组合优化问题的具体特点,结合着本文中所建立起来的多式联运运输方式与运输路线组合模型,详细叙述了本文所使用的改进的遗传算法的具体的各个遗传操作的算法,包括染色体的编码设计、适应度函数的选择、选择操作的依据、交叉运算的操作方法、变异算法的操作过程等,并对一个仿真的运输网络算例应用文中的多式联运运输方式和运输路线组合模型采用改进的遗传算法进行了仿真求解,从算例中得出的结果我们能够看出,该改进的遗传算法采用了非固定长度的染色体对问题进行编码并进行各种遗传操作,改变了传统的遗传算法只能使用固定长度的染色体编码对问题进行求解的限制,而且该改进的遗传算法可以在比较短的时间里求得相对比较满意的结果,为多式联运经营人合理的安排运输路线和选择运输方式提供了一定的依据,为后续的研究工作提供了一定的参考。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 遗传 算法 联运 组合 优化
![提示](https://static.bdocx.com/images/bang_tan.gif)