【问题标题】:Product of Two Variable in Integer Programming Objective整数规划目标中两个变量的乘积
【发布时间】:2017-12-31 13:17:46
【问题描述】:

我正在尝试使用 lpSolveAPI 创建以下形式的优化问题。

最大 10(x1 + x2) * S1 + 20(x1 + x 2) * S2

sub.to. S1 + S2

2 * x1 + 3 * x2

1 * x1 + 2 * x2

x1 & x2 是整数。

我的问题是如何创建这个乘法变量?我遇到的所有变量都是线性分配的。如前所述,我使用的是 R 的 lpSolveAPI。

【问题讨论】:

  • 您可以分别处理S1=0,S2=1 和S1=1,S2=0 的情况,并采取结果更大的解决方案。
  • @AxelKemper:谢谢你的好建议!我没有考虑。但一个问题是,如果我的 S 是 50。那么我必须进行 50 次单独的优化,这会有点困难。而我的 S 实际上超过 2。
  • 或许可以使用linearization。
  • @AxelKemper:感谢您的建议!一定会调查的。

标签: mathematical-optimization linear-programming lpsolve integer-programming


【解决方案1】:

听起来你有一个总和像 (10*x1 + 10*x2) * S1 + (20*x​​1 + 20*x2) * S2 + ... 二进制 S1, S2, ...试图最大化这个词。

执行此操作的一种方法是定义变量 V1、V2、...,并为 S1、S2、... 变量中的每一个定义一个变量。然后,您可以添加以下约束:

V1 <= 10*x1 + 10*x2
V1 <= M*S1
V2 <= 20*x1 + 20*x2
V2 <= M*S2
...

这里,M 是一个很大的正常数。无论 S1 的值如何,变量 V1 必须满足 V1

现在,我们可以将目标替换为:

max V1 + V2 + ...

由于我们是最大化的,当没有设置对应的 S 变量时,V 变量将取值 0,否则将取你在目标中想要的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多