在lpsolve中声明二进制变量的正确方法是什么?

问题描述

运行ilp时遇到问题。使用以下小代码进行测试。它们都不起作用。

min: x1 + 10 x2 + 100 x3 + 1000 x4;
x1 + x2 + x3 + x4 + x5 >= 3;
/* Variable bounds */
//bin x1 x2 x3 x4 x5; // parse error
//bin : x1 x2 x3 x4 x5; // parse error
//bin x1,x2,x3,x4,x5    // parse error
//int x1,x5;  // runs but not as binary var!!
//bin: x1,x5; // parse error
//bin x1,x5; // parse error
/*bin
x1,x5; parse error
*/
/*
binary
x1,x5   // parse error
*/
/*
binary
x1,x5; // parse error
*/

这在lpsolve IDE 5.5中失败。

解决方法

找到了自己的解决方案,但对我而言,我可能不是唯一遇到此问题的人,所以我会自己回答。

我已经“重新安装”了lpsolve IDE。原来这是使用的旧(2005)lpsolve55.dll。显然,此后对bin vars的处理已更改。新的dll日期为2016,bin vars的格式如下:

bin x99_7;
bin  c0,c1,c2,c3,c4,c5,c6,c7;