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