Hi Alex,
Thanks for your answer. I already try to warm start from a solution I build and it gives good results. However I would like to try the method described in the following paper :
Khichane, Madjid, Patrick Albert, et Christine Solnon. « Strong Combination of Ant Colony Optimization with Constraint Programming Optimization ». In Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems, édité par Andrea Lodi, Michela Milano, et Paolo Toth, 6140:232‑45. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer Berlin Heidelberg, 2010.
https://doi.org/10.1007/978-3-642-13520-0_26.The idea is to combine Ant Colony Optimization (ACO) and CPO. In the article it is applied on optimization problem where decision variables takes integer values, and hence authors use the class IloCustomIntValueEval (or something equivalent in another programming language). I would like to apply it to scheduling problems, where some decision variables are sequence variables.
Hence the idea is to execute an ACO algorithm during a given duration. Then the ACO algorithm gives me a 'pheromone matrix'. This pheromone matrix gives a score for scheduling interval i just after interval j for each pair of interval (i,j), which will help the CPO solver. For example with 4 interval, I have results like scheduling i4 just after i1 has a score of 0.1, scheduling i3 just after i1 has a score of 0.5 and scheduling i2 just after i1 has a score of 0.2.
Now, what I would like to do is : during the search phase if i1 is scheduled, and we must choose in the sequence variable the next interval to schedule, first we choose i3 (because it has the highest score). Then we propagate and we build an entire sequence, and if it fails during the search, after the backtracking, we then choose to schedule i2 just after i1 (because it has the second highest score), and so on...
Regards
------------------------------
Lucas Groleaz
------------------------------
Original Message:
Sent: Wed May 13, 2020 01:29 PM
From: ALEX FLEISCHER
Subject: CPOptimizer specifying value ordering for sequence variables in search phase
Hi,
let me quote documentation
<main role="main">Sequence variable search phase
</main><main role="main">A search phase on sequence variables works on a unique sequence variable or on an array of sequence variables. During this phase CP Optimizer fixes the value of the specified sequence variable(s): Each sequence variable will be assigned a totally ordered sequence of present interval variables. Note that this search phase also fixes the presence statuses of the intervals involved in the sequence variables. This phase does not fix the start and end values of interval variables.
</main>It is recommended to use this search phase only if the possible range for start and end values of all interval variables is limited (for example by some known horizon that limits their maximal values).
If you have some hint about the right sequence why don't you build a solution and warm start from that solution ?
regards
​
------------------------------
ALEX FLEISCHER
------------------------------