Help with our gams model (Error 52 Endogenous $-control operations not allowed)

Archive of Gamsworld Google Group
Post Reply
Archiver
User
User
Posts: 7876
Joined: 2 years ago

Help with our gams model (Error 52 Endogenous $-control operations not allowed)

Post by Archiver » 8 years ago


Alex,
Thank you for sending a fuller listing, which makes it easier to understand the situation.

Your problem is with these lines
59 m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
75 Bmodel(i,j,k1) $ [counter(k1) < Bstock(i)-C(i,j)-1] ..

The $ operators are used to decide which equations to include in the model.
They are parsed at compile time, and must be resolved prior to when the model is solved by the Solve statement.

Thus the conditions in these $ expressions can be based on set membership tests, or parameter/scalar value tests but CANNOT not be based on tests of variable values. At least not as stated, and perhaps not in the way you intend.

In your model, C(I,j1) and Bstock(i) are variables, not parameters.

Variable values are not yet known (i.e. are, as the error message says, endogenous to the system of equations which the test is trying to determine) so the test cannot be applied.

Now admittedly, the values of variables can be set to some initial value prior to the solve statement, and are then known. But those values should be referred to as C.L(i,j1) or Bstock.L(i), and even then it may be unwise to use them in $ expressions for equation inclusion, unless you are absolutely sure that you mean your condition to only depend on the starting values for those variables.

(Incidentally, line 6 may also give a compiler error:
165 First number greater than second number in macro
-or- more digits in first number than second (eg x01*x9)
-or- leading zero illegal on second number (eg x1*x010)
)

I hope this helps,

Paul


________________________________________
From: Alex Mitsel [mailto:mitselalex@gmail.com]
Sent: Friday, February 19, 2010 11:59 AM
To: Leiby, Paul Newsome
Subject: Re: Help with our gams model

Dear Paul,

Thanx for the quick reply.

I have attached my complete code :

GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 1
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n


1 Sets
2
3 i item number / 1 , 2, 3 /
4 j client type / VIP , REG /
5 k stock amount /0*11 /
6 h stock amount /11*0/ ;
7
8 VARIABLES
9 Muo(i,k)
10 MuoTilda(i,h)
11 Total total price of storing goods
12 q1(i,k)
13 q0(i)
14 q(i,k)
15 BetaModel(i,j);
16 Integer Variables
17 C(i,j) critical level
18 Bstock(i) ;
19
20 *From here these are Data inputed from company*
21 Table Lamda(i,j) demand by client j for item i
22 VIP REG
23 1 5 2
24 2 4 4
25 3 8 6 ;
26 Parameters
27 P(i) price of storing item i
28 / 1 1
29 2 125
30 3 150 /
31 Beta(j) service level defined by company /VIP 0.98 , REG 0.95/
32 TotalDemand(j) total demand
33 counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
34 counter2(h) /11 11,10 10,9 9,8 8,7 7,6 6,5 5,4 4,3 3,2 2,1 1,0 0/
;
35 Scalars
36 T mean lead time per shipment / 17 /;
37
38 TotalDemand(j) = SUM (i ,Lamda(i,j));
39 Alias (j , j1 )
40 Alias (k , k1);
41
42 *cost equation works*
43 EQUATIONS
44 *These equations help build Beta(i,j)*
45 m1(i,j1,k) calculating Muo
46 m2(i,k,h) calculating MuoTilda
47 calq1(i,k) calcualting first step for q(ik)
48 calq0(i) second step now calculate q0
49 calq(i,k) finally calculate q(ik)
50 BModel(i,j,k1) calculating the service level based on the q's
51
52 *These equations are constraints of the model*
53 ServiceLevel(j)
54 CritcalSteps(i) these constriant together with next one are the second con
straint in the model
55 BaseStockBiggerThanCritical(i)
56 Vip(i) Critical level of vip is 0
57 cost ;
58
59 m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
60 Muo(i,k) =e=sum { j ,Lamda(i,j) };
61
62 m2(i,k,h) $ [ counter2(h) = counter(k )]..
63 MuoTilda(i,h)=e=Muo(i,k);
64
65 *Needs a condition here for stoping the Pi q*
66 calq1(i,k)..
67 q1(i,k)=e={ T**counter(k) / Fact[counter(k)] } * prod ( h , MuoTilda(i,h)
);
68
69 calq0(i)..
70 q0(i)=e=[ sum(k, q1(i,k)) ] ** (-1);
71
72 calq(i,k)..
73 q(i,k)=e=q0(i)*q1(i,k);
74
75 Bmodel(i,j,k1) $ [counter(k1) < Bstock(i)-C(i,j)-1] ..
76 BetaModel(i,j)=e=sum(k, q(i,k));
77
78 ServiceLevel(j)..
79 Beta(j)=l=sum(i, [ Lamda(i,j)*BetaModel(i,j) / TotalDemand(j) ] );
80
81 CritcalSteps(i)..
82 C(i,'VIP')=l=C(i,'REG');
83
84 BaseStockBiggerThanCritical(i)..
85 C(i,'REG')=l=Bstock(i);
86
87 Vip(i)..
88 C(i,'VIP')=e=0;
89
90 cost..
91 Total=e=sum(i , P(i)*Bstock(i) );
92
93 MODEL Project /ALL/;
94 option nlp=conopt;
95 option mip=cplex;
96 option minlp=dicopt;
97 Solve Project using minlp MINIMIZING Total;
**** $52,256
**** The following MINLP errors were detected in model Project:
**** 52 equation m1 .. VAR $-control
**** 52 equation BModel .. VAR $-control
98
99
GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 2
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
Error Messages


52 Endogenous $-control operations not allowed
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above

**** 2 ERROR(S) 0 WARNING(S)


COMPILATION TIME = 0.016 SECONDS 3 Mb WIN233-233 Dec 15, 2009


**** FILE SUMMARY

**** USER ERROR(S) ENCOUNTERED

Appreciate any help.
Thanx Alex


-----Original Message-----
From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of Alex
Sent: Friday, February 19, 2010 3:36 AM
To: gamsworld
Subject: Help with our gams model

Hey,

We have an urgent problem with our gams model.
We have an error and can't seem to fix it.
PLEASE HELP WE NEED A FAST ANSWER A.S.A.P.

Here is our prolem in the model and error output :
12 VARIABLES
13 Muo(i,k)
20 Integer Variables
21 C(i,j) critical level
Parameters
counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/


m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
65 Muo(i,k) =e=sum { j ,Lamda(i,j) };
100 Solve Project using minlp MINIMIZING Total;
**** $52,256

52 Endogenous $-control operations not allowed
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above

--
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.



Archiver
User
User
Posts: 7876
Joined: 2 years ago

Re: Help with our gams model (Error 52 Endogenous $-control operations not allowed)

Post by Archiver » 8 years ago


Dear Paul,

Now I understand what the problem is.
I must have these constraints using variables in my equation.
How can I do this ??? Syntacticly speaking.

Thanx Alex

On 19 פברואר, 20:27, "Leiby, Paul Newsome" wrote:
> > Alex,
> > Thank you for sending a fuller listing, which makes it easier to understand the situation.
> >
> > Your problem is with these lines
> > 59 m1(i,j1,k) $ [ C(i,j1) > 75 Bmodel(i,j,k1) $ [counter(k1) >
> > The $ operators are used to decide which equations to include in the model.
> > They are parsed at compile time, and must be resolved prior to when the model is solved by the Solve statement.
> >
> > Thus the conditions in these $ expressions can be based on set membership tests, or parameter/scalar value tests but CANNOT not be based on tests of variable values. At least not as stated, and perhaps not in the way you intend.
> >
> > In your model, C(I,j1) and Bstock(i) are variables, not parameters.
> >
> > Variable values are not yet known (i.e. are, as the error message says, endogenous to the system of equations which the test is trying to determine) so the test cannot be applied.
> >
> > Now admittedly, the values of variables can be set to some initial value prior to the solve statement, and are then known. But those values should be referred to as C.L(i,j1) or Bstock.L(i), and even then it may be unwise to use them in $ expressions for equation inclusion, unless you are absolutely sure that you mean your condition to only depend on the starting values for those variables.
> >
> > (Incidentally, line 6 may also give a compiler error:
> > 165 First number greater than second number in macro
> > -or- more digits in first number than second (eg x01*x9)
> > -or- leading zero illegal on second number (eg x1*x010)
> > )
> >
> > I hope this helps,
> >
> > Paul
> >
> > ________________________________________
> > From: Alex Mitsel [mailto:mitsela...@gmail.com]
> > Sent: Friday, February 19, 2010 11:59 AM
> > To: Leiby, Paul Newsome
> > Subject: Re: Help with our gams model
> >
> > Dear Paul,
> >
> > Thanx for the quick reply.
> >
> > I have attached my complete code :
> >
> > GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 1
> > G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
> > C o m p i l a t i o n
> >
> > 1 Sets
> > 2
> > 3 i item number / 1 , 2, 3 /
> > 4 j client type / VIP , REG /
> > 5 k stock amount /0*11 /
> > 6 h stock amount /11*0/ ;
> > 7
> > 8 VARIABLES
> > 9 Muo(i,k)
> > 10 MuoTilda(i,h)
> > 11 Total total price of storing goods
> > 12 q1(i,k)
> > 13 q0(i)
> > 14 q(i,k)
> > 15 BetaModel(i,j);
> > 16 Integer Variables
> > 17 C(i,j) critical level
> > 18 Bstock(i) ;
> > 19
> > 20 *From here these are Data inputed from company*
> > 21 Table Lamda(i,j) demand by client j for item i
> > 22 VIP REG
> > 23 1 5 2
> > 24 2 4 4
> > 25 3 8 6 ;
> > 26 Parameters
> > 27 P(i) price of storing item i
> > 28 / 1 1
> > 29 2 125
> > 30 3 150 /
> > 31 Beta(j) service level defined by company /VIP 0.98 , REG 0.95/
> > 32 TotalDemand(j) total demand
> > 33 counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
> > 34 counter2(h) /11 11,10 10,9 9,8 8,7 7,6 6,5 5,4 4,3 3,2 2,1 1,0 0/
> > ;
> > 35 Scalars
> > 36 T mean lead time per shipment / 17 /;
> > 37
> > 38 TotalDemand(j) = SUM (i ,Lamda(i,j));
> > 39 Alias (j , j1 )
> > 40 Alias (k , k1);
> > 41
> > 42 *cost equation works*
> > 43 EQUATIONS
> > 44 *These equations help build Beta(i,j)*
> > 45 m1(i,j1,k) calculating Muo
> > 46 m2(i,k,h) calculating MuoTilda
> > 47 calq1(i,k) calcualting first step for q(ik)
> > 48 calq0(i) second step now calculate q0
> > 49 calq(i,k) finally calculate q(ik)
> > 50 BModel(i,j,k1) calculating the service level based on the q's
> > 51
> > 52 *These equations are constraints of the model*
> > 53 ServiceLevel(j)
> > 54 CritcalSteps(i) these constriant together with next one are the second con
> > straint in the model
> > 55 BaseStockBiggerThanCritical(i)
> > 56 Vip(i) Critical level of vip is 0
> > 57 cost ;
> > 58
> > 59 m1(i,j1,k) $ [ C(i,j1) > 60 Muo(i,k) =e=sum { j ,Lamda(i,j) };
> > 61
> > 62 m2(i,k,h) $ [ counter2(h) = counter(k )]..
> > 63 MuoTilda(i,h)=e=Muo(i,k);
> > 64
> > 65 *Needs a condition here for stoping the Pi q*
> > 66 calq1(i,k)..
> > 67 q1(i,k)=e={ T**counter(k) / Fact[counter(k)] } * prod ( h , MuoTilda(i,h)
> > );
> > 68
> > 69 calq0(i)..
> > 70 q0(i)=e=[ sum(k, q1(i,k)) ] ** (-1);
> > 71
> > 72 calq(i,k)..
> > 73 q(i,k)=e=q0(i)*q1(i,k);
> > 74
> > 75 Bmodel(i,j,k1) $ [counter(k1) > 76 BetaModel(i,j)=e=sum(k, q(i,k));
> > 77
> > 78 ServiceLevel(j)..
> > 79 Beta(j)=l=sum(i, [ Lamda(i,j)*BetaModel(i,j) / TotalDemand(j) ] );
> > 80
> > 81 CritcalSteps(i)..
> > 82 C(i,'VIP')=l=C(i,'REG');
> > 83
> > 84 BaseStockBiggerThanCritical(i)..
> > 85 C(i,'REG')=l=Bstock(i);
> > 86
> > 87 Vip(i)..
> > 88 C(i,'VIP')=e=0;
> > 89
> > 90 cost..
> > 91 Total=e=sum(i , P(i)*Bstock(i) );
> > 92
> > 93 MODEL Project /ALL/;
> > 94 option nlp=conopt;
> > 95 option mip=cplex;
> > 96 option minlp=dicopt;
> > 97 Solve Project using minlp MINIMIZING Total;
> > **** $52,256
> > **** The following MINLP errors were detected in model Project:
> > **** 52 equation m1 .. VAR $-control
> > **** 52 equation BModel .. VAR $-control
> > 98
> > 99
> > GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 2
> > G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
> > Error Messages
> >
> > 52 Endogenous $-control operations not allowed
> > 256 Error(s) in analyzing solve statement. More detail appears
> > Below the solve statement above
> >
> > **** 2 ERROR(S) 0 WARNING(S)
> >
> > COMPILATION TIME = 0.016 SECONDS 3 Mb WIN233-233 Dec 15, 2009
> >
> > **** FILE SUMMARY
> >
> > **** USER ERROR(S) ENCOUNTERED
> >
> > Appreciate any help.
> > Thanx Alex
> >
> >
> >
> > -----Original Message-----
> > From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of Alex
> > Sent: Friday, February 19, 2010 3:36 AM
> > To: gamsworld
> > Subject: Help with our gams model
> >
> > Hey,
> >
> > We have an urgent problem with our gams model.
> > We have an error and can't seem to fix it.
> > PLEASE HELP WE NEED A FAST ANSWER A.S.A.P.
> >
> > Here is our prolem in the model and error output :
> > 12 VARIABLES
> > 13 Muo(i,k)
> > 20 Integer Variables
> > 21 C(i,j) critical level
> > Parameters
> > counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
> >
> > m1(i,j1,k) $ [ C(i,j1) > 65 Muo(i,k) =e=sum { j ,Lamda(i,j) };
> > 100 Solve Project using minlp MINIMIZING Total;
> > **** $52,256
> >
> > 52 Endogenous $-control operations not allowed
> > 256 Error(s) in analyzing solve statement. More detail appears
> > Below the solve statement above
> >
> > --
> > To post to this group, send email to gamsworld@googlegroups.com.
> > To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
> > For more options, visit this group athttp://groups.google.com/group/gamsworld?hl=en.



Archiver
User
User
Posts: 7876
Joined: 2 years ago

Re: Help with our gams model (Error 52 Endogenous $-control operations not allowed)

Post by Archiver » 8 years ago


Dear Paul,

I am running into the same issue. Is there any way I can get around
this ? I am trying to copy code lines from matlab to GAMS: in matlab,
simply writing the equation for C(i,j1) before writing line 59 would
have been OK because. If I need to write such an equation (with a
condition on a variable) , is there anyway I can do it in GAMS ?

Thanks for you help,

Guy


On Feb 19, 11:27 am, "Leiby, Paul Newsome" wrote:
> > Alex,
> > Thank you for sending a fuller listing, which makes it easier to understand the situation.
> >
> > Your problem is with these lines
> > 59 m1(i,j1,k) $ [ C(i,j1) > 75 Bmodel(i,j,k1) $ [counter(k1) >
> > The $ operators are used to decide which equations to include in the model.
> > They are parsed at compile time, and must be resolved prior to when the model is solved by the Solve statement.
> >
> > Thus the conditions in these $ expressions can be based on set membership tests, or parameter/scalar value tests but CANNOT not be based on tests of variable values. At least not as stated, and perhaps not in the way you intend.
> >
> > In your model, C(I,j1) and Bstock(i) are variables, not parameters.
> >
> > Variable values are not yet known (i.e. are, as the error message says, endogenous to the system of equations which the test is trying to determine) so the test cannot be applied.
> >
> > Now admittedly, the values of variables can be set to some initial value prior to the solve statement, and are then known. But those values should be referred to as C.L(i,j1) or Bstock.L(i), and even then it may be unwise to use them in $ expressions for equation inclusion, unless you are absolutely sure that you mean your condition to only depend on the starting values for those variables.
> >
> > (Incidentally, line 6 may also give a compiler error:
> > 165 First number greater than second number in macro
> > -or- more digits in first number than second (eg x01*x9)
> > -or- leading zero illegal on second number (eg x1*x010)
> > )
> >
> > I hope this helps,
> >
> > Paul
> >
> > ________________________________________
> > From: Alex Mitsel [mailto:mitsela...@gmail.com]
> > Sent: Friday, February 19, 2010 11:59 AM
> > To: Leiby, Paul Newsome
> > Subject: Re: Help with our gams model
> >
> > Dear Paul,
> >
> > Thanx for the quick reply.
> >
> > I have attached my complete code :
> >
> > GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 1
> > G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
> > C o m p i l a t i o n
> >
> > 1 Sets
> > 2
> > 3 i item number / 1 , 2, 3 /
> > 4 j client type / VIP , REG /
> > 5 k stock amount /0*11 /
> > 6 h stock amount /11*0/ ;
> > 7
> > 8 VARIABLES
> > 9 Muo(i,k)
> > 10 MuoTilda(i,h)
> > 11 Total total price of storing goods
> > 12 q1(i,k)
> > 13 q0(i)
> > 14 q(i,k)
> > 15 BetaModel(i,j);
> > 16 Integer Variables
> > 17 C(i,j) critical level
> > 18 Bstock(i) ;
> > 19
> > 20 *From here these are Data inputed from company*
> > 21 Table Lamda(i,j) demand by client j for item i
> > 22 VIP REG
> > 23 1 5 2
> > 24 2 4 4
> > 25 3 8 6 ;
> > 26 Parameters
> > 27 P(i) price of storing item i
> > 28 / 1 1
> > 29 2 125
> > 30 3 150 /
> > 31 Beta(j) service level defined by company /VIP 0.98 , REG 0.95/
> > 32 TotalDemand(j) total demand
> > 33 counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
> > 34 counter2(h) /11 11,10 10,9 9,8 8,7 7,6 6,5 5,4 4,3 3,2 2,1 1,0 0/
> > ;
> > 35 Scalars
> > 36 T mean lead time per shipment / 17 /;
> > 37
> > 38 TotalDemand(j) = SUM (i ,Lamda(i,j));
> > 39 Alias (j , j1 )
> > 40 Alias (k , k1);
> > 41
> > 42 *cost equation works*
> > 43 EQUATIONS
> > 44 *These equations help build Beta(i,j)*
> > 45 m1(i,j1,k) calculating Muo
> > 46 m2(i,k,h) calculating MuoTilda
> > 47 calq1(i,k) calcualting first step for q(ik)
> > 48 calq0(i) second step now calculate q0
> > 49 calq(i,k) finally calculate q(ik)
> > 50 BModel(i,j,k1) calculating the service level based on the q's
> > 51
> > 52 *These equations are constraints of the model*
> > 53 ServiceLevel(j)
> > 54 CritcalSteps(i) these constriant together with next one are the second con
> > straint in the model
> > 55 BaseStockBiggerThanCritical(i)
> > 56 Vip(i) Critical level of vip is 0
> > 57 cost ;
> > 58
> > 59 m1(i,j1,k) $ [ C(i,j1) > 60 Muo(i,k) =e=sum { j ,Lamda(i,j) };
> > 61
> > 62 m2(i,k,h) $ [ counter2(h) = counter(k )]..
> > 63 MuoTilda(i,h)=e=Muo(i,k);
> > 64
> > 65 *Needs a condition here for stoping the Pi q*
> > 66 calq1(i,k)..
> > 67 q1(i,k)=e={ T**counter(k) / Fact[counter(k)] } * prod ( h , MuoTilda(i,h)
> > );
> > 68
> > 69 calq0(i)..
> > 70 q0(i)=e=[ sum(k, q1(i,k)) ] ** (-1);
> > 71
> > 72 calq(i,k)..
> > 73 q(i,k)=e=q0(i)*q1(i,k);
> > 74
> > 75 Bmodel(i,j,k1) $ [counter(k1) > 76 BetaModel(i,j)=e=sum(k, q(i,k));
> > 77
> > 78 ServiceLevel(j)..
> > 79 Beta(j)=l=sum(i, [ Lamda(i,j)*BetaModel(i,j) / TotalDemand(j) ] );
> > 80
> > 81 CritcalSteps(i)..
> > 82 C(i,'VIP')=l=C(i,'REG');
> > 83
> > 84 BaseStockBiggerThanCritical(i)..
> > 85 C(i,'REG')=l=Bstock(i);
> > 86
> > 87 Vip(i)..
> > 88 C(i,'VIP')=e=0;
> > 89
> > 90 cost..
> > 91 Total=e=sum(i , P(i)*Bstock(i) );
> > 92
> > 93 MODEL Project /ALL/;
> > 94 option nlp=conopt;
> > 95 option mip=cplex;
> > 96 option minlp=dicopt;
> > 97 Solve Project using minlp MINIMIZING Total;
> > **** $52,256
> > **** The following MINLP errors were detected in model Project:
> > **** 52 equation m1 .. VAR $-control
> > **** 52 equation BModel .. VAR $-control
> > 98
> > 99
> > GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 2
> > G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
> > Error Messages
> >
> > 52 Endogenous $-control operations not allowed
> > 256 Error(s) in analyzing solve statement. More detail appears
> > Below the solve statement above
> >
> > **** 2 ERROR(S) 0 WARNING(S)
> >
> > COMPILATION TIME = 0.016 SECONDS 3 Mb WIN233-233 Dec 15, 2009
> >
> > **** FILE SUMMARY
> >
> > **** USER ERROR(S) ENCOUNTERED
> >
> > Appreciate any help.
> > Thanx Alex-----Original Message-----
> > From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of Alex
> > Sent: Friday, February 19, 2010 3:36 AM
> > To: gamsworld
> > Subject: Help with our gams model
> >
> > Hey,
> >
> > We have an urgent problem with our gams model.
> > We have an error and can't seem to fix it.
> > PLEASE HELP WE NEED A FAST ANSWER A.S.A.P.
> >
> > Here is our prolem in the model and error output :
> > 12 VARIABLES
> > 13 Muo(i,k)
> > 20 Integer Variables
> > 21 C(i,j) critical level
> > Parameters
> > counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
> >
> > m1(i,j1,k) $ [ C(i,j1) > 65 Muo(i,k) =e=sum { j ,Lamda(i,j) };
> > 100 Solve Project using minlp MINIMIZING Total;
> > **** $52,256
> >
> > 52 Endogenous $-control operations not allowed
> > 256 Error(s) in analyzing solve statement. More detail appears
> > Below the solve statement above
> >
> > --
> > To post to this group, send email to gamsworld@googlegroups.com.
> > To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
> > For more options, visit this group athttp://groups.google.com/group/gamsworld?hl=en.



Archiver
User
User
Posts: 7876
Joined: 2 years ago

Re: Help with our gams model (Error 52 Endogenous $-control operations not allowed)

Post by Archiver » 5 years ago


Hello,Paul,
Thank you for your explanation of this problem. As your advice, I eliminate "$" in the equation about endogenous variables, but after running my program, I can see many errors like divided by zero/Func domine and so on. If I tackle this,I will see "endogenous $ operation not allowed". what I can do about this circulated error. I wish I will get your help soon.thank you
steven


在 2010年2月20日星期六UTC+8上午2时27分23秒,Leiby, Paul Newsome写道:

Alex,
Thank you for sending a fuller listing, which makes it easier to understand the situation.

Your problem is with these lines
59 m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
75 Bmodel(i,j,k1) $ [counter(k1) < Bstock(i)-C(i,j)-1] ..

The $ operators are used to decide which equations to include in the model.
They are parsed at compile time, and must be resolved prior to when the model is solved by the Solve statement.

Thus the conditions in these $ expressions can be based on set membership tests, or parameter/scalar value tests but CANNOT not be based on tests of variable values. At least not as stated, and perhaps not in the way you intend.

In your model, C(I,j1) and Bstock(i) are variables, not parameters.

Variable values are not yet known (i.e. are, as the error message says, endogenous to the system of equations which the test is trying to determine) so the test cannot be applied.

Now admittedly, the values of variables can be set to some initial value prior to the solve statement, and are then known. But those values should be referred to as C.L(i,j1) or Bstock.L(i), and even then it may be unwise to use them in $ expressions for equation inclusion, unless you are absolutely sure that you mean your condition to only depend on the starting values for those variables.

(Incidentally, line 6 may also give a compiler error:
165 First number greater than second number in macro
-or- more digits in first number than second (eg x01*x9)
-or- leading zero illegal on second number (eg x1*x010)
)

I hope this helps,

Paul


________________________________________
From: Alex Mitsel [mailto:mitse...@gmail.com]
Sent: Friday, February 19, 2010 11:59 AM
To: Leiby, Paul Newsome
Subject: Re: Help with our gams model

Dear Paul,

Thanx for the quick reply.

I have attached my complete code :

GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 1
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n


1 Sets
2
3 i item number / 1 , 2, 3 /
4 j client type / VIP , REG /
5 k stock amount /0*11 /
6 h stock amount /11*0/ ;
7
8 VARIABLES
9 Muo(i,k)
10 MuoTilda(i,h)
11 Total total price of storing goods
12 q1(i,k)
13 q0(i)
14 q(i,k)
15 BetaModel(i,j);
16 Integer Variables
17 C(i,j) critical level
18 Bstock(i) ;
19
20 *From here these are Data inputed from company*
21 Table Lamda(i,j) demand by client j for item i
22 VIP REG
23 1 5 2
24 2 4 4
25 3 8 6 ;
26 Parameters
27 P(i) price of storing item i
28 / 1 1
29 2 125
30 3 150 /
31 Beta(j) service level defined by company /VIP 0.98 , REG 0.95/
32 TotalDemand(j) total demand
33 counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/
34 counter2(h) /11 11,10 10,9 9,8 8,7 7,6 6,5 5,4 4,3 3,2 2,1 1,0 0/
;
35 Scalars
36 T mean lead time per shipment / 17 /;
37
38 TotalDemand(j) = SUM (i ,Lamda(i,j));
39 Alias (j , j1 )
40 Alias (k , k1);
41
42 *cost equation works*
43 EQUATIONS
44 *These equations help build Beta(i,j)*
45 m1(i,j1,k) calculating Muo
46 m2(i,k,h) calculating MuoTilda
47 calq1(i,k) calcualting first step for q(ik)
48 calq0(i) second step now calculate q0
49 calq(i,k) finally calculate q(ik)
50 BModel(i,j,k1) calculating the service level based on the q's
51
52 *These equations are constraints of the model*
53 ServiceLevel(j)
54 CritcalSteps(i) these constriant together with next one are the second con
straint in the model
55 BaseStockBiggerThanCritical(i)
56 Vip(i) Critical level of vip is 0
57 cost ;
58
59 m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
60 Muo(i,k) =e=sum { j ,Lamda(i,j) };
61
62 m2(i,k,h) $ [ counter2(h) = counter(k )]..
63 MuoTilda(i,h)=e=Muo(i,k);
64
65 *Needs a condition here for stoping the Pi q*
66 calq1(i,k)..
67 q1(i,k)=e={ T**counter(k) / Fact[counter(k)] } * prod ( h , MuoTilda(i,h)
);
68
69 calq0(i)..
70 q0(i)=e=[ sum(k, q1(i,k)) ] ** (-1);
71
72 calq(i,k)..
73 q(i,k)=e=q0(i)*q1(i,k);
74
75 Bmodel(i,j,k1) $ [counter(k1) < Bstock(i)-C(i,j)-1] ..
76 BetaModel(i,j)=e=sum(k, q(i,k));
77
78 ServiceLevel(j)..
79 Beta(j)=l=sum(i, [ Lamda(i,j)*BetaModel(i,j) / TotalDemand(j) ] );
80
81 CritcalSteps(i)..
82 C(i,'VIP')=l=C(i,'REG');
83
84 BaseStockBiggerThanCritical(i)..
85 C(i,'REG')=l=Bstock(i);
86
87 Vip(i)..
88 C(i,'VIP')=e=0;
89
90 cost..
91 Total=e=sum(i , P(i)*Bstock(i) );
92
93 MODEL Project /ALL/;
94 option nlp=conopt;
95 option mip=cplex;
96 option minlp=dicopt;
97 Solve Project using minlp MINIMIZING Total;
**** $52,256
**** The following MINLP errors were detected in model Project:
**** 52 equation m1 .. VAR $-control
**** 52 equation BModel .. VAR $-control
98
99
GAMS Rev 233 WIN-VIS 23.3.3 x86/MS Windows 02/19/10 16:57:08 Page 2
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
Error Messages


52 Endogenous $-control operations not allowed
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above

**** 2 ERROR(S) 0 WARNING(S)


COMPILATION TIME = 0.016 SECONDS 3 Mb WIN233-233 Dec 15, 2009


**** FILE SUMMARY

**** USER ERROR(S) ENCOUNTERED

Appreciate any help.
Thanx Alex


-----Original Message-----
From: gams...@googlegroups.com [mailto:gams...@googlegroups.com] On Behalf Of Alex
Sent: Friday, February 19, 2010 3:36 AM
To: gamsworld
Subject: Help with our gams model

Hey,

We have an urgent problem with our gams model.
We have an error and can't seem to fix it.
PLEASE HELP WE NEED A FAST ANSWER A.S.A.P.

Here is our prolem in the model and error output :
12 VARIABLES
13 Muo(i,k)
20 Integer Variables
21 C(i,j) critical level
Parameters
counter(k) / 0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10,11 11/


m1(i,j1,k) $ [ C(i,j1) < counter(k) ] ..
65 Muo(i,k) =e=sum { j ,Lamda(i,j) };
100 Solve Project using minlp MINIMIZING Total;
**** $52,256

52 Endogenous $-control operations not allowed
256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above

--
To post to this group, send email to gams...@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

--
To unsubscribe from this group and stop receiving emails from it, send an email to gamsworld+unsubscribe@googlegroups.com.
To post to this group, send email to gamsworld@googlegroups.com.
Visit this group at http://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/groups/opt_out.

Post Reply