Data structures
array, set, list, record and any combinations thereof, e.g.,
S: set of list of integer A: array(range) of set of real
- Arrays
-
Array: collection of labeled objects of a given type where the label of an array entry is defined by its index tuple
declarations A: array(1..5) of real B: array(range, set of string) of integer x: array(1..10) of mpvar C: array(1..5) of real end-declarations A:: [4.5, 2.3, 7, 1.5, 10] A(2):= 1.2 B:: (2..4,["ABC", "DE", "KLM"])[15,100,90,60,40,15,10,1,30] C:= array(i in 1..5) x(i).sol
- Sets
-
Set: collection of objects of the same type without establishing an order among them (as opposed to arrays and lists)
Set elements are unique: if the same element is added twice the set still only contains it once.declarations S: set of string R: range end-declarations S:= {"A", "B", "C", "D"} R:= 1..10
- Lists
-
List: collection of objects of the same type
A list may contain the same element several times. The order of the list elements is specified by construction.declarations L: list of integer M: array(range) of list of string end-declarations L:= [1,2,3,4,5] M:: (2..4)[['A','B','C'], ['D','E'], ['F','G','H','I']]
- Records
-
Record: finite collection of objects of any type
Each component of a record is called a field and is characterized by its name and its type.declarations ARC: array(ARCSET:range) of record Source,Sink: string ! Source and sink of arc Cost: real ! Cost coefficient end-record end-declarations ARC(1).Source:= "B" ARC(3).Cost:= 1.5
- User types
-
User types are treated in the same way as the predefined types of the Mosel language. New types are defined in
declarations blocks by specifying a type name, followed by
=, and the definition of the type.
declarations myreal = real myarray = array(1..10) of myreal COST: myarray end-declarations