网站设计费报价表,建一个手机app平台费用,上海网站建设价,工厂怎么推广自己的产品小编今天为大家讲解NSGA-II多目标优化算法#xff0c;提到多目标优化#xff0c;大家可能第一个就想到NSGA-II算法#xff0c;今天小编就带领大家解开NSGA-II的神秘面纱。NSGA-II全称是快速非支配排序遗传算法#xff0c;这个算法的精髓体现在“快速非支配排序”这7个字上提到多目标优化大家可能第一个就想到NSGA-II算法今天小编就带领大家解开NSGA-II的神秘面纱。NSGA-II全称是快速非支配排序遗传算法这个算法的精髓体现在“快速非支配排序”这7个字上那么究竟什么是“快速非支配排序”NSGA-II是如何实现“快速非支配排序”的呢各位先别急且听小编慢慢道来在基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)中已经讲到多目标优化问题没有一个所谓的最优解而是存在一个最优解集。为了让大家更深入了解NSGA-II算法小编查阅网上各种大神讲解的资料终于在知乎上发现一位大神讲解地特别到位这位大神在知乎上回答的链接如下https://www.zhihu.com/question/26990498/answer/35644566小编觉得这位大神在讲解NSGA-II时真的讲得太nice了,因此小编决定做一次大自然的搬运工把这位大神的回答搬运过来。小编建议各位边看代码边体会下面的步骤效果会更好。NSGA-II在常规遗传算法上的改进关键步骤就3步。1)快速非支配排序算子的设计多目标优化问题的设计关键在于求取Pareto最优解集。NSGA-II算法中的快速非支配排序是根据个体的非劣解水平对种群分层其作用是指引搜索向Pareto最优解集方向进行。它是一个循环的适应值分级过程首先找出群体中非支配解集记为第一非支配层F将其所有个体赋予非支配序值irank1(其中irank是个体i的非支配排序值)并从整个种群中除去然后继续找出余下群体中非支配解集记为第二非支配排序层F2个体被赋予非支配序值irank2照此进行下去直到整个种群被分层同一分层内的个体具有相同的非支配序值irank。2)个体拥挤距离算子设计为了能够在具有相同irank的个体内进行选择性排序NSGA-II提出了个体拥挤距离的概念。个体i的拥挤距离是目标空间上与i相邻的2个个体i1和i-1之间的距离其计算步骤为a)对同层的个体初始化距离。令L[i]d0(其中L[i]d表示任意个体i的拥挤距离)b)对同层的个体按第m个目标函数值升序排列c)使得排序边缘上的个体具有选择优势。给定一个大数M令L[1]dL[end]dMd)对排序中间的个体求拥挤距离(其中L[i1]m为第i1个个体的第m目标函数值和分别为集合中第m目标函数值的最大值和最小值)e)对不同的目标函数重复步骤a)~步骤d)操作得到个体i的拥挤距离L[i]d通过优先选择拥挤距离较大的个体可使计算结果在目标空间比较均匀分布以维持种群的多样性。3)精英策略选择算子精英策略即保留父代中的优良个体直接进入子代以防止获得的Pareto最优解丢失。精英策略选择算子按3个指标对由父代Ci和子代Di合成的种群Ri进行优选以组成新的父代种群Ci1。首先淘汰父代中方案校验标志为不可行的方案其次按照非支配序值irank从低到高排序将整层种群依次放入Ci1直到放入某一层Fj时出现Ci1大小超过种群规模限制N的情况最后依据Fj中的个体拥挤距离由大到小的顺序继续填充Ci1直到种群数量达到N时终止。下面这个图片能很好的说明NSGA-II的实现过程最后附上用NSGA-II求解ZDT1函数的MATLAB代码ZDT1函数如下代码来源http://www.omegaxyz.com/2017/05/04/nsga2matlabzdt1/代码链接(后台回复“NSGA”提取代码)https://pan.baidu.com/s/1EBUxjF8J262jTScKzIbD2w 提取码fk4j