SciML/BlackBoxOptim.jl

Black-box optimization for Julia

What it solves

BlackBoxOptim.jl provides a way to find the global minimum or maximum of a function without needing to know its derivative (gradient). This is essential for "black-box" problems where the function is too complex, non-differentiable, or unknown to allow for traditional gradient-based optimization.

How it works

The package implements a variety of (meta-)heuristic and stochastic algorithms that explore the search space to find optimal solutions. It supports both single-objective optimization (finding one best value) and multi-objective optimization (finding a set of optimal trade-offs, known as the Pareto frontier).

Key algorithmic families included are:

  • Differential Evolution (DE): Robust optimizers that scale well to high dimensions.
  • Natural Evolution Strategies (NES): Stochastic search methods.
  • Direct Search: Including coordinate search and probabilistic descent.
  • BorgMOEA: A specialized algorithm for multi-objective problems.

Who it’s for

It is designed for researchers and developers using Julia who need to optimize complex functions that are not differentiable or where traditional deterministic algorithms fail.

Highlights

  • No Gradients Required: Works on any function that can be evaluated.
  • Multi-Objective Support: Can optimize multiple competing goals simultaneously using the BorgMOEA algorithm.
  • Parallel Evaluation: Supports multithreaded and parallel execution to speed up the optimization of computationally expensive functions.
  • Flexible Configuration: Allows users to specify search ranges, initial candidate points, and time or evaluation budgets.

Related

  • Project
  • Project
  • Project
  • Project
  • Project