I´m running a MIP model on PYOMO calling CPLEX as a Solver.
I´m receiving the following log:
Implied bounds make row 'c_e_x1835719_' infeasible.
I would like to know which of my constraints c_e_x1835719 is representing. How should I accomplish this in PYOMO?
Here follows my solver call:
results = SolverFactory.solve(model,
tee = True,
logfile = "model.log")
I´ve tried to mimic this thread from OPL setting a larger BigMAPthreshold via option_string but it failed (CPLEX didin´t recognized BigMAPthreshold as a valid parameter).
results = SolverFactory.solve(model,
tee = True,
logfile = "model.log",
option_string='bigMapTheshold=1000000')
I´m declaring my constraints as follows:
model.profit=Constraint(model.T, name='profit', rule=_profit)
EDIT:
As first comment on question, presolve changes constraints configurations and so it makes no sense trying to get original constraint name on log.
BUT...
Would it be possible to print this exactly new infeasible constraint in order to investigate what might be the root cause of infeasibility?
Thanks
As Daniel mentioned, you should use the conflict refiner. I don't know if Pyomo provides an interface to this CPLEX feature. If it doesn't, you can save your model as an .lp
or .sav
file and use the CPLEX Interactive:
cplex -c "read file.sav" "tools conflict"
The documentation about that feature is at https://www.ibm.com/support/knowledgecenter/SSSA5P_12.10.0/ilog.odms.cplex.help/CPLEX/UsrMan/topics/infeas_unbd/conflict_refiner/06_Interactive_title_synopsis.html.