线性规划 objective 函数取决于变量的符号
Linear program objective function depends on sign of variable
我试图找到 Q[i]
以最大化
Sum[Q[i] F[i] - C[i], {i, 1, n}]
受一些线性约束。问题:C[i]
是 Q[i]
的函数,但不是线性的。它等于 Q[i] * Cp if Q[i] >= 0
,如果 Q[i] < 0
则等于 -Q[i] * Cn
(如果 Q[i]
是正数与负数,基本上是一个不同的成本项)。
我怀疑我需要使用某些版本的整数规划来正确地重新表述它,但看不到如何到达那里。谁能指出我正确的方法,或者只是告诉我这是不可能的? :)
这是一个带有一些额外二进制变量的混合整数公式:
我们使用变量拆分来获得 Q 的两个分量(正和负)。使用二进制变量,我们确保这些组件中只有一个是非零的。这将需要新的连续变量 q+ 和 q- 以及新的二进制变量 delta。
常数M+和M-是q+、q-的上限。使它们尽可能小(100 或 1000 优于 1e6 或 1e7)。
现在我们可以利用一些东西。 objective 将下推 C 项以使总数 objective 最大化。这意味着我们可以删除带有二元变量的方程式,因为自动地只有 q-、q+ 之一将是非零的。 IE。如果Q=-10,它会更喜欢q+ = 0, q- = 10 高于q+ = 2, q- = 12。所以最终的模型实际上是一个直线LP:
我试图找到 Q[i]
以最大化
Sum[Q[i] F[i] - C[i], {i, 1, n}]
受一些线性约束。问题:C[i]
是 Q[i]
的函数,但不是线性的。它等于 Q[i] * Cp if Q[i] >= 0
,如果 Q[i] < 0
则等于 -Q[i] * Cn
(如果 Q[i]
是正数与负数,基本上是一个不同的成本项)。
我怀疑我需要使用某些版本的整数规划来正确地重新表述它,但看不到如何到达那里。谁能指出我正确的方法,或者只是告诉我这是不可能的? :)
这是一个带有一些额外二进制变量的混合整数公式:
我们使用变量拆分来获得 Q 的两个分量(正和负)。使用二进制变量,我们确保这些组件中只有一个是非零的。这将需要新的连续变量 q+ 和 q- 以及新的二进制变量 delta。
常数M+和M-是q+、q-的上限。使它们尽可能小(100 或 1000 优于 1e6 或 1e7)。
现在我们可以利用一些东西。 objective 将下推 C 项以使总数 objective 最大化。这意味着我们可以删除带有二元变量的方程式,因为自动地只有 q-、q+ 之一将是非零的。 IE。如果Q=-10,它会更喜欢q+ = 0, q- = 10 高于q+ = 2, q- = 12。所以最终的模型实际上是一个直线LP: