【发布时间】:2015-06-01 08:37:10
【问题描述】:
我试图说明变量 x,y,z 必须全部不同,并且它们只接受值 1、2 或 3(这当然是一个玩具示例):
min: x+y+z;
1 <= x <= 3;
1 <= y <= 3;
1 <= z <= 3;
但要完成这项工作,我仍然需要访问布尔运算符或 != 运算符,这在 lpsolve 中似乎不存在!我该怎么办?我想这样做:
x != y;
x != z;
y != z;
谢谢
编辑:
这是我当前的代码:
/* Objective function */
min: 1;
/* Variable bounds */
1 <= x1 <= 4;
1 <= x2 <= 4;
1 <= x3 <= 4;
1 <= x4 <= 4;
x1 + x2 + x3 + x4 = 10;
x1 < x2;
x2 < x3;
x3 < x4;
int x1;
int x2;
int x3;
int x4;
lpsolve 结果给了我:
x1 = 1
x2 = 3
x3 = 3
x4 = 3
这是错误的。为什么?
【问题讨论】:
-
你不能强制
x<y和y<z吗? -
我想过,但“和”似乎不起作用:(
-
当然可以,你只需添加两个约束,约束总是相互“和”
-
这甚至是有效的约束格式吗?我希望它想要
x1 - x2 <= -1
标签: linear-programming lpsolve