2016-12-05 31 views
0

我解决整数规划问题的条件如果在整数条件编程

如果A = 0,则B = 0,否则,B = 1

其中a为整数,而b为二进制

我查看了类似于此的前一个问题,但找不到解决方案。 请帮忙在整数规划中为上述条件定义约束方程。

+0

它们是什么类型? – harold

+0

a是整数,而b是二进制 –

回答

0

第一个约束很容易:a = 0 ⇒ b = 0可写为≥ b。第二个约束(a b = 1)更复杂。如果一个≤ M其中M相对较小,那么您可以将其写为M ⋅ b ≥ a。否则,您将需要使用名为indicator constraints的解算器功能。

+0

感谢回复,如果a为负整数,则约束a≥b不成立 –

+1

通常,整数编程中不存在负整数。如果没有另外声明,则假定零的下限。 – mattmilten

0

使用这两个限制:

a<=bM 
b<=aM 

,其中M是一个很大的数目(M> a)中。当a = 0时,第一个约束是多余的,第二个约束是b = 0。如果a> 0,那么第二个约束是多余的,但是第一个约束会得到1的值(如果M足够大)。

+0

既然b是二元的,你应该简化第二个约束到b <= a。 –

+0

格雷格,这是我误解你以前的答案,我虽然你在M后面加的(点)是冒号。基本上,我只是告诉你已经做了什么。在你提到的第二个约束中,M是没有必要的。 –