[CoinMp] The output value of LpInteger variable is LpContinuous

Stu s.mitchell at auckland.ac.nz
Wed Mar 3 15:56:23 EST 2010


I have found your problem there is a known problem with coinMP that I
am forwarding on to its maintainer that is reflected in the output of
>>> pulpTestSolver(COINMP_DLL)
	 Testing continuous LP solution
	 Testing maximize continuous LP solution
	 Testing unbounded continuous LP solution
		 Error in CoinMP it reports Optimal
	 Testing MIP solution
	 Testing MIP relaxation
	 Testing feasibility problem (no objective)
	 Testing an infeasible problem
	 Testing an integer infeasible problem
		 Error in CoinMP to be fixed, reports Optimal
	 Testing column based modelling
	 Testing column based modelling with empty constraints
	 Testing dual variables and slacks reporting
	 Testing resolve of problem
	 Testing Sequential Solves
	 Testing fractional constraints
	 Testing elastic constraints (no change)
	 Testing elastic constraints (freebound)
	 Testing elastic constraints (penalty unchanged)
	 Testing elastic constraints (penalty unbounded)
>>>

Note that Integer Infeasible problems are reported as optimal because
the lpsolver in CoinMP will report optimality.
This issue will hopefully be fixed soon on CoinMP but in the mean time
use COIN_CMD or GUROBI as your solver which will report Undefined and
Infeasible status respectively.

Vinaka
Stu

On Mar 3, 9:51 am, Stu <s.mitch... at auckland.ac.nz> wrote:
> If you send me (off list if you want) the whole file I will run and
> test it for you
>
> I suspect that perhaps the problem is infeasible in some way and pulp
> does not return the optimal integer solution.
>
> Please check the status returned by LpProblem.solve()
>
> like this
>
> >>> status = prob.solve()
> >>> print LpStatus[status]
>
> and see what is returned.
>
> Please see my next Email for a possible solution.
>
> Vinaka
> Stu
>
> On Mar 2, 8:14 pm, ukyo <ukyo.yagam... at gmail.com> wrote:
>
> > Hello all,
>
> > I'm currently using pulp-1.4.7 on python 2.6.4 in Windows Seven and
> > having a problem with the output value of LpInteger variables
> > (d,dc,dr,ar,at) (actually, it's a binary) which it should return 0 or
> > 1. However, when I've added some constraints (constraint 3.39-3.40) to
> > the problem, the returned output values is between [0,1].
>
> > So my question is "Is Pulp automatically relax the LpInteger to
> > LpContinuous variable?"
>
> > Thank you
> > Ukyo
>
> > The code below presents some parts of my code.
>
> > # create an instance to LP problem
> > prob = LpProblem("sub and power assignment in coding
> > aware",LpMaximize)
>
> > # create variables
> > z = LpVariable           ("z",                      0.001, None,
> > LpContinuous)
> > r = LpVariable.dicts   ("r",   (SD_r,T),       0,        None,
> > LpContinuous)
> > rc= LpVariable.dicts  ("r_C", (SDC,T),      0,        None,
> > LpContinuous)
> > rr= LpVariable.dicts   ("r_R", (SDR,T),      0,       None,
> > LpContinuous)
> > p = LpVariable.dicts  ("p",   (SD_pd,K,T), 0,        None,
> > LpContinuous)
> > pc= LpVariable.dicts ("p_C", (SDC,K,T),   0,       None, LpContinuous)
> > pr= LpVariable.dicts  ("p_R", (SDR,K,T),   0,       None,
> > LpContinuous)
> > d = LpVariable.dicts  ("d",   (SD_pd,K,T),  0,       1,
> > LpInteger)
> > dc= LpVariable.dicts ("d_C", (SDC,K,T),   0,       1,       LpInteger)
> > dr= LpVariable.dicts  ("d_R", (SDR,K,T),   0,       1,
> > LpInteger)
> > ar= LpVariable.dicts  ("ar",  (V,T),             0,       1,
> > LpInteger)
> > at= LpVariable.dicts  ("at",  (V,T),             0,       1,
> > LpInteger)
> > ...
> > #--------------------------------------------------------------
> > # 7. Transmission and receive constraints
> > #--------------------------------------------------------------
> > for t in T:
> >     # --- ar ---
> >     # constraint 3.39 (BS)
> >     prob += C*ar["BS"][t] >= sum([dc["RS,MS1"][k][t]+dr["RS,BS"][k][t]
> > for k in K]),"Constraint 3.39 (n="+"BS"+",T="+t+")"
>
> >     # constraint 3.39 (RS)
> >     prob += C*ar["RS"][t] >= sum([d["BS,RS"][k][t]+d["MS1,RS"][k][t]
> > for k in K]),"Constraint 3.39 (n="+"RS"+",T="+t+")"
>
> >     # constraint 3.39 (MS1)
> >     prob += C*ar["MS1"][t] >= sum([dc["RS,MS1"][k][t] for k in
> > K]),"Constraint 3.39 (n="+"MS1"+",T="+t+")"
>
> >     # --- at ---
> >     # constraint 3.40 (BS)
> >     prob += C*at["BS"][t] >= sum([d["BS,RS"][k][t] for k in
> > K]),"Constraint 3.40 (n="+"BS"+",T="+t+")"
>
> >     # constraint 3.40 (RS)
> >     prob += C*at["RS"][t] >= sum([dc["RS,MS1"][k][t]+dr["RS,BS"][k][t]
> > for k in K]),"Constraint 3.40 (n="+"RS"+",T="+t+")"
>
> >     # constraint 3.40 (MS1)
> >     prob += C*at["MS1"][t] >= sum([d["MS1,RS"][k][t] for k in
> > K]),"Constraint 3.40 (n="+"MS1"+",T="+t+")"
>
> >     for n in V:
> >         # constraint 3.41
> >         prob += ar[n][t]+at[n][t] == 1,"Constraint 3.41 (n="+n+",T="+t
> > +")"
>
> > prob.writeLP("lp_ca_w_time.lp")
>
> > # solve the problem using coin
> > prob.solve()




More information about the CoinMp mailing list