跳转到内容

GLPK/建模逻辑约束

来自维基教科书,面向开放世界的开放书籍

涉及二进制数的逻辑约束可以按如下方式建模

var x, binary;
var y, binary;
var z, binary;

# z = x or y
s.t. c1: x     <= z;
s.t. c2: y     <= z;
s.t. c3: x + y >= z;

# z = x and y
s.t. c1: x     >= z;
s.t. c2: y     >= z;
s.t. c3: x + y <= z + 1;

# s = x xor y
# c = x and y
s.t. c1: x + y = 2 * c + s;

# z = not x
s.t. c1: x = 1 - z;
华夏公益教科书