加权和法
加权和法(weighted-sum method)把多个目标乘以非负权重后相加,形成一个标量目标。它常用于探索帕累托前沿,但权重的意义依赖目标单位,非凸问题的某些有效方案也可能永远选不到。
两个相互牵制的平方距离
设决策为 ,同时希望最小化 和 。第一目标偏好零,第二目标偏好二。取 、,标量目标为 平方中心总在区间内,故唯一最优点为 。这也证明把所有权重同乘一个正数不改变最优点,通常可归一化为权重和等于一。
令 。当 ,最优点为 ,目标向量为 ;等权时得到 和 。有解变式取 ,得到 和 。权重增加使被重视的第一目标变小,但两目标值的比例不等于权重的反比。
这整个区间都是帕累托有效的:若 ,第一平方变小而第二平方变大;若 ,变化方向相反。移动权重在本例中能遍历整条前沿,但这一性质需要另作论证,不能由加权定义直接推出。
正权重为何给出有效解
一般地,在非空可行集 上最小化目标向量 ,各 为实值函数。给定所有分量严格为正的权重,假定标量问题确有全局最小点 。若存在 使所有 ,且至少一个严格小于,乘以正权重相加便得 ,与全局最小矛盾。因此 帕累托有效。这一充分性不要求目标或可行集凸。[1]
如果只要求权重非负且不全为零,同一证明只排除所有目标都严格改善的方案,因而保证的是弱有效。反例:可行目标只有 、,用权重 时两者都最优,后者却被前者支配。原问题无最小点时,加权也不会凭空提供解;对非凸目标仅求得局部最小,更不能使用上述全局证明。
选不到的前沿成员
考虑只有三个可行目标向量的另一个问题:,两个目标均取小为好。三者都非支配;以 加权,三者分数分别为 。对任意 ,至少一个端点分数不超过 ,因此M永远不可能最优。
这类非支配而不能由线性加权支持的目标称为非支持有效目标。三点间的线段在此问题中不可行,不能擅自把它们当成混合决策。对凸问题,有效点可在适当条件下由非负权重支持;该结论仍不能保证每个有效点都对应严格正权重,或每组权重只产生一个解。希望在非凸前沿上覆盖更多方案时,可以把一部分目标变成带阈值的约束,再改变阈值。
单位改变与可运行比较
若第一目标的数值单位变大一百倍,仍用原权重,实际目标变成 ,解为 。例如等权时由一变成 。为了表示相同偏好,需相应反向调整权重或说明使用的尺度;归一化本身也是建模选择,不能从数据自动推出决策者偏好。
下面使用 Python 3 标准库,按配方公式求连续主例,并逐一比较三点模型;返回点、两个目标值及分数,不改写传入点集。连续公式成本为常数;S个给定目标向量的比较为 时间和 返回表空间。程序只解决正文模型,没有把有限枚举当成一般多目标求解器。
import math
def quadratic_weighted(w1, w2, scale1=1.0):
if not all(math.isfinite(v) for v in (w1,w2,scale1)):
raise ValueError("finite inputs required")
if min(w1,w2) < 0 or w1+w2 <= 0 or scale1 <= 0:
raise ValueError("nonnegative nonzero weights and positive scale required")
x = 2*w2/(scale1*w1+w2)
return x,(x*x,(x-2)**2)
def finite_weighted(points, w):
if not 0 <= w <= 1:
raise ValueError("weight must lie in [0,1]")
table = [(tuple(p),w*p[0]+(1-w)*p[1]) for p in points]
if not table:
raise ValueError("nonempty point collection required")
best = min(v for _,v in table)
return [p for p,v in table if v == best],table
for w in (.25,.5,.75):
print("continuous",w,quadratic_weighted(w,1-w))
print("finite",w,finite_weighted([(0,3),(2,2),(3,0)],w))
print("rescaled",quadratic_weighted(.5,.5,100))
assert math.isclose(quadratic_weighted(.5,.5,100)[0],2/101)
输出三个连续解为1.5、1、0.5;三点模型在权重0.25、0.5、0.75时依次选择B、A与B并列、A,始终不会选择M。两目标方向必须先统一;若一个需要最大化,应先明确取负或另作一致变换。
参考文献
- ↑ Boyd and Vandenberghe, Convex Optimization,§4.7.3–4.7.4,支配关系与标量化。