binary variable fixed value for 1 place - solution searched

Problems with syntax of GAMS
Post Reply
Lisa_needs support
User
User
Posts: 1
Joined: 5 years ago

binary variable fixed value for 1 place - solution searched

Post by Lisa_needs support »

Hi together,

Following a standard library model I like to add just 1 restriction. A binary variable for one factory shall be fixed on value 1 (=open).
I added "ow.fx(i) = 1;" (2nd last line) - that works. However if I like to name it "ow.fx(w1) = 1;" it ends in error. Than I get following error message:
ow.fx(w1) = 1;
**** $120,340,171
**** 120 Unknown identifier entered as set
**** 171 Domain violation for set
**** 340 A label/element with the same name exist. You may have forgotten
**** to quote a label/element reference. For example,
**** set i / a,b,c /; parameter x(i); x('a') = 10;[/i][/i]


Is there something wrong in my adaptations or do I need to define more? :?: :cry:
Can someone support me, please. Thank you :)


Set
i 'speedfactory' / w1*w4 /
j 'regions' / r1*r9 /;

Parameter
f(i) 'fixed costs' / w1 130, w2 150, w3 170, w4 180 /
c(i) 'capacity' / w1 90, w2 110, w3 130, w4 150 /
d(j) 'demand' / r1 10, r2 10, r3 12, r4 15, r5 15
r6 15, r7 20, r8 20, r9 30 /;

Table t(j,i) 'transport costs'
w1 w2 w3 w4
r1 10 30 25 55
r2 10 25 25 45
r3 20 23 30 40
r4 25 10 26 40
r5 28 12 20 29
r6 36 19 16 22
r7 40 39 22 27
r8 75 65 55 35
r9 34 43 41 62;

Variable
totcost 'total cost'
fcost 'fixed cost'
tcost 'transportation cost'
ow(i) 'indicator for open speedfactory'
oa(i,j) 'indicator for open shipment arc speedfactory to region';

Binary Variable ow, oa;

Equation
deftotcost 'definition total cost'
deffcost 'definition fixed cost'
deftcost 'definition transportation cost'
defwcap(i) 'limit utilization of wspeedfactory by its capacity'
onew(j) 'only one speedfactory per region'
defow(i,j) 'speedfactory open if shipment from i to j';

deftotcost.. totcost =e= fcost + tcost;

deffcost.. fcost =e= sum(i, f(i)*ow(i));

deftcost.. tcost =e= sum((i,j), t(j,i)*oa(i,j));

defwcap(i).. sum(j, d(j)*oa(i,j)) =l= c(i);

onew(j).. sum(i, oa(i,j)) =e= 1;

defow(i,j).. ow(i) =g= oa(i,j);

ow.fx(i) = 1;

Model loc / all /;
GabrielYin
User
User
Posts: 72
Joined: 6 years ago
Location: Dallas, TX, USA
Contact:

Re: binary variable fixed value for 1 place - solution searched

Post by GabrielYin »

solution is simple

Code: Select all

ow.fx('w1') = 1;
Suggest you to search relevant documentation first when encountering problem :)

Cheers.
Gabriel
Post Reply