Why INTLINPROG returns non-integer?
4 次查看(过去 30 天)
显示 更早的评论
Why the solution of intlinprog is not integer? Few of many components returned are 0.5 despite being instructed as integer.
load intlinprogfail.mat % file attached
[x, ~, flag] = intlinprog(fdummy, intcon, [], [], Aeq, beq, lb, ub);
Returns x and tells solution is found
LP: Optimal objective value is -14.414878.
Optimal solution found.
Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value,
options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are integer within tolerance,
options.IntegerTolerance = 1e-05 (the default value).
But when take a close look, some components returned are 0.5 despite being instructed as integer.
>> x(intcon==1)
ans =
1.0000
1.0000
0
1.0000
0
0.5000
1.0000
1.0000
0
1.0000
1.0000
1.0000
0.5000
0.5000
1.0000
0
0
0
0
0
1.0000
0
0
0
1.0000
0.5000
0
0
1.0000
0
1.0000
1.0000
0.5000
0
1.0000
0.5000
0
0
0
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
0 个评论
采纳的回答
Stephan
2019-8-16
load intlinprogfail.mat % file attached
intcon = 1:45;
[x, ~, flag] = intlinprog(fdummy, intcon, [], [], Aeq, beq, lb, ub);
result:
P: Optimal objective value is -14.414878.
Cut Generation: Applied 5 strong CG cuts.
Lower bound is -14.265036.
Relative gap is 0.00%.
Optimal solution found.
Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon
variables are integer within tolerance, options.IntegerTolerance = 1e-05 (the default value).
x
x =
1
1
0
1
1
0
1
0
0
1
1
1
1
0
1
0
0
0
0
0
1
0
0
0
1
1
0
0
1
0
1
1
1
0
1
0
0
0
0
1
1
1
1
1
1
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear Programming and Mixed-Integer Linear Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!