有人可以指导我完成使用gurobipy从Pyomo模型获取IIS的步骤吗?
opt = SolverFactory('gurobi',solver_io='python')
作为参考,这就是我在JuMP中使用的
function getIIS(m::JuMP.Model)
grb_model = m.internalModel.inner
num_constrs = Gurobi.num_constrs(grb_model)
Gurobi.computeIIS(grb_model)
iis_constrs = Gurobi.get_intattrarray(grb_model, "IISConstr", 1, num_constrs)
m.linconstr[find(iis_constrs)]
end
因此,基本上,我需要访问内部gurobi模型以运行computeIIS
函数,然后需要一种将行数组映射到实际Pyomo约束的方法。
谢谢!
答案 0 :(得分:0)
使用后缀查看此Pyomo示例。我相信它正在做您想要的。
https://github.com/Pyomo/pyomo/blob/master/examples/pyomo/suffixes/gurobi_ampl_iis.py
答案 1 :(得分:0)
您可以在致电时将此作为选项传递给Gurobi 通过使用options_string解决函数。然后,Gurobi的Model.write()函数将写入文件。在这种情况下,您将编写一个.ilp文件,但是出于不同的目的存在其他文件格式。一个例子:
solver_parameters = "ResultFile=model.ilp" # write an ILP file to print the IIS
然后,您将在调用solve函数时添加options_string:
results = solver.solve(instance, options_string=solver_parameters)
您还可以使用以下语法将多个选项字符串在一起。请注意LogToConsole和ResultFile选项的引号内的前导空白:
solver_parameters = "TimeLimit=60" # set time limit (seconds)
solver_parameters += " LogToConsole=0" # 0 = turn off console output
solver_parameters += " ResultFile=model.ilp" # write a MIP start file to warm start
此处找到的文档适用于使用Gurobi求解模型,底部的示例适用于任何Gurobi文件格式: http://www.gurobi.com/documentation/8.0/refman/solving_a_model2.html
最后,此链接说明了Gurobi可以写入的不同文件格式:http://www.gurobi.com/documentation/8.0/refman/model_file_formats.html#sec:FileFormats