Skip to content

Codebase for GECCO 2019 paper: Efficient Real-Time Hypervolume Estimation with Monotonically Reducing Error

License

Notifications You must be signed in to change notification settings

fieldsend/hypervolume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hypervolume

Repository holds the code to repoduce the experiments detailed in:

Jonathan E. Fieldsend. 2019. Efficient Real-Time Hypervolume Estimation with Monotonically Reducing Error. In Genetic and Evolutionary Computation Conference (GECCO ’19), July 13–17, 2019, Prague, Czech Republic. ACM, New York, NY, USA

Institutional Repository: http://hdl.handle.net/10871/36825

Publisher DOI: https://doi.org/10.1145/3321707.3321730

The Main.java holds some of the orginal code used in the experiments in the paper, however this has now been deprecated as the codebase has been refactored, and the hypervolume estimator functionality has been pulled into seperate objects to reduce code duplication, and provide objects directly usable in other projects. As such the entry point for example usage is now ExampleGECCO.java

After compliation, running the class without arguments will detail what is expected. (Note the DLTZ2 cost function is used to illustrate the hypervolume estimators in this code.)

>> java hypervolume.ExampleGECCO 
Not enough input arguments, six arguments expected:
 Hypervolume estimate update type (B, I, S OR D),
 Number of samples compared per new estimate (B, I and S), or max nanoseconds for new samples (D_)
 number of iterations (minimum 0 applied),
 number of objectives (minumum 2 applied) and
 seed
 instrument? (true or false), if true hypervolume and timings are written to a file or each iteration

Some example runs would be

java hypervolume.ExampleGECCO B 5000 100000 3 0 true

Which would use the basic MC sampling approach to hypervolume estimation, using 5000 samples per iteration of the (1+1)-ES optimiser for 100000 generations on the 3-objective problem varient. The seed used is 0 for the evolutionary optimiser, and outputs are written to a file.

java hypervolume.ExampleGECCO D 100000 50000 8 0 true

Which would use the dynamic MC sampling approach to hypervolume estimation, stopping hypervolume improvement estimatation at each iteration once 100000 nanonseconds has been dedicated to the estimation update. The (1+1)-ES optimiser will be run for 50000 generations on the 8-objective problem varient. The seed used is 0 for the evolutionary optimiser, and outputs are written to a file.

For more general use, the classs required are the implementors of the HypervolumeEstimator interface. In terms of computational efficiency, the real choice is between the EfficientIncrementalHypervolumeEstimator class (which limits the number of MC samples to use to refine the estimate each generation) and DynamicHypervolumeEstimator (which has a ceiling on time spent after previously non-dominated MC samples are re-checked if the estimated Pareto set has changed.)

Currently, and matching the published work, the non-dominated set is stored in a Dominance Decision Tree

Oliver Schütze. 2003. A New Data Structure for the Nondominance Problem in Multi-objective Optimization. In International Conference on Evolutionary Multi-Criterion Optimization, EMO 2003 Lecture Notes in Computer Science (LNCS), Vol. 2632. Springer, 509–518.

However other data structure implementations could be swapped in given the interface used.

About

Codebase for GECCO 2019 paper: Efficient Real-Time Hypervolume Estimation with Monotonically Reducing Error

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages