IF-ELSE-LOOP error code 299 and 767

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

IF-ELSE-LOOP error code 299 and 767

Post by Archiver »


Dear All,

I have a question regarding if/else loop.I wrote the following statements, but I keep getting errors

299 Unexpected end of file
767 Unexpected symbol will terminate the loop - symbol replaced by )

If I write the if statement without else if part, I don't get the error, but I want the following code for my formulation.

I appreciate your help very much.
Thank you in advance!!!



if( deltan1 < 0.01,
display 'Converged';
continue = 0;
else
if (deltan2 < 0.01,
display 'Converged';
continue = 0;
);
);
display results;





--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Archiver
User
User
Posts: 7876
Joined: 7 years ago

RE: IF-ELSE-LOOP error code 299 and 767

Post by Archiver »


Hi Deniz



The code you showed runs fine on my computer for several values of deltan1 and deltan2, so I suppose you have somewhere another mistake (perhaps an opening ( too much.



Renger



Functioning code:



parameter deltan1 /1/, deltan2 /1/, continue;



if( deltan1
Subject: IF-ELSE-LOOP error code 299 and 767



Dear All,



I have a question regarding if/else loop.I wrote the following statements, but I keep getting errors



299 Unexpected end of file
767 Unexpected symbol will terminate the loop - symbol replaced by )



If I write the if statement without else if part, I don't get the error, but I want the following code for my formulation.



I appreciate your help very much.

Thank you in advance!!!







if( deltan1 < 0.01,
display 'Converged';
continue = 0;
else
if (deltan2 < 0.01,
display 'Converged';
continue = 0;
);
);

display results;











--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Archiver
User
User
Posts: 7876
Joined: 7 years ago

Re: IF-ELSE-LOOP error code 299 and 767

Post by Archiver »


Dear Renger,

I appreciate your help so much. Unfortunately, I keep getting same error.
I am attaching the rest of the code.. I am not sure what is missing, but I went through it line by line hundreds time and still I cannot figure it out.
If you guide me on this, I would really appreciate it!


Regards.

set iter /iter1*iter5/;
Sets
I /0*25/
T /0*100/
t2(t)/0*99/
scalar continue /1/;
parameter stepsize1;
parameter stepsize2;
scalar theta /2/;
scalar noimprovement /0/;
scalar bestbound /-INF/;
parameter gamma1(t);
parameter gamma2(t);
scalar norm1 ;
scalar norm2 ;
scalar step1 ;
scalar step2 ;
scalar upperbound;
parameter uprevious(t);
parameter uprevious1(t);
scalar deltan1;
scalar deltan2;
parameter results(iter,*);
parameter
n(t)
n1(t)
;
variable bound;
*LR.. bound =e=10000
bound.l=10000;
*model ldual /LR/;
* --- use zero starting point
n(t2) = 0.0;
n1(t2) = 0;

display n;
display n1;

*

* an upperbound on L
upperbound = 13904983.6260;
display upperbound;

loop(iter$continue,
*
option optcr=0;
option limrow = 0;
option limcol = 0;
*ldual.solprint = 0;
*solve ldual minimizing bound using mip;
results(iter,'dual obj') = bound.l;
if (bound.l > bestbound,
bestbound = bound.l;
display bestbound;
noimprovement = 0;
else
noimprovement = noimprovement + 1;
if (noimprovement > 1,
theta = theta/2;
noimprovement = 0;
);
);
results(iter,'noimprov') = noimprovement;
results(iter,'theta') = theta;

*
* calculate step size

*
gamma1(t2) = 0.2;
gamma2(t2) =0.3;
norm1 = sum((t),sqr(gamma1(t)));
norm2 = sum((t),sqr(gamma2(t)));
stepsize1 = theta*(upperbound-bound.l)/norm1;
stepsize2 = theta*(upperbound-bound.l)/norm2;
results(iter,'norm1') = norm1;
results(iter,'step1') = stepsize1;
results(iter,'norm2') = norm2;
results(iter,'step2') = stepsize2;
uprevious(t) = n(t);
uprevious1(t) = n1(t);
n(t) = max(0, n(t)+stepsize1*gamma1(t));
n1(t) = max(0, n1(t)+stepsize2*gamma2(t));
display n,n1;

deltan1 = smax((t),abs(uprevious(t)-n(t)));
deltan2 = smax((t),abs(uprevious1(t)-n1(t)));
results(iter,'deltan1') = deltan1;
results(iter,'deltan2') = deltan2;
if( deltan1
Subject: IF-ELSE-LOOP error code 299 and 767



Dear All,



I have a question regarding if/else loop.I wrote the following statements, but I keep getting errors



299 Unexpected end of file
767 Unexpected symbol will terminate the loop - symbol replaced by )



If I write the if statement without else if part, I don't get the error, but I want the following code for my formulation.



I appreciate your help very much.

Thank you in advance!!!







if( deltan1 < 0.01,
display 'Converged';
continue = 0;
else
if (deltan2 < 0.01,
display 'Converged';
continue = 0;
);
);

display results;











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

--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Archiver
User
User
Posts: 7876
Joined: 7 years ago

RE: IF-ELSE-LOOP error code 299 and 767

Post by Archiver »


Hi Deniz

You have a missing closing parenthesis for the loop:

loop(iter$continue,



I use Emacs as editor, and it shows me using different colors to indicate missing parenthesis.

I put the cursor on the parenthesis in “loop(iter” and the “(“ lights up in purple indicating a missing one.

Cheers

Renger







From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of deniz
Sent: Mittwoch, 9. März 2016 03:49
To: gamsworld
Subject: Re: IF-ELSE-LOOP error code 299 and 767



Dear Renger,



I appreciate your help so much. Unfortunately, I keep getting same error.

I am attaching the rest of the code.. I am not sure what is missing, but I went through it line by line hundreds time and still I cannot figure it out.

If you guide me on this, I would really appreciate it!





Regards.



set iter /iter1*iter5/;

Sets
I /0*25/
T /0*100/
t2(t)/0*99/
scalar continue /1/;
parameter stepsize1;
parameter stepsize2;
scalar theta /2/;
scalar noimprovement /0/;
scalar bestbound /-INF/;
parameter gamma1(t);
parameter gamma2(t);
scalar norm1 ;
scalar norm2 ;
scalar step1 ;
scalar step2 ;
scalar upperbound;
parameter uprevious(t);
parameter uprevious1(t);
scalar deltan1;
scalar deltan2;
parameter results(iter,*);
parameter
n(t)
n1(t)
;

variable bound;

*LR.. bound =e=10000
bound.l=10000;
*model ldual /LR/;

* --- use zero starting point
n(t2) = 0.0;
n1(t2) = 0;


display n;
display n1;


*


* an upperbound on L

upperbound = 13904983.6260;

display upperbound;



loop(iter$continue,
*

option optcr=0;
option limrow = 0;
option limcol = 0;
*ldual.solprint = 0;
*solve ldual minimizing bound using mip;
results(iter,'dual obj') = bound.l;
if (bound.l > bestbound,
bestbound = bound.l;
display bestbound;
noimprovement = 0;
else
noimprovement = noimprovement + 1;
if (noimprovement > 1,
theta = theta/2;
noimprovement = 0;
);
);
results(iter,'noimprov') = noimprovement;
results(iter,'theta') = theta;



*
* calculate step size


*

gamma1(t2) = 0.2;

gamma2(t2) =0.3;

norm1 = sum((t),sqr(gamma1(t)));
norm2 = sum((t),sqr(gamma2(t)));
stepsize1 = theta*(upperbound-bound.l)/norm1;
stepsize2 = theta*(upperbound-bound.l)/norm2;
results(iter,'norm1') = norm1;
results(iter,'step1') = stepsize1;
results(iter,'norm2') = norm2;
results(iter,'step2') = stepsize2;

uprevious(t) = n(t);
uprevious1(t) = n1(t);

n(t) = max(0, n(t)+stepsize1*gamma1(t));
n1(t) = max(0, n1(t)+stepsize2*gamma2(t));
display n,n1;


deltan1 = smax((t),abs(uprevious(t)-n(t)));
deltan2 = smax((t),abs(uprevious1(t)-n1(t)));
results(iter,'deltan1') = deltan1;
results(iter,'deltan2') = deltan2;

if( deltan1
Subject: IF-ELSE-LOOP error code 299 and 767



Dear All,



I have a question regarding if/else loop.I wrote the following statements, but I keep getting errors



299 Unexpected end of file
767 Unexpected symbol will terminate the loop - symbol replaced by )



If I write the if statement without else if part, I don't get the error, but I want the following code for my formulation.



I appreciate your help very much.

Thank you in advance!!!







if( deltan1 < 0.01,
display 'Converged';
continue = 0;
else
if (deltan2 < 0.01,
display 'Converged';
continue = 0;
);
);

display results;











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

--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.

--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Archiver
User
User
Posts: 7876
Joined: 7 years ago

Re: IF-ELSE-LOOP error code 299 and 767

Post by Archiver »


Thank you so much Renger,

I defined the if statement as follows. I removed else and just put and between two deltan. It worked but I am not sure if this is the same with if else statement.

Thank you so much for all your help!
Regards.



if( deltan1 < 0.001 and deltan2 < 0.01,
display "Converged";
continue = 0;
);
);
display results;



On Tuesday, March 8, 2016 at 12:51:44 AM UTC-6, deniz wrote:

Dear All,

I have a question regarding if/else loop.I wrote the following statements, but I keep getting errors

299 Unexpected end of file
767 Unexpected symbol will terminate the loop - symbol replaced by )

If I write the if statement without else if part, I don't get the error, but I want the following code for my formulation.

I appreciate your help very much.
Thank you in advance!!!



if( deltan1 < 0.01,
display 'Converged';
continue = 0;
else
if (deltan2 < 0.01,
display 'Converged';
continue = 0;
);
);
display results;





--
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 https://groups.google.com/group/gamsworld.
For more options, visit https://groups.google.com/d/optout.
Post Reply