paretosearch算法

paretosearch算法概述

paretosearch算法在一组点上使用模式搜索来迭代搜索非控制点。看到多目标的术语。模式搜索满足每次迭代的所有边界和线性约束。

从理论上讲,该算法收敛于真正的帕累托前沿附近的点。有关收敛性的讨论和证明,请参见库斯托迪奥等人。[1],其证明适用于具有Lipschitz连续目标和约束的问题。

定义为paretosearch算法

paretosearch使用许多中间量和公差在其算法的。

数量 定义
排名

一个点的排名有一个反复的定义。

  • 非优势点排名第一。

  • 对于任何一个整数k> 1,点有秩k当它主宰只分有等级严格小于k

体积

设定点的超体积p在满足不等式的目标函数空间中,对于每一个指标j,

f(j)<p,

哪里f(j)是的个分量j第个目标函数值在Pareto集合中,和M的上界是什么为帕累托集合中所有点的第个分量,在该图中,M称为参考点。图中的灰色阴影表示一些计算算法在包含-排除计算中使用的部分体积。

详情请见Fleischer[3]

paretosearch只计算在非支配点的数量超过目标数量的音量。paretosearch使用参考点M =马克斯(pts, [], 1) + 1。在这里,是一个矩阵,其行是点。

体积变化是停止算法的一个因素。有关详细信息,请参阅停止条件

距离

距离是一个人与其最近的邻居的亲密程度的度量。的paretosearch算法测量同一等级的个体间的距离。该算法测量距离的目标函数空间。

该算法将个人的距离在极限位置天道酬勤。对于其余的个体,该算法计算距离为个体排序后的邻居之间的标准化绝对距离的维数的总和。换句话说,对于维度和排序,按比例个人:

距离(I)= sum_m(X(M,I + 1) - X(M,I-1))

算法会对每个维度分别进行排序,所以这个词邻居表示每个维度中的邻居。

具有更高距离的相同等级的个体有更高的选择机会(更高的距离越好)。

距离在传播的计算,这是一个停止准则的一部分的一个因素。有关详细信息,请参阅停止条件

传播

扩散是帕累托组的运动的量度。为了计算蔓延,paretosearch算法首先评估σ,表示在有限距离下,点在帕累托前沿上的拥挤距离测度的标准差。是这些点的个数,和d是这些点之间的平均距离。然后算法计算μ的和k目标函数指标,该指标的当前最小值帕累托点与前一次迭代中该指标的最小值之差的范数。差价是

传播= (μ+σ)/(μ+QD)。

价差是很小的时候极端目标函数值不重复之间发生太大的变化(即,μ小),并当上了帕累托点前是均匀涂抹(即,σ是小的)。

paretosearch在停止条件下使用扩展。当扩展没有太大变化时迭代就会停止。有关详细信息,请参阅停止条件

ParetoSetChangeTolerance 停车条件进行搜索。paretosearch停止时,体积,蔓延,或距离不改变超过ParetoSetChangeTolerance在迭代的一个窗口。有关详细信息,请参阅停止条件
MinPollFraction

的迭代期间位置,以轮询的最小分数。paretosearch调查至少MinPollFraction*位置(在图案点的数量)。如果调查点的数量给出了非支配点,投票被认为是成功的。否则,paretosearch继续轮询,直到找到一个非控制点或模式中的点耗尽为止。

方法时,此选项不适用UseVectorized选项真正。在这种情况下,paretosearch轮询所有模式点。

的草图paretosearch算法

初始化搜索

要创建初始点的集合,paretosearch生成options.ParetoSetSize默认情况下,基于问题边界的准随机样本点。详情请见Bratley和Fox[2]。当问题有超过500个维度时,paretosearch使用拉丁超立方抽样生成初始点。

如果一个分量没有边界,paretosearch使用一个人工下限的-10年和人工上限的10

如果一个组件只有一个边界,paretosearch使用该边界作为宽度区间的端点20 + 2 * abs(绑定)。例如,如果一个分量没有上界,而有一个15的下界,paretosearch使用区间宽度20 + 2*15 = 55,因此使用人为的上限15 + 55 = 70。

