Originally posted by: Petr Vilím
Hello,
first of all, you probably don't improve the performance for simple RCPSP using search phases. Search phases help when you know some structure of the problem, then you can advice CP Optimizer to decide first some subset of intervals before assigning another subset(s). In case of pure RCPSP it is not evident what interval variables should be decided first.
Anyway, here are few links to the documentation of search phases. Search phases in C++:
http://www.ibm.com/support/knowledgecenter/SSSA5P_12.6.2/ilog.odms.cpo.help/refcppcpoptimizer/html/classes/IloSearchPhase.html
Search phases on integer variables (not interval variables) can specify exactly what variable should be assigned next and what value should be used. It is done using "selectors" and "evaluators". It is probably best described in cpo file format documentation:
http://www.ibm.com/support/knowledgecenter/SSSA5P_12.6.2/ilog.odms.cpo.help/CP_Optimizer/reffileformatcpo/search/020_Selectors_and_evaluators.html
For interval variables, there's nothing like selectors and evalutors. Search phase simply allows to group interval variables.
For search phase on interval variables in Java, see also provided example SchedStochasticJobShop.java in directory cpoptimizer/examples/src/java.
In C++ the search can be programmed using "goals", they provide the maximum functionality to guide the search. However it is quite laborious and again, unless you have some special knowledge of your problem it will be hard to beat the default search.
Petr
#CPOptimizer#DecisionOptimization