66
IBM ILOG CP Optimizer CP-AI-OR 2009 Masterclass 28/05/2009 Paul Shaw Constraint Programming Group [email protected]

Cpo Presentation

Embed Size (px)

DESCRIPTION

Cpo Presentation

Citation preview

  • IBM ILOG CP Optimizer

    CP-AI-OR 2009 Masterclass

    28/05/2009

    Paul ShawConstraint Programming Group

    [email protected]

  • 28/05/2009 ILOG, All rights reserved 2

    What is CP Optimizer?

    A Constraint Programming engine with an emphasis on modelling and automatic search

    General feeling that CP toolkits were becoming too complicated, and the audience more limited

    Models quickly became very hard to maintain

    Simplify learning and use of the productIncrease model development speedQuickly evaluate CP technology on the problemYou can still program the search in the native engine

    language (C++) if you wish

  • 28/05/2009 ILOG, All rights reserved 3

    What kinds of problems?

    CP Optimizer has a large emphasis on scheduling problems

    However, we will not have time to cover interval-based modelling today

    Look at examples beginning with sched_

    Also addresses more traditional combinatorial problems

    What we will do today

  • 28/05/2009 ILOG, All rights reserved 4

    Getting at CP Optimizer

    Available as a toolkit in C++, Java, .NETC++ is the native language and allows more

    possibilities, like writing incremental custom constraints, and fully controlling the search process

    Available as an engine inside OPLWhat we will use todayHigher level modelling and data manipulationCustom visualisation and scenarios via ODM

  • 28/05/2009 ILOG, All rights reserved 5

    Getting Started with OPL Development Studio

  • 28/05/2009 ILOG, All rights reserved 6

    Getting Started with OPL Development Studio

    Import Existing OPL 6.x projects

  • 28/05/2009 ILOG, All rights reserved 7

    Getting Started with OPL Development Studio

  • 28/05/2009 ILOG, All rights reserved 8

    Getting Started with OPL Development Studio

    Browse projects

  • 28/05/2009 ILOG, All rights reserved 9

    Getting Started with OPL Development Studio

    A project = - a set of model files (.mod) - a set of data files (.dat) - a set of settings files (.ops) - other files (e.g. .xls files ) - a set of rrrrrruuuuuunnnnnn ccccccoooooonnnnnnffffffiiiiiigggggguuuuuurrrrrraaaaaatitititititioooooonnnnnnssssss

  • 28/05/2009 ILOG, All rights reserved 10

    Getting Started with OPL Development Studio

    Model edition: - data manipulation - expression - objective - constraint - script for pre- and post-processing - use Help-> Dynamic Help for information on keywords

  • 28/05/2009 ILOG, All rights reserved 11

    Getting Started with OPL Development Studio

    Model navigation

  • 28/05/2009 ILOG, All rights reserved 12

    Getting Started with OPL Development Studio

    Data file: - explicit data - connection to: * databases * Excel worksheets

  • 28/05/2009 ILOG, All rights reserved 13

    Getting Started with OPL Development Studio

    Double-click for full-size window

  • 28/05/2009 ILOG, All rights reserved 14

    Overview of an OPL Model

    TopData manipulation and pre-processing

    declarative (expressions) and/or imperative (script)

    Variable declarations

  • 28/05/2009 ILOG, All rights reserved 15

    Getting Started with OPL Development Studio

    CP Optimizer model

  • 28/05/2009 ILOG, All rights reserved 16

    Getting Started with OPL Development Studio

    DDDDDDaaaaaattttttaaaaaa ssssssttttttrrrrrruuuuuuccccccttttttuuuuuurrrrrreeeeeessssss aaaaaannnnnndddddd dadadadadadattttttaaaaaa rrrrrreeeeeeaaaaaaddddddininininininggggggHere, read input grid

  • 28/05/2009 ILOG, All rights reserved 17

    Getting Started with OPL Development Studio

    PrPrPrPrPrPrepreprepreprepreprococococococeeeeeessssssssssssiiiiiinnnnnnggggggHere: display grid

  • 28/05/2009 ILOG, All rights reserved 18

    Getting Started with OPL Development Studio

    VVVVVVaaaaaarrrrrriiiiiiaaaaaabbbbbblllllle e e e e e DDDDDDeeeeeeccccccllllllaaaaaararararararattttttiiiiiionononononon

  • 28/05/2009 ILOG, All rights reserved 19

    Some OPL Syntax: declarations

    CP Optimizer has integer variables only (dvar int)No set variables, no floating point variables

    BUT, floating point expressions are allowede.g. 0.3 * x + y / 13

  • 28/05/2009 ILOG, All rights reserved 20

    Some OPL Syntax: declarations

    CP Optimizer has integer variables only (dvar int) No set variables, no floating point variables

    BUT, floating point expressions are allowede.g. 0.3 * x + y / 13

  • 28/05/2009 ILOG, All rights reserved 21

    Some OPL Syntax: data preparation

    int n = ...; // From data file

    range R = 1..n;

    int area[i in R] = width[i] * height[i];

    int totalArea = sum(i in R) area[i];

    {int} bigOnes = {i | i in R : area[i] >= 100};

    tuple Pair { int p1; int p2; };

    {Pair} sumTo100 = {

    | ordered a,b in R : area[a] + area[b] >= 100

    };

  • 28/05/2009 ILOG, All rights reserved 22

    Some OPL Syntax: data preparation

    int n = ...; // From data file

    range R = 1..n;

    int area[i in R] = width[i] * height[i];

    int totalArea = sum(i in R) area[i];

    {int} bigOnes = {i | i in R : area[i] >= 100};

    tuple Pair { int p1; int p2; };

    {Pair} sumTo100 = {

    | ordered a,b in R : area[a] + area[b] >= 100

    };

  • 28/05/2009 ILOG, All rights reserved 23

    Some OPL Syntax: data preparation

    An initial execution block can be useful for debugging and displaying input data

    execute { writeln(sumTo100);}

    gives...

    {, , , , , , ...

  • 28/05/2009 ILOG, All rights reserved 24

    Overview of an OPL Model

    TopData manipulation and pre-processing

    declarative (expressions) and/or imperative (script)

    Variable declarationsMiddle

    Declarative modelobjective (optional) and constraints

  • 28/05/2009 ILOG, All rights reserved 25

    Getting Started with OPL Development Studio

    MMMMMModelodelodelodelodelodel::::::-VVVVVVaaaaaarrrrrriaiaiaiaiaiablblblblblbleeeeeessssss-EEEEEExxxxxxpppppprerererereressssssssssssionionionionionionssssss-OOOOOObjecbjecbjecbjecbjecbjecttttttiiiiiivvvvvveeeeee-CCCCCCononononononssssssttttttrrrrrraaaaaaiiiiiinnnnnnttttttssssss

  • 28/05/2009 ILOG, All rights reserved 26

    Overview of an OPL Model

    Basic structure of middle section

    [ minimize/maximize ]

    subject to / constraints { ; ; ...}

  • 28/05/2009 ILOG, All rights reserved 27

    Overview of an OPL Model

    For allffffffoooooorrrrrraaaaaallllllllllll (i in {1,3,5})

    x[i]

  • 28/05/2009 ILOG, All rights reserved 28

    Overview of an OPL Model

    For allffffffoooooorrrrrraaaaaallllllllllll (i in {1,3,5})

    x[i]

  • 28/05/2009 ILOG, All rights reserved 29

    Overview of an OPL Model

    For allffffffoooooorrrrrraaaaaallllllllllll (i in {1,3,5})

    x[i]

  • 28/05/2009 ILOG, All rights reserved 30

    Overview of an OPL Model

    For allffffffoooooorrrrrraaaaaallllllllllll (i in {1,3,5})

    x[i]

  • 28/05/2009 ILOG, All rights reserved 31

    Expressions and Constraints

    Arithmetic constraints x + y, x y, x * y, x / y, x div y, x % y min, max, abs, log, exp etc. Piecewise linear functions

    Relational constraints x == y, x != y, x

  • 28/05/2009 ILOG, All rights reserved 32

    Expressions and Constraints

    Arithmetic constraints x + y, x y, x * y, x / y, x div y, x % y min, max, abs, log, exp etc. Piecewise linear functions

    Relational constraints x == y, x != y, x

  • 28/05/2009 ILOG, All rights reserved 33

    Expressions and Constraints

    Arithmetic constraints x + y, x y, x * y, x / y, x div y, x % y min, max, abs, log, exp etc. Piecewise linear functions

    Relational constraints x == y, x != y, x

  • 28/05/2009 ILOG, All rights reserved 34

    Expressions and Constraints

    Reification Relational or logical constraints can be used in a value

    context, where they evaluate to 0 or 1

    Examples Arithmetic: max(0, abs(load[i] - cap)) Relational: wid * hei * depth * density

  • 28/05/2009 ILOG, All rights reserved 35

    Expressions and Constraints

    Reification Relational or logical constraints can be used in a value

    context, where they evaluate to 0 or 1

    Examples Arithmetic: max(0, abs(load[i] - cap)) Relational: wid * hei * depth * density

  • 28/05/2009 ILOG, All rights reserved 36

    Expressions and Constraints

    Count expression count(dvar int[] x, int c) Evaluates the number of variables in x with value c e.g. Count the number of nurses allocated to ward 5

    count(wardAllocation, 5) >= 3

    Element expression (int[] a)[dvar int x] OR (dvar int[] a)[dvar int x] Evaluates to the xth member of a e.g. travel == 2 * distFromPittsburgh[holidayTown] travel and holidayTown are variables

  • 28/05/2009 ILOG, All rights reserved 37

    Expressions and Constraints

    Count expression count(dvar int[] x, int c) Evaluates the number of variables in x with value c e.g. Count the number of nurses allocated to ward 5

    count(wardAllocation, 5) >= 3

    Element expression (int[] a)[dvar int x] OR (int var[] a)[dvar int x] Evaluates to the xth member of a e.g. travel == 2 * distFromPittsburgh[holidayTown] travel and holidayTown are variables

  • 28/05/2009 ILOG, All rights reserved 38

    Expressions and Constraints

    All Different allDifferent(dvar int[] x) All variables in x must take different values e.g. The rank (visit priority) of each city is different

    allDifferent(rankOfVisit)

    Allowed / Forbidden assignments allowedAssignments({} A, dvar int[3] x) The assignments to x must fit with a tuple of A forbiddenAssignments is the negation of this e.g. Combinations of engine, gearbox, on promotion

  • 28/05/2009 ILOG, All rights reserved 39

    Expressions and Constraints

    All Different allDifferent(dvar int[] x) All variables in x must take different values e.g. The rank (visit priority) of each city is different

    allDifferent(rankOfVisit)

    Allowed / Forbidden assignments allowedAssignments({} A, dvar int[3] x) The assignments to x must fit with a tuple of A forbiddenAssignments is the negation of this e.g. Combinations of engine, gearbox, on promotion

  • 28/05/2009 ILOG, All rights reserved 40

    Expressions and Constraints

    Bin packing constraint pack(dvar int[m] ld, dvar int[n]x, int[n] sz, dvar int c) ld[i] == sum(j ) (x[j] == i ) * sz[j]

    c is the number of containers used

    e.g. Length of ad breaks given the ad assignmentInverse constraint

    inverse(dvar int[n] x, dvar int[n] y) x[i] == j y[j] == i --- link primary and dual models

    Lexicographic ordering constraint lex(dvar int[n] x, dvar int[n] y) --- break symmetries

  • 28/05/2009 ILOG, All rights reserved 41

    Expressions and Constraints

    Bin packing constraint pack(dvar int[m] ld, dvar int[n]x, int[n] sz, dvar int c) ld[i] == sum(j ) (x[j] == i ) * sz[j]

    c is the number of containers used

    e.g. Length of ad breaks given the ad assignmentInverse constraint

    inverse(dvar int[n] x, dvar int[n] y) x[i] == j y[j] == i --- link primary and dual models

    Lexicographic ordering constraint lex(dvar int[n] x, dvar int[n] y) --- break symmetries

  • 28/05/2009 ILOG, All rights reserved 42

    Overview of an OPL Model

    TopData manipulation and pre-processing

    declarative (expressions) and/or imperative (script)

    Variable declarationsMiddle

    Declarative modelobjective (optional) and constraints

    BottomPost-processing of solutions

    Declarative (expressions) and/or imperative (script)

  • 28/05/2009 ILOG, All rights reserved 43

    Getting Started with OPL Development Studio

    PosPosPosPosPosPosttttttprprprprprprococococococeeeeeessssssssssssiiiiiinnnnnnggggggHere: display solution grid

  • 28/05/2009 ILOG, All rights reserved 44

    Some OPL Syntax: post-processing

    dvar int day[Jobs] in Days;

    constraints { ... }

    // .........................

    {int} jobsOnDay[d in Days] = { j | j in Jobs : day[j] == d };

    execute {for (var d in Days) {

    write(Day + d + : );for (j in jobsOnDay[d])

    write( + j);

    writeln(); }

    }

  • 28/05/2009 ILOG, All rights reserved 45

    Some OPL Syntax: post-processing

    dvar int day[Jobs] in Days;

    constraints { ... }

    // .........................

    {int} jobsOnDay[d in Days] = { j | j in Jobs : day[j] == d };

    execute {for (var d in Days) {

    write(Day + d + : );for (j in jobsOnDay[d])

    write( + j);

    writeln(); }

    }

  • 28/05/2009 ILOG, All rights reserved 46

    Getting Started with OPL Development Studio

    A run configuration = A variation of a project for execution purposes: - at least one model file (.mod) - a set of data files (.dat) - a set of settings files (.ops)

  • 28/05/2009 ILOG, All rights reserved 47

    Getting Started with OPL Development Studio

    Running a configuration:Right-click Run this

  • 28/05/2009 ILOG, All rights reserved 48

    Getting Started with OPL Development Studio

    Engine log

  • 28/05/2009 ILOG, All rights reserved 49

    Getting Started with OPL Development Studio

    Engine statistics for performance analysis

  • 28/05/2009 ILOG, All rights reserved 50

    Getting Started with OPL Development Studio

    Script output

  • 28/05/2009 ILOG, All rights reserved 51

    Getting Started with OPL Development Studio

    Solution and data inspection

  • 28/05/2009 ILOG, All rights reserved 52

    Search in CP OptimizerAutomatic search is emphasised

    Simpler, more maintainable, benefit from upgradesSearch Phases

    What group of variables to assign first(optionally) define instantiation strategy

    ParametersInference levels and search control parameters

    Problem still hard?Improve modelSimplify or relax specificationDecompose: CPLEX often useful here

  • 28/05/2009 ILOG, All rights reserved 53

    TTTTTTyyyyyypipipipipipiccccccaaaaaallllll uuuuuusssssseeeeee ooooooffffff CCCCCCPPPPPP OOOOOOptptptptptptiiiiiimmmmmmiiiiiizzzzzzeeeeeerrrrrr

    UUUUUUse se se se se se CCCCCCP P P P P P OOOOOOptptptptptptiiiiiimmmmmmiiiiiizzzzzzeeeeeerrrrrrssssssaaaaaauuuuuuttttttomomomomomomaaaaaattttttiiiiiicccccc sssssseeeeeeaaaaaarcrcrcrcrcrchhhhhh

    RRRRRReeeeeevvvvvviewiewiewiewiewiewmmmmmmodelodelodelodelodelodel((((((rrrrrreeeeeedudududududunnnnnndadadadadadannnnnnttttttccccccononononononssssssttttttrrrrrraaaaaaiiiiiinnnnnnttttttssssss,,,,,,dedededededeccccccisisisisisisiiiiiiononononononvvvvvvaaaaaarrrrrriiiiiiaaaaaablblblblblbleeeeeessssss eeeeeettttttcccccc......))))))

    MMMMMModelodelodelodelodelodel prprprprprproblobloblobloblobleeeeeemmmmmmiiiiiinnnnnn OOOOOOPLPLPLPLPLPL

    Satisfied?

    UUUUUUsssssseeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhphphphphphphaaaaaasssssseeeeeessssss tttttto o o o o o aaaaaadddddddddddd ssssssomomomomomomeeeeeedomdomdomdomdomdomaaaaaaiiiiiinnnnnnkkkkkknnnnnnoooooowlwlwlwlwlwledgedgedgedgedgedgeeeeeetttttto o o o o o tttttthhhhhheeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhprprprprprprococococococeeeeeessssssssssss

    CCCCCChhhhhhaaaaaannnnnnggggggeeeeeepapapapapaparrrrrraaaaaammmmmmeteteteteteteeeeeerrrrrrssssssorororororor seaseaseaseaseasearrrrrrcccccchhhhhhmmmmmmeeeeeetttttthhhhhhodododododod

    YES NO

    DDDDDDeeeeeeccccccomomomomomomposposposposposposeeeeeemmmmmmooooooddddddeeeeeellllll

    CCCCCCuuuuuussssssttttttomomomomomom ggggggoaoaoaoaoaoallllllorororororor ccccccononononononssssssttttttrrrrrraaaaaaininininininttttttssssss((((((CCCCCC++++++++++++))))))

    MMMMMModelodelodelodelodelodel prprprprprproblobloblobloblobleeeeeemmmmmmiiiiiinnnnnn OOOOOOPLPLPLPLPLPL

    UUUUUUse se se se se se CCCCCCP P P P P P OOOOOOptptptptptptiiiiiimmmmmmiiiiiizzzzzzeeeeeerrrrrrssssssaaaaaauuuuuuttttttomomomomomomaaaaaattttttiiiiiicccccc sssssseeeeeeaaaaaarcrcrcrcrcrchhhhhh

    MMMMMModelodelodelodelodelodel prprprprprproblobloblobloblobleeeeeemmmmmmiiiiiinnnnnn OOOOOOPLPLPLPLPLPL

    UUUUUUse se se se se se CCCCCCP P P P P P OOOOOOptptptptptptiiiiiimmmmmmiiiiiizzzzzzeeeeeerrrrrrssssssaaaaaauuuuuuttttttomomomomomomaaaaaattttttiiiiiicccccc sssssseeeeeeaaaaaarcrcrcrcrcrchhhhhh

    Satisfied?Satisfied?

    UUUUUUsssssseeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhphphphphphphaaaaaasssssseeeeeessssss tttttto o o o o o aaaaaadddddddddddd ssssssomomomomomomeeeeeedomdomdomdomdomdomaaaaaaiiiiiinnnnnnkkkkkknnnnnnoooooowlwlwlwlwlwledgedgedgedgedgedgeeeeeetttttto o o o o o tttttthhhhhheeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhprprprprprprococococococeeeeeessssssssssss

    UUUUUUsssssseeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhphphphphphphaaaaaasssssseeeeeessssss tttttto o o o o o aaaaaadddddddddddd ssssssomomomomomomeeeeeedomdomdomdomdomdomaaaaaaiiiiiinnnnnnkkkkkknnnnnnoooooowlwlwlwlwlwledgedgedgedgedgedgeeeeeetttttto o o o o o tttttthhhhhheeeeee sssssseeeeeeaaaaaarrrrrrcccccchhhhhhprprprprprprococococococeeeeeessssssssssss

    CCCCCChhhhhhaaaaaannnnnnggggggeeeeeepapapapapaparrrrrraaaaaammmmmmeteteteteteteeeeeerrrrrrssssssorororororor seaseaseaseaseasearrrrrrcccccchhhhhhmmmmmmeeeeeetttttthhhhhhodododododod

    CCCCCChhhhhhaaaaaannnnnnggggggeeeeeepapapapapaparrrrrraaaaaammmmmmeteteteteteteeeeeerrrrrrssssssorororororor seaseaseaseaseasearrrrrrcccccchhhhhhmmmmmmeeeeeetttttthhhhhhodododododod

    RRRRRReeeeeevvvvvviewiewiewiewiewiewmmmmmmodelodelodelodelodelodel((((((rrrrrreeeeeedudududududunnnnnndadadadadadannnnnnttttttccccccononononononssssssttttttrrrrrraaaaaaiiiiiinnnnnnttttttssssss,,,,,,dedededededeccccccisisisisisisiiiiiiononononononvvvvvvaaaaaarrrrrriiiiiiaaaaaablblblblblbleeeeeessssss eeeeeettttttcccccc......))))))

    RRRRRReeeeeevvvvvviewiewiewiewiewiewmmmmmmodelodelodelodelodelodel((((((rrrrrreeeeeedudududududunnnnnndadadadadadannnnnnttttttccccccononononononssssssttttttrrrrrraaaaaaiiiiiinnnnnnttttttssssss,,,,,,dedededededeccccccisisisisisisiiiiiiononononononvvvvvvaaaaaarrrrrriiiiiiaaaaaablblblblblbleeeeeessssss eeeeeettttttcccccc......))))))

    DDDDDDeeeeeeccccccomomomomomomposposposposposposeeeeeemmmmmmooooooddddddeeeeeellllllDDDDDDeeeeeeccccccomomomomomomposposposposposposeeeeeemmmmmmooooooddddddeeeeeellllll

    CCCCCCuuuuuussssssttttttomomomomomom ggggggoaoaoaoaoaoallllllorororororor ccccccononononononssssssttttttrrrrrraaaaaaininininininttttttssssss((((((CCCCCC++++++++++++))))))

  • 28/05/2009 ILOG, All rights reserved 54

    Automatic Search in CP OptimizerCP Optimizer's search is based on restarts

    Search is can be restarted at the top of the search tree, allowing initial bad decisions to be undone

    Search can be make complete by iteratively increasing the time between restarts

    This technique is only really effective if a different search path is taken at each restart

  • 28/05/2009 ILOG, All rights reserved 55

    Following Different Search Paths

    Impact-based strategiesBy observing constraint propagation during previous

    restarts, search learns about the problem and modifies its strategy accordingly

    RandomisationDecisions are slightly randomised, for example as a tie-

    breaking techniqueNo-goods

    The explored part of the search tree is represented in CNF and maintained as a global constraint

  • 28/05/2009 ILOG, All rights reserved 56

    Impact-based Strategies

    An implementation of the general principles1/ Pick a variable which leaves least future choice2/ Choose a value which leaves the most future choice

    Idea is to measure the remaining search space when an assignment is made

    Impact is the proportion of search space reduction arising from an assignment

    The impact for a particular assignment x = a is learned by averaging individual impacts over previous assignments

  • 28/05/2009 ILOG, All rights reserved 57

    Search Phases

    In CP Optimizer, search phases are simple search directives to help the automatic search process

    Most common useDefine decision variables, or the most important onesDefine priority-ordered groups of decision variables

    Less common useDefine decision variables and how to instantiate those

    variablesFor this, there are various pre-defined evaluators

  • 28/05/2009 ILOG, All rights reserved 58

    Search Phases in OPL

    In OPL, search phases are created in an executeblock before the main constraint block

    dvar int x[1..n] in 1..n;

    // ... other declarations ...

    execute {

    var f = cp.factory;

    cp.setSearchPhases(f.searchPhase(x));

    }

  • 28/05/2009 ILOG, All rights reserved 59

    Search Phases in OPL

    Instantiate variables in x, then those in y

    dvar int x[1..n] in 1..n;

    dvar int y[1..n] in 1..n;

    // ...other declarations...

    execute {

    var f = cp.factory;

    cp.setSearchPhases(f.searchPhase(x), f.searchPhase(y));

    }

  • 28/05/2009 ILOG, All rights reserved 60

    Search Phases in OPL

    Instantiate variables in x using minimum domain size and maximum value

    dvar int x[1..n] in 1..n;

    // ...other declarations...

    execute {

    var f = cp.factory;

    cp.setSearchPhases(

    f.searchPhase(x, f.selectSmallest(f.domainSize()),

    f.selectLargest(f.value()))

    );

    }

  • 28/05/2009 ILOG, All rights reserved 61

    Search Control Parameters

    Controlling inference strengthGlobal, or per constraint type

    Set limits on searchRun time, branches, fails, etc.

    Optimality toleranceRelative and/or absolute gap

    Controlling restartsControl the growth factor

    Search LogVerbosity, frequency

  • 28/05/2009 ILOG, All rights reserved 62

    Getting Started with OPL Development Studio

    Settings file -

  • ILOG, All rights reserved63

    Worked Examples

    CP-AI-OR 2009 Masterclass

    28/05/2009

    Paul ShawConstraint Programming Group

    [email protected]

  • 28/05/2009 ILOG, All rights reserved 64

    CSPLIB 38: Steel mill slab designSlabs size 44

    Slabs size 32

    Slabs size 23

    ...(20 different sizes available)

    16

    16

    16

    14

    14

    14

    ...(100+ orders, with weightand build process identified by color)

    1216 16

    16 14

    (loss 2)

    Max 2 colors per slabProcess all ordersMinimize total loss

    ILOG, All rights reserved

  • 28/05/2009 ILOG, All rights reserved 65

    Addition chains

    ILOG, All rights reserved

    1

    2

    3

    5

    10

    20

    40

    60

    100

    Build a minimal length sequence of numbers leading to a particular target, beginning with 1

    Each number is built as the sum as two smaller numbers

    The first two numbers are necessarily 1 and 2

  • ILOG, All rights reserved66

    End of Part One

    Thank You

    IBM ILOG CP OptimizerWhat is CP Optimizer?What kinds of problems?Getting at CP OptimizerGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioOverview of an OPL ModelGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioSome OPL Syntax: declarationsSome OPL Syntax: declarationsSome OPL Syntax: data preparationSome OPL Syntax: data preparationSome OPL Syntax: data preparationOverview of an OPL ModelGetting Started with OPL Development StudioOverview of an OPL ModelOverview of an OPL ModelOverview of an OPL ModelOverview of an OPL ModelOverview of an OPL ModelExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsExpressions and ConstraintsOverview of an OPL ModelGetting Started with OPL Development StudioSome OPL Syntax: post-processingSome OPL Syntax: post-processingGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioGetting Started with OPL Development StudioSearch in CP OptimizerTypical use of CP OptimizerAutomatic Search in CP OptimizerFollowing Different Search PathsImpact-based StrategiesSearch PhasesSearch Phases in OPLSearch Phases in OPLSearch Phases in OPLSearch Control ParametersGetting Started with OPL Development StudioWorked ExamplesCSPLIB 38: Steel mill slab designAddition chainsEnd of Part One