Hi all,

I'm currently working on my master thesis for network design and figured out an issue I have with two of my constraints.

Regard range j in J as locations for Distribution Centers, with decision variable Yj_DC. Regard range l in L as locations for Repair Collection Centers (RCC), with decision variable Yl_RCC.

Now, the option should be given, to co-locate DCs and RCCs, leading to Hybrid Locations which induce cost savings fj:_sav. The decision variable is Yj_Hybrid.

Below you find my implementation code, which does not lead to the result it should lead to. Even if for example, a DC and RCC are opened at location 1, each, the decision variable Yj_Hybrid does not equal 1.

I already have an idea why this is the case - nevertheless, I do not know how to implement it: What is missing from my point of view is an additional "forall(j=l)"-information in constraint 22.

!Constraint 22: Restriction of Hybrid Center Usage

forall(j in J, l in L)do

Yj_Hybrid(j)<=Yl_RCC(l)

end-do

!Constraint 23: Restriction of Hybrid Center Usage

forall(j in J)do

Yj_Hybrid(j)<=Yj_DC(j)

end-do

I am really thankfull for your input and ideas on how to resolve this issue.

Best and thanks a lot in advance

Simon

If you wish to test whether two locations j and l are the same, you could indeed add the following condition to your constraint 22:

forall(j in J, l in L | j=l) Yj_Hybrid(j) <= Yl_RCC(l)

Alternatively, you could also write:

forall(j in J) Yj_Hybrid(j) <= if(j in L, Yl_RCC(j), 0)

Your 2 sets of constraints implement implications of the type

"if Yj_Hybrid(j)=1 then Yj_DC(j)=1" (or equivalently: "if Yj_DC(j)=0 then Yj_Hybrid(j)=0"), but not the other way round.

For implementing the other sense of the implication, that is, "if Yj_DC(j)=1 and Yl_RCC(l)=1 then Yj_Hybrid(j)=1" you could use:

forall(j in J | j in L) Yj_Hybrid(j) >= Yl_RCC(j) + Yj_DC(j) -1