线性程序目标函数取决于变量的符号

时间:2016-02-25 14:56:32

标签: linear-programming

我试图找到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] * Cn等于Q[i] < 0(如果Q[i]为正面与负面,则基本上成本相同。

我怀疑我需要使用某种版本的整数编程来正确地重新制定这个版本,但却无法看到如何实现这一目标。任何人都可以指出正确的方式,或者只是告诉我这不可能做到吗? :)

1 个答案:

答案 0 :(得分:1)

这是一个带有一些额外二元变量的混合整数公式:

enter image description here

我们使用变量分裂来得到Q的两个分量(正面和负面)。使用二进制变量,我们确保只有其中一个组件非零。这将需要新的连续变量q +和q-以及新的二进制变量delta。

常数M +和M-是q +,q-的上限。使它们尽可能小(100或1000优于1e6或1e7)。

现在有一些我们可以利用的东西。目标将推下C项,以最大化总目标。这意味着我们可以使用二进制变量丢弃方程式,因为q-,q +中只有一个是非零的。即如果Q = -10,它将优选q + = 0,q- = 10高于q + = 2,q- = 12.所以最终模型实际上是一个直的LP:

enter image description here