Topic
IC4NOTICE: developerWorks Community will be offline May 29-30, 2015 while we upgrade to the latest version of IBM Connections. For more information, read our upgrade FAQ.
1 reply Latest Post - ‏2013-09-09T17:33:00Z by GGR
Charles.Yu.Wang
Charles.Yu.Wang
1 Post
ACCEPTED ANSWER

Pinned topic Adding Constraints as Column

‏2013-09-05T02:36:05Z |

Hi Everyone,

 

I am a new user to CPLEX and currently trying to implement a Column Generation Method using C++ as the API.

For example, the formulation is :

min(x1+x2+x3)

s.t.

2.x1+3.x2+4.x3<=y1             (c1)

x1+2.x3<=y2                         (c2) 

y1+y2=4                                (c3)

x,y>=0                                   (c4) 

We can see that y1,y2 are non-decision variable, that is it is not in the objective. Commonly, if we formulate the problem by column, we use like:

constraints.add(IloRange(env,A1,A2));                                                  (1)

x.add(IloNumVar(obj(1)+constraints[0]*2+constraints[1]*1))                   (2) 

Problem1: for c1 and c2, the lower bound is 0 but upper bound is y1 and y2, respectively. The cplex does not allow me to put variables or expressions in A1 and A2 place in (1).

Problem2: if we cannot add the y with (1), we need to add the column for y in (2). However, y is not in the objective, if we use (2) and set obj(0) for y, I feel like we will change the formulation and y is in the objective with coefficient 0. Am I right? It seems that this problem does not matter. However, if we want to get the dual, then it does matter. At first, when only x is the objective variable, dual is only related with c1 and c2. However, when y is add with (2), I feel that the c3 also has to be counted into the dual issue, since y now is in the objective variable although coefficient is 0. This is my worry.

 

Can any one help me figure this point out? Thank you very much.

Best,

Wang Yu

Updated on 2013-09-05T02:42:22Z at 2013-09-05T02:42:22Z by Charles.Yu.Wang