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!