• 即将更新图形学,编译原理,机器学习等文章,谢谢关注~
  • 由于算法限制,搜索时注意简化关键字,谢谢支持~
  • 网站不兼容IE5.0及以下,请使用主流浏览器访问.
  • NSGA2算法MATLAB实现(能够自定义优化函数)

    以前写了一个简单的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

    读者评分
    [评分人数: 3 平均分: 3.7]

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

    评论关闭!

    OmegaXYZ