<< Click to Display Table of Contents >> Navigation: MODELS > Examples > Models Expressions and Sums |
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