IGD反转世代距离-多目标优化评价指标概念及实现

觉得有用的话,欢迎一起讨论相互学习~

参考资料

多目标进化优化[1]-郑金华老师,邹娟老师著

实验室人手一本人人必看的宝藏图书!

IGD(Inverted Generational Distance)是常用的可以同时评价算法收敛性和多样性的指标,中文名反转世代距离。

从GD到IGD

先被提出的用于评价多目标算法收敛性的指标是GD(Generational Distance),用来表示\(PF_{known}\)与\(PF_{true}\)之间的间隔距离,计算式被定义为:

\[GD=\frac{(\sum^{n}_{i=1}d^p_i)^{1/p}}{n} \]

其中n表示\(PF_{known}\)中点的个数,p表示目标维数,\(d_{i}\)表示目标空间中得到的 每个点 \(PF_{known}\) 距离 \(PF_{true}\) 参考点(类似于答案)的最近欧式距离的平均值 。若此值为0,则表示 \(PF_{known} == PF_{true}\).

欧式距离的平面版本初中我们就学过^ _ ^

举个[1]中二维目标的例子

计算可得:

\[d_1=\sqrt[2]{(2.5-2)^2+(9-8)^2} \]

\[d_1=\sqrt[2]{(3-3)^2+(6-6)^2} \]

\[d_1=\sqrt[2]{(5-4)^2+(4-4)^2} \]

因此,\(PF_{known}\) 和 \(PF_{true}\) 之间的间隔距离为 $$GD=\sqrt[2]{1.1182+02+1^2}/3=0.5$$

值得一提的是,某种意义上可以这样认为: GD是从自己得到的每个点指向最近的真实前沿上的点的欧式距离的平均 。

IGD

可以发现,GD的方式只能够评价算法的收敛性 。为了同时评价算法的 收敛性和多样性 ,IGD被提出了。区别在于 IGD是从真实帕累托前沿上的参考点射向算法的得到的解,即是从\(PF_{true}\) 射向 \(PF_{known}\) 的 ,因此被称为 反向世代距离 。

思路是:从真实帕累托前沿上均匀取点,对于 真实前沿上的每个点找到已知帕累托前沿上距离最近的点 ,将这些点之间距离相加并取平均。和GD略微不同的是没有开方的操作!只用取平均就行,分母是从真实前沿上取点的个数。

\[IGD=\frac{\sum^{n}_{i=1}|d_i|}{n} \]

其中n表示\(PF_{true}\)中点的个数,\(d_{i}\)表示目标空间中 真实前沿的每个点距已知前沿的最近欧式距离 。此值越小,意味着算法的综合性能越好。

关于IGD的解释

由于两点间的距离是可逆的,A->B的距离和B->A的距离相等,那么真实前沿上点到已知前沿的最小值必定包含了,已知前沿到真实前沿的最小值(IGD),假设真实前沿上的点比已知前沿的点多 这种观点是错的,因为边是有向的,从一个顶点出发只能连接一另一端的点,而不能同时连接两个终点。 GD和IGD并不是从所有边集合中挑选出其中距离最短的边,而是从指定顶点出发的距离最短的有向边!

例如,显然A-D和A-B是最短的两条边。计算GD时,遍历PFknown,会选择A->D,然后到B,B会选择B->D。计算IGD时,遍历PFtrue,C会选C->A,即使A->D更短,但是对于C而言并不会考虑A的感受,D会选择D->B,即时D->A也很短,但是D只能做出最好的选择,很明显D->B比D->A更好。而为了避免同一个点指向两个端点,即取最小的距离,使用循环的方法。在找到最近点后就会跳过该点进入下一个点的查找最近距离的步骤

也直接引用郑金华老师书[1]中的例子进行介绍。

为什么选择从PFtrue出发放出射线呢?还是因为PFtrue是分布均匀的答案,从PFtrue出发才能让一个PFknown不仅仅是 靠向PFtrue还要分布均匀 ,因此PF true中采样点的数目十分重要,采样点越多,分布越均匀结果才越精确可靠 。

IGD实现

matlab

IGD = 0;% 初始化IGD为0

for i = 1:51 % 遍历PFtrue中的所有电

% data中保存的是真实PF

% data(i,1)表示第i行的第1列数

% 得到一个单元格中数值是data(i,)形状是(pop2,1)的长条状列向量

c1 = data(i,1)*ones(pop2,1);% 第一个目标的目标值

c2 = data(i,2)*ones(pop2,1);% 第二个目标的目标值

