我建了一个不可能infeasible的纯整数规划模型(所有变量都是整数变量),但是竟然出现了infeasible,大惊!赶紧开始看是哪里的问题。
- 由于我求解的是一个多阶段的问题,需要以上一个阶段的解作为下一个阶段的输入,所以我首先打印了上一个阶段的解。作为一个纯整数规划问题,解竟然出现了小数?!对此,Gurobi官方的解答是这样的:
- 为了找出infeasible的原因,我从《Gurobi 不可行问题的冲突溯源》这篇文章学到了一招:
解释:model.computeIIS() model.write('model.ilp')
打开model.ilp文件:
虽然不太能看懂,但是我猜N[171,0] = 1.24454e-06这条约束是有问题的。我认为infeasible的原因大概就是这条约束将一个整数变量赋值了一个小数,而这个小数正来源于前一个阶段问题的解!\ Model emp_mip_copy \ LP format - for model browsing. Use MPS format to capture full model detail. Minimize Subject To R46607: N[171,0] = 1.24454e-06 Bounds N[171,0] free Generals N[171,0] End
- 为了保证纯整数规划问题的解为整数,我将IntegralityFocus这个参数设置为1
- infeasible问题消失!