整数线性规划(ILP)—lp_solve

来源:互联网 发布:小米盒子 软件 编辑:程序博客网 时间:2024/06/04 09:03

LPSolve帮助文档:
http://lpsolve.sourceforge.net/5.5/
LPSolve软件下载地址:
http://sourceforge.net/projects/lpsolve/files/
只需输入目标函数与约束方程即可求解:
max: 143 x + 60 y;
120 x + 210 y <= 15000;
110 x + 30 y <= 4000;
x + y <= 75;

关于sos类型,一下两文件表示所表示的含义一致
min: y1 - y2;
y1 = 67 x11 + 64 x12 + 10 x13 + 28 x14 + 65 x15 + 61 x16 + 26 x17 + 83 x18 + 72 x19 + 4 x10;
y2 = 67 x21 + 64 x22 + 10 x23 + 28 x24 + 65 x25 + 61 x26 + 26 x27 + 83 x28 + 72 x29 + 4 x20;
x11 + x21 = 1;
x12 + x22 = 1;
x13 + x23 = 1;
x14 + x24 = 1;
x15 + x25 = 1;
x16 + x26 = 1;
x17 + x27 = 1;
x18 + x28 = 1;
x19 + x29 = 1;
x10 + x20 = 1;
y1 - y2 >= 0;
sos
x11,x21 <= 1;
x12,x22 <= 1;
x13,x23 <= 1;
x14,x24 <= 1;
x15,x25 <= 1;
x16,x26 <= 1;
x17,x27 <= 1;
x18,x28 <= 1;
x19,x29 <= 1;
x10,x20 <= 1;

min: y1 - y2;
y1 = 67 x11 + 64 x12 + 10 x13 + 28 x14 + 65 x15 + 61 x16 + 26 x17 + 83 x18 + 72 x19 + 4 x10;
y2 = 67 x21 + 64 x22 + 10 x23 + 28 x24 + 65 x25 + 61 x26 + 26 x27 + 83 x28 + 72 x29 + 4 x20;
x11 + x21 = 1;
x12 + x22 = 1;
x13 + x23 = 1;
x14 + x24 = 1;
x15 + x25 = 1;
x16 + x26 = 1;
x17 + x27 = 1;
x18 + x28 = 1;
x19 + x29 = 1;
x10 + x20 = 1;
y1 - y2 >= 0;
bin x11,x21,x12,x22,x13,x23,x14,x24,x15,x25,x16,x26,x17,x27,x18,x28,x19,x29,x10,x20;
实现这样的功能,将数据 67 64 10 28 65 61 26 83 72 4 分成两组,使得两组的数据和尽量相等

sos
x11,x21 <= 1;
表示 x11,x21最多只能一个数为非0;结合约束条件 x11 + x21 = 1,则表示x11,x21只能一个为0另一个为1。
与此类似:
sos
x1,x2,x3,x4,x5 <= 1;
表示 x1,x2,x3,x4,x5 只能一个为非0
sos
x1,x2,x3,x4,x5 <= 2;
表示 x1,x2,x3,x4,x5 最多两个为非0,并这两个为非0的数必须是按照 x1,x2,x3,x4,x5 这种顺序相邻的;例如,可以x1=x4=x5=0,x2,x3为非0,但是不能x1,x3为非0,x2,x4,x5为0,因为x2与x3是相邻的,但是x1与x3是不相邻的。
依次类推:
sos
x1,x2,x3,x4,x5 <= 3;
表示 x1,x2,x3,x4,x5 最多3个为非0,并这3个为非0的数必须是按照 x1,x2,x3,x4,x5 这种顺序相邻的。
详见:http://lpsolve.sourceforge.net/5.5/SOS.htm