您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > NSGA-Ⅱ算法大量测试函数实验结果展示
多目标进化优化算法基础篇——NSGA-Ⅱ算法金盼2012年04月Pareto最优解图片来源:基于双极偏好的多目标粒子群算法及应用研究1、pareto最优解又称非支配解、非占优解,pareto最优解集又称非劣解、非支配解集、非占优解集2、左图为最小化的两目标优化问题的最终pareto前沿分布示意图,则f1和f2目标值均为越小越优,实线和虚线组成部分为可行域,实线表示pareto前沿面,也就是所有pareto最优解对应的目标矢量组成的曲面,一个多目标优化问题对应一个pareto前沿面。3、A、B、C三点位于pareto前沿面上,该三点的解为pareto最优解,他们三者之间不存在支配或是占优关系。D、E、F三点的解为可行解,非pareto最优解。4、A点的解支配F点的解,或是相比F点的解,A点的解是pareto占优。同样B和C点与D、E、F点之间存在支配关系或是占优关系多目标进化优化领域的一些主要算法——CoelloCoello总结方式•第一代多目标进化优化算法:(1)MOGA(多目标优化遗传算法)(2)NSGA(非支配排序多目标优化遗传算法)(3)NPGA(小生境pareto多目标优化遗传算法)主要特点:基于非支配排序选择、小生境(共享函数)多样性保持主要问题:如何将进化算法与多目标优化问题有机地结合•第二代多目标进化优化算法:(1)SPEA(Pareto强度多目标进化算法)和SPEA2、(2)PAES(精英保留进化策略)、PESA和PESA-Ⅱ、(3)NSGA-Ⅱ(是迄今为止最优秀的多目标进化优化算法之一)主要特点:精英保留机制、以及基于聚类、拥挤距离、空间超格等方法多样性保持主要问题:算法的效率问题,如何处理高维多目标优化问题参考文献:进化多目标优化算法研究多目标进化优化算法一般流程随机产生初始种群PP用EA进化算法得到G构造P∪G的非支配解集NDset调整非支配解集NDset规模并使之满足分布性要求是否满足终止条件P=NDset输出结果,结束是否如何构造非支配集1、采用何种策略来调整非支配集的规模2、如何保持非支配集的多样性和分布性终止条件:多人为设定,迭代次数限定或是迭代多次,最优值没有变化。迭代多次的原因,无法判断迭代次数较少时,出现的最优解是否为真正的最优解。NSGA-Ⅱ算法NSGA主要问题:1、构造pareto最优解集计算复杂度太高,为O(),m为目标个数,N为种群大小2、需预先设定共享参数3、没有采取外部种群策略(即精英保留机制)3mNNSGA-Ⅱ改进情况:1、快速非支配解排序2、基于拥挤距离保持解集多样性3、引入精英保留机制保持优良个体改进NSGA-Ⅱ算法——快速非支配解排序非支配解排序:首先是每个个体跟种群里面的其它个个体进行支配关系比较,是否支配其它全部个体,复杂度为O(mN);循环进行直到等级1中非支配个体全部搜索到,复杂度为O();最坏的情况下,有N个等级,每个等级只存在一个解,复杂度为O()2mN3mN快速非支配解排序:左图为排序思路,前半段红框是个体之间支配关系的比较,引入Sp存放和np记录,循环得到等级1;后半段红框循环得到等级2、等级3......复杂度为O()2mN)()(2,12,11,11,1iiiiiffffDNSGA-Ⅱ算法——基于拥挤距离保持解集多样性一个个体的拥挤距离:是通过计算与其相邻的两个个体在每个子目标函数上的距离差之和来求取。图中所示为两个子目标情况下:个体i的拥挤距离即图中虚线四边形的长与宽之和拥挤比较运算符(Crowed-ComparisonOperator):IF两个个体属于不同等级的非支配解集,优先考虑等级序号较小的OR若两个个体属于同一等级的非支配解集,优先考虑拥挤距离较大的NSGA-Ⅱprocedure:1、随机产生一个初始父代Po,在此基础上采用二元锦标赛选择、交叉和变异操作产生子代Qo,Po和Qo群体规模均为N2、将Pt和Qt并入到Rt中(初始时t=0),对Rt进行快速非支配解排序,构造其所有不同等级的非支配解集F1、F2........3、按照需要计算Fi中所有个体的拥挤距离,并根据拥挤比较运算符构造Pt+1,直至Pt+1规模为N,图中的Fi为F3NSGA-Ⅱ算法——应用篇MATLAB-nsga_2.m无约束问题(unconstrained)Copyright(c)2009,AravindSeshadriC-nsga2.c无约束&约束问题(unconstrained&constrained)Copyright(c)2003,KalyanmoyDebnsga_2.m(主函数)initialize_variables.m(初始化种群)non_domination_sort_mod.m(初始种群排序)tournament_selection.m(锦标赛选择)genetic_operator.m(遗传操作)non_domination_sort_mod.m(非支配解集排序)replace_chromosome.m(替代种群)开始进化过程如上图所示,蓝色曲线是经典测试函数ZDT1用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,gen=500,n=30,var-domain=[0,1],fun=2;红色曲线是经典测试函数ZDT1的理想pareto前沿面,pop=500个理想pareto前沿面数据来源:~emoobook/如上图所示,蓝色曲线是经典测试函数ZDT2用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,gen=500,n=30,var-domain=[0,1],fun=2;红色曲线是经典测试函数ZDT2的理想pareto前沿面,pop=500个理想pareto前沿面数据来源:~emoobook/如上图所示,蓝色曲线是经典测试函数ZDT3用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,gen=500,n=30,var-domain=[0,1],fun=2;红色曲线是经典测试函数ZDT3的理想pareto前沿面,pop=136个理想pareto前沿面数据来源:~emoobook/如上图所示,蓝色曲线是经典测试函数ZDT4用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=200,n=10,fun=2;红色曲线是经典测试函数ZDT4的理想pareto前沿面,pop=200个。变量个数超过3个的时候,f2对应的值比上图显示的值更大。ZDT4区别于ZDT1-3的是变量范围不同,ZDT1-3的变量范围都为xi=[0,1],而ZDT4的变量范围为x1=[0,1],xi=[-5,5],所以需要修改代码,修改m文件为initialize_variables.m和genetic_operator.m,将区间范围改为[-5,5],从第二个变量开始循环,第一个变量复制循环代码中的语句,另外设置区间范围大小。n=3,gen=500n=3,gen=200理想pareto前沿面数据来源:~emoobook/参考文献:AFastandElitistMultiobjectiveGeneticAlgorithm:NSGA-ⅡZDT4问题有个不同的局部pareto最优前沿,其中只有一个对应全局pareto最优前沿。该文献作者一开始也有对NSGA-Ⅱ算法下各个测试函数收敛度的讨论921收敛性度量值计算过程首先从理想pareto最优前沿取H=500的解集合。然后计算由某个算法得到的每一个解与H集合中解的最小欧几里德距离。这些距离的平均值用来表示收敛性度量,文献给出Mean和Variance两个距离评价指标。收敛性度量值越小,越好收敛于理想pareto最优前沿。如果某个算法得到的解几乎全部位于H集合中,那么收敛度量值为0参考文献:AFastandElitistMultiobjectiveGeneticAlgorithm:NSGA-Ⅱ按照上述收敛性度量判断规则可以看出,ZDT4在NSGA-Ⅱ(二进制编码)算法下收敛性不是很好,很难收敛到理想的pareto最优前沿。问题:NSGA-Ⅱ(实数编码)仿真效果V=10gen=500pop=500V=10gen=250pop=100参考文献:AFastandElitistMultiobjectiveGeneticAlgorithm:NSGA-Ⅱγ=0.0027σ=0.000017733如上图所示,蓝色曲线是经典测试函数ZDT6用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,gen=500,,n=10,var-domain=[0,1],fun=2;;红色曲线是经典测试函数ZDT6的理想pareto前沿面,pop=2992个理想pareto前沿面数据来源:~emoobook/pop=2500pop=4106参考文献:进化多目标优化算法研究如上图所示,蓝色+是经典测试函数DTLZ1和DTLZ3用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,gen=500,,n=12,var-domain=[0,1],fun=3;;红色部分是经典测试函数DTLZ1和DTLZ3的pareto前沿。可以看出这两个测试函数用NSGA-Ⅱ算法没办法收敛到理想pareto前沿面。NSGA-Ⅱ(实数编码)gen=500,pop=500,n=12,var-domain=[0,1],fun=3;Convergencemetric????测试函数(NSGA-2realcoded)ConvergencemetricMean1Mean2DTLZ10.04260.0207DTLZ20.01490.0149DTLZ34.00643.9960DTLZ40.02230.0222gen=500pop=100刚好为50000次评价次数内收敛指标:公茂果等使用的是最小归一化欧式距离的平均值Mean1Deb等使用的是最小欧式距离的平均值Mean2评价准则:指标值越低,表明算法得到的解收敛性越好,越接近理想pareto前沿面备注:收敛性指标是用来比较各种EA算法得到解的收敛性情况如上图所示,蓝色+/.是经典测试函数DTLZ2用NSGA-Ⅱ算法得到的pareto前沿面,红色曲面是经典测试函数DTLZ2的理想pareto前沿面,pop=40000个理想pareto前沿面数据来源:~emoobook/gen=1000,pop=500gen=500,pop=500n=12,var-domain=[0,1],fun=3gen=200gen=500如上图所示,蓝色+是经典测试函数DTLZ4用NSGA-Ⅱ算法得到的pareto前沿面,主要参数pop=500,n=12,var-domain=[0,1],fun=3;红色曲面是经典测试函数DTLZ4的理想pareto前沿面,pop=4106个备注:DTLZ4当迭代参数调整为500代时,仿真效果不是很好,pareto前沿分布不够均匀。理想pareto前沿面数据来源:~emoobook/NSGA-Ⅱ(实数编码)gen=500pop=500n=12,var-domain=[0,1],fun=3nsga2code源代码由17个头文件和1个源文件组成random.h/*RandomNumberGenerator*/input.h/*FileTakesInputfromuser*/realinit.h/*RandomInitializationofthepopulaiton*/init.h/*RandomInitializationofthepopulation*/decode.h/*Filedeco
本文标题:NSGA-Ⅱ算法大量测试函数实验结果展示
链接地址:https://www.777doc.com/doc-1750198 .html