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

Smallest and largest value in a set

Description
Find the smallest and the largest value in a set of integers
  • use of round, random, min, max
  • if-then-elif-then statement
Further explanation of this example: 'Mosel User Guide', Section 7.1 Selections.


Source Files





minmax.mos

(!*******************************************************
  * Mosel Example Problems                              *
  * ======================                              *
  *                                                     *
  * file minmax.mos                                     *
  * ```````````````                                     *
  * Example for the use of the Mosel language           *
  * (Min and max of a set of numbers)                   *
  *                                                     *
  * (c) 2008 Fair Isaac Corporation                     *
  *     author: S. Heipcke, 2001                        *
  *******************************************************!)

model Minmax                   ! Start a new model

declarations
 SNumbers: set of integer      ! Set of integer numbers
 LB=-1000                      ! Elements of SNumbers must be between LB
 UB=1000                       ! and UB
end-declarations

 forall(i in 1..50)
  SNumbers += {round(random*200)-100}

 writeln("Set: ", SNumbers, " (size: ", SNumbers.size, ")")

 minval:=UB
 maxval:=LB
 forall(p in SNumbers)
   if p<minval then
     minval:=p
   elif p>maxval then
     maxval:=p
   end-if    

 writeln("Min: ", minval, ", Max: ", maxval)

(! Instead of writing the loop above, it is of course possible to use
   the corresponding operators provided by Mosel:
  
 writeln("Min: ", min(p in SNumbers) p, ", Max: ", max(p in SNumbers) p)  

!) 

end-model

Back to examples browserPrevious exampleNext example