error 148 Dimension different

Problems with syntax of GAMS
Post Reply
bozturk
User
User
Posts: 1
Joined: 6 years ago

error 148 Dimension different

Post by bozturk »

Hi, I send you my gams code below, I keep getting "148 Dimension different - The symbol is referenced with more/less
indices as declared" error where y1 occurs. I checked y1('1') and it works but there is a problem with the line:
"y1def.. y1 =e= sum(i,lamx1(i)*yval1(i)) ;".

thank you in advance for your help, basak.


$title THE TIRE TREAD COMPOUND PROBLEM

option limrow = 0,
limcol = 0
;


Sets

i index of factors /1*3/
j index of responses /1*2/
k index of responses /1*2/ ;
* t index of linearization variables/1*3/;
* this contains the set of points

set notlastx1(i) ;
notlastx1(i)$(ord(i) lt card(i)) = yes ;

set notlastx2(i) ;
notlastx2(i)$(ord(i) lt card(i)) = yes ;

set notlastx3(i) ;
notlastx3(i)$(ord(i) lt card(i)) = yes ;

set notlastg1(i) ;
notlastg1(i)$(ord(i) lt card(i)) = yes ;
set notlastg2(i) ;
notlastg2(i)$(ord(i) lt card(i)) = yes ;
set notlastg3(i) ;
notlastg3(i)$(ord(i) lt card(i)) = yes ;

set notlastg4(i) ;
notlastg4(i)$(ord(i) lt card(i)) = yes ;
set notlastg5(i) ;
notlastg5(i)$(ord(i) lt card(i)) = yes ;

set notlastg6(i) ;
notlastg6(i)$(ord(i) lt card(i)) = yes ;

Parameters
xval1(i)/
1 -1
2 0
3 1 /
xval2(i)/
1 -1
2 0
3 1 /
xval3(i)/
1 -1
2 0
3 1 /
gval1(i)/
1 -1
2 0
3 1
/

gval2(i)/
1 -1
2 0
3 1
/
gval3(i)/
1 -1
2 0
3 1
/
gval4(i)/
1 -1
2 0
3 1
/
gval5(i)/
1 -1
2 0
3 1
/
gval6(i)/
1 -1
2 0
3 1
/;

parameters yval1(i), yval2(i),yval3(i),gyval1(i),gyval2(i),gyval3(i),gyval4(i),gyval5(i),gyval6(i);
yval1(i) = sqr(xval1(i)) ;
yval2(i) = sqr(xval2(i)) ;
yval3(i) = sqr(xval3(i)) ;
gyval1(i) = sqr(gval1(i)) ;
gyval2(i) = sqr(gval2(i)) ;
gyval3(i) = sqr(gval3(i)) ;
gyval4(i) = sqr(gval4(i)) ;
gyval5(i) = sqr(gval5(i)) ;
gyval6(i) = sqr(gval6(i)) ;


variables w1(j),w2(j),x1,x2,x3,g1,g2,g3,g4,g5,g6,y1,y2,y3,gy1,gy2,gy3,gy4,gy5,gy6,lamx1(i),lamx2(i),lamx3(i),lamg1(i),lamg2(i)
lamg3(i),lamg4(i),lamg5(i),lamg6(i),binx1(i),binx2(i),binx3(i),bing1(i),bing2(i),bing3(i),bing4(i),bing5(i),bing6(i)
D
p objective function
Y1(k)
Y(j) responses;


positive variables lamx1(i),lamx2(i),lamx3(i),lamg1(i),lamg2(i)
lamg3(i),lamg4(i),lamg5(i),lamg6(i) ;
binary variables zj1,zj2, binx1(i),binx2(i),binx3(i),bing1(i),bing2(i),bing3(i),bing4(i),bing5(i),bing6(i) ;



p.lo=0;



TABLE yDATA1(k,*) One-sided Response Bounds


yMIN1 yMAX1 A1 B1 C1 D1 E1 F1 G1 H1 J1 K1

1 50.38 242.69 139.11924 16.49364 17.88077 10.90654 -4.00960 -3.44711 -1.57212 5.12500 7.12500 7.87500
2 7.31 3019.23 1261.13314 268.15110 246.50317 139.48453 -83.56588 -124.81554 199.18175 69.37500 94.12500 104.37500;
* b0 x1 x2 x3 x1^2 x2^2 x3^2 x1x2 x1x3 x2x3

TABLE yDATA(j,*) Two-sided Response Bounds

yMIN yMAX Ty A B C D E F G H J K

1 400 600 500 400.38458 -99.66642 -31.39639 -73.91900 7.93269 17.30761 0.43275 8.75 6.25 1.25
2 57.66 87.73 67.5 68.90962 -1.40985 4.31969 1.63484 1.55768 0.057694 -0.31730 -1.62500 0.12500 -0.25000;
* b0 x1 x2 x3 x1^2 x2^2 x3^2 x1x2 x1x3 x2x3
* b0 x1 x2 x3 x1^2 x2^2 x3^2 x1x2 x1x3 x2x3