%对于一个参考点,使用所有实际点在两个目标上对应项相减后分别在两个目标上平方

% sum(,2)按行相加

% min 取最小的距离开方

IGD = IGD + sqrt(min(sum((T2_data-[c1 c2]).^2,2)));

end

% 对PFtrue上所有点取平均

store(2,generation)=IGD/51;

来源:oschina

链接:https://my.oschina.net/u/4373225/blog/3273767

Java实现世代距离_IGD反转世代距离-多目标优化评价指标概念及实现相关推荐

  1. IGD反转世代距离-多目标优化评价指标概念及实现

    IGD反转世代距离-多目标优化评价指标概念及实现 觉得有用的话,欢迎一起讨论相互学习~ 参考资料 多目标进化优化[1]-郑金华老师,邹娟老师著 实验室人手一本人人必看的宝藏图书! IGD(Invert ...

  2. 标题使用java计算三维空间中两点的欧几里德距离

    标题使用java计算三维空间中两点的欧几里德距离 public static double euclideanDistance(double[] point1, double[] point2) {d ...

  3. Java 根据经纬度计算两点间的距离

    Java实现 public final class DistanceUtils {/*** 地球半径,单位 km*/private static final double EARTH_RADIUS = ...

  4. Java根据经纬度计算两点之间的距离

    1. 前言   在我们平时使用美团,饿了么等app进行订餐,或者使用猫眼进行订电影票的时候,都有一个距离的排序,表明该家店距离我们当前的位置,这种基于地理位置的服务,统一被称为LBS(Location ...

  5. java计算两个经纬度之间的距离

    前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户.实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上 ...

  6. 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“

    2020年第十一届蓝桥杯决赛JAVA B G题"皮亚诺曲线距离" 2020国赛 JAVA B组 个人题解目录 [问题描述] 皮亚诺曲线是一条平面内的曲线. 下图给出了皮亚诺曲线的 ...

  7. nsga2多目标优化之核心知识点(快速非支配排序、拥挤距离、精英选择策略)详解(python实现)

    文章目录 一.多目标优化算法简介 1.基本知识 二.NSGA2算法 1.基本原理 2.快速非支配排序 2.1快速非支配排序 python实现 3.拥挤距离 3.1 拥挤距离python 实现 4.精英 ...

  8. java反向注入_java 控制反转和依赖注入的理解

    开始好好学习java基础和思想~ 控制反转(IOC)是Spring框架的核心思想,用我自己的话说,就是你要做一件事,别自己可劲new了,你就说你要干啥,然后外包出去就好~ 依赖注入(DI) 在我浅薄的 ...

  9. 机器学习两种距离——欧式距离和马氏距离

    我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区 ...

最新文章

  1. 决策树的C++实现(CART)
  2. 逗比讲算法:什么是冒泡排序?
  3. python中Scipy模块求取积分
  4. [HTML/CSS]colum-gap属性
  5. 2019,一线程序员该如何面对中年危机?
  6. APP多版本共存,服务端如何兼容?
  7. 12.Linux:exec函数族
  8. 帕累托最优生活例子_创业者:用博弈解决生活的难题
  9. java窗体程序秒表,帮忙解释一个Java小程序(秒表)
  10. LeetCode:完全平方数【279】【DP】
  11. vsto mysql_VSTO–Visio | 学步园
  12. 史陶比尔机器人的 LLI (Low Level Interface)
  13. TF flags的简介
  14. php生成中国标准时间,中国时间标准
  15. 最短路算法详解(Dijkstra/SPFA/Floyd)
  16. 【Spark】SparkStreaming-流处理-规则动态更新-解决方案
  17. 机器学习-各类学习器评价指标
  18. PCIe4.0的Add-in-Card(AIC)金手指layout建议
  19. 6 个优秀的开源 OCR 光学字符识别工具
  20. A Two-stage Unsupervised Approach for Low light Image Enhancement(一种两阶段无监督的微光图像增强方法)

热门文章

  1. JSP+JavaBean+Servlet工作原理实例…
  2. angular 代码高亮_angular 搜索/查找关键字高亮
  3. 应用化学:从二氯甲烷到四氯化碳
  4. 大数据分析中国冬季重度雾霾的成因(二)
  5. [Python]--爬虫 Resources Collection
  6. 使用pyinstaller打包python_使用pyinstaller打包Python项目,python
  7. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第8章-Agent 技术在机器人智能控制系统的应用
  8. 物联网云平台-贝壳物联入门详细使用方法
  9. 6.Verilog的always语句使用
  10. [20181220]使用提示OR_EXPAND优化.txt