现实世界中的多目标优化问题往往包含不等式约束和等式约束,对于这类带约束条件的多目标优化问题,需要使用有别于无约束优化问题的处理方法。下面首先给出带约束条件的多目标优化问题的的定义:

Definition : 约束多目标优化问题

在这个定义式中,为了描述方便,将所有的不等式约束都转换为了 g(x)≤0的形式。其中m为目标函数的个数,n为决策变量的个数,J为不等式约束条件的个数,K为等式约束条件的个数

针对这类带约束条件的优化问题,使用无约束多目标进化算法处理的方法显然是不可行的,为了解决这类约束多目标优化问题,针对基于Pareto支配关系的算法,主要使用带约束的支配关系(constrained-dominance)来处理,而对于基于分解的算法,则使用新的替换策略来更新解。

基于Pareto支配关系的算法约束处理方法

为了详细说明上述两种方法,现介绍几个重要的概念。

对于一个解x,若其满足约束条件,则称该解为可行解(feasible solution),若不满足,则称之为不可行解(infeasible solution)。

对于不可行解,如何描述其违反约束的程度呢,一般使用约束违反值(constraint violation value),该值用来定量描述一个解违反约束条件的程度。对于一个解x,其值可如下表达


其中⟨α⟩ 表示若α≤0,则⟨α⟩=0否则⟨α⟩=∣α∣。显然,对于一个解,其CV值越小,说明该解越优。同时,对于一个可行解,其CV值为0,对于不可行解,其CV值则大于0。

下面介绍约束支配关系,对于任意两个解x,y,x约束支配y的条件满足以下条件的任一项即可:

  1. x 是可行解,而y是不可行解;
  2. x,y都不是可行解,但CV(x)<CV(y)
  3. x,y都是可行解,且x Pareto支配 y

以上便是约束支配关系的描述,对于一个带约束的多目标优化问题,便可直接将该支配关系应用到基于Pareto支配关系的多目标进化算法中,如NSGA-II,NSGA-III等,同时,对于无约束多目标优化问题,该支配关系显然也是有效的。

惩罚函数法应用NSGA-2

需要在非支配主导排序之前进行可行解和不可行解的筛选,对于不可行解,进行惩罚函数进行惩罚,其中针对不同的目标函数,加以不同的权重进行惩罚。

   PopCon=constrained_dominance(x(:,1:24), 3, 24);PopObj=x(:,25:27);Infeasible  =any(PopCon>0,2);PopObj(Infeasible,:) = PopObj(Infeasible,:)+ repmat(max(PopObj,[],1),sum(Infeasible),1) +      repmat(sum(max(0,PopCon(Infeasible,:)),2),1,size(PopObj,2));

基于分解的算法约束处理方法

下面介绍基于分解的算法处理约束多目标优化问题中的替换策略。假设y是新生成的子代解,选择一个邻居解x来确定是否用解y替换解x,满足以下条件的任一项则替换之:

  1. x是不可行解,y是可行解;
  2. x,y都不是可行解,但CV(x)>CV(y)
  3. x,y都是可行解,但解y的聚合函数值更小

该替换策略可直接用到MOEA/D或其他基于分解思想的多目标进化算法中来处理约束多目标优化问题。

以上便是目前约束多目标优化问题处理的一些常用方法。

matlab代码

以下代码计算约束值

function [cv]= constrained_dominance(x, M, V)
cv=[];
x=round(x);
x11=x(:,1);
x12 =x(:,2);
x21 =x(:,3);
x22 =x(:,4);
x31 =x(:,5);
x32 =x(:,6);
x41 =x(:,7);
x42 =x(:,8);
y11 =x(:,9);
y12 =x(:,10);
y13 =x(:,11);
y14 =x(:,12);
y15 =x(:,13);
y16 =x(:,14);
y17 =x(:,15);
y18 =x(:,16);
y21 =x(:,17);
y22 =x(:,18);
y23 =x(:,19);
y24 =x(:,20);
y25 =x(:,21);
y26 =x(:,22);
y27 =x(:,23);
y28 =x(:,24);
cf(:,1)=x11+x12-800;
cf(:,2)=x21+x22-1200;
cf(:,3)=x31+x32-1000;
cf(:,4)=x41+x42-1100;
cf(:,5)=62-(y11+y21);
cf(:,6)=70-(y12+y22);
cf(:,7)=17-(y13+y23);
cf(:,8)=260.9-(y14+y24);
cf(:,9)=79.8-(y15+y25);
cf(:,10)=593-(y16+y26);
cf(:,11)=333-(y17+y27);
cf(:,12)=36-(y18+y28);
cf(:,13)=y11+y21-88;
cf(:,14)=y12+y22-100;
cf(:,15)=y13+y23-23;
cf(:,16)=y14+y24-372;
cf(:,17)=y15+y25-114;
cf(:,18)=y16+y26-847;
cf(:,19)=y17+y27-476;
cf(:,20)=y18+y28-51;
cf(:,21)=y11+y12+y13+y14+y15+y16+y17+y18-(x11+x21+x31+x41);
cf(:,22)=y21+y22+y23+y24+y25+y26+y27+y28-(x12+x22+x32+x42);
cf(:,23)=0;
cv=zeros(pop,1);for a =1 :popfor b =1 :22if cf(a,b)>0 cv(a,1)= cv(a,1)+1;else cf(a,23)=cf(a,23)+1;endendendcv=cv;
end

