重量分布

时间:2012-06-07 05:34:00

标签: algorithm math optimization

我目前正在处理具有3个目标的多目标问题,我正在使用加权求和方法,其中所有目标的权重应总计为1,我也使用0.1作为步骤,例如,如果我有两个目标我的权重是:

 0.9 0.1
 0.8 0.2
 0.7 0.3

但目前我仍然坚持3个目标并试图找出一个算法,可以在3个目标中做出类似的权重分配:

 1obj       2obj               3obj
 1.0        0.0                0.0
 0.9     (0 ; 0.1)           (0.1 ; 0)
 0.8   (0 ; 0.1 ; 0.2)    (0.2 ; 0.1 ; 0)

您能否建议一种能够获得所有可能组合的算法

1 个答案:

答案 0 :(得分:0)

在这种情况下,IMHO获得所有组合的最简单方法是将问题建模为graph并运行图发现算法,例如BFS

图表为G=(V,E),其中V = { (x1,x2,x3) | x1 + x2 + x3 = 1 }E = { (v1,v2) | can get from v1 to v2 within a single change}(例如((1,0,0.0,0.0),(0.9,0.0,0.1))是边缘 - 因为您可以通过一次更改从一个到另一个)

现在,由于图形为strongly connected(说服自己原因) - BFS将发现此图中的所有顶点,从而发现所有可能的组合。

注意:可能性的数量是指数级的,因此对于大量对象或小步骤 - 发现整个图形将花费很长时间。

小优化:(如果预计图表大小不会太大,则不需要):可以通过将图形建模为DAG来优化此解决方案的空间消耗(不允许“后缘”作为结构限制)。这也将产生正确的结果,因为仍可从单个(唯一)源访问所有顶点。
这节省了空间消耗,因为在DAG中运行BFS时,不需要维护visited集。