我目前正在处理具有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)
您能否建议一种能够获得所有可能组合的算法
答案 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
集。