如果你传入一些初始点options.InitialPoints,然后paretosearch用这些点作为初始点。paretosearch生成更多的点,如果需要,至少获得options.ParetoSetSize初始点。

paretosearch然后检查初始点,以确保它们对于边界和线性约束是可行的。如果有必要,paretosearch通过求解线性规划问题,将初始点投射到线性可行点的线性子空间上。在这种情况下,这个过程会导致一些点重合paretosearch删除任何重复的点。paretosearch不为人工边界更改初始点,仅为指定的边界和线性约束。

在移动这些点以满足线性约束条件后,如有必要,paretosearch检查点是否满足非线性约束。paretosearch给人的惩罚值天道酬勤到不满足所有非线性约束的任意点。然后paretosearch计算剩余可行点的目标函数值。

请注意

目前,paretosearch不支持非线性等式约万博1manbetx束量表(x) = 0

创建归档和新任

paretosearch维持两组点:

  • 存档-一个结构,其中包含与以下网格大小相关联的非支配点options.MeshTolerance并满足所有约束中options.ConstraintTolerance。的存档结构只包含2 * options.ParetoSetSize点和最初是空的。每一个点的存档包含关联的网格大小,即生成该点的网格大小。

  • 迭代-一个包含非控制点的结构,可能有一些控制点与较大的网格尺寸或不可行。每一个点的迭代包含一个相关联的网目尺寸。迭代包含不超过options.ParetoSetSize点。

民意调查,以找到更好的点

paretosearch从投票点迭代,与无角点从点继承关联的网目尺寸在迭代。的paretosearch算法使用维持相对于边界和所有线性约束可行性调查。

如果问题有非线性约束,paretosearch计算每个投票点的可行性。paretosearch从可行点的分数保持不可行点的得分分别。一个可行的点的分数是该点的目标函数值的向量。不可行点的得分是非线性infeasibilities的总和。

paretosearch调查至少MinPollFraction*(模式中的点的数量)中每个点的位置迭代。如果投票结果至少给出了一个与现任(原)点相对的非优势点,那么投票就被认为是成功的。否则,paretosearch继续轮询,直到找到一个非控制点或模式中的点耗尽为止。如果paretosearch用完点,并且不会产生非支配点,paretosearch声明轮询不成功,并将网格大小减半。

如果民调发现非优势点,paretosearch反复延伸成功方向投票,倍增每次网眼尺寸,直到延伸产生主导点。在此扩展,如果网眼大小超过options.MaxMeshSize(默认值:天道酬勤),投票停止。如果目标函数值降低到,paretosearch声明问题无界和停止。

更新存档迭代结构

在所有点的轮询之后迭代,该算法在该点检查新点一起迭代存档结构。paretosearch计算每个点的秩或帕累托前沿数,然后执行以下操作。

  • 移除所有不在第1等级的点存档

  • 马克的新秩1插入点迭代

  • 标出可行点迭代谁的关联网格大小小于options.MeshTolerance为转移存档

  • 标出控制点迭代仅用于卸下,如果他们阻止新的非支配点被添加到迭代

paretosearch然后计算每个点的体积和距离。如果存档是否会因为包含标记点而溢出,那么容量最大的点就会占据存档,和其他人离开。同样,新的点标记为除迭代输入迭代在他们的卷顺序。

如果迭代是满的,没有优势点,然后呢paretosearch毫无意义迭代并声明迭代不成功。paretosearch将网格大小乘进去迭代的1/2。

停止条件

对于三个或更少的目标函数,paretosearch使用量和蔓延作为停止措施。对于四个或更多的目标,paretosearch使用距离和蔓延的措施停止。在此讨论的其余部分,这两个措施paretosearch用途表示适用措施。

