| (!******************************************************
   Mosel User Guide Example Problems
   ================================= 
   file fo.mos 
   ``````````` 
   Formatted output printing.
 
   (c) 2008 Fair Isaac Corporation
       author: Bob Daniel, 2002
*******************************************************!)
model FO
 parameters
  r = 1.0         ! A real
  i = 0           ! An integer
 end-parameters
 writeln("i is ", i)
 writeln("i is ", strfmt(i,6) )
 writeln("i is ", strfmt(i,-6) )
 writeln("r is ", r)
 writeln("r is ", strfmt(r,6) )
 writeln("r is ", strfmt(r,10,4) )
end-model
 | 
| (!******************************************************
   Mosel User Guide Example Problems
   ================================= 
   file numformat.mos 
   `````````````````` 
   Formatted output printing.
 
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2005
*******************************************************!)
model "Formatting numbers"
 parameters
  a = 12345000.0
  b = 12345048.9
  c = 12.000045
  d = 12.0
 end-parameters
 
 writeln(a, "  ", b, "  ", c, "  ", d)
 
 setparam("REALFMT", "%1.6f")
 writeln(a, "  ", b, "  ", c, "  ", d)
end-model
 | 
| (!******************************************************
   Mosel User Guide Example Problems
   ================================= 
   file transport2.mos 
   ``````````````````` 
   Formatted output printing.
 
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2001, rev. Feb. 2010
*******************************************************!)
model "Transport 2"
 uses "mmxprs", "mmsystem"
 declarations
  REGION: set of string                 ! Set of customer regions
  PLANT: set of string                  ! Set of plants
  DEMAND: array(REGION) of real         ! Demand at regions
  PLANTCAP: array(PLANT) of real        ! Production capacity at plants
  PLANTCOST: array(PLANT) of real       ! Unit production cost at plants
  TRANSCAP: dynamic array(PLANT,REGION) of real
                                        ! Capacity on each route plant->region
  DISTANCE: dynamic array(PLANT,REGION) of real
                                        ! Distance of each route plant->region
  FUELCOST: real                        ! Fuel cost per unit distance
  flow: dynamic array(PLANT,REGION) of mpvar    ! Flow on each route
 end-declarations
!***********************************************************************
 procedure print_table
  declarations
   rsum: array(REGION) of integer    ! Auxiliary data table for printing
   psum,ct,iflow: integer            ! Counters
  end-declarations
          ! Print heading and the first line of the table
  writeln("\nProduct Distribution\n", "="*20)
  writeln(strfmt("Sales Region",48))
  write(strfmt("",15), "| ")
  forall(r in REGION) write(strfmt(r,9))
  writeln(" |", strfmt("TOTAL",6), " Capacity") 
  writeln("-"*80)
         ! Print the solution values of the flow variables and
         ! calculate totals per region and per plant
  ct:=0
  forall(p in PLANT, ct as counter) do
    if ct=2 then 
      write(" Plant ", strfmt(p,-8), "|")
    else
      write("       ", strfmt(p,-8), "|")
    end-if
    psum:=0
    forall(r in REGION) do
      iflow:=integer(getsol(flow(p,r)))
      psum += iflow
      rsum(r) += iflow
      if iflow<>0 then 
        write(strfmt(iflow,9))
      else
        write("      -- ")
      end-if
    end-do
    writeln("  |", strfmt(psum,6), strfmt(integer(PLANTCAP(p)),8))
  end-do
         ! Print the column totals
  writeln("-"*80)
  write(strfmt(" TOTAL",-15), "|") 
  forall(r in REGION) write(strfmt(rsum(r),9))
  writeln("  |", strfmt(sum(r in REGION) rsum(r),6)) 
         ! Print demand of every region
  write(strfmt(" Demand",-15), "|") 
  forall(r in REGION) write(strfmt(integer(DEMAND(r)),9))
         ! Print objective function value
  writeln("\n\nTotal cost of distribution = ", strfmt(getobjval/1e6,0,3), 
          " million.")
 end-procedure
!***********************************************************************
 
 initializations from 'transprt.dat'
  DEMAND
  [PLANTCAP,PLANTCOST] as 'PLANTDATA'
  [DISTANCE,TRANSCAP] as 'ROUTES'
  FUELCOST
 end-initializations
 
! Create the flow variables that exist
 forall(p in PLANT, r in REGION | exists(TRANSCAP(p,r)) ) create(flow(p,r))
 
! Objective: minimize total cost
 MinCost:= sum(p in PLANT, r in REGION | exists(flow(p,r))) 
            (FUELCOST * DISTANCE(p,r) + PLANTCOST(p)) * flow(p,r)
 
! Limits on plant capacity
 forall(p in PLANT) sum(r in REGION) flow(p,r) <= PLANTCAP(p)
! Satisfy all demands
 forall(r in REGION) sum(p in PLANT) flow(p,r) = DEMAND(r)
 
! Bounds on flows
 forall(p in PLANT, r in REGION | exists(flow(p,r))) 
  flow(p,r) <= TRANSCAP(p,r)
 
 minimize(MinCost)                       ! Solve the problem
 print_table                             ! Solution printout
 
end-model
 |