参考资料:
CSDN博客:https://blog.csdn.net/kiding_k/article/details/70147299?locationNum=13&fps=1
Cnblog:https://www.cnblogs.com/bnuvincent/p/5268786.html
基于遗传算法的多目标寻优策略的应用研究_李莉:http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD2009&filename=2009014373.nh&uid=WEEvREcwSlJHSldRa1FhdkJkVWI3Y2JUZGpaT2lhOTJKRURJQldYRGplMD0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MzI3MTNKRWJQSVI4ZVgxTHV4WVM3RGgxVDNxVHJXTTFGckNVUkxLZll1ZHJGeTdoVTd6QlYxMjdGN081R3RMTHI=
CSDN博客:https://blog.csdn.net/u014119694/article/details/77248913?locationNum=6&fps=1
NSGA-II Python 3 参考代码:
https://github.com/haris989/NSGA-II/blob/master/NSGA%20II.py
一般多目标规划问题,都可以建模为寻找Pareto最优解的问题。
NSGA:非支配排序遗传算法(Non-dominated Sorting Genetic Algorithm)
种群分层:
Tips:此处存在重复对比情况,即X1 与 X2 进行了两次对比
虚拟适应度:目标函数值
共享小生境技术:
同一小生境内的种群,适应度互相减小。相似度高的、小生境内个体多的种群适应度减少程度更大。
通过这样的方式可以保证非支配层的每个个体拥有不同的适应度值。(这个没有懂)
NSGA-II:带精英策略的非支配排序遗传算法
快速非支配排序算法:
伪代码:
如图,D点被A和C点支配,所以D点的np为2,A点支配D和E,所以A点的Sp={D,E}。
该排序算法分级与NSGA中的结果不一样
拥挤度和拥挤度比较算子
密度估计:根据每一目标函数计算该点两侧的两个点的平均距离,该值作为以最近邻居作为顶点的长方体周长的估计(作为拥挤系数)。如下图,第i个解的拥挤系数为他周围长方体的长度(虚线表示)。
计算拥挤系数需要对每一目标函数进行排序。
每个非支配层的边界的个体拥挤度为无穷。
拥挤度有多种计算方式
1.直接计算长方体边长
2.需要除以....
拥挤度比较算子:
主程序:
精英策略:
NSGA-II 程序流程图
需要输入的变量是:规模N、迭代次数