Contents
- Index
Arrays in Models
This example illustrates how to assign values to array variables.
MODEL arval -- illustrates the use of array algebra in MODELS
VAR a[1..6] -- an array variable, with elements indexed from 1 to 6
EXEC
IF t=timestep THEN -- letting contents execute only at the first time step
write("*** Begin results of model 'arval' ***")
a[1..3] := 0 -- group assign
write("[0, 0, 0] : ", a[1],' ', a[2],' ', a[3])
a[1..3] := [1, 2, 3] -- one-to-one assign
write("[1, 2, 3] : ", a[1],' ', a[2],' ', a[3])
a[4..6] := [1, a[2..3] - [1, 2] ] -- one-to-one subtract
write("[1, 1, 1] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[4..6] -1 -- group subtract
write("[0, 0, 0] : ", a[4],' ', a[5],' ', a[6])
a[1..5] := [1, 2, a[1..3]] -- array ref inside array value
write("[1, 2, 1, 2, 3] : ", a[1],' ',a[2],' ',a[3],' ',a[4],' ',a[5])
a[1..5] := [a[1..3], 1, 3] -- array ref inside array value
write("[1, 2, 1, 1, 3] : ", a[1],' ',a[2],' ',a[3],' ',a[4],' ',a[5])
a[1..3] := [1, 2, 3] -- assign array value
write("[1, 2, 3] : ", a[1],' ', a[2],' ', a[3])
a[4..6] := a[1..3] -- assign array ref
write("[1, 2, 3] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[1..3] +10 -- group add
write("[11, 12, 13] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := 10 +a[1..3] -- group add
write("[11, 12, 13] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[1..3] + [10, 10, 10] -- one-to-one add
write("[11, 12, 13] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[1..3] -a[4..6] -- one-to-one subtract
write("[-10, -10, -10] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[1..3] * 10 -- group multiply
write("[10, 20, 30] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := 10 * a[1..3] -- group multiply
write("[10, 20, 30] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[1..3] / 0.1 -- group divide
write("[10, 20, 30] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := 10 / a[1..3] -- group divide
write("[10, 5, 3.3333333] : ", a[4],' ',a[5],' ',a[6])
a[4..6] := a[1..3] AND [0, 0, 1] OR [0, 1, 0] -- one-to-one and/or
write("[0, 1, 1] : ", a[4],' ', a[5],' ', a[6])
a[1..3] := a[1..3]**2 -- group exponent
write("[1, 4, 9] : ", a[1],' ', a[2],' ', a[3])
a[4..6] := 10**a[4..6] -- group exponent
write("[1, 10, 10] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[4..6] {max:[100, 100, 8]} -- one-to-one limit
write("[1, 10, 8] : ", a[4],' ', a[5],' ', a[6])
a[4..6] := a[4..6] {max:8} -- group limit
write("[1, 8, 8] : ", a[4],' ', a[5],' ', a[6])
a[1..3] := a[1..3] MOD 6 -- group modulo
write("[1, 4, 3] : ", a[1],' ', a[2],' ', a[3])
a[1..3] := 13 MOD a[1..3] -- group modulo
write("[0, 1, 1] : ", a[1],' ', a[2],' ', a[3])
write("*** End results of model 'arval' ***")
ENDIF
ENDEXEC
ENDMODEL