我想知道这里是否有人使用lpsolve来解决线性规划问题。
我在文件中定义了一个整数线性规划问题,其中存在约束x45 = 0(还有其他整数变量)。在lpsolve解决问题之后,奇怪的结果是x45 = 1。但是,如果我在约束之前放置一个标签,例如,c1:x45 = 0,那么将满足约束。这里的任何人都知道发生了什么事吗?
所以我在LP文件中定义的问题就像:
max: 0 x0 262 x1 262 x2 262 x3 262 x4 262 x5 262 x6 262 x7 270 x8 0 x9 270 x10 270 x11 270 x12 270 x13 270 x14 270 x15;
549 x16 549 x17 0 x18 549 x19 549 x20 549 x21 549 x22 549 x23 >= 1;
603 x24 603 x25 603 x26 0 x27 603 x28 603 x29 603 x30 603 x31 >= 1;
x0=0;
x9=0;
x18=0;
x27=0;
x36=0;
x45=0;
x54=0;
x63=0;
x0=x0; x1=x8; x2=x16; x3=x24; x4=x32; x5=x40; x6=x48; x7=x56; x8=x1; x9=x9; x10=x17; x11=x25; x12=x33; x13=x41; x14=x49; x15=x57; x16=x2; x17=x10; x18=x18; x19=x26; x20=x34; x21=x42; x22=x50; x23=x58; x24=x3; x25=x11; x26=x19; x27=x27; x28=x35; x29=x43; x30=x51; x31=x59; x32=x4; x33=x12; x34=x20; x35=x28; x36=x36; x37=x44; x38=x52; x39=x60; x40=x5; x41=x13; x42=x21; x43=x29; x44=x37; x45=x45; x46=x53; x47=x61; x48=x6; x49=x14; x50=x22; x51=x30; x52=x38; x53=x46; x54=x54; x55=x62; x56=x7; x57=x15; x58=x23; x59=x31; x60=x39; x61=x47; x62=x55; x63=x63; x0 x1 x2 x3 x4 x5 x6 x7=1; x8 x9 x10 x11 x12 x13 x14 x15=1; x16 x17 x18 x19 x20 x21 x22 x23=1; x24 x25 x26 x27 x28 x29 x30 x31=1; x32 x33 x34 x35 x36 x37 x38 x39=1; x40 x41 x42 x43 x44 x45 x46 x47=1; x48 x49 x50 x51 x52 x53 x54 x55=1; x56 x57 x58 x59 x60 x61 x62 x63=1;
bin x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,x63;
通过解决它,结果是:
Value of objective function: 532.00000000
Actual values of the variables:
x0 0
x1 0
x2 0
x3 0
x4 0
x5 0
x6 0
x7 1
x8 0
x9 0
x10 1
x11 0
x12 0
x13 0
x14 0
x15 0
x16 0
x17 1
x18 0
x19 0
x20 0
x21 0
x22 0
x23 0
x24 0
x25 0
x26 0
x27 0
x28 1
x29 0
x30 0
x31 0
x36 0
x45 1
x54 1
x63 0
x32 0
x40 0
x48 0
x56 1
x33 0
x41 0
x49 0
x57 0
x34 0
x42 0
x50 0
x58 0
x35 1
x43 0
x51 0
x59 0
x37 0
x44 0
x38 0
x52 0
x39 0
x60 0
x46 0
x53 0
x47 0
x61 0
x55 0
x62 0
如你所见。 x45和x54都是1,而其他约束都满足。如果我在约束之前放置一个标签,例如:
c1: x45=0;
然后它会被满足。我不确定为什么会有所作为
答案 0 :(得分:1)
有趣的事情正在发生。当我解决您在上面发布的完全相同的IP时,所有约束都得到满足。
Value of objective function: 532.00000000
Actual values of the variables:
x0 0
x1 0
x2 0
x3 0
x45 0
x54 0
x63 0
x32 0
x40 0
x48 1
x56 0
x33 0
x41 0
x49 0
x57 1
好消息是Obj功能值是相同的。这是你可以尝试的,你会发现正在发生的事情。你的问题非常堕落。
不知怎的lp_solve
没有看到你的x45 = 0约束。
以下是如何查看正在发生的事情: 创建两个LP文件。
现在试试这个:从命令行模式
lp_solve -stat original.lp
lp_solve -stat namedconstraint.lp
如果你比较两个输出,你会看到发生了什么。
在我的情况下,当我运行lp_solve -stat
时,我得到了
Constraints: 74
Variables : 64
Integers : 64
Semi-cont : 0
SOS : 0
Non-zeros : 190 density=4.011824%
然后你可以继续调整original.lp文件,直到你知道为什么会发生这种情况。
根据您在下面的附加说明,lp_solve没有看到约束,除非您为约束命名。试试下一个: 1.将该约束移动到模型中的第一个约束或最后一个约束。这有什么改变吗? 2.我怀疑在x45 = 0类型的行之前的行(或约束)中有一些奇怪的字符。如果删除该行,请查看是否有帮助。
不幸的是,我无法复制问题,因此我无法自行调试。因此这些建议。