Equations

COST objective function
* binarcons(j) constraint for binary variable
* cons(j)
* consa(j)

subfunc(j)
subfunc1(k)

x1def, gx1def, x2def, gx2def, x3def, gx3def,gx4def,gx5def,gx6def,y1def
y2def,y3def, gy1def,gy2def,gy3def, gy4def, gy5def,gy6def
normx1,normx2,normx3,normgx1,normgx2,normgx3,normgx4,normgx5,normgx6
lamdefx1(i),lamdefx2(i),lamdefx3(i),lamdefg1(i),lamdefg2(i),lamdefg3(i),lamdefg4(i),lamdefg5(i),lamdefg6(i)
soslamx1,soslamx2,soslamx3,soslamg1,soslamg2,soslamg3,soslamg4,soslamg5,soslamg6
* descons11(j)
* descons12(j);
descons1(j)
descons2(j)
descons3(j)
descons4(j)
descons5(j)
descons6(j)
descons7(j)
descons8(j)
descons9(j)
descons10(k)
cons1
cons2
cons3
cons4
cons5
cons6 ;


COST.. D=e=p;



cons1.. x1+x2=e=g1;
cons2.. x1-x2=e=g2;
cons3.. x1+x3=e=g3;
cons4.. x1-x3=e=g4;
cons5.. x2+x3=e=g5;
cons6.. x2-x3=e=g6;



x1def.. x1 =e= sum(i,lamx1(i)*xval1(i)) ;
y1def.. y1 =e= sum(i,lamx1(i)*yval1(i)) ;

x2def.. x2 =e= sum(i,lamx2(i)*xval2(i)) ;
y2def.. y2 =e= sum(i,lamx2(i)*yval2(i)) ;

x3def.. x3 =e= sum(i,lamx3(i)*xval3(i)) ;
y3def.. y3 =e= sum(i,lamx3(i)*yval3(i)) ;

gx1def.. g1 =e= sum(i,lamg1(i)*gval1(i)) ;
gy1def.. gy1 =e= sum(i,lamg1(i)*gyval1(i)) ;

gx2def.. g2 =e= sum(i,lamg2(i)*gval2(i)) ;
gy2def.. gy2 =e= sum(i,lamg2(i)*gyval2(i)) ;

gx3def.. g3 =e= sum(i,lamg3(i)*gval3(i)) ;
gy3def.. gy3 =e= sum(i,lamg3(i)*gyval3(i)) ;

gx4def.. g4 =e= sum(i,lamg4(i)*gval4(i)) ;
gy4def.. gy4 =e= sum(i,lamg4(i)*gyval4(i)) ;

gx5def.. g5 =e= sum(i,lamg5(i)*gval5(i)) ;
gy5def.. gy5 =e= sum(i,lamg5(i)*gyval5(i)) ;

gx6def.. g6 =e= sum(i,lamg6(i)*gval6(i)) ;
gy6def.. gy6 =e= sum(i,lamg6(i)*gyval6(i)) ;


normx1.. sum(i,lamx1(i)) =e= 1 ;
normx2.. sum(i,lamx2(i)) =e= 1 ;
normx3.. sum(i,lamx3(i)) =e= 1 ;

normgx1.. sum(i,lamg1(i)) =e= 1 ;
normgx2.. sum(i,lamg2(i)) =e= 1 ;
normgx3.. sum(i,lamg3(i)) =e= 1 ;
normgx4.. sum(i,lamg4(i)) =e= 1 ;
normgx5.. sum(i,lamg5(i)) =e= 1 ;
normgx6.. sum(i,lamg6(i)) =e= 1 ;

lamdefx1(i).. lamx1(i) =l= binx1(i-1) + binx1(i)$notlastx1(i) ;
soslamx1.. sum(i$notlastx1(i),binx1(i)) =e= 1 ;

lamdefx2(i).. lamx2(i) =l= binx2(i-1) + binx2(i)$notlastx2(i) ;
soslamx2.. sum(i$notlastx2(i),binx2(i)) =e= 1 ;

lamdefx3(i).. lamx3(i) =l= binx3(i-1) + binx3(i)$notlastx3(i) ;
soslamx3.. sum(i$notlastx3(i),binx3(i)) =e= 1 ;

lamdefg1(i).. lamg1(i) =l= bing1(i-1) + bing1(i)$notlastg1(i) ;
soslamg1.. sum(i$notlastg1(i),bing1(i)) =e= 1 ;

lamdefg2(i).. lamg2(i) =l= bing2(i-1) + bing2(i)$notlastg2(i) ;
soslamg2.. sum(i$notlastg2(i),bing2(i)) =e= 1 ;

lamdefg3(i).. lamg3(i) =l= bing3(i-1) + bing3(i)$notlastg3(i) ;
soslamg3.. sum(i$notlastg3(i),bing3(i)) =e= 1 ;

lamdefg4(i).. lamg4(i) =l= bing4(i-1) + bing4(i)$notlastg4(i) ;
soslamg4.. sum(i$notlastg4(i),bing4(i)) =e= 1 ;

