GlobalOptimization
Currently, GlobalOptimization provides Particle Swarm Optimization (PSO) and several variants of Differential Evolution (DE) as the only global optimization algorithms supported. Monotonic Basin Hopping (MBH) is in the works.
Simple PSO Example
Let's use PSO to find the minimum to the non-convex Ackley function given by
$J(\mathbf{x}) = -a \exp\left(-b\sqrt{\frac{1}{d}\sum_{i=1}^d x_i^2}\right) - \exp\left(\frac{1}{d}\sum_{i=1}^d \cos (cx_i)\right) + a + \exp(1)$
where $a = 20$, $b = 0.2$, $c = 2\pi$, and d
is the length of the decision vector $\mathbf{x}$, subject to the constraint that $-32.768 \leq x_i \leq 32.768 \hspace{1mm} \forall \hspace{1mm} x_i \hspace{1mm} \in \hspace{1mm} \mathbf{x}$.
To begin, we'll first define an Ackley function in Julia as follows:
function ackley(x)
a = 20
b = 0.2
c = 2*π
d = length(x)
sum1 = 0.0
sum2 = 0.0
for val in x
sum1 += val^2
sum2 += cos(c*val)
end
return -a*exp(-b*sqrt(sum1/d)) - exp(sum2/d) + a + exp(1)
end
Next, we'll define the OptimizationProblem
by providing its constructor our new ackley
function and bounds that define the search space. Then, we'll instantiate a StaticPSO
(an implementation of the PSO algorithm that does not use parallel computing to evaluate the cost function) to perform the optimization!
using GlobalOptimization
N = 10 # The number of decision variables
LB = [-32.768 for _ in 1:10] # The lower bounds
UB = [ 32.768 for _ in 1:10] # The upper bounds
# Construct the optimization problem
op = OptimizationProblem(ackley, LB, UB)
# Instantiate PSO instance
pso = PSO(op)
# Perform optimization with pso
res = optimize!(pso)
Finally, we can get the final optimal decision vector with
best_candidate = res.xbest
10-element Vector{Float64}:
-0.004794461450811138
-0.009809314826251631
-0.01390080564464434
0.024043667771579152
0.020167102136008832
-0.01533729293528703
-0.03378122685354149
-0.06504160643637785
-0.01825236533513172
0.10946831076903155
and the fitness of the final optimal decision vector with
best_candidate_fitness = res.fbest
0.2730570403111945
Index
GlobalOptimization.AbstractAdaptationStrategy
GlobalOptimization.AbstractAlgorithmSpecificOptions
GlobalOptimization.AbstractBinomialCrossoverParameters
GlobalOptimization.AbstractCandidate
GlobalOptimization.AbstractCrossoverParameters
GlobalOptimization.AbstractCrossoverTransformation
GlobalOptimization.AbstractEvaluator
GlobalOptimization.AbstractFunctionEvaluationMethod
GlobalOptimization.AbstractMBHDistribution
GlobalOptimization.AbstractMutationOperator
GlobalOptimization.AbstractMutationParameters
GlobalOptimization.AbstractNonlinearEquationProblem
GlobalOptimization.AbstractOptimizationProblem
GlobalOptimization.AbstractOptimizer
GlobalOptimization.AbstractOptimizerCache
GlobalOptimization.AbstractOptions
GlobalOptimization.AbstractPopulation
GlobalOptimization.AbstractPopulationBasedOptimizer
GlobalOptimization.AbstractPopulationBasedOptimizerCache
GlobalOptimization.AbstractProblem
GlobalOptimization.AbstractRandomNeighborhoodVelocityUpdateScheme
GlobalOptimization.AbstractSelector
GlobalOptimization.AbstractVelocityUpdateScheme
GlobalOptimization.AsyncEvaluator
GlobalOptimization.BatchEvaluator
GlobalOptimization.BatchJobEvaluator
GlobalOptimization.Best1
GlobalOptimization.Best2
GlobalOptimization.BinomialCrossoverParameters
GlobalOptimization.BinomialCrossoverParameters
GlobalOptimization.BinomialCrossoverParameters
GlobalOptimization.CSRNVelocityUpdate
GlobalOptimization.CSRNVelocityUpdate
GlobalOptimization.ContinuousRectangularSearchSpace
GlobalOptimization.ContinuousRectangularSearchSpace
GlobalOptimization.CovarianceTransformation
GlobalOptimization.CovarianceTransformation
GlobalOptimization.CurrentToBest1
GlobalOptimization.CurrentToBest2
GlobalOptimization.CurrentToRand1
GlobalOptimization.CurrentToRand2
GlobalOptimization.DE
GlobalOptimization.DE
GlobalOptimization.DEBasePopulation
GlobalOptimization.DEOptions
GlobalOptimization.DEPopulation
GlobalOptimization.DEPopulation
GlobalOptimization.FeasibilityHandlingEvaluator
GlobalOptimization.FixedDimensionSearchSpace
GlobalOptimization.GeneralOptions
GlobalOptimization.GlobalOptimizationTrace
GlobalOptimization.LBFGSLocalSearch
GlobalOptimization.LBFGSLocalSearch
GlobalOptimization.LatinHypercubeInitialization
GlobalOptimization.LatinHypercubeInitialization
GlobalOptimization.LocalStochasticSearch
GlobalOptimization.LocalStochasticSearch
GlobalOptimization.MATLABVelocityUpdate
GlobalOptimization.MATLABVelocityUpdate
GlobalOptimization.MBH
GlobalOptimization.MBH
GlobalOptimization.MBHAdaptiveDistribution
GlobalOptimization.MBHAdaptiveDistribution
GlobalOptimization.MBHOptions
GlobalOptimization.MBHStaticDistribution
GlobalOptimization.MBHStaticDistribution
GlobalOptimization.MBHStepMemory
GlobalOptimization.MCH
GlobalOptimization.MCH
GlobalOptimization.MinimalOptimizerCache
GlobalOptimization.MinimalPopulationBasedOptimizerCache
GlobalOptimization.MutationParameters
GlobalOptimization.MutationParameters
GlobalOptimization.MutationParameters
GlobalOptimization.NoAdaptation
GlobalOptimization.NoTransformation
GlobalOptimization.NonlinearLeastSquaresProblem
GlobalOptimization.NonlinearLeastSquaresProblem
GlobalOptimization.NonlinearLeastSquaresProblem
GlobalOptimization.NonlinearLeastSquaresProblem
GlobalOptimization.NonlinearProblem
GlobalOptimization.NonlinearProblem
GlobalOptimization.NonlinearProblem
GlobalOptimization.NonlinearProblem
GlobalOptimization.NonlinearSolveLocalSearch
GlobalOptimization.NonlinearSolveLocalSearch
GlobalOptimization.OptimizationProblem
GlobalOptimization.OptimizationProblem
GlobalOptimization.OptimizationProblem
GlobalOptimization.OptimizationProblem
GlobalOptimization.PSO
GlobalOptimization.PSO
GlobalOptimization.PSOOptions
GlobalOptimization.PolyesterBatchEvaluator
GlobalOptimization.PolyesterBatchJobEvaluator
GlobalOptimization.PolyesterFunctionEvaluation
GlobalOptimization.PolyesterFunctionEvaluation
GlobalOptimization.RadiusLimitedSelector
GlobalOptimization.Rand1
GlobalOptimization.Rand2
GlobalOptimization.RandToBest1
GlobalOptimization.RandToBest2
GlobalOptimization.RandomAdaptation
GlobalOptimization.RandomSubsetSelector
GlobalOptimization.RectangularSearchSpace
GlobalOptimization.Results
GlobalOptimization.Results
GlobalOptimization.SearchSpace
GlobalOptimization.SelfBinomialCrossoverParameters
GlobalOptimization.SelfBinomialCrossoverParameters
GlobalOptimization.SelfMutationParameters
GlobalOptimization.SelfMutationParameters
GlobalOptimization.SerialBatchEvaluator
GlobalOptimization.SerialBatchJobEvaluator
GlobalOptimization.SerialFunctionEvaluation
GlobalOptimization.SerialFunctionEvaluation
GlobalOptimization.SimpleSelector
GlobalOptimization.SingleEvaluator
GlobalOptimization.SingleHopper
GlobalOptimization.Swarm
GlobalOptimization.ThreadedBatchEvaluator
GlobalOptimization.ThreadedBatchJobEvaluator
GlobalOptimization.ThreadedFunctionEvaluation
GlobalOptimization.ThreadedFunctionEvaluation
GlobalOptimization.TraceElement
GlobalOptimization.TraceLevel
GlobalOptimization.Unified
GlobalOptimization.UniformInitialization
Base.eachindex
Base.length
Base.size
GlobalOptimization.DEPopulation_F64
GlobalOptimization.TraceAll
GlobalOptimization.TraceDetailed
GlobalOptimization.TraceMinimal
GlobalOptimization.adapt!
GlobalOptimization.candidate
GlobalOptimization.candidates
GlobalOptimization.check_fitness!
GlobalOptimization.check_fitness!
GlobalOptimization.check_fitness!
GlobalOptimization.check_stopping_criteria
GlobalOptimization.construct_batch_evaluator
GlobalOptimization.construct_batch_job_evaluator
GlobalOptimization.construct_results
GlobalOptimization.crossover!
GlobalOptimization.dim_delta
GlobalOptimization.dim_max
GlobalOptimization.dim_min
GlobalOptimization.dim_range
GlobalOptimization.draw_step!
GlobalOptimization.draw_update!
GlobalOptimization.enforce_bounds!
GlobalOptimization.evaluate!
GlobalOptimization.evaluate!
GlobalOptimization.evaluate_fitness!
GlobalOptimization.evaluate_with_penalty
GlobalOptimization.feasible
GlobalOptimization.fitness
GlobalOptimization.fitness
GlobalOptimization.get_batch_evaluator
GlobalOptimization.get_best_candidate
GlobalOptimization.get_best_candidate_in_subset
GlobalOptimization.get_best_fitness
GlobalOptimization.get_elapsed_time
GlobalOptimization.get_function_tolerance
GlobalOptimization.get_function_value_check
GlobalOptimization.get_general
GlobalOptimization.get_hopper_set
GlobalOptimization.get_iteration
GlobalOptimization.get_max_iterations
GlobalOptimization.get_max_stall_iterations
GlobalOptimization.get_max_stall_time
GlobalOptimization.get_max_time
GlobalOptimization.get_min_cost
GlobalOptimization.get_population
GlobalOptimization.get_scalar_function
GlobalOptimization.get_scalar_function_with_penalty
GlobalOptimization.get_trace
GlobalOptimization.handle_local_search
GlobalOptimization.handle_stall!
GlobalOptimization.has_gradient
GlobalOptimization.hop!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize!
GlobalOptimization.initialize_fitness!
GlobalOptimization.intersection
GlobalOptimization.mutate!
GlobalOptimization.num_dims
GlobalOptimization.num_dims
GlobalOptimization.optimize!
GlobalOptimization.push!
GlobalOptimization.push_accepted_step!
GlobalOptimization.reset!
GlobalOptimization.scalar_function
GlobalOptimization.scalar_function
GlobalOptimization.scalar_function_with_penalty
GlobalOptimization.scalar_function_with_penalty
GlobalOptimization.search_space
GlobalOptimization.selection!
GlobalOptimization.set_fitness!
GlobalOptimization.set_fitness!
GlobalOptimization.step!
GlobalOptimization.step!
GlobalOptimization.step_MAD_median
GlobalOptimization.step_std
GlobalOptimization.update_fitness!
GlobalOptimization.update_global_best!
GlobalOptimization.update_velocity!