ParetoEnsembles.jl
Pareto Optimal Ensemble Techniques for multiobjective optimization in Julia.
ParetoEnsembles.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, ParetoEnsembles 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/ParetoEnsembles.jl")Quick Start
ParetoEnsembles requires four user-defined callback functions:
using ParetoEnsembles
# 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)Parallel Execution
Run multiple chains in parallel for better Pareto front coverage (requires julia -t N):
starts = [rand(10) for _ in 1:4] # one starting point per chain
(EC, PC, RA) = estimate_ensemble_parallel(
objective_function,
neighbor_function,
acceptance_probability_function,
cooling_function,
starts;
rank_cutoff = 4.0,
maximum_number_of_iterations = 40,
show_trace = false
)References
- Song S, Chakrabarti A, and J. Varner (2010). Identifying ensembles of signal transduction models using Pareto Optimal Ensemble Techniques (ParetoEnsembles). Biotechnology Journal. DOI: 10.1002/biot.201000059
- Bassen D, Vilkhovoy M, Minot M, Butcher J and J. Varner (2016). JuParetoEnsembles: A Constrained Multiobjective Optimization Approach to Estimate Biochemical Model Ensembles in the Julia Programming Language. bioRxiv. DOI: 10.1101/056044