lamdefg5(i).. lamg5(i) =l= bing5(i-1) + bing5(i)$notlastg5(i) ;
soslamg5.. sum(i$notlastg5(i),bing5(i)) =e= 1 ;

lamdefg6(i).. lamg6(i) =l= bing6(i-1) + bing6(i)$notlastg6(i) ;
soslamg6.. sum(i$notlastg6(i),bing6(i)) =e= 1 ;


subfunc(j).. (yDATA(j,'A')+yDATA(j,'B')*x1+yDATA(j,'C')*x2+yDATA(j,'D')*x3+
yDATA(j,'E')*y1+yDATA(j,'F')*y2+yDATA(j,'G')*y3
+yDATA(j,'H')*(gy1-gy2)+yDATA(j,'J')*(gy3-gy4)+yDATA(j,'K')*(gy5-gy6)) =e= Y(j);

subfunc1(k).. (yDATA1(k,'A1')+yDATA1(k,'B1')*x1+yDATA1(k,'C1')*x2+yDATA1(k,'D1')*x3+
yDATA1(k,'E1')*y1+yDATA1(k,'F1')*y2+yDATA1(k,'G1')*y3+yDATA1(k,'H1')*(gy1-gy2)
+yDATA1(k,'J1')*(gy3-gy4)+yDATA1(k,'K1')*(gy5-gy6)) =e= Y1(k);

descons1(j).. w1(j)+w2(j)=g=p;
descons2(j).. w1(j)=l=zj1;
descons3(j).. w1(j)=g=0;
descons4(j).. w1(j)=l=((Y(j)-yDATA(j,'yMIN'))/(yDATA(j,'Ty')-yDATA(j,'yMIN')));
descons5(j).. w1(j)=g=zj1+((Y(j)-yDATA(j,'yMIN'))/(yDATA(j,'Ty')-yDATA(j,'yMIN')))-1;
descons6(j).. w2(j)=l=zj2;
descons7(j).. w2(j)=g=0;
descons8(j).. w2(j)=l=((Y(j)-yDATA(j,'yMAX'))/(yDATA(j,'Ty')-yDATA(j,'yMAX')));
descons9(j).. w2(j)=g=zj2+((Y(j)-yDATA(j,'yMAX'))/(yDATA(j,'Ty')-yDATA(j,'yMAX')))-1;





descons10(k).. (Y1(k)-yDATA1(k,'yMIN1'))/(yDATA1(k,'yMAX1')-yDATA1(k,'yMIN1'))=g=p;



x1.lo = smin(i,xval1(i)) ;
x1.up = smax(i,xval1(i)) ;
x2.lo = smin(i,xval1(i)) ;
x2.up = smax(i,xval1(i)) ;
x3.lo = smin(i,xval1(i)) ;
x3.up = smax(i,xval1(i)) ;
g1.lo = smin(i,gval1(i)) ;
g1.up = smax(i,gval1(i)) ;
g2.lo = smin(i,gval2(i)) ;
g2.up = smax(i,gval2(i)) ;
g3.lo = smin(i,gval3(i)) ;
g3.up = smax(i,gval3(i)) ;
g4.lo = smin(i,gval4(i)) ;
g4.up = smax(i,gval4(i)) ;
g5.lo = smin(i,gval5(i)) ;
g5.up = smax(i,gval5(i)) ;
g6.lo = smin(i,gval6(i)) ;
g6.up = smax(i,gval6(i)) ;
MODEL xz /ALL/;



option mip=cplex;
xz.optcr = 0.0 ;

SOLVE xz USING mip MAXIMIZING D;

DISPLAY x1.l,x2.l,x3.l;
User avatar
Renger
Posts: 639
Joined: 7 years ago

Re: error 148 Dimension different

Post by Renger »

Hi

Gams exactly tells you what is wrong:

148 Dimension different - The symbol is referenced with more/less
**** indices as declared

The error is shown directly below the =E= sign, so it must be the variable just before Y1 you have defined with more or less indices.
You use Y1 without any index, but you have defined it as Y1(k) (in fact, you defined it twice: once as y1 and later as Y1(k)).
Therefore, Gams will complain.

Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
A.Sen
User
User
Posts: 4
Joined: 6 years ago

Re: error 148 Dimension different

Post by A.Sen »

Hello.
Please find below some suggestions on your GAMS model wrt error you got. There are many issues related with writing structured, well defined mathematical model on your code. I would suggest reading the manuals and guides line by line one more time.
Sincerely.
...
variables ...,
y1 'definition of this variable goes here. please write it!!' ,
...
Y1(k) 'above you have the same variable. GAMS is not case sensitive. beware! it is indexed on k'
...;

...
Equations
...,
y1def 'definition of this constraint goes here. please write it.'
...;

...
y1def.. y1 =e= sum(i,lamx1(i)*yval1(i)) ;
* y1 is indexed on set k. but indice of y1 is not given. ==> ERROR 148.
...
Post Reply