多目标优化算法的性能指标_简介

多目标优化算法的性能指标

基础知识

  在对多目标优化算法的性能进行评价时,主要有两个评价标准:多样性和收敛性。由于单一的性能指标不能很好地同时反映这两个评价标准,本文使用了三种性能指标来衡量多目标优化算法的性能。三个性能指标分别为超体积度量(Hypervolume, HV) [1] ,得到的非占优解集与参考解集之间的度量(Inverted Generational Distance, IGD) [2] 和 二元指标Coverage metric指标[3]。
  HV:该性能指标是由Zitzler等 [1] 提出的,它用于度量一个目标空间的体积,该目标空间至少被非占优解集中的一个解占优。HV能很好地衡量算法的收敛性和多样性。令 X 记为算法求解得到的非占优解集,P 记为真实帕累托前沿对应的参考点,通常是各个目标上的最大值形成的向量。那么,非占优解集到真实帕累托前沿的超体积,即 HV 指标,具体计算方式如下:
在这里插入图片描述其中,v(x,P) 表示非占优解集 X 中解 x 与参考点 P 之间形成空间的超体积,即:以解 x 和参考点 P 之间的连线作为对角线,构建的超立方体的体积。因此,HV指标也可以同时评估占优解集的收敛性和多样性。非占优解集的 HV 指标数值较大意味着,该解集在收敛性和多样性的方面更加接近真实帕累托前沿,是较好的非占优解集。对多次运行结果的分析包括以下两步,首先计算出每次单独运行结果的 HV 指标,然后计算其平均值和方差。这里同样需要归一化处理,具体见图 1(b)。
在这里插入图片描述
  IGD:该指标用于计算真实帕累托前沿中所有解与求解算法获得的非占优解的平均欧式距离。IGD 值越小,表明非占优解集越逼近真实帕累托前沿并且分布更均匀,解集的收敛性和多样性更好。记算法求解算例获取的解集为 X,P * 为真实帕累托前沿上均匀分布的点集,则 X 的 IGD 值计算公式如下:
在这里插入图片描述

其中,d(x * ,X) 表示解 x * ∈ P * 到 X 中解的最小欧式距离,|P * | 表示 P * 内解的个数,具体见图 1(a)。
   C-metric 的值用C(𝑋, 𝑌)计算,其中𝐶(𝑋, 𝑌)表示解集Y中有多少比例的解被解集X中的某解占优,𝐶(𝑋, 𝑌)与𝐶(𝑌, 𝑋)不一定相等或相反,见图 1(c)。

源码下载

参考文献

[1] Laumanns M. SPEA2 : Improving the Strength Pareto Evolutionary Algorithm[J]. Technical Report Gloriastrasse, 2002.
[2] Zhang Q, Li H. MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition[J]. IEEE Transactions on Evolutionary Computation, 2007, 11(6):712-731.
[3] Zitzler E, Thiele L. Multiobjective evolutionary algorithms: a comparative case study and the strength Pareto approach[J]. IEEE Transactions on Evolutionary Computation, 1999, 3(4):257-271.

  • 19
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
多目标进化算法的性能评价指标MATLAB代码包括体积指标(Hypervolume Indicator)和强度帕累托进化算法2(SPEA2)。其中,体积指标用于估计估计的帕累托前沿(P)和参考点(R)之间的接近程度。而SPEA2是一种扩展版本的SPEA多目标进化优化算法,它利用k-最近邻(kNN)等机制和专门的排名系统对种群成员进行排序,并从当前种群和遗传算子(突变和交叉)创建的后代组合中选择下一代种群。 以下是体积指标的MATLAB代码示例: ```matlab function hv = hypervolume(individuals, refpoint) % individuals:帕累托前沿的估计数据点 % refpoint:参考点,用于度量估计数据点与真实帕累托前沿的接近程度 % 计算每个个体与参考点之间的体积 volumes = zeros(size(individuals, 1), 1); for i = 1:size(individuals, 1) volumes(i) = prod(max(individuals(1:i,:), [], 1) - refpoint); end % 计算帕累托前沿的体积 hv = sum(volumes);end ``` 以下是SPEA2的MATLAB代码示例: ```matlab function offspring = SPEA2(parents, population, k) % parents:当前种群的父代个体 % population:当前种群的全部个体 % k:k-最近邻的参数,用于计算强度值 % 计算每个个体的强度值 strengths = zeros(size(population, 1), 1); for i = 1:size(population, 1) strength = 0; for j = 1:size(population, 1) if i ~= j && dominates(population(i,:), population(j,:)) strength = strength + 1; end end strengths(i) = strength; end % 根据强度值和k-最近邻选择下一代种群 [~, sorted_indexes = sort(strengths, 'descend'); selected_indexes = sorted_indexes(1:k); offspring = population(selected_indexes,:); end function result = dominates(individual1, individual2) % individual1:个体1 % individual2:个体2 % 判断individual1是否支配individual2 result = all(individual1 <= individual2) && any(individual1 < individual2); end ``` 以上是多目标进化算法性能评价指标的MATLAB代码示例,包括体积指标和SPEA2算法。根据具体的需求和算法特点,可以根据这些示例代码进行进一步的修改和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值