hello,大家好。各位可点击此处,访问公众号官方店铺。谨防上当受骗,感谢各位支持!
在动态多目标旅行商问题(一)这篇推文中,我们讲解了动态多目标旅行商问题(Dynamic Multi-Object Traveling Salesman Problem,DMOTSP,DMOTSP)的概念,同时也讲解了动态多目标算法的预备算法:Inver-Over算法。今天我们紧接着上一篇推文的内容,带领各位小伙伴了解动态多目标的Inver-Over算法,后续简称DMOIO算法。
本篇推文主要从以下几个方面展开:
01DMOIO算法中的多目标进化如何体现
02DMOIO算法中的动态优化如何体现
03 DMOIO算法流程图
04 参考文献
01 |DMOIO算法中的多目标进化如何体现
DMOIO算法中的多目标进化实际上和多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)这篇推文中讲到的NSGAII基本相同。
(1)编码
DMOTSP问题的解实际上和普通的TSP问题相同,即为所有城市的排序序列。假设城市数目为5,且城市编号分别为1、2、3、4、5,则DMOTSP问题的解可能为12345。现在将城市数目推广为N,则DMOTSP问题的解可能为1~N的随机排列,在matlab中用randperm(N)表示。
(2)适应度函数
在这里,我们将DMOTSP问题的目标设为两个,第一个目标为最小化旅行商人总行走距离,第二个目标为最小化旅行商人总行走成本。这里需要强调一点行走成本矩阵中的行走成本=rand*对应行走距离(rand为0~1之间的随机数),也就是说行走距离短并不意味着行走成本低。假设城市数目为N,则距离矩阵为N5行N列,同时,成本矩阵也是N行N列。
假设两个城市之间的距离为10,则这两个城市之间的距离为rand*10。
(3)Inver-Over交叉操作
在动态多目标旅行商问题(一)这篇推文中已经为各位讲解Inver-Over算子,下面来回顾一下这个交叉算子。
![0c87e7f4e7036b628497bd2e7a78808d.png](https://i-blog.csdnimg.cn/blog_migrate/435c9bf43a581608a7cb06f971087361.jpeg)
下面通过一个例子详细讲解Inver-Over算子,假设
假设从
第一次循环:
假设rand=0.005,则rand<=p1。
假设此时从
此时
倒置
更新c=8。
第二次循环:
假设rand=0.5,则rand>p1。
假设此时从种群P中随机选择出的个体为
此时将
跳出repeat循环后:
如果当前
(4)变异操作
变异操作就是随机选择染色体上两个位置点进行交换,假设交换点为2和4
1 2 3 4 5
变异为
1 4 3 2 5
(5)Pareto最优解和Pareto最优前沿
Pareto最优解:对于多目标优化问题,通常存在一个解集,这些解之间就全体目标函数而言是无法比较优劣的,其特点是:无法在改进任何目标函数的同时不削弱至少一个其他目标函数。这种解称作非支配解或Pareto最优解。
Pareto最优前沿:对于组成Pareto最优解集的所有Pareto最优解,其对应目标空间中的目标矢量所构成的曲面称作Pareto最优前沿。
(6)快速非支配排序算子的设计
多目标优化问题的设计关键在于求取Pareto最优解集。NSGA-II算法中的快速非支配排序是根据个体的 非劣解水平对种群 分层,其作用是指引搜索向Pareto最优解集方向进行。它是一个循环的适应值分级过程:首先找出群体中 非支配解集,记为 第一非支配层F,将其所有个体赋予非支配序值 irank=1(其中irank是个体i的非支配排序值),并从整个种群中 除去;然后继续找出 余下群体中非支配解集,记为第二非支配排序层 F2,个体被赋予非支配序值 irank=2;照此进行下去,直到 整个种群被分层, 同一分层内的个体具有 相同的非支配序值 irank。 https://www. zhihu.com/question/2699 0498/answer/35644566
(7)个体拥挤距离算子设计
为了能够在具有相同irank的个体内进行选择性排序,NSGA-II提出了个体拥挤距离的概念。个体i的拥挤距离是目标空间上与i相邻的 2个个体i+1和i-1之间的距离,其计算步骤为:
a)对同层的个体初始化距离。令L[i]d=0(其中L[i]d表示任意个体i的拥挤距离);
b)对同层的个体按第m个目标函数值升序排列;
c) 使得排序边缘上的个体具有选择优势。给定一个大数M,令L[1]d=L[end]d=M;
d)对排序中间的个体,求拥挤距离:
谁能通俗的讲解一下NSGA-II多目标遗传算法?
![a138c414f3c682427a2caccdfa183ecb.png](https://i-blog.csdnimg.cn/blog_migrate/e433cb9bd855b9b0685d379c1710dabf.png)
(其中:L[i+1]m为第i+1个个体的第m目标函数值,
e)对不同的目标函数,重复步骤a)~步骤d)操作,得到个体i的拥挤距离L[i]d,通过优先选择拥挤距离较大的个体,可使计算结果在目标空间比较均匀分布,以维持种群的多样性。以维持种群的多样性。
(8)精英策略选择算子
精英策略即保留父代中的优良个体直接进入子代,以防止获得的Pareto最优解丢失。精英策略选择算子按3个指标对由父代Ci和子代Di合成的种群Ri进行优选,以组成新的父代种群Ci+1。 首先淘汰父代中方案校验标志为 不可行的方案; 其次按照 非支配序值irank从低到高排序,将整层种群依次放入Ci+1,直到放入 某一层Fj时出现 Ci+1大小超过种群规模限制 N的情况; 最后,依据Fj中的 个体拥挤距离由大到小的顺序继续 填充Ci+1直到种群数量 达到N时终止。
谁能通俗的讲解一下NSGA-II多目标遗传算法?
02 | DMOIO算法中的动态优化如何体现
DMOTSP中的动态体现城市状态发生以下三个方面的变化:城市的消失、新城市的出现、城市位置的改变。
为此,DMOIO算法中的动态针对上述三种城市状态的变化提出三个动态算子,即删除算子、插入算子和转换算子。接下来,我们逐个讲解这三个算子。
(1)删除算子
只有当城市消失时,才会用到删除算子。删除算子遵循如下原则:当城市消失时,把这个城市从路径中删除,并将与它相连的城市连接即可。
删除算子的伪代码如下:
![0d6f388ec38a0e416fb31266397bc93b.png](https://i-blog.csdnimg.cn/blog_migrate/da8ee2609a01772a7948a6af539bc875.png)
删除算子示意图如下:
![670c4fa8eb7d31f15901fbf2fabebf6d.png](https://i-blog.csdnimg.cn/blog_migrate/c430d06f7906de57939d5f28b92baf63.jpeg)
(2)插入算子
只有当新的城市出现时,才会用到插入算子。插入算子遵循如下原则:当新的城市 出现时,插入算子找到与
插入算子的伪代码如下
![0f0fc86d6795301e5a0385db61ff0a46.png](https://i-blog.csdnimg.cn/blog_migrate/bf6f3bd47573e6c36cd4be3743f02b24.jpeg)
插入算子示意图如下:
![f85a9f4c7aa9ec4c5f7a22f2054cf4d5.png](https://i-blog.csdnimg.cn/blog_migrate/43720a0f78841d8a129b4f3be54f1fe3.jpeg)
(3)转换算子
只有城市的位置改变时,才会用到转换算子。转换算子遵循如下原则:当城市C的位置改变时,首先把C从路径中删除,再将C以新的城市
转换算子删除算子插入算子转换算子示意图如下:
![1e9da8ca58673fb8ce1e320e09d0b691.png](https://i-blog.csdnimg.cn/blog_migrate/5b2b8ad7924f2fdcbfc7e6700fb7d1d0.png)
03 | DMOIO算法流程图
在给出DMOIO算法流程图前,我们用Dlist矩阵储存动态城市的城市编号、XY坐标及对应动态算子的类型,其中插入算子类型用1表示,删除算子类型用2表示,转换算子类型用3表示。Dlist矩阵示意如下,其中城市7、8、9为新增城市,城市1为删除城市,城市2、6为改变位置的城市。
![d229ea26cd1a513835bc0f0f9ae41fda.png](https://i-blog.csdnimg.cn/blog_migrate/3f30b341b8faf25c60a59134fc012a0b.png)
经过上述两小节,我们可以看出,DMOIO算法中的多目标和动态实际上是两个分离的步骤,因此DMOIO算法的流程图如下。
![89bdc8524892689c9453f776020612a4.png](https://i-blog.csdnimg.cn/blog_migrate/3aefddbe2efe7615215c4dce839dc399.jpeg)
04 |参考文献
[1] 杨鸣. 动态多目标 TSP 演化算法研究[D]. 中国地质大学, 2008.
[2] Tao G, Michalewicz Z. Inver-over operator for the TSP[C]//International Conference on Parallel Problem Solving from Nature. Springer, Berlin, Heidelberg, 1998: 803-812.
[3] Zhou A, Kang L, Yan Z. Solving dynamic TSP with evolutionary approach in real time[C]//The 2003 Congress on Evolutionary Computation, 2003. CEC'03. IEEE, 2003, 2: 951-957.
这期就讲到这里,下期我们以一个实际例子来详细阐述DMOIO算法的求解过程,我们下期见。
更多精彩尽在公众号:优化算法交流地
往期推荐
动态多目标旅行商问题(一)
多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)
多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)
MATLAB数学建模(五)| 还在为不会写多目标优化算法代码而发愁吗?教你快速上手gamultiobj工具箱!
NSGA-II多目标优化算法讲解(附MATLAB代码)
多目标优化 | NSGA-II
知乎 | bilibili:随心390