PlatEMO平台的使用与源代码修改(1)
尊重算法框架开发者的工作
platEMO是Ye Tian等学者写的一款基于MATLAB的多目标优化工具,为新入门的同学或者开发者提供了很大的便利。各位同学在使用中应尊重分享者的工作,保护他人的权利。在此感谢PlatEMO开发者的分享!!!
修改目的
PlatEMO提供的图 我们想要的图
假如我们想将多个算法的IGD指标放到一张图中进行比较,这时就需要将算法计算的IGD、HV数值保存。但是PlatEMO只提供了图像,没有办法得到原始绘图的数据,这时候我们只能选择修改源码了。
修改方法
- 修改Public/GLOBAL.m文件中的下列代码
function value = Metric(metric,Population,PF) % Calculate the metric value of the population Feasible = find(all(Population.cons<=0,2)); NonDominated = NDSort(Population(Feasible).objs,1) == 1; try value = metric(Population(Feasible(NonDominated)).objs,PF); % 将此处的分号删除就可以在命令行中打印IGD等指标数值 catch value = NaN; end end
- 执行多个算法
main(-algorithm,@MOPSO,-problem,@DTLZ2,-N,100,-M,3,-run,10) main(-algorithm,@NSGAII,-problem,@DTLZ2,-N,100,-M,3,-run,10)
- 创建新的MATLAB脚本,录入控制台输出的IGD值,拼凑图像即可。
t=1:1:10; % 将从控制台得到的IGD等数值存入数据即可,简单而又朴实 mopso=[0.1597, 0.1210, 0.0997, 0.0963, 0.0955, 0.094, 0.0925, 0.1053, 0.0985, 0.1133]; nsgaII=[0.1962, 0.1045, 0.083, 0.0724, 0.0771, 0.0716, 0.0674, 0.068, 0.0668, 0.0694]; plot(t,mopso,-o,t,nsgaII,-*,LineWidth,2); legend(MOPSO,NSGAII); xlabel(迭代次数,Fontsize,12); ylabel(IGD指标值,Fontsize,12); title(IGD比较);
- 将得到的值组成数组,用plot函数绘制即可得到第二张图像。这是最笨最简单的方法了。。。
下一篇:
Python实现将多张图片拼接为一张