Skip to content

varnerlab/ParetoEnsembles.jl

Repository files navigation

ParetoEnsembles.jl - Pareto Optimal Ensemble Techniques

CI License: MIT

ParetoEnsembles.jl is a Julia package that implements the Pareto Optimal Ensemble Techniques (POETs) method for multiobjective optimization using simulated annealing with Pareto ranking.

References

Installation

using Pkg
Pkg.add(url="https://github.com/varnerlab/ParetoEnsembles.jl")

Usage

using ParetoEnsembles

ParetoEnsembles requires four user-defined callback functions:

Function Signature Purpose
objective_function (parameter_array) -> error_matrix Evaluates fitness (returns n_objectives × 1 array)
neighbor_function (parameter_array) -> new_parameter_array Generates a candidate solution from the current one
acceptance_probability_function (rank_array, temperature) -> Float64 Computes probability of accepting a new solution
cooling_function (temperature) -> new_temperature Decreases temperature for the annealing schedule

Running the optimizer

(error_cache, parameter_cache, rank_array) = estimate_ensemble(
    objective_function,
    neighbor_function,
    acceptance_probability_function,
    cooling_function,
    initial_parameter_array;
    rank_cutoff=4.0,
    maximum_number_of_iterations=20,
    temperature_min=0.0001,
    show_trace=true
)

Returns:

  • error_cache - objective values for retained solutions (n_objectives × n_solutions)
  • parameter_cache - parameter vectors for retained solutions (n_params × n_solutions)
  • rank_array - Pareto rank of each retained solution (0 = Pareto optimal)

Pareto ranking

ranks = rank_function(error_cache)

Computes the Pareto rank for each column in the error cache. A rank of 0 means the solution is on the Pareto front (not dominated by any other solution).

Examples

See the sample/biochemical directory for a complete example of biochemical model parameter estimation from four conflicting training data sets. The driver is run_biochemical_test.jl, with callback functions in hcmem_lib.jl.

Test problems (Binh-Korn and Fonseca-Fleming benchmarks) are in the test/ directory.

Testing

using Pkg
Pkg.test("ParetoEnsembles")

About

POETs implementation in the Julia programming language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages