Why INTLINPROG returns non-integer?

조회 수: 4 (최근 30일)
Bruno Luong
Bruno Luong 2019년 8월 16일
답변: Stephan 2019년 8월 16일
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

채택된 답변

Stephan
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개)

카테고리

Help CenterFile 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!

Translated by