How to debug an "infeasible" result (pyomo 4.0 + cplex)

1,038 views
Skip to first unread message

Cristian Perfumo

unread,
Jul 20, 2015, 12:52:06 AM7/20/15
to pyomo...@googlegroups.com
Hi pyomoers! 

I'm trying to run an optimisation problem (pyomo 4.0 + cplex) and keep getting the following error:

CPLEX> Row 'c_e_x1778_' infeasible, all entries at implied bounds.

A bit of googling tells me that this means that because of that particular constraint, the problem is infeasible. Does anyone know how to map this cryptic-looking string (c_e_x1778_) to the pyomo constraint that's causing the problem?

Cheers

Cristian

Gabe Hackebeil

unread,
Jul 20, 2015, 3:04:41 AM7/20/15
to pyomo...@googlegroups.com
Add "symbolic_solver_labels=True" to the solve() invocation (--symbolic-solver-labels on the command line if using pyomo command).

Gabe
--
You received this message because you are subscribed to the Google Groups "Pyomo Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pyomo-forum...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Cristian Perfumo

unread,
Jul 21, 2015, 2:38:54 AM7/21/15
to pyomo...@googlegroups.com
Thanks a lot, Gabe, I've added that, and it got rid of that problem. However, now I get a similar one (although this one makes much more sense, as it actually refers to a constraint that I defined in pyomo).

The error is associated with using the Piecewise functionality in Pyomo. Here is the error that CPLEX gives me:

CPLEX> Row 'c_e_linearZ1_Tttop_x_Ftank(0)_SOS2_constraint(1)_' infeasible, all entries at implied bounds.

Below this message is how I'm using Piecewise in my model. I suspect the error comes from specifuing the wrong set of bounds in the variables compared to the extremes of the pw_pts in the Piecewise calls. That's just a suspicion, though, as this is my very first linearisation (and my first Pyomo program for that matter).

Any help will be highly appreciated!

Cheers

Cristian

Here's how I'm doing the linearisation:

model.z1_Tttop_x_Ftank = Var(model.Time_Set, bounds=(-1e6,1e6))
model.z2_Tttop_x_Ftank = Var(model.Time_Set, bounds=(-1e6,1e6))
model.y1_Tttop_x_Ftank = Var(model.Time_Set, bounds=(-1e6*2,1e6*2))
model.y2_Tttop_x_Ftank = Var(model.Time_Set, bounds=(-1e6*2,1e6*2))
model.Tttop_x_Ftank = Var(model.Time_Set, bounds=(-1e6,1e6))
model.linearZ1_Tttop_x_Ftank = Piecewise(model.Time_Set, model.z1_Tttop_x_Ftank, model.y1_Tttop_x_Ftank, pw_pts=[-1e6*2, 0, 10, 50, 101, 1e6*2], pw_constr_type='EQ', f_rule=f2)
model.linearZ2_Tttop_x_Ftank = Piecewise(model.Time_Set, model.z2_Tttop_x_Ftank, model.y2_Tttop_x_Ftank, pw_pts=[-1e6*2, 0, 10, 50, 101, 1e6*2], pw_constr_type='EQ', f_rule=f2)

def linDef_y1_Tttop_x_Ftank(model, t):
    return model.y1_Tttop_x_Ftank[t] == 0.5* (model.TankTopTemp[t] + model.TankFlow[t])
model.linDef_y1_Tttop_x_FtankConstraint = Constraint(model.Time_Set, rule=linDef_y1_Tttop_x_Ftank)

def linDef_y2_Tttop_x_Ftank(model, t):
    return model.y2_Tttop_x_Ftank[t] == 0.5* (model.TankTopTemp[t] - model.TankFlow[t])
model.linDef_y2_Tttop_x_FtankConstraint = Constraint(model.Time_Set, rule=linDef_y2_Tttop_x_Ftank)

def linDec_Tttop_x_Ftank(model, t):
    return model.Tttop_x_Ftank[t] == model.z1_Tttop_x_Ftank[t] - model.z2_Tttop_x_Ftank[t]
model.linDec_Tttop_x_FtankConstraint = Constraint(model.Time_Set, rule=linDec_Tttop_x_Ftank)
Reply all
Reply to author
Forward
0 new messages