SlideShare a Scribd company logo
1 of 37
Download to read offline
July 14, 2015
© 2015 IBM CorporationISMP 2015
Accelerating the Development of
Efficient CP Optimizer Models
Philippe Laborie
IBM Analytics, Decision Optimization
© 2015 IBM Corporation2 ISMP 2015
Outline
 Overview of CP Optimizer
– Model&Run paradigm
– Model
– Automatic search
 Tools
– I/O format
– Model warnings
– Model presolve
– Search log
– Warm start
– Conflict refiner
– Failure explainer
© 2015 IBM Corporation3 ISMP 2015
Overview of CP Optimizer
 A component of IBM ILOG CPLEX Optimization Studio
 A Constraint Programming engine for combinatorial problems
(including detailed scheduling problems)
 Implements a Model & Run paradigm (like CPLEX)
– Model: Concise yet expressive modeling language
– Run: Powerful automatic search procedure
Search algorithm is complete
 Available through the following interfaces:
– OPL
– C++ (native interface)
– Java, .NET (wrapping of the C++ engine)
 Set of tools to support the delevopment of efficient models
© 2015 IBM Corporation4 ISMP 2015
Overview of CP Optimizer
User model
OPL,C++,Java,.NET
Model
Solution Automatic Solve
 Model & Run paradigm
© 2015 IBM Corporation5 ISMP 2015
Model : integer variables
Variables Expressions Constraints
Variables are discrete
integer
Domains can be
specified as a range
[1..50] or as a set of
values {1, 3, 5, 7, 9}
dvar int x in 1..50
Expressions can be integer
or floating-point, for
example 0.37*y is allowed
Arithmetic (+,-,*,/) and
more complex operators
(min, max, log, pow etc.) are
supported
Relational expressions can
be treated as 0-1
expressions.
e.g. x = (y < z)
Special expressions:
x == a[y]
x == count(Y, 3)
y == cond ? y : z
Rich set of constraints
Standard relational constraints
(==, !=, <, >, <=, >=)
Logical combinators
(&&, ||, !, =>)
Specialized (global) constraints
allDifferent(X)
allowedAssignments(X, tuples)
forbiddenAssignments(X, tuples)
pack(load, container, size)
lexicographic(X,Y)
inverse(X,Y)
© 2015 IBM Corporation6 ISMP 2015
Model : interval variables
 Extension of classical CSP with a new type of decision variable:
optional interval variable :
Domain(x) { } { [s,e) | s,e , s≤e }
 Introduction of mathematical notions such as sequences and
functions to capture temporal dimension of scheduling problems
Absent interval Interval of integers
© 2015 IBM Corporation7 ISMP 2015
Model : interval variables
 In scheduling models, interval variables usually represent an
interval of time during which some property hold (e.g. an activity
executes) and whose end-points (start/end) are decision variables
of the problem.
 Examples:
– A sub-project in a project, a task in a sub-project (Work Breakdown
Structure)
– A batch of operations
– The setup of a tool on a machine
– The moving of an item by a transportation device
– The utilization interval of a resource
 Idea of the model (and search) is to avoid the enumeration of
start/end values (continuous time)
© 2015 IBM Corporation8 ISMP 2015
Model : interval variables
 An interval variable can be optional meaning that it is a decision
to have it present or absent in a solution.
 Examples:
– Unperformed tasks and optional sub-projects
– Alternative resources, modes or recipes for processing an order, each
mode specifying a particular combination of operational resources
– Operations that can be processed in different temporal modes (e.g.
series or parallel)
– Activities that can be performed in an alternative set of batches or
shifts
© 2015 IBM Corporation9 ISMP 2015
Model: example
 Satellite Control Network scheduling problem [1]
 n communication tasks for Earth orbiting satellites must be
scheduled on a total of 32 antennas spread across 13 ground-
based tracking stations
 In the instances, n ranges from to 400 to 1300
 Objective: maximize the number of scheduled tasks
[1] Kramer & al.: Understanding Performance Trade-offs in Algorithms for Solving Oversubscribed Scheduling.
© 2015 IBM Corporation10 ISMP 2015
Model: example
Station1Station2Station3
Taski
Oppi,1
Oppi,2 Oppi,3
Alternative assignments
to stations  time windows
(opportunities)
Oppi,4
OR
© 2015 IBM Corporation11 ISMP 2015
Model: example
© 2015 IBM Corporation12 ISMP 2015
Automatic Search
 Search algorithm is Complete
 Core CP techniques used as a building block:
– Tree search (Depth First)
– Constraint propagation
 But also:
– Deterministic multicore parallelism
– Model presolve
– Algorithms portfolios
– Machine learning
– Restarting techniques
– Large Neighborhood Search
– No-good learning
– Impact-based branching
– Opportunistic probing
– Dominance rules
– LP-assisted heuristics
– Randomization
– Evolutionary algorithms
© 2015 IBM Corporation13 ISMP 2015
Automatic Search
 Search algorithm is Complete
 Core CP techniques used as a building block:
– Tree search (Depth First)
– Constraint propagation
 But also:
– Deterministic multicore parallelism
– Model presolve
– Algorithms portfolios
– Machine learning
– Restarting techniques
– Large Neighborhood Search
– No-good learning
– Impact-based branching
– Opportunistic probing
– Dominance rules
– LP-assisted heuristics
– Randomization
– Evolutionary algorithms
[2] P. Vilim's talk at this ISMP: “Failure-directed Search for Constraint-based Scheduling”
© 2015 IBM Corporation14 ISMP 2015
Tools: I/O format
 Objective:
