列的数目比列的名字要多_NSGAII与动态算子的结合算法 | 动态多目标旅行商问题(二)...

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

下面通过一个例子详细讲解Inver-Over算子,假设

当前个体为

假设从

随机移除的城市 c=5此时进入repeat循环:

第一次循环:

假设rand=0.005,则rand<=p1。

假设此时从

中剩余的城市(即1,2,3,4,6,7,8,9)中随机选择的城市为

此时

中城市5的下一个城市不是城市8,因此不能跳出repeat循环。

倒置

中城市5至城市8之间的排序序列,此时

更新c=8。

第二次循环:

假设rand=0.5,则rand>p1。

假设此时从种群P中随机选择出的个体为

此时将

中城市8的紧邻的下一个城市7赋值给
,即
。此时
中城市8的下一个城市是城市7,因此跳出repeat循环。

跳出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

(其中:L[i+1]m为第i+1个个体的第m目标函数值,

分别为集合中第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

删除算子示意图如下:

670c4fa8eb7d31f15901fbf2fabebf6d.png

(2)插入算子

只有当新的城市出现时,才会用到插入算子。插入算子遵循如下原则:当新的城市 出现时,插入算子找到

距离最短的城市C,在城市C连接的 两条边选一个位置插入
,使得
路径长度增加最小

插入算子的伪代码如下

0f0fc86d6795301e5a0385db61ff0a46.png

插入算子示意图如下:

f85a9f4c7aa9ec4c5f7a22f2054cf4d5.png

(3)转换算子

只有城市的位置改变时,才会用到转换算子。转换算子遵循如下原则:当城市C的位置改变时,首先把C从路径中删除将C以新的城市

出现对待,找到一个使得路径长度增加最小的位置,将
插入

转换算子删除算子插入算子转换算子示意图如下:

1e9da8ca58673fb8ce1e320e09d0b691.png

03 | DMOIO算法流程图

在给出DMOIO算法流程图前,我们用Dlist矩阵储存动态城市的城市编号XY坐标及对应动态算子的类型,其中插入算子类型用1表示,删除算子类型用2表示,转换算子类型用3表示。Dlist矩阵示意如下,其中城市7、8、9为新增城市,城市1为删除城市,城市2、6为改变位置的城市。

d229ea26cd1a513835bc0f0f9ae41fda.png

经过上述两小节,我们可以看出,DMOIO算法中的多目标和动态实际上是两个分离的步骤,因此DMOIO算法的流程图如下。

89bdc8524892689c9453f776020612a4.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值