FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Definition of a network

Description
  • definition of a data structure to represent arcs in a network with source, sink, and other properties
  • accessing the different record fields
  • initialization of records with data from a text file
  • selection of record fields in initializations (arcs2.mos)
  • separate initialization of record fields (arcs3.mos)
  • sets and lists of records, using type constructors (arcs4.mos)
  • constant record definition, sets of constant records (arcs5.mos)
Further explanation of this example: 'Mosel User Guide', Section 8.6 Records


Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
arcs.mos[download]
arcs2.mos[download]
arcs3.mos[download]
arcs4.mos[download]
arcs5.mos[download]

Data Files





arcs4.mos

(!******************************************************
   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:
   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 

Back to examples browserPrevious exampleNext example