– Make it easier to understand the content of a model
– Communicate a model to IBM support team regardless of the API
used to build it (OPL, C++, Java, .NET)
 Structure of a .cpo file
– Human readable
– Flat (no cycle, forall statements)
– No user defined data types
– Internal information such as CPO version or platform used
– Includes search parameter values
 Facilities
– Export model before/instead of solve
– Export model during solve (with current domains)
– Import model instead of normal modeling
© 2015 IBM Corporation15 ISMP 2015
Tools: I/O format
// Interval-related variables:
"task(1)" = intervalVar(optional);
"task(1A)" = intervalVar(optional);
…
"opp({1,1,62})" = intervalVar(optional, start=62..intervalmax, end=0..99, size=25);
"opp({1A,1,32})" = intervalVar(optional, start=32..intervalmax, end=0..69, size=33);
…
// Objective:
maximize(sum([presenceOf("task(1)"), presenceOf("task(1A)"), …]));
…
// Constraints:
alternative("task(1)", ["opp({1,1,62})"], 1);
…
pulse("opp({3,1,58})", 1) + pulse("opp({1,1,62})", 1) + … <= 4;
…
parameters {
LogVerbosity = Quiet;
}
© 2015 IBM Corporation16 ISMP 2015
Tools: model warnings
 Like a compiler, CP Optimizer can analyze the model and print
some warnings
– When there is something suspicious in the model
– Regardless how the model was created (C++, OPL, …)
– Including guilty part of the model in the cpo file format
– Including source code line numbers (if known)
– 3 levels of warnings, more than 50 types of warnings
satellite.cpo:2995:1: Warning: Constraint 'alternative': there is only one alternative
interval variable.
alternative("task(1)", ["opp({1,1,62})"], 1)
satellite.cpo:2996:1: Warning: Constraint 'alternative': there is only one alternative
interval variable.
alternative("task(1A)", ["opp({1A,1,32})"], 1)
© 2015 IBM Corporation17 ISMP 2015
Tools: model presolve
 Objective: automatically reformulate the model in order to
speed-up its resolution
 Works on an internal representation of the model
 Different types of presolve:
– Aggregation of basic constraints into global constraints
– Constraint strengthening
– Simplifications and factorizations
© 2015 IBM Corporation18 ISMP 2015
Warnings
Tools: model presolve
User model
Internal model
Model analysis Model presolve
OPL,C++,Java,.NET
Model
Solution
CPO file
Automatic Solve
© 2015 IBM Corporation19 ISMP 2015
Tools: model presolve
 Examples of presolve rules
– Common sub-expression elimination
– Aggregation of x!=y cliques as allDifferent([x,y,...])
– Precedence strengthening
• If a and b cannot overlap and startsBeforeStart(a,b)
• Then endsBeforeStart(a,b)
– Precedence recognition
• If endOf(a,-)  startOf(b,+)
• Then endsBeforeStart(a,b)
• Precedences are aggregated into a “time net” (STN) for faster and
stronger propagation
– 2-SAT clauses recognition
• presenceOf(a)  presenceOf(b)
• Such clauses are aggregated into a “logical net” for stronger propagation
© 2015 IBM Corporation20 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
Problem
characteristics
© 2015 IBM Corporation21 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
Modified
parameter values
© 2015 IBM Corporation22 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
Root node
information
© 2015 IBM Corporation23 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
New incumbent
solutions (time, worker)
© 2015 IBM Corporation24 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
Periodical log
with fail information,
number of unfixed
variables, current decision
© 2015 IBM Corporation25 ISMP 2015
Tools: search log
 Objective: understand what happens during the automatic search
! -----------------------------------------------------------------------
! Maximization problem - 2980 variables, 853 constraints
! Workers = 2
! TimeLimit = 30
! Initial process time : 0.01s (0.00s extraction + 0.01s propagation)
! . Log search space : 4627.3 (before), 4627.3 (after)
! . Memory usage : 16.9 MB (before), 19.7 MB (after)
! Using parallel search with 2 workers.
! -----------------------------------------------------------------------
! Best Branches Non-fixed W Branch decision
* 746 3945 0.79s 1 -
746 4000 2924 1 on task("8")
746 4000 2908 2 on opp({"186",2,66})
…
! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB
! Best Branches Non-fixed W Branch decision
818 12000 2920 1 on task("184")
…
! -----------------------------------------------------------------------
! Search terminated by limit, 6 solutions found.
! Best objective : 826
! Number of branches : 709092
! Number of fails : 179648
! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert)
! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction)
! Search speed (br. / s) : 23625.4
! -----------------------------------------------------------------------
Final information
with solution status
and search statistics
© 2015 IBM Corporation26 ISMP 2015
Tools: warm start
 Objective: Start search from a known (possibly incomplete)
solution given by the user (warm start) in order to further
improve it or to help to guide the engine towards a first feasible
solution
 API: IloCP::setStartingPoint(IloSolution warmstart)
 Use cases:
– Restart an interrupted search with the current incumbent
– Start from an initial solution found by an available heuristic
– Goal programming for multi-objective problems
– When finding an initial solution is hard, solve an initial problem that
maximizes constraint satisfaction and start from its solution
– Successively solving similar problems (e.g. dynamic scheduling)
– Hierarchical problem solving (e.g. planning scheduling)→
© 2015 IBM Corporation27 ISMP 2015
Tools: warm start
 Satellite Control Network scheduling problem [1]
 n communication tasks for Earth orbiting satellites must be
