The IF-ELSE statement is useful to branch conditionally around a group of statements. In some cases this can also be written as a set of $ conditioned statements, but the IF statement may be used to make the GAMS code more readable.
An optional ELSE part allows you to formulate traditional IF-THEN-ELSE constructs. The syntax is:
IF (condition, statements; . . ELSE statements; . . );
Warning: One cannot make declarations or define equations
inside an IF statement.
P(I)$(F GT 0) = F*P(I) ; Q(J)$(F GT 0) = F*Q(J) ;
can also be written as
IF (F GT 0, P(I) = F*P(I) ; Q(J) = F*Q(J) ; ) ;
One can also use IF statements to control the SOLVE statement. For instance, consider the following bit of GAMS code:
IF ((ml.modelstat eq 4),
* model ml was infeasible * relax bounds on X and solve again
x.up(j) = 2*x.up(j) ; solve ml using lp minimizing lp ; ELSE IF ((ml.modelstat ne 1), abort "Error solving model ml ; ); );
The following GAMS code is illegal since one cannot define equations inside an IF statement.
If (s GT 0, eq.. sum(i,x(i)) =g= 2 ; );
The following GAMS code is illegal since one cannot make declarations inside an IF statement.
IF (s gt 0, scalar y ; y = 5 ; );