参考:

  1. Deb K, Pratap A, Meyarivan T. Constrained Test Problems for Multi-objective Evolutionary Optimization[C]// Evolutionary Multi-Criterion Optimization, First International Conference, EMO 2001, Zurich, Switzerland, March 7-9, 2001, Proceedings. 2001:284–298.
  2. Jain H, Deb K. An Evolutionary Many-Objective Optimization Algorithm Using Reference-Point Based Nondominated Sorting Approach, Part II: Handling Constraints and Extending to an Adaptive Approach[J]. IEEE Transactions on Evolutionary Computation, 2014, 18(4):602-622.
  3. Li K, Deb K, Zhang Q, et al. An Evolutionary Many-Objective Optimization Algorithm Based on Dominance and Decomposition[J]. IEEE Transactions on Evolutionary Computation, 2015, 19(5):694-716.
  4. https://blog.csdn.net/qithon/article/details/80214750

NSGA_2 Matlab带约束问题的多目标优化求解方案+惩罚函数相关推荐

  1. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...

  2. 【单目标优化求解】基于matlab黑猩猩算法求解单目标问题【含Matlab源码 1413期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab黑猩猩算法求解单目标问题[含Matlab源码 1413期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  3. 【多目标优化求解】基于matlab粘菌算法MOSMA求解多目标优化问题【含Matlab源码 2279期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[多目标优化求解]基于matlab粘菌算法MOSMA求解多目标优化问题[含Matlab源码 2279期] 点击上面蓝色字体,直接付费下载, ...

  4. 【Matlab多目标优化求解】遗传优化萤火虫算法求解多目标优化问题【含源码 1484期】

    一.代码运行视频(哔哩哔哩) [Matlab多目标优化求解]遗传优化萤火虫算法求解多目标优化问题[含源码 1484期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  5. 【Matlab多目标优化求解】粒子群算法求解智能微电网多目标优化问题【含源码 383期】

    一.代码运行视频(哔哩哔哩) [Matlab多目标优化求解]粒子群算法求解智能微电网多目标优化问题[含源码 383期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  6. 【Matlab多目标优化求解】粒子群算法求解配电网抢修优化问题【含源码 777期】

    一.代码运行视频(哔哩哔哩) [Matlab多目标优化求解]粒子群算法求解配电网抢修优化问题[含源码 777期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  7. 【多目标优化求解】基于matlab灰狼优化算法求解多目标优化问题 【含Matlab源码 007期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[多目标优化求解]基于matlab灰狼优化算法求解多目标优化问题 [含Matlab源码 007期] 获取代码方式2: 通过订阅紫极神光博客 ...

  8. 【多目标优化求解】基于matlab飞蛾扑火算法 (NSMFO)求解多目标优化问题 【含Matlab源码 2312期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[多目标优化求解]基于matlab飞蛾扑火算法 (NSMFO)求解多目标优化问题 [含Matlab源码 2312期] 点击上面蓝色字体,直 ...

  9. 基于MATLAB的飞蛾扑火算法在多目标优化问题中的应用

    基于MATLAB的飞蛾扑火算法在多目标优化问题中的应用 多目标优化问题是一个包含多个目标函数的优化问题,优化目标往往是相互矛盾而不能同时最小化或最大化的.在实际应用中,多目标优化问题往往会涉及到多个决 ...

  10. matlab imf1,NGPM_v1.4y GA多目标优化的程序 带约束 里面有教程 matlab 272万源代码下载- www.pudn.com...

    文件名称: NGPM_v1.4y下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 390 KB 上传时间: 2015-03-31 下载次数: 24 提 供 者 ...

最新文章

  1. JAVA线程池之双端队列与工作密取workstealingpool java7新加的一种线程池
  2. 全球及中国塑料包装行业发展方向与应用前景调研报告2022版
  3. 面对重重问题 光伏扶贫路在何方?
  4. SAP里会话结束方法(杀死进程)
  5. 不用计算实现 图片懒加载
  6. MyEclipse6.5安装SVN插件的方法--在线安装
  7. (转)Some awareness before migrating from x86 to x64
  8. gdal1.6linux编译,VS2015下编译64位GDAL总结
  9. 人脸识别(3)---静态人脸识别和动态人脸识别的区别
  10. IE6 Hack(转载)
  11. 增长量计算n+1原则_2020黑龙江省考资料分析计算增长量问题.doc
  12. 浅谈低成本视频动作捕捉技术
  13. 独木舟上的旅行(贪心)C/C++
  14. 去掉window.print()去除页眉页脚及网址
  15. warning CS0108: `___' hides inherited member `___'. Use the new keyword if hiding was intended解决办法
  16. 2022年软件测试人员必读的经典书籍推荐(附电子版)
  17. Mac安装brewLast login: Mon Feb 25 22:00:38 on console 192:~ wxh$ /usr/bin/ruby -e $(curl -fsSL https:
  18. 工业4.0:换热站最酷设计—— Web SCADA 工业组态软件界面
  19. 计算机控制系统2017模拟题,计算机控制系统模拟试题.doc
  20. 密切值法解简单评价问题附matlab代码

热门文章

  1. 从视频中提取为ppt或图片
  2. 数据库服务器上导出dmp文件在哪里,sql数据库导出表dmp文件
  3. python有道批量单词音标整理-Python 批量翻译 使用有道api;
  4. E盾网络验证企业版个人版离线版加密防破解易语言源码加密对接好的自绘界面2
  5. 解密 RubyEncoder
  6. Axure RP Extension for Chrome最新版查看RP原型
  7. 微信小程序点击事件传递参数的方法
  8. XPS格式文件如何编辑?
  9. python实现图片转字符画
  10. GP数据库-Creenplum