行业知识
用遗传算法解决多目标优化和非线性规划问题(MATLAB)
2026-11-11 14:23:09
来源:互联网转载
一、多目标优化
简单来说多目标优化就是目标函数不止一个,需要注意一下两点:
(1)决策变量需要与每个目标函数存在关联;
(2)目标函数之间需要存在冲突,比如有两个目标函数,当一个目标函数变大时另一个目标函数一定会变小。
解决方法1:将多目标转换为单目标
目标函数=权重1*目标1+权重2*目标2+…… (权重index.php/tags-653.html" >可以人为设置,也可以通过一些评价性方法获得,比如双权法、判断矩阵打分)
解决方法2:pareto前沿
NSGA-II,非支配排序遗传算法
- 支配(dominance):在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比q差,那么称个体p支配个体q
- 序值(rank):如果p支配q,那么p的序值比q低;如果p、q互不支配,那么p、q有相同的序值。
- 拥挤距离:表示个体之间的拥挤程度,测量相同序值个体之间的距离(选择时可以尽量少的选择拥挤距离小的点)
算法流程图
gamultiabj函数
(1)gamultiabj函数与传统GA的区别:
传统GA总是偏爱适应值(等级)更好的个体,受控的精英GA也偏爱安歇可以帮助种群增加多样性的个体,即使他们的适应值较低。也就是说传统的GA只选取序值靠前的个体,而受控的精英GA还会选择一部分序值靠后的个体。
(2)迭代
- 选择父代:唯一可用的方法二元锦标赛,也可以自定义选择功能。
- 交叉、变异、从选定的父代创建子代
- 将当前种群喊个子代组合成一个新矩阵(种群),即拓展种群
- 计算拓展种群中所有个体的等级(rank)和拥挤距离
- 通过保留每个等级(rank)的适当数量的个体来修剪拓展后的种群(与传统的NSGA的重要区别)
ParetoFraction(帕累托集比例):当求解器从更高的前沿选择个体时,设置保持在第一个Pareto前沿的个体比例。此选项是0-1之间的标量。第一个帕累托前沿的个人分数可以超过此比例(其他等级的个体数量太少时会出现这个情况)。
二、非线性规划
目标函数或者约束条件中有一个或者几个非线性函数
三、实例
带限制条件的双目标优化
题目:min F(x)=[objective1(x);objective2(x)]
x
-1.5
上一篇:服务器怎么进入管理页面?
下一篇:开黑了怎么删除服务器数据?