cplex/gurobi 找出模型非可行的原因

用 cplex 或 gurobi 构建数学规划模型时,要是求解变量或约束条件比较多,刚开始总是不成功的,经常会遇到模型非可行的情况。一般是由于约束条件输入错误导致的,但是具体哪一个约束条件呢?一个一个核实太麻烦了。

发现 cplex 或者 gurobi 都提供了寻找非可行原因的一些类和方法。例如在 Gurobi 中,可以先把一些变量赋值,然后通过 computeIIS() 方法查找到底哪个约束条件不可行。这个方法会给出月约束条件的名称,将模型生成 lp 文件,根据名称找到这个约束条件。部分参考代码:

if model.status == GRB.Status.INFEASIBLE:
        print('Optimization was stopped with status %d' % model.status)
        # do IIS, find infeasible constraints
        model.computeIIS()
        for c in model.getConstrs():
            if c.IISConstr:
                print('%s' % c.constrName)

你可能感兴趣的:(cplex/gurobi 找出模型非可行的原因)