基于参考点的非支配遗传算法-NSGA-III(二)
上一篇我们讲了有关非支配遗传算法NSGA-III的非约束过程,接下来这一篇我们讲一下NSGA-III约束实现以及扩展自适应方法。同理,我们先列一下我们参考的博客、代码以及论文。
文章目录
- 参考博客
- 参考论文
- 参考代码
- NSGA-III约束实现
- Modifications in the Elitist Selection Operator
- Modification in Creation of Offspring Population
参考博客
platEMO
基于参考点的非支配遗传算法-NSGA-III(一)
参考论文
因参考论文较多,此直接给予所有论文,请点击下载。论文中重要的部分已做了注解和标注。
- Y. Tian, R. Cheng, X.Y. Zhang, and Y.C. Jin, “PlatEMO: A MATLAB platform for evolutionary multi‐objective optimization [educational forum],” IEEE Computational Intelligence Magazine, 2017, 12(4): 73‐87.
- K. Deb, H. Jain . An Evolutionary Many-Objective Optimization Algorithm Using Reference Point-Based Nondominated Sorting Approach, Part I: Solving Problems With Box Constraints[J]. IEEE Transactions on Evolutionary Computation, 2014, 18(4):577-601.
- Y. Tian , X. Xiang , X. Zhang , et al. Sampling Reference Points on the Pareto Fronts of Benchmark Multi-Objective Optimization Problems[C]. 2018 IEEE Congress on Evolutionary Computation (CEC). IEEE, 2018.
- X. Zhang, Y. Tian, R. Cheng, and Y. Jin, “An efficient approach to nondominated sorting for evolutionary multiobjective optimization,” IEEE Trans. Evol. Comput., vol. 19, no. 2, pp. 201–213, Apr. 2015.
- I. Das and J. Dennis, “Normal-boundary intersection: A new method
for generating the Pareto surface in nonlinear multicriteria optimization
problems,” SIAM J. Optimization, vol. 8, no. 3, pp. 631–657, 1998. - K. Deb, R.B. Agrawal, Simulated binary crossover for continuous search space, Complex Systems. 9 (1995) 115–148.
在原有参考论文的基础上,本博客主要参考论文 - H. Jain,K. Deb, A. Pratap, S. An Evolutionary Many-Objective Optimization Algorithm Using Reference-point Based Non-dominated Sorting Approach, Part II: Handling Constraints and Extending to an Adaptive Approach, IEEE Trans. Evol. Comput.,18(4):602-622, 2014.
参考代码
platEMO
NSGA-III约束实现
在NSGA-II中我们提到,我们是在划分等级的时候实现了考虑约束的多目标优化 (详细请参考:多目标非支配排序遗传算法-NSGA-II(一)),主要包括以下几种情况:
主要实现代码如下:
function domMat = calcDominationMatrix(nViol, violSum, obj)
% Function: domMat = calcDominationMatrix(nViol, violSum, obj)
% Description: Calculate the domination maxtrix which specified the domination
% releation between two individual using constrained-domination.
%
% Return:
% domMat(N,N) : domination matrix
% domMat(p,q)=1 : p dominates q
% domMat(p,q)=-1 : q dominates p
% domMat(p,q)=0 : non dominate
%
% Copyright 2011 by LSSSSWC
% Revision: 1.0 Data: 2011-07-13
%*************************************************************************N = size(obj, 1); %行个数(种群)
numObj = size(obj, 2);% 列个数(目标函数)domMat = zeros(N, N); for p = 1:N-1for q = p+1:N%*************************************************************************% 1. p and q are both feasible%*************************************************************************%两个个体约束均为0的情况if(nViol(p) == 0 && nViol(q)==0) pdomq = false;qdomp = false;for i = 1:numObjif( obj(p, i) < obj(q, i) ) % objective function is minimization!pdomq = true; % p支配qelseif(obj(p, i) > obj(q, i))qdomp = true;endend%只有两个对比个体所有目标函数都为1或0是才会产生支配,若存在不同目标函数个体支配相反情况,则两个个体不存在支配与被支配关系if( pdomq && ~qdomp )domMat(p, q) = 1; %表示p支配qelseif(~pdomq && qdomp )domMat(p, q) = -1; %表示q支配pend%*************************************************************************% 2. p is feasible, and q is infeasible%*************************************************************************elseif(nViol(p) == 0 && nViol(q)~=0)domMat(p, q) = 1;%*************************************************************************% 3. q is feasible, and p is infeasible%*************************************************************************elseif(nViol(p) ~= 0 && nViol(q)==0)domMat(p, q) = -1;%*************************************************************************% 4. p and q are both infeasible%*************************************************************************elseif(violSum(p) < violSum(q))domMat(p, q) = 1;elseif(violSum(p) > violSum(q))domMat(p, q) = -1;endendend
end
在NSGA-II中实现此过程是在选择之前实现的,在NSGA-III约束实现时,其原理上是一样的只是在两个地方进行了修改,我这里直接截图原文,然后再每一部分具体解释一下。
Modifications in the Elitist Selection Operator
其实,我们在NSGA-II中也是采用了此思想,不同的是我们在NSGA-II中令违背约束的条件个数=0,而此采用的是
CV(x)=∑j=1J<g‾j(x)>+∑k=1K∣h‾k(x)∣(1)CV({\bf x})=\sum_{j=1}^J<\overline g_j({\bf x})>+\sum_{k=1}^K|\overline h_k({\bf x})| \tag 1CV(x)=j=1∑J<gj(x)>+k=1∑K∣hk(x)∣(1)其中,运算符的作用其实就是让CV≥0CV \geq 0CV≥0, 且让g‾j\overline g_jgj变为−g‾j-\overline g_j−gj 。我们在往下思考一下, CV≥0CV \geq 0CV≥0意味着什么?我们不妨列举一个test problem来说明此问题。例如C1_DTLZ1的约束为:
c(x)=1−fM(x)0.6−∑i=1M−1fi(x)0.5≥0(2)c({\bf x})=1-\frac{f_M({\bf x})}{0.6}-\sum_{i=1}^{M-1}\frac{f_i({\bf x})}{0.5} \geq 0 \tag 2c(x)=1−0.6fM(x)−i=1∑M−10.5fi(x)≥0(2)按照文中所说,也就是让c(x)≤0c({\bf x}) \leq 0c(x)≤0 ,那么(2)式转为:
−c(x)=fM(x)0.6+∑i=1M−1fi(x)0.5−1≤0(3)-c({\bf x})=\frac{f_M({\bf x})}{0.6}+\sum_{i=1}^{M-1}\frac{f_i({\bf x})}{0.5}-1 \leq 0 \tag 3−c(x)=0.6fM(x)+i=1∑M−10.5fi(x)−1≤0(3)
(2)式跟(3)式所要表示的含义是一致的,但运算符<><><>操作后,会使得CV≥0CV \geq 0CV≥0,这与原有的constraints相反,也就说所谓的constraint violation含义。也就说在选择等操作所用的约束条件是违背的,也就是所谓的infeasible solution。
需要注意的是,文中的α已经是<>之后的了,运算符之后,feasible solution constraints 已经变为了<0, 也就是说将<0的约束(feasible 约束)的违背约束设置为0。
Modification in Creation of Offspring Population
其实,我们仅需要理解下边这段话就可以了:
意思就是说,我们之前仅在NSGA-II选择的划分等级时考虑了,但是并没有在父代生成子代中考虑这种支配关系,这样我们的整个过程如下伪代码:
代码实现:
MatingPool = TournamentSelection(2,N,sum(max(0,PopCon),2));
function index = TournamentSelection(K,N,varargin)varargin = cellfun(@(S) reshape(S,[],1),varargin,'UniformOutput',false);% return by the form of cell type% For example% A = cellfun(@(x) x(1:3),C,'UniformOutput',false)% A = 1x5 cell% {'Mon'} {'Tue'} {'Wed'} {'Thu'} {'Fri'}% reshape restruct array [~,rank] = sortrows([varargin{:}]);%默认第一列排序,rank种群排列的索引位置[~,rank] = sort(rank);%升序排列,rank种群原要素的排序位置Parents = randi(length(varargin{1}),K,N);%随机产生二元锦标赛个体[~,best] = min(rank(Parents),[],1);%按列排序index = Parents(best+(0:N-1)*K);%种群个体索引位置
end
对于TournamentSelection()我们可以这样去理解,这个函数是为了说明在父代生成子代过程时发生的,需要进行条件约束下的支配选择。这个函数的关键点就在于对sum(max(0,PopCon),2)sum(max(0,PopCon),2)sum(max(0,PopCon),2) 的理解,它实则就是实现我们前边所说的运算符<><><>。我们前边也介绍了PopCon是符合约束的,那么对于feasible solution 这个操作的结果肯定是0,而对于infeasible solution来说肯定是sum(PopCon)。那么在进入函数二元锦标赛选择时,我们的排序是根据sum(PopCon)从小到大排序的,那么feasible solution肯定是在最前边的,也就是说feasible solution的 sum(PopCon)(约束违背)要小于infeasible solution的,对于两个feasible solution我们可以任一选择一个,对于两个infeasible solution来说谁的sum(PopCon)小,则优选谁。
function [FrontNo,MaxFNo] = NDSort(varargin)PopObj = varargin{1};[N,M] = size(PopObj);if nargin == 2nSort = varargin{2};elsePopCon = varargin{2};nSort = varargin{3};%reference points countInfeasible = any(PopCon>0,2);%any one PopCon>0 will be a infeasible solutionPopObj(Infeasible,:) = repmat(max(PopObj,[],1),sum(Infeasible),1) + repmat(sum(max(0,PopCon(Infeasible,:)),2),1,M);%不可行解一定obj一定是大于所有解的最大的,这样的就可以得到最小化问题中feasible solution obj一定小于%infeasible solution obj,然后对于两个feasible solution仅需对比obj,对于两个infeasible solution 仅需对比PopConendif M < 5 || N < 500% Use efficient non-dominated sort with sequential search (ENS-SS)[FrontNo,MaxFNo] = ENS_SS(PopObj,nSort);
在选择过程中,重点理解
Infeasible = any(PopCon>0,2);
PopObj(Infeasible,:) = repmat(max(PopObj,[],1),sum(Infeasible),1) + repmat(sum(max(0,PopCon(Infeasible,:)),2),1,M);
这两句的意思就可以实现feasible solution以及infeasible solution的所有组合情况,对于feasible 我们仍然是对于其目标函数的对比,对于infeasible solution我们可以通过sum(PopCon),而对于feasible solution以及infeasible solution来讲,我们 PopObj(Infeasible,:)=repmat(max(PopObj,[],1),sum(Infeasible),1)+repmat(sum(max(0,PopCon(Infeasible,:)),2),1,M);PopObj(Infeasible,:) = repmat(max(PopObj,[],1),sum(Infeasible),1) + repmat(sum(max(0,PopCon(Infeasible,:)),2),1,M);PopObj(Infeasible,:)=repmat(max(PopObj,[],1),sum(Infeasible),1)+repmat(sum(max(0,PopCon(Infeasible,:)),2),1,M);就可以看出,infeasible solution即使再小,也是大于feasible solution中目标函数最大的那个(我们这里采用min function),即任一一个infeasible solution的“目标函数值”要大于所有的feasible solution。这样我们就实现了父代生成子代、种群选择过程中的约束优选算法。
为庆祝此役的胜利,附上C2_DTLZ2 test problem的运行结果:
基于参考点的非支配遗传算法-NSGA-III(二)相关推荐
- 基于参考点的非支配遗传算法-NSGA-III(一)
序:漫漫长路,不知归期,但至少还是把小计划实现了!尽管小计划开展一路坎坷,中途也差点放弃,但是最终还是咬牙坚持,并实现了NSGA-III算法.说实话,NSGA-III算法相较NSGA-II难度增加了数 ...
- NSGAII快速非支配遗传算法二代学习笔记1
Population种群 nondomination sort非支配排序 nondomination level非支配水平 solution解 rank=fitness 等级/适应度 recombi ...
- 非支配排序遗传算法c语言,第三代非支配排序遗传算法(NSGA-III)
第三代非支配遗传算法是针对高维多目标优化计算代价大,难以挑选Pareto解的情况而开发的,基本流程与NSGA-II相似,但选择个体的方法加入了基于参考点的方法,能够有效降低计算代价. NSGA-III ...
- 【多目标优化】2. 非支配排序遗传算法 —(NSGA、NSGA-II)
[多目标优化]1. 多目标优化的相关基本概念 [多目标优化]2. 非支配排序遗传算法 -(NSGA.NSGA-II) [多目标优化]3. 基于分解的多目标进化算法 -(MOEAD) 1. 非支配排序遗 ...
- 非支配排序遗传算法c语言,非支配排序遗传算法(NSGA)的研究与应用
摘要: 多目标优化问题一直是科学和工程研究领域的难题和热点问题.传统的解决方法在处理大维数,多模态等复杂问题上存在许多不足.为了解决这一问题,国内外研究学者在简单遗传算法的基础上,发展出了多种多目标优 ...
- 非支配排序遗传算法(NSGA,NSGA-II )
非支配排序遗传算法(NSGA,NSGA-II ) 一.非支配排序遗传算法(NSGA) 1995年,Srinivas和Deb提出了非支配排序遗传算法(Non-dominated Sorting Gene ...
- 【优化调度】基于matlab非支配排序遗传算法求解车辆充电调度优化问题【含Matlab源码 2000期】
⛄一.遗传算法简介 由于国内外人民的生活方式和电动汽车主要购买人群的不同,国内外关于车辆充电调度问题研究的侧重点也不尽相同. 我国地大物博,人口众多,交通复杂.主要从以下方面研究: 1.通过经济手段或 ...
- 非支配排序遗传算法NSGA-II学习笔记
一.多目标优化问题的解 在单目标优化问题中,通常最优解只有一个,而且能用比较简单和常用的数学方法求出其最优解.然而在多目标优化问题中,各个目标之间相互制约,可能使得一个目标性能的改善是以其他目标性能为 ...
- [多目标优化算法]1.NSGA-II——非支配排序遗传算法
笔者最近在学习有关多目标优化的内容,并对内容进行一些整理.这篇文章算是笔者的一篇个人学习笔记,也希望能对他人提供一定的帮助,若有不足之处,也欢迎指正和建议. 注:本文中所举例子均为最小化问题. 一.多 ...
最新文章
- 6. 函数参数 与 展开运算符
- Cllimbing Stairs [LeetCode 70]
- ribbon是什么?
- android 状态栏、标题栏、屏幕高度
- asp.net 2中的图片上传
- Python基础--Python3基础语法
- RHEL4As RAC手记
- [每天一个知识点]27-职业生涯-饿了不能吃石头所以吃沙子
- wiki.openwrt.org无法打开的解决办法
- Engineering Dynamics 2 --- 动量和角动量
- 10种流行的Java框架
- matlab 三元三次方程,使用MATLAB求解3元3次方程组的问题
- 超好用的UWP应用推荐
- ubuntu中各个文件夹的作用
- deepin自己更新火狐esr
- 根据出行月份(1~12)和仓位(头等舱1,经济舱2)输出实际机票价格。
- POJ 1655 Balancing Act
- MySQL 设计与开发规范
- 如何用计算机算时间,在win10电脑的计算器中如何进行日期的计算
- C语言速成笔记 —— 考点详解 知识点图解
热门文章
- mysql引擎与操作系统的关系_mysql五大引擎之间的区别和优劣之分
- Linux下配置简单的图形桌面环境
- 【Level 08】U07 Mixed Feelings L5 Front page news
- 【OpenStack】【Keystone】安装与配置详解
- 2016.8-2017.1 六履带四摆臂移动机器人测控系统
- PostgreSQL进程结构
- 为什么C++编译器不能支持对模板的分离式编译
- 信号与线性系统分析_线性系统与采样定理
- python持久层框架_SQLAlchemy
- 基于 CoreAudio 的音频编解码(一):音频解码