paradiseo/moeo/tutorial/Lesson4
Eremey Valetov c1a44fd2a6 Add tutorial READMEs and fix tutorial return codes
Add README.md files for moeo/tutorial/Lesson{1-4}, smp/tutorial/Lesson{1-4},
and mo/tutorial/Lesson9 — these tutorials had no documentation.

Fix return 1 → return 0 in 28 tutorial main() functions across mo/ and
smp/ that unconditionally returned failure status.
2026-02-28 19:26:10 -05:00
..
CMakeLists.txt Migration from SVN 2012-08-30 11:30:11 +02:00
FlowShopDMLS.cpp Update dead URLs in license headers and build config 2026-02-28 19:26:10 -05:00
FlowShopDMLS.param Migration from SVN 2012-08-30 11:30:11 +02:00
README.md Add tutorial READMEs and fix tutorial return codes 2026-02-28 19:26:10 -05:00

Dominance-based multi-objective local search (DMLS)

Same flow-shop problem as Lessons 2-3, but solved with local search instead of an evolutionary algorithm. This combines ParadisEO-MO local search components with the MOEO multi-objective framework.

Running

From the build/moeo/tutorial/Lesson4 directory:

./FlowShopDMLS @FlowShopDMLS.param

How it works

The program uses moShiftNeighbor and moOrderNeighborhood from ParadisEO-MO, with moeoFullEvalByCopy to adapt the full solution evaluator for neighbor evaluation:

typedef moShiftNeighbor<FlowShop, FlowShopObjectiveVector> Neighbor;

moOrderNeighborhood<Neighbor> neighborhood((nhSize-1) * (nhSize-1));
moeoFullEvalByCopy<Neighbor> moEval(eval);

At each iteration, DMLS explores all non-dominated solutions in the archive via local search moves and updates the archive with any improving neighbors:

moeoFirstImprovingNeighborhoodExplorer<Neighbor> explor(neighborhood, moEval);
moeoUnifiedDominanceBasedLS<Neighbor> algo(checkpoint, eval, arch, explor, select);