多目标优化拥挤距离计算
多目标优化拥挤距离计算
觉得有用的话,欢迎一起讨论相互学习~
拥挤距离主要是维持种群中个体的多样性。具体而言,一般来说是指种群按照支配关系进行非支配排序后,单个Rank层中个体的密集程度。常用于支配关系的多目标算法中,例如NSGA-II.
主要步骤如下:
- 取单个前沿中个体按照一个目标上的值从小到大排序
- 将最大目标值作为max,最小目标值保留作为min。并且这两个极值点的拥挤距离都被设置为inf即无穷大。 因此注意,一个层中可能有多个具有inf的点,即如果层中有多个点在至少一个目标上相等,并且最大或最小,那么这些点的拥挤距离都是无穷大!!因为目标上呈现垂直的关系也是属于非支配的关系!!如果出现这种情况,说明你算法的多样性很烂!~或者在某些算法早期可能出现这种情况
- 在这个目标上计算每个个体最相邻个体之间的距离,即i-1和i+1的目标值的差。并使用max和min对次值进行归一化。
- 遍历目标,将目标上已经归一化的拥挤距离相加。
- 进入下一层front前沿
- 拥挤距离越大越好,最后按照拥挤距离重新排序各层,进而排序种群
matlab
function CrowdDis = CrowdingDistance(PopObj)
% Calculate the crowding distance of each solution in the same front[N,M] = size(PopObj);CrowdDis = zeros(1,N);Fmax = max(PopObj,[],1);Fmin = min(PopObj,[],1);for i = 1 : M[~,rank] = sortrows(PopObj(:,i));CrowdDis(rank(1)) = inf;CrowdDis(rank(end)) = inf;for j = 2 : N-1CrowdDis(rank(j)) = CrowdDis(rank(j))+(PopObj(rank(j+1),i)-PopObj(rank(j-1),i))/(Fmax(i)-Fmin(i));endend
end
jmetal
public void crowdingDistanceAssignment(SolutionSet solutionSet, int nObjs) {int size = solutionSet.size();if (size == 0)return;if (size == 1) {solutionSet.get(0).setCrowdingDistance(Double.POSITIVE_INFINITY);return;} // ifif (size == 2) {solutionSet.get(0).setCrowdingDistance(Double.POSITIVE_INFINITY);solutionSet.get(1).setCrowdingDistance(Double.POSITIVE_INFINITY);return;} // if// Use a new SolutionSet to evite alter original solutionSetSolutionSet front = new SolutionSet(size);for (int i = 0; i < size; i++) {front.add(solutionSet.get(i));}for (int i = 0; i < size; i++)front.get(i).setCrowdingDistance(0.0);double objetiveMaxn;double objetiveMinn;double distance;for (int i = 0; i < nObjs; i++) {// Sort the population by Obj nfront.sort(new ObjectiveComparator(i));objetiveMinn = front.get(0).getObjective(i);objetiveMaxn = front.get(front.size() - 1).getObjective(i);// Set de crowding distancefront.get(0).setCrowdingDistance(Double.POSITIVE_INFINITY);front.get(size - 1).setCrowdingDistance(Double.POSITIVE_INFINITY);for (int j = 1; j < size - 1; j++) {distance = front.get(j + 1).getObjective(i) - front.get(j - 1).getObjective(i);distance = distance / (objetiveMaxn - objetiveMinn);distance += front.get(j).getCrowdingDistance();front.get(j).setCrowdingDistance(distance);} // for} // for} // crowdingDistanceAssing
多目标优化拥挤距离计算相关推荐
- 基于遗传算法的多目标优化算法(附代码案例)
一.理论基础 多目标优化问题可以描述如下: 其中,f(x) 为待优化的目标函数:x 为 待优化的变量:lb 和 ub 分别为变量 x 的下限和上限约束:Aeq * x = beq 为变量 x 的线性等 ...
- nsga2多目标优化之核心知识点(快速非支配排序、拥挤距离、精英选择策略)详解(python实现)
文章目录 一.多目标优化算法简介 1.基本知识 二.NSGA2算法 1.基本原理 2.快速非支配排序 2.1快速非支配排序 python实现 3.拥挤距离 3.1 拥挤距离python 实现 4.精英 ...
- Java实现世代距离_IGD反转世代距离-多目标优化评价指标概念及实现
IGD反转世代距离-多目标优化评价指标概念及实现 觉得有用的话,欢迎一起讨论相互学习~ 参考资料 多目标进化优化[1]-郑金华老师,邹娟老师著 实验室人手一本人人必看的宝藏图书! IGD(Invert ...
- IGD反转世代距离-多目标优化评价指标概念及实现
IGD反转世代距离-多目标优化评价指标概念及实现 觉得有用的话,欢迎一起讨论相互学习~ 参考资料 多目标进化优化[1]-郑金华老师,邹娟老师著 实验室人手一本人人必看的宝藏图书! IGD(Invert ...
- 基于头脑风暴优化的多目标优化计算
1.问题描述: 头脑风暴优化算法是一种模拟人脑思维活动和头脑风暴会议所提出的新群智能优化算法,实验结果表明了其在单目标优化问题中的可行性和有效性.对于目前越来越受到人们关注的多目标优化问题,本毕业设计 ...
- 多目标优化蚁群算法的matlab_深入浅出多目标优化10分钟多目标优化入门
多目标优化快速入门 多目标优化--引子 正如生活中,你想买一辆车,又想汽车的性能好,外观不错,价格还比较低,对于这同时满足这三个条件,我们应该如何进行考虑呢? 在投资的时候,我们想投入的资金最少,所付 ...
- 【NSGAII】基于NSGAII的多目标优化算法的MATLAB仿真
1.软件版本 matlab2021a 2.本算法理论知识 NSGA-II适合应用于复杂的.多目标优化问题.是K-Deb教授于2002在论文:A Fast and Elitist Multiobject ...
- MATLAB应用实战系列NSGA-II多目标优化算法原理及应用实例(附MATLAB代码)
前言 NSGA-Ⅱ是最流行的多目标遗传算法之一,它降低了非劣排序遗传算法的复杂性,具有运行速度快,解集的收敛性好的优点,成为其他多目标优化算法性能的基准. NSGA-Ⅱ算法是 Srinivas 和 D ...
- a*算法matlab代码_NSGAII多目标优化算法讲解(附MATLAB代码)
小编今天为大家讲解NSGA-II多目标优化算法,提到多目标优化,大家可能第一个就想到NSGA-II算法,今天小编就带领大家解开NSGA-II的神秘面纱. NSGA-II全称是快速非支配排序遗传算法,这 ...
最新文章
- struts2 validate验证
- std::bind介绍
- 眼图在通信系统中有什么意义_悟空CRM:施行CRM系统对汽车行业有什么意义
- 【问题记录】eclipse启动web项目时,spring会初始化两次
- [YTU]_2922(Shape系列-8)
- php权限二进制,了解二进制权限,二进制权限的应用(PHP演示)
- plesk支持服务器,如何在 Plesk 中实现远程访问 (Windows)
- 安装oracle-java,并覆盖原先的OpenJDK
- python爬虫登录有验证码_大神教你用Python爬虫模拟登录带验证码网站
- Pearson相关系数 - Pearson's Correlation Coefficient
- 创建一个简单的WCF程序
- war,jar包是啥
- mysql 撤销删除_线上磁盘告警,mysql无法释放空间,踩了个大坑,大家记得别踩坑...
- springmvc 使用
- citrix服务器共享文件夹,如何使用citrix XenApp 发布远程共享文件夹,及其故障解决...
- webstorm控制台中文乱码解决
- 03-【nginx】nginx源码分析--proxy模式下nginx的自动重定向auto_redirect
- js 页面跳转并传参
- 自制STM32F205最小系统板
- 手机定位(原生android定位)