【问题标题】:Multiple Objectives in an Optimization优化中的多个目标
【发布时间】:2018-10-30 14:49:44
【问题描述】:

所以在典型的线性优化问题中,我会有这样的目标:

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。 基本上我要问的是有两个变量优化吗?我可以在哪里设定两个目标?

我在 python 中使用专门的 Google-OR 工具来执行此操作.. 只需要有人指出我正确的方向

【问题讨论】:

    标签: python optimization or-tools


    【解决方案1】:

    当您有多个目标时,通常不是一个目标,而是一组最佳解决方案,因为您通常需要在目标之间进行权衡。 这意味着,如果您采用最佳解决方案,您可能会进一步增加其中一个目标,但会以牺牲其他目标为代价,同时保持最优。

    为了解决您的问题,也许您可​​以为每个目标分配一个权重并将它们组合成一个目标,例如这里:

    maximize:
         5(3x + y) + 2(3x)
       subject to:
         1.5 x + 2 y <= 12
         0 <= x <= 3
         0 <= y <= 5
    

    在这个例子中,我说我想最大化这两个目标,但为了消除最优解的多样性,我说我希望第一个目标比第二个目标具有更高的优先级(权重52,分别)。

    当然,我可以把前面的例子改写成:

    maximize:
         21x + 5y
       subject to:
         1.5 x + 2 y <= 12
         0 <= x <= 3
         0 <= y <= 5
    

    这表明问题又是一个单一的目标优化。

    【讨论】:

      【解决方案2】:

      如果@guissoares 回答中的权重不够好,那么您最好的选择是: 1.尝试很多不同的权重,保留所有的解,观察帕累托前沿(即权衡) 2.使用多目标算法,如NSGA2。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 2018-11-17
        • 2021-06-13
        • 2016-08-12
        • 1970-01-01
        • 2011-07-30
        相关资源
        最近更新 更多