FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserNext example

Introductory examples

Description
Problem name and type, featuresDifficulty
approx Approximation: Piecewise linear approximation **
SOS-2, Special Ordered Sets, piecewise linear approximation of a nonlinear function, pwlin
burglar MIP modeling: Knapsack problem: 'Burglar' *
simple MIP model with binary variables, data input from text data file, array initialization, numerical indices, string indices, record data structure
chess LP modeling: Production planning: 'Chess' problem *
simple LP model, solution output, primal solution values, slack values, activity values, dual solution values
pricebrai All item discount pricing: Piecewise linear function ***
SOS-1, Special Ordered Sets, piecewise linear function, approximation of non-continuous function, step function, pwlin
pricebrinc Incremental pricebreaks: Piecewise linear function ***
SOS-2, Special Ordered Sets, piecewise linear function, step function


Further explanation of this example: 'Applications of optimization with Xpress-MP', Introductory examples (Chapters 1 to 5) of the book 'Applications of optimization with Xpress-MP'

mosel_app_intro.zip[download all files]

Source Files

Data Files





burglar2.mos

(!******************************************************
   Mosel Example Problems
   ======================

   file burglar2.mos
   `````````````````
   Knapsack problem   
  
   A burglar considers eight items that have different values
   and weights. He wants to take a group of items that maximizes
   the total value while the total weight is not more than the
   maximum 'WTMAX' he can carry.

   This IP model represents the so-called knapsack problem where
   binary decision variable 'take(i)' takes value 1 if item 'i'
   is taken; 0 otherwise. This implementation illustrates how 
   problem data could be read into tables from text files. 
   Instead of having the item data embedded in the Mosel model 
   file, we have the data in a file and use 'initializations from'.

   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, Aug. 2002
*******************************************************!)

model "Burglar 2" 
 uses "mmxprs"

 declarations
  ITEMS: set of string           ! Set of items
  WTMAX = 102                    ! Maximum weight allowed
  VALUE: array(ITEMS) of real    ! Value of items
  WEIGHT: array(ITEMS) of real   ! Weight of items
 end-declarations

 initializations from 'burglar.dat'
  VALUE
  WEIGHT
 end-initializations

(! alternatively:
 initializations from 'burglar2.dat'
  [VALUE, WEIGHT] as 'KNAPSACK'
 end-initializations
!)

 declarations
  take: array(ITEMS) of mpvar    ! 1 if we take item i; 0 otherwise
 end-declarations

! Objective: maximize total value
 MaxVal:= sum(i in ITEMS) VALUE(i)*take(i) 

! Weight restriction
 sum(i in ITEMS) WEIGHT(i)*take(i) <= WTMAX

! All variables are 0/1
 forall(i in ITEMS) take(i) is_binary  

 maximize(MaxVal)                 ! Solve the MIP-problem

! Print out the solution
 writeln("Solution:\n Objective: ", getobjval)
 forall(i in ITEMS)  writeln(" take(", i, "): ", getsol(take(i)))
end-model

Back to examples browserNext example