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

Cut generation for an economic lot-sizing (ELS) problem

Description
This model implements various forms of cut-and-branch and branch-and-cut algorithms. In its simplest form (looping over LP solving) it illustrates the following features:
  • adding new constraints and resolving the LP-problem (cut-and-branch)
  • basis in- and output
  • if statement
  • repeat-until statement
  • procedure
The model els.mos also implements a configurable cutting plane algorithm:
  • defining the cut manager node callback function,
  • defining and adding cuts during the MIP search (branch-and-cut), and
  • using run-time parameters to configure the solution algorithm.
The version elsglobal.mos shows how to implement global cuts. And the model version elscb.mos defines additional callbacks for extended logging and user stopping criteria based on the MIP gap.

Another implementation (master model: runels.mos, submodel: elsp.mos) parallelizes the execution of several model instances, showing the following features:
  • parallel execution of submodels
  • communication between different models (for bound updates on the objective function)
  • sending and receiving events
  • stopping submodels
The fourth implementation (master model: runelsd.mos, submodel: elsd.mos) is an extension of the parallel version in which the solve of each submodels are distributed to various computing nodes.

Further explanation of this example: elscb.mos, elsglobal.mos, runels.mos: Xpress Whitepaper 'Multiple models and parallel solving with Mosel', Section 'Solving several model instances in parallel'.


Source Files

Data Files





els.dat

! Data file for `els.mos'

DEMAND:    [ 2 3 5 3 4 2 5 4 1 3 4 2 3 5 2
             3 1 2 3 5 3 1 2 3 3 4 5 1 4 1  
             3 5 2 1 2 1 3 3 5 2 2 1 3 2 3
             2 2 1 3 2 1 2 2 3 3 2 2 3 1 2]

SETUPCOST: [17 14 11 6 9 6 15 10 8 7 12 9 10 8 12]

PRODCOST:  [ 5 3 2 1 3 1 4 3 2 2 3 1 2 3 2 
             1 4 2 3 1 3 1 2 3 3 3 4 4 2 2  
             3 3 3 4 4 3 3 3 2 2 1 1 3 3 3 
             2 2 2 3 3 3 4 4 4 3 3 2 2 2 3]

CAP:       [12 12 12 12 12 12 12 12 12 12 12 12 12 12 12]

Back to examples browserPrevious exampleNext example