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!