POETs.jl
Pareto Optimal Ensemble Techniques for multiobjective optimization in Julia.
POETs.jl implements a simulated annealing algorithm combined with Pareto ranking to generate ensembles of near-optimal solutions for multiobjective optimization problems. Rather than returning a single "best" solution, POETs produces an archive of solutions that approximate the Pareto front — the set of solutions where no objective can be improved without worsening another.
Installation
using Pkg
Pkg.add(url="https://github.com/varnerlab/POETs.jl")Quick Start
POETs requires four user-defined callback functions:
using POETs
# Define your problem-specific functions:
# objective_function(params) -> n_objectives × 1 error array
# neighbor_function(params) -> perturbed parameter vector
# acceptance_probability_function(ranks, temp) -> Float64
# cooling_function(temp) -> new_temperature
initial_params = rand(10) # starting point
(error_cache, parameter_cache, rank_array) = estimate_ensemble(
objective_function,
neighbor_function,
acceptance_probability_function,
cooling_function,
initial_params;
rank_cutoff = 4.0,
maximum_number_of_iterations = 40,
show_trace = false
)
# Find Pareto-optimal solutions
optimal_idx = findall(rank_array .== 0)References
- Song S, Chakrabarti A, and J. Varner (2010). Identifying ensembles of signal transduction models using Pareto Optimal Ensemble Techniques (POETs). Biotechnology Journal. DOI: 10.1002/biot.201000059
- Bassen D, Vilkhovoy M, Minot M, Butcher J and J. Varner (2016). JuPOETs: A Constrained Multiobjective Optimization Approach to Estimate Biochemical Model Ensembles in the Julia Programming Language. bioRxiv. DOI: 10.1101/056044