Contents - Index


Expressions and Sums in MODELS



1. Expressions

This example illustrates the use of expressions in MODELS

MODEL expr                      

CONST  c4 {­val: 4}   -- constant with value of 4

VAR    a[1..6]       -- variables a[1], a[2], ... a[6]
       k             -- variable k

EXEC
IF t=timestep THEN       -- letting contents execute only at the first time step
  write("*** Begin results of model 'expr' ***")
  k:=1               write("       1 : ", k)
  k:=2*k             write("       2 : ", k)
  k:=3-k             write("       1 : ", k)
  k:=3+k             write("       4 : ", k)
  k:=3/k             write("    0.75 : ", k)
         -- above, notice that all values are interpreted as real,
         -- even if they are expressed as integers
  k:=c4>3 AND c4=4   write("       1 : ", k)
         -- above, c4>3 is true, c4=4 is true, result is true
         -- notice that all logical values are expressed numerically (0 or 1)
  k:=-10 AND c4=4    write("       0 : ", k)
         -- above, -10 has logical value false because it is <=0
         -- notice cross-mapping of logical and numerical values
         -- -10 maps as false, c4=4 is true, false result maps as 0
  k:= -10 OR c4      write("       1 : ", k)
         -- above, -10 maps as false, c4 maps as true, true result maps as 1
  k:= k OR 0         write("       1 : ", k)
         -- above, k maps as true, 0 maps as false, true results maps as 1
  a[4]:=99           write("      99 : ", a[4])
  a[1..2]:=-a[4]     write("-99, -99 : ", a[1], ', ',a[2])
         -- above, multiple assignment of single value (see example arval.dat)
  a[3]:=NOT a[4]     write("       0 : ", a[3])
         -- above, a[4] maps as true, false result maps as 0
  k:=NOT a[1]        write("       1 : ", k)
         -- above, a[1] is -99 and maps as false, true result maps as 1
  k:=NOT k           write("       0 : ", k)
         -- above, k is 1 and maps as true, false result maps as 0
  write("*** End results of model 'expr' ***")
ENDIF
ENDEXEC
ENDMODEL


2. Sums

This example illustrates sum() in MODELS

MODEL sum_example
CONST  c4 {­val: 4}
VAR    a, b, k1, k2
INIT
  b:=2
ENDINIT

EXEC
  a:=t
  k1:=sum(c4| -t|a +t|b)                              -- = c4 -t*a +t*b
  k2:=sum(c4| -t|a +t|b) {­min:-10.999 max:4.999}      -- same, with limits
ENDEXEC
ENDMODEL