scheduled on a total of 32 antennas spread across 13 ground-
based tracking stations
 In the instances, n ranges from to 400 to 1300
 Tasks have priorities: first maximize the number of scheduled
high priority tasks, then the number of scheduled low priority
tasks
[1] Kramer & al.: Understanding Performance Trade-offs in Algorithms for Solving Oversubscribed Scheduling.
© 2015 IBM Corporation28 ISMP 2015
Tools: warm start
© 2015 IBM Corporation29 ISMP 2015
Tools: conflict refiner
 Objective: identify a reason for an inconsistency by providing a
minimal infeasible subset of constraints for an infeasible model
 Use cases:
– Model debugging (errors in model)
– Data debugging (inconsistent data)
– The model and data are correct, but the associated data represents a
real-world conflict in the system being modeled
– You create an infeasible model to test properties of (or extract
information about) a similar model
© 2015 IBM Corporation30 ISMP 2015
Tools: conflict refiner
© 2015 IBM Corporation31 ISMP 2015
Tools: conflict refiner
!----------------------------------------------------------------------------
! Satisfiability problem - 2,980 variables, 851 constraints
! Problem found infeasible at the root node
! ----------------------------------------------------------------------------
...
! ----------------------------------------------------------------------------
! Conflict refining - 851 constraints
! ----------------------------------------------------------------------------
! Iteration Number of constraints
* 1 851
* 2 426
...
* 58 5
* 59 5
! Conflict refining terminated
! ----------------------------------------------------------------------------
! Conflict status : Terminated normally, conflict found
! Conflict size : 5 constraints
! Number of iterations : 59
! Total memory usage : 13.3 MB
! Conflict computation time : 0.51s
! ----------------------------------------------------------------------------
© 2015 IBM Corporation32 ISMP 2015
Tools: conflict refiner
 Conflict:
 There is not enough antennas to accommodate all 4 tasks on their
time-window on ground station “LION” (3 antennas):
– <134A,6,1232,19,1266>
– <144, 6,1238,31,1272>
– <146, 6,1228,22,1260>
– <146A,6,1230,22,1262>
1232 1266
134A
12721238
144
1228 1260
146
1230 1262
146A
© 2015 IBM Corporation33 ISMP 2015
Tools: failure explainer
 Objective: explains why the engine backtracks at a given search
node
 Uses the conflict refiner to find a minimal conflict in the
model+decisions at a backtracking node
 Currently only available in DepthFirst search mode and only for
integer variables
© 2015 IBM Corporation34 ISMP 2015
Tools: failure explainer
 Example
// Build model:
…
// Create CP object:
IloCP cp(model);
// Use only one thread:
cp.setParameter(IloCP::Workers, 1);
// Simple tree search:
cp.setParameter(IloCP::SearchType, IloCP::DepthFirst);
// Show failure numbers:
cp.setParameter(IloCP::LogSearchTags, IloCP::On);
// Explain particular failures:
cp.explainFailure(IloIntArray(env, 4, 3, 10, 11, 12));
// Solve and explain:
cp.solve();
© 2015 IBM Corporation35 ISMP 2015
Tools: failure explainer
- Failure #1
- Failure #2
- Failure #3
-- Possible conflict explaining failure
// Model constraints
element(store1, [location1, location2, location3, location4, location5]) == 1;
element(store2, [location1, location2, location3, location4, location5]) == 1;
element(store3, [location1, location2, location3, location4, location5]) == 1;
element(store4, [location1, location2, location3, location4, location5]) == 1;
element(store5, [location1, location2, location3, location4, location5]) == 1;
element(store6, [location1, location2, location3, location4, location5]) == 1;
element(store7, [location1, location2, location3, location4, location5]) == 1;
element(store8, [location1, location2, location3, location4, location5]) == 1;
count([store1, store2, store3, store4, store5, store6, store7, store8], 0) <= 3;
count([store1, store2, store3, store4, store5, store6, store7, store8], 3) <= 4;
// Branch constraints
location2 == 0;
location3 == 0;
location5 == 0;
© 2015 IBM Corporation36 ISMP 2015
Warnings
Warm start
The full picture
User model
Internal model
Model analysis Model presolve
OPL,C++,Java,.NET
Conflict
Model
Solution
CPO file
Search log
Failure explainer
Automatic Solve
Conflict refinerFail expl.
© 2015 IBM Corporation37 ISMP 2015
Warnings
Warm start
Questions ?
User model
Internal model
Model analysis Model presolve
OPL,C++,Java,.NET
Conflict
Model
Solution
CPO file
Search log
Failure explainer
Automatic Solve
Conflict refinerFail expl.

More Related Content

What's hot

ICAPS-2020 Industry Session
ICAPS-2020 Industry SessionICAPS-2020 Industry Session
ICAPS-2020 Industry SessionPhilippe Laborie
 
Solving Industrial Scheduling Problems with Constraint Programming
Solving Industrial Scheduling Problems with Constraint ProgrammingSolving Industrial Scheduling Problems with Constraint Programming
Solving Industrial Scheduling Problems with Constraint ProgrammingPhilippe Laborie
 
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...Philippe Laborie
 
