NSGA2算法MATLAB实现(能够自定义优化函数)

本文共900个字,预计阅读时间需要3分钟。

以前写了一个简单的NSGA2的算法能够用在ZDT1函数上:http://www.omegaxyz.com/2017/05/04/nsga2matlabzdt1/

那个NSGA2的算法不具有普遍性,下面参考课国外的课题小组的代码重新修改了内部冗余内容,使之能够自定义优化函数。

NSGA2的过程为:

1、随机产生一个初始父代Po,在此基础上采用二元锦标赛选择、交叉和变异操作产生子代Qo, Po 和Qo群体规模均为N

2、将Pt和Qt并入到Rt中(初始时t=0),对Rt进行快速非支配解排序,构造其所有不同等级的非支配解集F1、F2……..

3、按照需要计算Fi中所有个体的拥挤距离,并根据拥挤比较运算符构造Pt+1,直至Pt+1规模为N,图中的Fi为F3

具体解释请见:http://www.omegaxyz.com/2017/04/14/nsga-iiintro/

C++代码请见(测试函数ZDT1):http://www.omegaxyz.com/2017/04/20/nsga2zdt1/

下面是完整版的代码:

①nsga2-optimization.m

②initialize_variables.m

③non_domination_sort_mod.m

④tournament_selection.m

⑤genetic_operator.m

⑥replace_chromosome.m

⑦自定义评价函数(我选用的ZDT1函数)

500个种群运行500代的结果:

代码打包下载:http://download.csdn.net/download/xyisv/10217700

读者评分
[评分人数: 7 平均分: 3.3]

3 位极客在 “NSGA2算法MATLAB实现(能够自定义优化函数)” 留下足迹

评论关闭!