0

我目前正在处理具有 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)

你能建议一个算法来获得所有可能的组合吗

4

1 回答 1

0

恕我直言,在这种情况下获得所有组合的最简单方法是将问题建模为并运行图发现算法,例如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))是一条边 - 因为您可以通过一次更改从一个到另一个)。

现在,由于图是强连接的(说服自己为什么) - BFS 将发现该图中的所有顶点,从而发现所有可能的组合。

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

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

于 2012-06-07T05:39:44.057 回答