该算法保持了适用措施的最后八个值的向量。经过8次迭代后,算法在每次迭代开始时检查两个适用的度量值,其中托尔= options.ParetoSetChangeTolerance:

  • spread converged = abs(spread(end - 1) - spread(end)) <= tol*max(1,spread(end - 1));

  • volumeConverged = ABS(体积(结束 - 1) - 体积(结束))<= TOL *最大(1,体积(结束 - 1));

  • distanceConverged = abs(距离(端- 1)-距离(端))<= tol*max(1,距离(端- 1));

如果任何一个适用的测试是真正,算法停止。否则,该算法计算的最大平方项的平方项的傅里叶变换的适用措施减去第一项。然后,算法将maxima与它们删除的项(转换的DC组件)进行比较。如果删除的项大于100 * TOL *(最大所有其他条款的),则算法停止。该测试基本上确定的措施的顺序没有波动,因此,已经收敛。

此外,绘图函数或输出函数可以停止算法,或者算法可以因为超过时间限制或函数计算限制而停止。

返回的值

该算法返回帕累托前面的要点如下。

  • paretosearch把这些点结合起来存档迭代成一个集合。

  • 当有三个或更少的目标函数,paretosearch从量最大到最小的返回点,出至多ParetoSetSize点。

  • 当有四个或更多的目标函数时,paretosearch返回从最大距离到最小距离,到最大距离的点ParetoSetSize点。

修改为并行计算和矢量化功能评价

paretosearch以并行或向量化方式计算目标函数值(UseParallel真正要么UseVectorized真正),算法有一些更改。

  • UseVectorized真正,paretosearch忽略了MinPollFraction选项并计算模式中的所有轮询点。

  • 当并行计算时,paretosearch依次检查每一点迭代并从每个点执行一个并行轮询。回国后MinPollFraction投票点的分数,paretosearch确定是否有任何投票点支配基点。如果是这样,投票就被认为是成功的,任何其他平行的评估都将停止。如果没有,则继续进行投票,直到出现一个控制点或投票结束。

  • paretosearch对工作人员或以向量化的方式执行目标函数评估,但不同时执行这两种方式。如果你同时设置UseParallelUseVectorized真正,paretosearch计算的目标函数值在工人平行的,但不是在向量化的方式。在这种情况下,paretosearch忽略了MinPollFraction选项并计算模式中的所有轮询点。

paretosearch很快

以最快的方式运行paretosearch取决于几个因素。

  • 如果目标函数的评价是缓慢的,那么它通常最快方法是使用并行计算。在并行计算的开销可能是巨大的,当目标函数的评价是快,但是当他们是缓慢的,通常最好使用更多的计算能力。

    请注意

    并行计算需要一个并行计算工具箱许可证。

  • 如果目标函数评估不是很耗时,那么使用向量化评估通常是最快的。然而,情况并非总是如此,因为向量化计算可以计算整个模式,而串行计算只需要模式的一小部分。特别是在高维情况下,这种评估的减少会导致对某些问题的串行评估更快。

  • 要使用矢量计算,你的目标函数必须接受行任意数量的矩阵。每一行代表一个点来评价。目标函数必须返回目标函数值的矩阵具有相同数目的行,因为它接受,与一列用于每个目标函数。对于单个目标的讨论,请参阅矢量化的健身功能(遗传算法)或矢量化目标函数(patternsearch)。

参考

[1]库斯托迪奥,A. L., J. F. A.马德拉,A. F.瓦兹和L. N.维森特。直接多搜索多目标优化。暹罗j . Optim。,21(3), 2011, pp. 1109–1140. Preprint available athttps://estudogeral.sib.uc.pt/bitstream/10316/13698/1/Direct%20multisearch%20for%20multiobjective%20optimization.pdf

[2] Bratley, P.和B. L. Fox。算法659:实现Sobol的准随机序列发生器。ACM跨。数学。软件14,1988年,第88-100。

[3]弗莱舍,M.帕累托舰的措施:应用到多目标超启发式。在2003年4月于葡萄牙Faro举办的“第二届演化多准则优化国际会议论文集- emo”中。由Springer-Verlag在计算机科学系列讲义中发表,第2632卷,第519-533页。预印在http://www.dtic.mil/get-tr-doc/pdf?AD=ADA441037

另请参阅

相关话题