use cplex for mixed integer problem but get non-integer output
조회 수: 9 (최근 30일)
이전 댓글 표시
Hello, i use cplex in my madlab code to solve a mixed integer problem. So I use the function cplexmilp(fu,Aineq,bineq,Aeq,beq,sostype,sosind,soswt,lb,ub,ctype), which should produce integer solutions because ctype only contains I and B. Most of the time it works fine but every now and then I get an "optimal solution" containing entries like -0.0000 or 1.0000 and the rest of my program breaks or gives the wrong output. Do you have any idea where my mistake might be? Thank you
댓글 수: 0
채택된 답변
Alan Weiss
2015년 8월 26일
Nearly any MILP solver uses floating point arithmetic internally, and uses tolerances to decide whether a number is "integer enough."
If you need really integer values for some variables, round them. If intcon is the vector of indices of the integer variables, execute
x(intcon) = round(x(intcon));
or some such thing. See Some Integer Solutions Are Not Integers for a brief discussion of this issue related to the MATLAB intlinprog solver.
Alan Weiss
MATLAB mathematical toolbox documentation
댓글 수: 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!