许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB多目标遗传算法用法:函数与参数设置

MATLAB多目标遗传算法用法:函数与参数设置

阅读数 5
点赞 0
article_banner

函数名:gamultiobj

   详细的不多说, 帮助文档  写的很清楚,这里仅作为备忘简要写出常用用法

基于的算法是改良的NSGA-II

用于求解多目标优化问题

   object1 和object 2有一定的竞争关系

得到的解是一组解,称为帕累托前沿 pareto front

 options = optimoptions('gamultiobj','PlotFcn',...
     {@gaplotpareto},'UseParallel',true);
 func=@recomp;
 nvar=4;
 lb=[0.2,32+273.15,7.4e3,10e3];
 ub=[0.4,50+273.15,8e3,15e3];


[var,fval,exitflag,output] = gamultiobj(func,nvar,[],[],[],[],lb,ub,options);

关键是最后一句,前面都是为了写着换行方便定义的变量

从接受的参数开始说:

   func是要优化的函数,优化后得到的是函数最小值,如果求最大值,加个负号即可。@代表获取函数句柄(在C语言里就是函数指针)。

   nvar是待优化变量的个数,必填。

   后面四个空着的,分别代表 线性  约束不等式的A,b, 等式的A,b,如果没有空着

   lb是变量最小值,ub是变量最大值。一一对应。

options是其他附加选项

   这里加了:画出帕累托前沿图(实时更新的),并且使用并行(matlab会自动给定使用的核心数)

   使用并行会大大加速求解过程,但是启动并行需要几分钟。

控制 选项optimoptions

如何让帕累托前沿变宽?

问题描述

我在使用多目标遗传算法的时候,发现优化结果可能掉入一个“坑”里。也就是说本来应该有不同的结果供我选择,但是最后却越优化越集中,最后过度优化,帕累托前沿从一条线变成了一个点,如图:
在这里插入图片描述

但是我想要的结果是个线,如图:
在这里插入图片描述

实际上上面这个图,虽然看上去是个线,但是仔细看的话会发现数值非常集中,如果坐标范围调大一些,其实还是缩成了一个点。

操作方法

1 调整种群数量

多目标遗传算法,按照官方帮助,默认种群数量是50,这显然是有点儿小了。所以我们把他调整为200

在optimoptions括号内加一个参数对

 'PopulationSize',200

2 调整帕累托前沿中个体的距离

参考官方帮助
https://ww2.mathworks.cn/help/gads/gamultiobj-options-effects.html
在这里插入图片描述

   这里说两个选项是用来控制精英数量的(精英就是在帕累托前沿上的点),一个是DistanceFcn 一个是ParetoFraction

DistanceFcn:帕累托前沿上点的距离,这个可以自己定义,也可以用默认选项。 ParetoFraction:精英的在种群中的比例。就是帕累托前沿上点的数量除以种群数量。

下面给了两个选项的例子

‘DistanceMeasureFcn’,'distancecrowding'

或者

‘DistanceMeasureFcn’,{@distancecrowding,'genotype'}

这个就是利用默认的距离函数来计算的。默认计算的是表现型(生物上基因表现出来的性状叫表现型)phenotype(其实就是因变量)的距离。它注释里面的function space其实就是因变量空间。也可以改为genotype就是基因型。

3 控制精英比例(paretoFraction)

另一个就是控制帕累托前沿上的点占种群数量的比例

   默认是0.35

   这里改为0.5

'ParetoFraction',0.5

4 放宽收敛要求

gamultiobj默认的因变量收敛相对值是1e-4

   这里改为1e-2

'FunctionTolerance',1e-3

默认最大代数是 nvar*200(自变量个数)

   我们放宽为200

'MaxGenerations',200
结果

帕累托前沿变得漂亮了许多。
在这里插入图片描述


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空