• Gurobi Staff

Hi Fei Wang,

The attributes Pi and QCPi can only be queried for convex, continuous models. Could you please confirm that your model is convex and continuous?

Could you please verify that your model is feasible? In the case of infeasibility, attempting to access Pi values can result in the error message "AttributeError: Unable to retrieve attribute 'Pi'. Please check the status of the model at the end of optimization by querying the value of model.status. The status values are described in the Status Code section of our reference manual.

Regards,

Simran

Hello Simranjit,

Yes, my model is convex and continuous. In fact it is a second order cone optimization problem. I am solving this problem in a branch and bound algorithm, and I can always solve this problem in the branch and bound algorithm

I checked my model, it is feasible and the objective value is 2.8614659442815887e-08.
model.status shows 2

I print my model, and here are some of the constraints:

T6: yt[0] + yt[1] + yt[2] + yt[3] + yt[4] = 1T7: yt[5] + yt[6] + yt[7] + yt[8] + yt[9] = 1T8: yt[10] + yt[11] + yt[12] + yt[13] + yt[14] = 1T9: yt[15] + yt[16] + yt[17] + yt[18] + yt[19] = 1T10: yt[20] + yt[21] + yt[22] + yt[23] + yt[24] = 1T11: yt[25] + yt[26] + yt[27] + yt[28] + yt[29] = 1T12: yt[30] + yt[31] + yt[32] + yt[33] + yt[34] = 1

The second order cone constraints look like this:
General Constraints GC0: de[0] = NORM ( 2 ) ( w[0,0] , w[0,1] ) GC1: de[1] = NORM ( 2 ) ( w[1,0] , w[1,1] ) GC2: de[2] = NORM ( 2 ) ( w[2,0] , w[2,1] ) GC3: de[3] = NORM ( 2 ) ( w[3,0] , w[3,1] )
Then I run the following code
L = model.getConstrByName('T6')L.Pi
and it produces the error
Traceback (most recent call last):  File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.3.1\plugins\python-ce\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec    exec(exp, global_vars, local_vars)  File "<input>", line 1, in <module>  File "src\gurobipy\constr.pxi", line 67, in gurobipy.Constr.__getattr__  File "src\gurobipy\constr.pxi", line 95, in gurobipy.Constr.getAttr  File "src\gurobipy\attrutil.pxi", line 100, in gurobipy.__getattrAttributeError: Unable to retrieve attribute 'Pi'
• Gurobi Staff

Hi Fei Wang,

As mentioned in our documentation, adding a simple general constraint like the norm to an otherwise continuous model will transform it into a MIP. To retrieve the dual values for a MIP model, please refer to our KB article "How do I retrieve the (dual) Pi values for a MIP problem?".

Best regards,

Simran

Thank you for the answer. But I don't really understand, in my model all variables are continuous, even I added some norm constraints, they are still continuous (no integer variables in my model). So why does my model become a mixed integer programming model?

I tried the fixed method, here is the code, but it still produces the same error

fixed = model.fixed()CC = model.getConstrs()for c in CC:    print(c.constrName)    print(model.getRow(c))    print(c.RHS)    print(c.Pi)