Details
-
Feature Request
-
Resolution: Unresolved
-
Major
-
None
-
None
-
2021 Week 22-24 (from May 31), 2021 Week 43-45 (from Oct 25), 2021 Week 49-51 (from Dec 6th), 2022 Week 02-04 (from Jan 10), 2022 Week 05-07 (from Jan 31)
-
5
-
Undefined
-
NEW
-
NEW
Description
Create a new solver phase that can loop a list of other phases.
<solver> <termination>timeSpend=10</termination> <loopPhase> <constructionHeuristic/> <localSearch> <termination>unimprovedStep=100</> </localSearch> <ruin> </loopPhase> </solver>
Requirements:
- The loopPhase has a termination (just like any other phase) which controls when it stops looping.
- That termination is optional, which means it loops forever until the global termination ends.
- There can be multiple phases in the loopPhase => The LoopPhaseConfig has a phaseConfigList just like SolverConfig.
- There can be phases before or after the loopPhase.
- If the loopPhase has no termination, any phases after it will never run, just like with localSearch without any termination and a phase after it. (maybe we should fail-fast on both those cases?)
- Take special care for the phaseIndex shown in the log messages. both in the "phase ended" and "solver ended" message.
- Until now, the phaseIndex was set at the solver creation time, but I suspect this will now have to be more dynamic: to be set at the start of the phase.
- For example if a solver has "CH, Loop (CH, LS, Ruin), LS" and the loop loops 4 times then CH is phase Index 0 and the last LS is phaseIndex 13. If the loop only loops once, the last LS is phaseIndex 4.
- Until now, the "solver ended" message showed "phase total (2)" even if there was only time enough to run the CH (no time to run a LS). That's a bug I 'd argue. The total phases is then 1 (even though more were configured).