Planning/Scheduling with CP Optimizer
Planning/Scheduling with CP OptimizerPlanning/Scheduling with CP Optimizer
Planning/Scheduling with CP OptimizerPhilippe Laborie
 
CP Optimizer: a generic optimization engine at the crossroad of AI and OR fo...
CP Optimizer: a generic optimization engine at the crossroad of AI and OR  fo...CP Optimizer: a generic optimization engine at the crossroad of AI and OR  fo...
CP Optimizer: a generic optimization engine at the crossroad of AI and OR fo...Philippe Laborie
 
CP Optimizer pour la planification et l'ordonnancement
CP Optimizer pour la planification et l'ordonnancementCP Optimizer pour la planification et l'ordonnancement
CP Optimizer pour la planification et l'ordonnancementPhilippe Laborie
 
New Results for the GEO-CAPE Observation Scheduling Problem
New Results for the GEO-CAPE Observation Scheduling ProblemNew Results for the GEO-CAPE Observation Scheduling Problem
New Results for the GEO-CAPE Observation Scheduling ProblemPhilippe Laborie
 
Industrial project and machine scheduling with Constraint Programming
Industrial project and machine scheduling with Constraint ProgrammingIndustrial project and machine scheduling with Constraint Programming
Industrial project and machine scheduling with Constraint ProgrammingPhilippe Laborie
 
Objective Landscapes for Constraint Programming
Objective Landscapes for Constraint ProgrammingObjective Landscapes for Constraint Programming
Objective Landscapes for Constraint ProgrammingPhilippe Laborie
 
Recent advances on large scheduling problems in CP Optimizer
Recent advances on large scheduling problems in CP OptimizerRecent advances on large scheduling problems in CP Optimizer
Recent advances on large scheduling problems in CP OptimizerPhilippe Laborie
 
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...Philippe Laborie
 
Innovations in CPLEX performance and solver capabilities
Innovations in CPLEX performance and solver capabilitiesInnovations in CPLEX performance and solver capabilities
Innovations in CPLEX performance and solver capabilitiesIBM Decision Optimization
 
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization Studio
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization StudioRecent MIP Performance Improvements in IBM ILOG CPLEX Optimization Studio
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization StudioIBM Decision Optimization
 
Optimization: from mathematical tools to real applications
Optimization: from mathematical tools to real applicationsOptimization: from mathematical tools to real applications
Optimization: from mathematical tools to real applicationsPhilippe Laborie
 
CPLEX 12.5.1 remote object - June 2013
CPLEX 12.5.1 remote object - June 2013CPLEX 12.5.1 remote object - June 2013
CPLEX 12.5.1 remote object - June 2013Roland Wunderling
 
Multiclass classification using Massively Threaded Multiprocessors
Multiclass classification using Massively Threaded MultiprocessorsMulticlass classification using Massively Threaded Multiprocessors
Multiclass classification using Massively Threaded Multiprocessorssergherrero
 

What's hot (18)

ICAPS-2020 Industry Session
ICAPS-2020 Industry SessionICAPS-2020 Industry Session
ICAPS-2020 Industry Session
 
Solving Industrial Scheduling Problems with Constraint Programming
Solving Industrial Scheduling Problems with Constraint ProgrammingSolving Industrial Scheduling Problems with Constraint Programming
Solving Industrial Scheduling Problems with Constraint Programming
 
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...
An Update on the Comparison of MIP, CP and Hybrid Approaches for Mixed Resour...
 
Planning/Scheduling with CP Optimizer
Planning/Scheduling with CP OptimizerPlanning/Scheduling with CP Optimizer
Planning/Scheduling with CP Optimizer
 
CP Optimizer: a generic optimization engine at the crossroad of AI and OR fo...
CP Optimizer: a generic optimization engine at the crossroad of AI and OR  fo...CP Optimizer: a generic optimization engine at the crossroad of AI and OR  fo...
CP Optimizer: a generic optimization engine at the crossroad of AI and OR fo...
 
CP Optimizer pour la planification et l'ordonnancement
CP Optimizer pour la planification et l'ordonnancementCP Optimizer pour la planification et l'ordonnancement
CP Optimizer pour la planification et l'ordonnancement
 
New Results for the GEO-CAPE Observation Scheduling Problem
New Results for the GEO-CAPE Observation Scheduling ProblemNew Results for the GEO-CAPE Observation Scheduling Problem
New Results for the GEO-CAPE Observation Scheduling Problem
 
Industrial project and machine scheduling with Constraint Programming
Industrial project and machine scheduling with Constraint ProgrammingIndustrial project and machine scheduling with Constraint Programming
Industrial project and machine scheduling with Constraint Programming
 
Objective Landscapes for Constraint Programming
Objective Landscapes for Constraint ProgrammingObjective Landscapes for Constraint Programming
Objective Landscapes for Constraint Programming
 
Recent advances on large scheduling problems in CP Optimizer
Recent advances on large scheduling problems in CP OptimizerRecent advances on large scheduling problems in CP Optimizer
Recent advances on large scheduling problems in CP Optimizer
 
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...
Self-Adapting Large Neighborhood Search: Application to single-mode schedulin...
 
Innovations in CPLEX performance and solver capabilities
Innovations in CPLEX performance and solver capabilitiesInnovations in CPLEX performance and solver capabilities
Innovations in CPLEX performance and solver capabilities
 
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization Studio
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization StudioRecent MIP Performance Improvements in IBM ILOG CPLEX Optimization Studio
Recent MIP Performance Improvements in IBM ILOG CPLEX Optimization Studio
 
