假设有一个姑娘要找一个对象结婚。根据目前流行的观念,她需要考虑帅,有钱,有能力,有家庭背景,会体贴人,爱她,等等。假设她找对象的范围是确定的,比如就在上海市。现在她希望找一个男同胞,争取上面所述的各方面都是最好的。这么一个例子在《笑林广记》记载了。不过那是在战国的齐国。候选者只有两个,标准也只有两个,帅,有钱。当然齐女的选择是明智的,她说:这样吧,我到有钱的那里吃饭穿衣服,到帅的那个家里睡觉。
上面的一个例子是多目标最优化的一个典型例子。多目标最优化是这么一种问题,在一定约束下,它希望使得多个目标都能达到最优。在现实生活中,很多问题都要求多个目标最好,或者是妥协最好。比如买车,要便宜,又要省油,还要快。但是一般来说,多个目标同时达到最优的情况是不存在的。比如像上面那位姑娘要求每个目标都达到最优的问题,在现实中一般是不存在的。
多目标最优化的数学描述如下
min (f_1(x),f_2(x),...,f_k(x))
s.t. g(x)<=0
多目标首先要解决的一个问题是解的存在性问题。这种问题涉及到很深的数学理论。其次它要解决怎么来求解的问题。如果问题没有最优解,那么通过以下将要说明的方法就可以判别出来。如果问题有解,又怎么来求得他们呢?特别的,问题有无限多个解,又该怎么办呢?
如果问题有解,求得的一个最简单的方法是称为所谓的标量化方法,或者说是权重方法。这个方法的本质是体现当事人对各个目标的侧重点。它首先对每个目标赋一个权重,然后把所有的目标乘上权重然后累和作为一个目标,然后再与原问题相同的约束下求解。可以证明,这样的问题的解是原问题的一个解(称为pareto解)。不断的改变权重的安排,就可以求得不同的最有解。
另外一种方法叫做所谓的Benson方法。这种方法是只考虑问题的其中一个目标,而其他目标要求他们小于一定的值。然后再与原问题相同的约束下来优化这个目标。可以证明,这样求得的一个最优解也是原问题的最优解。
还有一种方法叫做所谓的goal programming方法。这种方法本质和Benson的方法差不多。它考虑如下问题
min /sum_{i=1}^k(/alpha_i u_i+/beta v_i)
s.t. f_i(x)+u_i-v_i=f(x_0)
g(x)<=0
其中x_0是预先取定的点,/alpha_i,/beta_i, i=1,/cdots, k是权重。求解上面的问题会求的一个最优解。可以证明,这个最优解也是pareto最优的。
还有一种方法是范数权重方法,他考虑如下问题
min (/sum_{i=1}^k |f_i(x)-f^*_i|^p)^{1/p}
s.t. g(x)<=0
其中,f^*是理想点,就是每个分量都是最优的点。它的本质是求得一个在所采用的范数下与理想点最近的点。可以证明上面的最优解也是原问题的一个pareto最优解。
其他还有compromise(妥协)方法,演化方法等等。思想都差不多。这里就不介绍了。
研究多目标方法目前主要有3派。中国学派从理论上研究,对算法研究的很少。所以导致泳的数学很高深,文章很难读。国外的比较注重理论和计算。一般来说都是理论指导计算的。还有一派干脆就是实用主义者。它们只考虑应用多目标最优化的模型来解决实际问题,比如管理问题,工程设计问题等等。
转自:http://www.china001.com/show_hdr.php?xname=PPDDMV0&dname=J2PCV41&xpos=40