Class Optimizer

java.lang.Object
org.episteme.core.mathematics.optimization.Optimizer

public class Optimizer extends Object
Optimization algorithms for finding minima/maxima.

CPU-optimized implementations. For large-scale problems, use GPU backend.

*

Reference:
Nocedal, J., invalid input: '&' Wright, S. J. (2006). Numerical Optimization. Springer.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • Optimizer

      public Optimizer()
  • Method Details

    • gradientDescent

      public static Real gradientDescent(Function<Real,Real> f, Function<Real,Real> gradient, Real initialGuess, Real learningRate, Real tolerance, int maxIterations)
      Gradient Descent: x_{n+1} = x_n - α∇f(x_n)

      Finds local minimum iteratively.

      Parameters:
      f - objective function (to minimize)
      gradient - gradient of f
      initialGuess - starting point
      learningRate - step size α
      tolerance - convergence criterion
      maxIterations - max iterations
      Returns:
      approximate minimum
    • newtonOptimization

      public static Real newtonOptimization(Function<Real,Real> f, Function<Real,Real> gradient, Function<Real,Real> hessian, Real initialGuess, Real tolerance, int maxIterations)
      Newton's method for optimization: x_{n+1} = x_n - H^{-1}∇f(x_n)

      Uses second derivatives (Hessian). Quadratic convergence near minimum.

    • goldenSectionSearch

      public static Real goldenSectionSearch(Function<Real,Real> f, Real a, Real b, Real tolerance)
      Golden Section Search for 1D unimodal functions.

      Bracket minimum without derivatives. O(log n) convergence.

    • simulatedAnnealing

      public static Real simulatedAnnealing(Function<Real,Real> f, Real initialGuess, Real temperature, Real coolingRate, int maxIterations)
      Simulated Annealing - global optimization.

      Probabilistic method that can escape local minima.

    • nelderMead

      public static Real nelderMead(Function<Real,Real> f, Real[] initialSimplex, Real tolerance, int maxIterations)
      Nelder-Mead Simplex algorithm for multidimensional optimization.

      Derivative-free method. Good for noisy functions. Note: This is 1D version; full implementation needs vector support.

    • linearProgramming

      public static Real[] linearProgramming(Real[] c, Real[][] A, Real[] b)
      Linear programming solver using Simplex method.

      Maximizes c·x subject to Ax ≤ b, x ≥ 0.

      Parameters:
      c - objective coefficients
      A - constraint matrix
      b - constraint bounds
      Returns:
      optimal solution vector
    • nelderMead

      public static Real[] nelderMead(Function<Real[],Real> f, Real[][] initialSimplex, Real tolerance, int maxIterations)
      Nelder-Mead Simplex algorithm for multidimensional optimization.

      Derivative-free method. Good for noisy functions.

      Parameters:
      f - objective function (Real[] -> Real)
      initialSimplex - initial simplex vertices (n+1 vertices for n dimensions)
      tolerance - convergence tolerance
      maxIterations - maximum iterations
      Returns:
      optimal point