(!******************************************************
Mosel User Guide Example Problems
=================================
file arcs.mos
`````````````
Working with records: definition of a network.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Nov. 2006
*******************************************************!)
model "Arcs"
declarations
NODES: set of string ! Set of nodes
ARC: array(ARCSET:range) of record ! Arcs:
Source,Sink: string ! Source and sink of arc
Cost: real ! Cost coefficient
end-record
end-declarations
initializations from 'arcs.dat'
ARC
end-initializations
! Calculate the set of nodes
NODES:=union(a in ARCSET) {ARC(a).Source, ARC(a).Sink}
writeln(NODES)
writeln("Average arc cost: ", sum(a in ARCSET) ARC(a).Cost / getsize(ARCSET) )
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file arcs2.mos
``````````````
Working with records: definition of a network.
- Selecting the record fields in initializations -
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Sep. 2007
*******************************************************!)
model "Arcs"
declarations
NODES: set of string ! Set of nodes
ARC: array(ARCSET:range) of record ! Arcs:
flow: mpvar ! Flow quantity
Source,Sink: string ! Source and sink of arc
Cost: real ! Cost coefficient
end-record
end-declarations
initializations from 'arcs.dat'
ARC(Source,Sink,Cost)
end-initializations
! Calculate the set of nodes
NODES:=union(a in ARCSET) {ARC(a).Source, ARC(a).Sink}
writeln(NODES)
writeln("Average arc cost: ", sum(a in ARCSET) ARC(a).Cost / getsize(ARCSET) )
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file arcs3.mos
``````````````
Working with records: definition of a network.
- Reading the record fields from different sources -
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Sep. 2007
*******************************************************!)
model "Arcs"
declarations
NODES: set of string ! Set of nodes
ARC: array(ARCSET:range) of record ! Arcs:
flow: mpvar ! Flow quantity
Source,Sink: string ! Source and sink of arc
Cost: real ! Cost coefficient
end-record
end-declarations
initializations from 'arcs.dat'
ARC(Source,Sink) as "ARCDEF"
ARC(Cost) as "COST"
end-initializations
! Calculate the set of nodes
NODES:=union(a in ARCSET) {ARC(a).Source, ARC(a).Sink}
writeln(NODES)
writeln("Average arc cost: ", sum(a in ARCSET) ARC(a).Cost / getsize(ARCSET) )
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file arcs4.mos
``````````````
Working with records.
- Sets and lists of records -
- Using type constructors -
(c) 2011 Fair Isaac Corporation
author: S. Heipcke, May 2011, rev. Sep. 2018
*******************************************************!)
model "Arcs"
public declarations
NODES: list of string ! List of nodes
arc = public record ! Arcs:
! flow: mpvar ! Flow quantity
Source,Sink: string ! Source and sink of arc
Cost: real ! Cost coefficient
end-record
ARCS: set of arc
ARCLIST: list of arc
end-declarations
function newarc(s,t:string, c:real): arc
returned.Source:=s
returned.Sink:=t
returned.Cost:=c
end-function
NODES:=['A','B','C','D','E','F']
forall(j in NODES) do
ARCS += {newarc("","",0)} ! Creates several (distinct) set elements of the same contents
! Same as:
! ARCS += {arc(.Cost:=0)}
end-do
writeln(ARCS)
i:='S'; ct:=0
forall(j in NODES, ct as counter) do
ARCLIST+= [arc(.Source:=i,.Sink:=j,.Cost:=10*ct)]
! Same as:
! ARCLIST += {newarc(i,j,10*ct)}
i:=j
end-do
writeln(ARCLIST)
! Initializing selected record fields
writeln(arc(.Source:="S"))
writeln(arc(.Sink:="Z"))
writeln(arc(.Cost:=100,.Source:="XYZ"))
end-model
|