Optimization: from mathematical tools to real applications
Optimization: from mathematical tools to real applicationsOptimization: from mathematical tools to real applications
Optimization: from mathematical tools to real applications
 
CPLEX 12.5.1 remote object - June 2013
CPLEX 12.5.1 remote object - June 2013CPLEX 12.5.1 remote object - June 2013
CPLEX 12.5.1 remote object - June 2013
 
Cp04invitedslide
Cp04invitedslideCp04invitedslide
Cp04invitedslide
 
Lessonslearnedeuro
LessonslearnedeuroLessonslearnedeuro
Lessonslearnedeuro
 
Multiclass classification using Massively Threaded Multiprocessors
Multiclass classification using Massively Threaded MultiprocessorsMulticlass classification using Massively Threaded Multiprocessors
Multiclass classification using Massively Threaded Multiprocessors
 

Similar to Accelerating the Development of Efficient CP Optimizer Models

“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...
“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...
“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...lccausp
 
Parallel Application Performance Prediction of Using Analysis Based Modeling
Parallel Application Performance Prediction of Using Analysis Based ModelingParallel Application Performance Prediction of Using Analysis Based Modeling
Parallel Application Performance Prediction of Using Analysis Based ModelingJason Liu
 
Advanced Modeling of Industrial Optimization Problems
Advanced Modeling of Industrial Optimization ProblemsAdvanced Modeling of Industrial Optimization Problems
Advanced Modeling of Industrial Optimization ProblemsAlkis Vazacopoulos
 
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Alkis Vazacopoulos
 
Prespective analytics with DOcplex and pandas
Prespective analytics with DOcplex and pandasPrespective analytics with DOcplex and pandas
Prespective analytics with DOcplex and pandasPyDataParis
 
Parallel Computing - Lec 6
Parallel Computing - Lec 6Parallel Computing - Lec 6
Parallel Computing - Lec 6Shah Zaib
 
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5Jeff Larkin
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationTatsuhiro Chiba
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...Spark Summit
 
Minimizing CPU Shortage Risks in Integrated Embedded Software
Minimizing CPU Shortage Risks in Integrated Embedded SoftwareMinimizing CPU Shortage Risks in Integrated Embedded Software
Minimizing CPU Shortage Risks in Integrated Embedded SoftwareLionel Briand
 
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...Robert Grossman
 
Cse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionCse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionShobha Kumar
 
Cs 568 Spring 10 Lecture 5 Estimation
Cs 568 Spring 10  Lecture 5 EstimationCs 568 Spring 10  Lecture 5 Estimation
Cs 568 Spring 10 Lecture 5 EstimationLawrence Bernstein
 
AnalyticOps - Chicago PAW 2016
AnalyticOps - Chicago PAW 2016AnalyticOps - Chicago PAW 2016
AnalyticOps - Chicago PAW 2016Robert Grossman
 

Similar to Accelerating the Development of Efficient CP Optimizer Models (20)

“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...
“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...
“Programação paralela híbrida com MPI e OpenMP – uma abordagem prática”. Edua...
 
Parallel Application Performance Prediction of Using Analysis Based Modeling
Parallel Application Performance Prediction of Using Analysis Based ModelingParallel Application Performance Prediction of Using Analysis Based Modeling
Parallel Application Performance Prediction of Using Analysis Based Modeling
 
Advanced Modeling of Industrial Optimization Problems
Advanced Modeling of Industrial Optimization ProblemsAdvanced Modeling of Industrial Optimization Problems
Advanced Modeling of Industrial Optimization Problems
 
AutoML lectures (ACDL 2019)
AutoML lectures (ACDL 2019)AutoML lectures (ACDL 2019)
AutoML lectures (ACDL 2019)
 
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
Building Cogeneration Planning Scheduling Systems using IBM ILOG ODME, CPLEX ...
 
Prespective analytics with DOcplex and pandas
Prespective analytics with DOcplex and pandasPrespective analytics with DOcplex and pandas
Prespective analytics with DOcplex and pandas
 
Parallel Computing - Lec 6
Parallel Computing - Lec 6Parallel Computing - Lec 6
Parallel Computing - Lec 6
 
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5
GTC16 - S6410 - Comparing OpenACC 2.5 and OpenMP 4.5
 
JVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark applicationJVM and OS Tuning for accelerating Spark application
JVM and OS Tuning for accelerating Spark application
 
Ch1
Ch1Ch1
Ch1
 
Ch1
Ch1Ch1
Ch1
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...
Ernest: Efficient Performance Prediction for Advanced Analytics on Apache Spa...
 
ProgrammingPrimerAndOOPS
ProgrammingPrimerAndOOPSProgrammingPrimerAndOOPS
ProgrammingPrimerAndOOPS
 
Minimizing CPU Shortage Risks in Integrated Embedded Software
Minimizing CPU Shortage Risks in Integrated Embedded SoftwareMinimizing CPU Shortage Risks in Integrated Embedded Software
Minimizing CPU Shortage Risks in Integrated Embedded Software
 
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
How to Lower the Cost of Deploying Analytics: An Introduction to the Portable...
 
Ial impl-imf-book-1-0
Ial impl-imf-book-1-0Ial impl-imf-book-1-0
Ial impl-imf-book-1-0
 
