所以在一个典型的线性优化问题中,我将有一个这样的目标:
Example of a Linear Program
maximize:
3x + y
subject to:
1.5 x + 2 y <= 12
0 <= x <= 3
0 <= y <= 5
但是,也许我想有两个目标?例如(不确定是否可以添加一个简单的示例)
maximize:
3x + y
maximize:
3x
subject to:
1.5 x + 2 y <= 12
0 <= x <= 3
0 <= y <= 5
所以说类似我想最大化3x + y的值,但是在这些解决方案中最大3 * x。 基本上,我要问的是有两个变量优化吗?在哪里可以设定两个目标?
我使用专门的Google-OR工具在python中执行此操作。只需要有人将我指向正确的方向
答案 0 :(得分:1)
当您有多个目标时,通常没有一个目标,而是一组最佳解决方案,因为您通常会在目标之间进行权衡。 这意味着,如果您采用最佳解决方案,则可以在维持最佳性的同时,以牺牲其他目标为代价,进一步提高其中一个目标。
要解决您的问题,也许您可以为每个目标分配一个权重,然后将它们组合为一个目标,例如:
maximize:
5(3x + y) + 2(3x)
subject to:
1.5 x + 2 y <= 12
0 <= x <= 3
0 <= y <= 5
在此示例中,我是说我想最大化两个目标,但是为了消除最优解的多样性,我是在说我希望第一个目标的优先级高于第二个目标(权重5
和2
。
当然,我可以将前面的示例重写为:
maximize:
21x + 5y
subject to:
1.5 x + 2 y <= 12
0 <= x <= 3
0 <= y <= 5
这表明问题再次是单个目标优化。
答案 1 :(得分:0)
如果按@guissoares的回答进行加权还不够好,那么最好的选择是: 1.尝试许多不同的权重,保留所有解决方案,并观察帕累托前沿(即权衡) 2.使用NSGA2等多目标算法。