我正在尝试创建二进制指示符,以便指示符y==1 if x > -0.5
和其他y==0 if x <= -0.5
。现在,如果我的目标是最小化,我有一个有效的实施:
var y binary;
param M := 100;
var z;
param x := -0.49;
subto zval:
z <= 5;
subto a:
M * y - 0.5 >= x;
minimize obj: z;
但是,如果我最大化,那么无论x的值如何,y
都将为1。有没有办法以最大化和最小化作为目标函数的方式重写这个?