Cse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solutionCse viii-advanced-computer-architectures-06cs81-solution
Cse viii-advanced-computer-architectures-06cs81-solution
 
Cs 568 Spring 10 Lecture 5 Estimation
Cs 568 Spring 10  Lecture 5 EstimationCs 568 Spring 10  Lecture 5 Estimation
Cs 568 Spring 10 Lecture 5 Estimation
 
AnalyticOps - Chicago PAW 2016
AnalyticOps - Chicago PAW 2016AnalyticOps - Chicago PAW 2016
AnalyticOps - Chicago PAW 2016
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 

Accelerating the Development of Efficient CP Optimizer Models

  • 1. July 14, 2015 © 2015 IBM CorporationISMP 2015 Accelerating the Development of Efficient CP Optimizer Models Philippe Laborie IBM Analytics, Decision Optimization
  • 2. © 2015 IBM Corporation2 ISMP 2015 Outline  Overview of CP Optimizer – Model&Run paradigm – Model – Automatic search  Tools – I/O format – Model warnings – Model presolve – Search log – Warm start – Conflict refiner – Failure explainer
  • 3. © 2015 IBM Corporation3 ISMP 2015 Overview of CP Optimizer  A component of IBM ILOG CPLEX Optimization Studio  A Constraint Programming engine for combinatorial problems (including detailed scheduling problems)  Implements a Model & Run paradigm (like CPLEX) – Model: Concise yet expressive modeling language – Run: Powerful automatic search procedure Search algorithm is complete  Available through the following interfaces: – OPL – C++ (native interface) – Java, .NET (wrapping of the C++ engine)  Set of tools to support the delevopment of efficient models
  • 4. © 2015 IBM Corporation4 ISMP 2015 Overview of CP Optimizer User model OPL,C++,Java,.NET Model Solution Automatic Solve  Model & Run paradigm
  • 5. © 2015 IBM Corporation5 ISMP 2015 Model : integer variables Variables Expressions Constraints Variables are discrete integer Domains can be specified as a range [1..50] or as a set of values {1, 3, 5, 7, 9} dvar int x in 1..50 Expressions can be integer or floating-point, for example 0.37*y is allowed Arithmetic (+,-,*,/) and more complex operators (min, max, log, pow etc.) are supported Relational expressions can be treated as 0-1 expressions. e.g. x = (y < z) Special expressions: x == a[y] x == count(Y, 3) y == cond ? y : z Rich set of constraints Standard relational constraints (==, !=, <, >, <=, >=) Logical combinators (&&, ||, !, =>) Specialized (global) constraints allDifferent(X) allowedAssignments(X, tuples) forbiddenAssignments(X, tuples) pack(load, container, size) lexicographic(X,Y) inverse(X,Y)
  • 6. © 2015 IBM Corporation6 ISMP 2015 Model : interval variables  Extension of classical CSP with a new type of decision variable: optional interval variable : Domain(x) { } { [s,e) | s,e , s≤e }  Introduction of mathematical notions such as sequences and functions to capture temporal dimension of scheduling problems Absent interval Interval of integers
  • 7. © 2015 IBM Corporation7 ISMP 2015 Model : interval variables  In scheduling models, interval variables usually represent an interval of time during which some property hold (e.g. an activity executes) and whose end-points (start/end) are decision variables of the problem.  Examples: – A sub-project in a project, a task in a sub-project (Work Breakdown Structure) – A batch of operations – The setup of a tool on a machine – The moving of an item by a transportation device – The utilization interval of a resource  Idea of the model (and search) is to avoid the enumeration of start/end values (continuous time)
  • 8. © 2015 IBM Corporation8 ISMP 2015 Model : interval variables  An interval variable can be optional meaning that it is a decision to have it present or absent in a solution.  Examples: – Unperformed tasks and optional sub-projects – Alternative resources, modes or recipes for processing an order, each mode specifying a particular combination of operational resources – Operations that can be processed in different temporal modes (e.g. series or parallel) – Activities that can be performed in an alternative set of batches or shifts
  • 9. © 2015 IBM Corporation9 ISMP 2015 Model: example  Satellite Control Network scheduling problem [1]  n communication tasks for Earth orbiting satellites must be scheduled on a total of 32 antennas spread across 13 ground- based tracking stations  In the instances, n ranges from to 400 to 1300  Objective: maximize the number of scheduled tasks [1] Kramer & al.: Understanding Performance Trade-offs in Algorithms for Solving Oversubscribed Scheduling.
  • 10. © 2015 IBM Corporation10 ISMP 2015 Model: example Station1Station2Station3 Taski Oppi,1 Oppi,2 Oppi,3 Alternative assignments to stations  time windows (opportunities) Oppi,4 OR
  • 11. © 2015 IBM Corporation11 ISMP 2015 Model: example
  • 12. © 2015 IBM Corporation12 ISMP 2015 Automatic Search  Search algorithm is Complete  Core CP techniques used as a building block: – Tree search (Depth First) – Constraint propagation  But also: – Deterministic multicore parallelism – Model presolve – Algorithms portfolios – Machine learning – Restarting techniques – Large Neighborhood Search – No-good learning – Impact-based branching – Opportunistic probing – Dominance rules – LP-assisted heuristics – Randomization – Evolutionary algorithms
  • 13. © 2015 IBM Corporation13 ISMP 2015 Automatic Search  Search algorithm is Complete  Core CP techniques used as a building block: – Tree search (Depth First) – Constraint propagation  But also: – Deterministic multicore parallelism – Model presolve – Algorithms portfolios – Machine learning – Restarting techniques – Large Neighborhood Search – No-good learning – Impact-based branching – Opportunistic probing – Dominance rules – LP-assisted heuristics – Randomization – Evolutionary algorithms [2] P. Vilim's talk at this ISMP: “Failure-directed Search for Constraint-based Scheduling”
  • 14. © 2015 IBM Corporation14 ISMP 2015 Tools: I/O format  Objective: – Make it easier to understand the content of a model – Communicate a model to IBM support team regardless of the API used to build it (OPL, C++, Java, .NET)  Structure of a .cpo file – Human readable – Flat (no cycle, forall statements) – No user defined data types – Internal information such as CPO version or platform used – Includes search parameter values  Facilities – Export model before/instead of solve – Export model during solve (with current domains) – Import model instead of normal modeling
  • 15. © 2015 IBM Corporation15 ISMP 2015 Tools: I/O format // Interval-related variables: "task(1)" = intervalVar(optional); "task(1A)" = intervalVar(optional); … "opp({1,1,62})" = intervalVar(optional, start=62..intervalmax, end=0..99, size=25); "opp({1A,1,32})" = intervalVar(optional, start=32..intervalmax, end=0..69, size=33); … // Objective: maximize(sum([presenceOf("task(1)"), presenceOf("task(1A)"), …])); … // Constraints: alternative("task(1)", ["opp({1,1,62})"], 1); … pulse("opp({3,1,58})", 1) + pulse("opp({1,1,62})", 1) + … <= 4; … parameters { LogVerbosity = Quiet; }
  • 16. © 2015 IBM Corporation16 ISMP 2015 Tools: model warnings  Like a compiler, CP Optimizer can analyze the model and print some warnings – When there is something suspicious in the model – Regardless how the model was created (C++, OPL, …) – Including guilty part of the model in the cpo file format – Including source code line numbers (if known) – 3 levels of warnings, more than 50 types of warnings satellite.cpo:2995:1: Warning: Constraint 'alternative': there is only one alternative interval variable. alternative("task(1)", ["opp({1,1,62})"], 1) satellite.cpo:2996:1: Warning: Constraint 'alternative': there is only one alternative interval variable. alternative("task(1A)", ["opp({1A,1,32})"], 1)
  • 17. © 2015 IBM Corporation17 ISMP 2015 Tools: model presolve  Objective: automatically reformulate the model in order to speed-up its resolution  Works on an internal representation of the model  Different types of presolve: – Aggregation of basic constraints into global constraints – Constraint strengthening – Simplifications and factorizations
  • 18. © 2015 IBM Corporation18 ISMP 2015 Warnings Tools: model presolve User model Internal model Model analysis Model presolve OPL,C++,Java,.NET Model Solution CPO file Automatic Solve
  • 19. © 2015 IBM Corporation19 ISMP 2015 Tools: model presolve  Examples of presolve rules – Common sub-expression elimination – Aggregation of x!=y cliques as allDifferent([x,y,...]) – Precedence strengthening • If a and b cannot overlap and startsBeforeStart(a,b) • Then endsBeforeStart(a,b) – Precedence recognition • If endOf(a,-)  startOf(b,+) • Then endsBeforeStart(a,b) • Precedences are aggregated into a “time net” (STN) for faster and stronger propagation – 2-SAT clauses recognition • presenceOf(a)  presenceOf(b) • Such clauses are aggregated into a “logical net” for stronger propagation
  • 20. © 2015 IBM Corporation20 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- Problem characteristics
  • 21. © 2015 IBM Corporation21 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- Modified parameter values
  • 22. © 2015 IBM Corporation22 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- Root node information
  • 23. © 2015 IBM Corporation23 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- New incumbent solutions (time, worker)
  • 24. © 2015 IBM Corporation24 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- Periodical log with fail information, number of unfixed variables, current decision
  • 25. © 2015 IBM Corporation25 ISMP 2015 Tools: search log  Objective: understand what happens during the automatic search ! ----------------------------------------------------------------------- ! Maximization problem - 2980 variables, 853 constraints ! Workers = 2 ! TimeLimit = 30 ! Initial process time : 0.01s (0.00s extraction + 0.01s propagation) ! . Log search space : 4627.3 (before), 4627.3 (after) ! . Memory usage : 16.9 MB (before), 19.7 MB (after) ! Using parallel search with 2 workers. ! ----------------------------------------------------------------------- ! Best Branches Non-fixed W Branch decision * 746 3945 0.79s 1 - 746 4000 2924 1 on task("8") 746 4000 2908 2 on opp({"186",2,66}) … ! Time = 1.37s, Explored branches = 35832, Memory usage = 55.5 MB ! Best Branches Non-fixed W Branch decision 818 12000 2920 1 on task("184") … ! ----------------------------------------------------------------------- ! Search terminated by limit, 6 solutions found. ! Best objective : 826 ! Number of branches : 709092 ! Number of fails : 179648 ! Total memory usage : 54.5 MB (52.9 MB CP Optimizer + 1.6 MB Concert) ! Time spent in solve : 30.03s (30.01s engine + 0.01s extraction) ! Search speed (br. / s) : 23625.4 ! ----------------------------------------------------------------------- Final information with solution status and search statistics
  • 26. © 2015 IBM Corporation26 ISMP 2015 Tools: warm start  Objective: Start search from a known (possibly incomplete) solution given by the user (warm start) in order to further improve it or to help to guide the engine towards a first feasible solution  API: IloCP::setStartingPoint(IloSolution warmstart)  Use cases: – Restart an interrupted search with the current incumbent – Start from an initial solution found by an available heuristic – Goal programming for multi-objective problems – When finding an initial solution is hard, solve an initial problem that maximizes constraint satisfaction and start from its solution – Successively solving similar problems (e.g. dynamic scheduling) – Hierarchical problem solving (e.g. planning scheduling)→
  • 27. © 2015 IBM Corporation27 ISMP 2015 Tools: warm start  Satellite Control Network scheduling problem [1]  n communication tasks for Earth orbiting satellites must be scheduled on a total of 32 antennas spread across 13 ground- based tracking stations  In the instances, n ranges from to 400 to 1300  Tasks have priorities: first maximize the number of scheduled high priority tasks, then the number of scheduled low priority tasks [1] Kramer & al.: Understanding Performance Trade-offs in Algorithms for Solving Oversubscribed Scheduling.
  • 28. © 2015 IBM Corporation28 ISMP 2015 Tools: warm start
  • 29. © 2015 IBM Corporation29 ISMP 2015 Tools: conflict refiner  Objective: identify a reason for an inconsistency by providing a minimal infeasible subset of constraints for an infeasible model  Use cases: – Model debugging (errors in model) – Data debugging (inconsistent data) – The model and data are correct, but the associated data represents a real-world conflict in the system being modeled – You create an infeasible model to test properties of (or extract information about) a similar model
  • 30. © 2015 IBM Corporation30 ISMP 2015 Tools: conflict refiner
  • 31. © 2015 IBM Corporation31 ISMP 2015 Tools: conflict refiner !---------------------------------------------------------------------------- ! Satisfiability problem - 2,980 variables, 851 constraints ! Problem found infeasible at the root node ! ---------------------------------------------------------------------------- ... ! ---------------------------------------------------------------------------- ! Conflict refining - 851 constraints ! ---------------------------------------------------------------------------- ! Iteration Number of constraints * 1 851 * 2 426 ... * 58 5 * 59 5 ! Conflict refining terminated ! ---------------------------------------------------------------------------- ! Conflict status : Terminated normally, conflict found ! Conflict size : 5 constraints ! Number of iterations : 59 ! Total memory usage : 13.3 MB ! Conflict computation time : 0.51s ! ----------------------------------------------------------------------------
  • 32. © 2015 IBM Corporation32 ISMP 2015 Tools: conflict refiner  Conflict:  There is not enough antennas to accommodate all 4 tasks on their time-window on ground station “LION” (3 antennas): – <134A,6,1232,19,1266> – <144, 6,1238,31,1272> – <146, 6,1228,22,1260> – <146A,6,1230,22,1262> 1232 1266 134A 12721238 144 1228 1260 146 1230 1262 146A
  • 33. © 2015 IBM Corporation33 ISMP 2015 Tools: failure explainer  Objective: explains why the engine backtracks at a given search node  Uses the conflict refiner to find a minimal conflict in the model+decisions at a backtracking node  Currently only available in DepthFirst search mode and only for integer variables
  • 34. © 2015 IBM Corporation34 ISMP 2015 Tools: failure explainer  Example // Build model: … // Create CP object: IloCP cp(model); // Use only one thread: cp.setParameter(IloCP::Workers, 1); // Simple tree search: cp.setParameter(IloCP::SearchType, IloCP::DepthFirst); // Show failure numbers: cp.setParameter(IloCP::LogSearchTags, IloCP::On); // Explain particular failures: cp.explainFailure(IloIntArray(env, 4, 3, 10, 11, 12)); // Solve and explain: cp.solve();
  • 35. © 2015 IBM Corporation35 ISMP 2015 Tools: failure explainer - Failure #1 - Failure #2 - Failure #3 -- Possible conflict explaining failure // Model constraints element(store1, [location1, location2, location3, location4, location5]) == 1; element(store2, [location1, location2, location3, location4, location5]) == 1; element(store3, [location1, location2, location3, location4, location5]) == 1; element(store4, [location1, location2, location3, location4, location5]) == 1; element(store5, [location1, location2, location3, location4, location5]) == 1; element(store6, [location1, location2, location3, location4, location5]) == 1; element(store7, [location1, location2, location3, location4, location5]) == 1; element(store8, [location1, location2, location3, location4, location5]) == 1; count([store1, store2, store3, store4, store5, store6, store7, store8], 0) <= 3; count([store1, store2, store3, store4, store5, store6, store7, store8], 3) <= 4; // Branch constraints location2 == 0; location3 == 0; location5 == 0;
  • 36. © 2015 IBM Corporation36 ISMP 2015 Warnings Warm start The full picture User model Internal model Model analysis Model presolve OPL,C++,Java,.NET Conflict Model Solution CPO file Search log Failure explainer Automatic Solve Conflict refinerFail expl.
  • 37. © 2015 IBM Corporation37 ISMP 2015 Warnings Warm start Questions ? User model Internal model Model analysis Model presolve OPL,C++,Java,.NET Conflict Model Solution CPO file Search log Failure explainer Automatic Solve Conflict refinerFail expl.