gamultiobj 算法
简介
本节描述了 gamultiobj 用于在帕累托前沿创建一组点的算法。gamultiobj 使用受控的精英遗传算法(NSGA-II [3] 的变体)。精英遗传算法始终偏爱具有更好适应度值(排名)的个体。受控精英遗传算法也偏爱那些有助于增加种群多样性的个体,即使它们的适应度值较低也是如此。
多目标术语
gamultiobj 算法的大部分术语与 遗传算法术语 相同。但是,还有一些其他术语,将在本节中进行描述。有关术语和算法的更多详细信息,请参阅 Deb [3]。
主导性 - 当满足以下条件时,对于向量值目标函数 x,点 y 主导点 f:
fi 对于所有,x(fi) ≤ y(i)。
fj 对于某些,x(fj) < y(j)。
术语“主导”相当于术语“劣等”:当 x 劣于 y 时,y 主导 x。
点集合 P 中的非支配集是 Q 中的点集合 P,这些点不被 P 中的任何点支配。
等级 - 对于可行个体,对个体的排名有一个迭代定义。排名第一的个体不受任何其他个体支配。等级 2 的个体仅受排名 1 的个体支配。一般而言,排名
k的个体仅受排名k - 1或更低的个体支配。
排名越低的个体被选中的机会就越大(排名越低越好)。
所有不可行个体的排名都比任何可行个体的排名差。在不可行种群中,排名是按不可行性度量排序的顺序,加上可行成员的最高排名。
gamultiobj使用排名来选择父代。拥挤距离 - 拥挤距离是衡量个体与其最近邻居的接近程度的标准。
gamultiobj算法测量同一排名的个体之间的距离。默认情况下,该算法在目标函数空间中测量距离。但是,您可以通过将DistanceMeasureFcn选项设置为{@distancecrowding,'genotype'}来测量决策变量空间(也称为设计变量空间)中的距离。该算法将极端位置上个体的距离设置为
Inf。对于剩余的个体,该算法将距离计算为个体排序邻居之间的标准化绝对距离维度的总和。换句话说,对于维度m和已排序、缩放的个体i:distance(i) = sum_m(x(m,i+1) - x(m,i-1)).该算法对每个维度分别进行排序,因此术语邻居表示每个维度上的邻居。
同一排名的个体,距离越大,被选择的机会就越大(距离越大越好)。
您可以选择与默认的
@distancecrowding函数不同的拥挤距离测量。请参阅 多目标选项。拥挤距离是计算扩散的一个因素,是停止条件的一部分。当两个选定的个体具有相同的排名时,拥挤距离也在锦标赛选择中用作决胜局。
Spread - 差值是帕累托集运动的量度。为了计算扩展,
gamultiobj算法首先评估 σ,即位于有限距离的帕累托前沿上的点的拥挤距离度量的标准差。Q 是这些点的数量,d 是这些点之间的平均距离度量。然后,算法评估 μ,即该指数的当前最小值帕累托点与上一次迭代中该指数的最小点之间的差的范数在 k 个目标函数指数上的总和。然后散步函数spread= (μ + σ)/(μ + Qd).当极端目标函数值在迭代之间变化不大(即,μ 较小)以及帕累托前沿上的点分布均匀(即,σ 较小)时,扩展较小。
gamultiobj在停止条件下使用了传播。当传播没有发生太大变化且最终传播小于近期传播的平均值时,迭代停止。请参阅 停止条件。
初始化
gamultiobj 算法的第一步是创建初始种群。算法创建种群,或者您可以使用 InitialPopulationMatrix 选项给出初始种群或部分初始种群(请参阅 种群选项)。种群中的个体数量设置为 PopulationSize 选项的值。默认情况下,gamultiobj 创建的种群在边界和线性约束方面是可行的,但在非线性约束方面不一定是可行的。当没有约束或只有边界约束时,默认创建算法为 @gacreationuniform,当有线性或非线性约束时,默认创建算法为 @gacreationlinearfeasible。
gamultiobj 评估种群的目标函数和约束,并使用这些值为种群创建分数。
迭代次数
gamultiobj 算法的主要迭代如下。
使用当前种群的选择功能为下一代选择父母。
gamultiobj唯一可用的内置选择函数是二元锦标赛。您还可以使用自定义选择函数。通过变异和交叉从选定的父代中创建子代。
通过计算目标函数值和可行性对子代们进行评分。
将当前种群和子代合并为一个矩阵,即扩展种群。
计算扩展种群中所有个体的排名和拥挤距离。
通过保留每个排名的适当个体数量,将扩展种群修剪为拥有
PopulationSize个个体。
当问题具有整数或线性约束(包括边界)时,算法会修改种群的进化。请参阅 整数和线性约束。
停止条件
适用以下停止条件。每个停止条件都与一个退出标志相关联。
| exitflag 值 | 停止条件 |
|---|---|
1 |
|
0 | 超过最大代数 |
-1 | 优化被输出函数或绘图函数终止 |
-2 | 未找到可行点 |
-5 | 超出时间限制 |
对于退出标志 1,传播相对变化的几何平均值是第 k 个前代相对变化的乘数 ½ k。
整数和线性约束
当问题具有整数或线性约束(包括边界)时,算法会修改种群的进化。
当问题同时具有整数和线性约束时,软件会修改所有生成的个体,使其根据这些约束变得可行。您可以使用任何创建、变异或交叉函数,并且整个种群在整数和线性约束方面仍然可行。
当问题仅有线性约束时,软件不会修改个体以使其符合这些约束的可行。您必须使用创建、变异和交叉函数来保持相对于线性约束的可行性。否则,种群将变得不可行,结果也将不可行。默认运算符保持线性可行性:
gacreationlinearfeasible或gacreationnonlinearfeasible用于创建,mutationadaptfeasible用于变异,crossoverintermediate用于交叉。
整数和线性可行性的内部算法与 surrogateopt 的内部算法类似。当问题具有整数和线性约束时,算法首先创建线性可行点。然后,该算法尝试通过使用启发式方法将线性可行点四舍五入为整数来满足整数约束,该启发式方法试图保持点的线性可行。当此过程无法获取足够的可行点来构建种群时,算法将调用 intlinprog 来尝试查找更多符合边界、线性约束和整数约束的可行点。
之后,当变异或交叉产生新的种群成员时,算法通过采取类似的步骤确保新成员是整数且线性可行的。如果有必要,每个新成员都会被修改,以尽可能接近其原始值,同时满足整数和线性约束和边界。
参考书目
[1] Censor, Y. “Pareto Optimality in Multiobjective Problems,” Appl. Math. Optimiz., Vol. 4, pp 41–59, 1977.
[2] Da Cunha, N. O. and E. Polak. “Constrained Minimization Under Vector-Valued Criteria in Finite Dimensional Spaces,” J. Math. Anal. Appl., Vol. 19, pp 103–124, 1967.
[3] Deb, Kalyanmoy. “Multi-Objective Optimization using Evolutionary Algorithms,” John Wiley & Sons, Ltd, Chichester, England, 2001.
[4] Zadeh, L. A. “Optimality and Nonscalar-Valued Performance Criteria,” IEEE Trans. Automat. Contr., Vol. AC-8, p. 1, 1963.