Repository navigation
fix(como_cmaes): default reference point from the known nadir, and report kernels when none dominates it - #812
Open
sean-from-japan wants to merge 2 commits into
Conversation
COMO-CMA-ES approximates the optimal p-distribution of the hypervolume, so its reference point should be fixed just beyond the nadir. The far default [R, R] gives dominated kernels on a bounded objective a zero UHVI distance, and most kernels stall on f1 = 0 on ZDT1-3 (anyoptimization#811). When the problem knows its Pareto front, use nadir + 0.1 * (nadir - ideal). Otherwise keep the far fallback, and document it.
If no kernel dominates the reference point, pareto_front_cut is empty and the population was never updated, so the result was the initial random sample. On ZDT4 with reference point [1.1, 1.1] the kernels reach f2 of about 4 while the returned front still had f2 of about 100. Fall back to the kernels' incumbents in that case.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #811
Changes
reference_pointisNoneand the problem knows its Pareto front, the reference point is nownadir + 0.1 * (nadir - ideal). COMO-CMA-ES approximates the optimal p-distribution of the hypervolume, so its reference point should be fixed just beyond the nadir, as in the authors' bbob-biobj benchmark. If the front is unknown, or loading it raisesOSError(for example a failed download), the current far fallback is kept._advancenow reports the kernels' incumbents. Before,self.popwas never updated in that case and the result was the initial random sample. This showed up on ZDT4 once the reference point was near the nadir.reference_pointdocstring.Results
Default arguments, 300 generations, seeds 1–3:
Problems without a known Pareto front, such as bbob-biobj through cocoex, take the unchanged fallback, so the bbob-biobj behaviour measured in 527ec67 does not change.
Testing
pytest tests/algorithms/test_como_cmaes.py tests/algorithms/test_mocmaes.py: 11 passed.test_como_cmaes_default_reference_point_uses_known_nadirandtest_como_cmaes_default_does_not_stall_on_zdt1fail. Without the second change,test_como_cmaes_reports_kernels_when_none_dominates_reference_pointfails.ruff checkorruff format --checkfindings.Note
problem.pareto_front()downloads the front for some problems, and no other pymoo algorithm reads the known front during a run. If you prefer to avoid that, I can reduce this PR to the reporting fix and the documentation.