【发布时间】:2015-02-17 18:38:20
【问题描述】:
我对整数编程比较陌生,并且(再次)陷入了约束的制定。
在我的简化模型中,我有一个(连续)变量,其下限 LB 低于零,上限 UB 高于零。现在我想根据变量所取的值将变量值分配给其他变量。
我想表达的逻辑如下:
LB > 0
UB > 0
-LB <= Variable1 <= UB
if Variable1 => 0:
Variable2 = Variable1
Variable3 = 0
else:
Variable2 = 0
Variable3 = abs(Variable1)
如何使用线性(不)等式来描述这一点?
我想吸收有点慢..
提前致谢!
** 编辑:对于建模,我使用 Python、Pyomo 和最新的 Gurobi 求解器。
*** 编辑:我现在通过使用二进制变量以下列方式制定它。 (我知道它是二次的,但以后可以线性化):
LB > 0
UB > 0
-LB <= Variable1 <= UB
0 <= Variable2 <= UB
0 <= Variable3 <= LB
Variable4 = Variable2 * BinaryVariable - Variable3 * (1-BinaryVariable)
但现在我仍然必须确保如果 Variable2 > 0 则 Variable3 为 0,反之亦然。
有什么想法吗?
【问题讨论】:
-
“混合整数规划” .... “在 ... 实数内” ... 那么这是整数规划,还是浮点(伪实数)?另外,您在这里谈论什么语言/框架/平台/程序?表达任何类型的逻辑通常需要使用特定的语言。你已经表达的逻辑有什么问题?您尝试了哪些方法,哪些方法不起作用?
-
哦,对不起,你是对的!它是整数编程,变量是连续的(请参阅我的编辑)。我正在寻找一种使用(不)等式来描述这一点的方法。对于建模,我使用 Python、Pyomo 和最新的 gurobi 求解器!
标签: optimization mathematical-optimization linear-programming scientific-computing integer-programming