Class LevyFlightMutation
java.lang.Object
org.uma.jmetal.operator.mutation.impl.LevyFlightMutation
- All Implemented Interfaces:
Serializable,MutationOperator<DoubleSolution>,Operator<DoubleSolution,DoubleSolution>
This class implements a Lévy flight mutation operator for real-valued solutions. Lévy flights are
characterized by heavy-tailed distributions with infinite variance, producing mostly small steps
with occasional very large jumps. This behavior is beneficial for global optimization as it
provides both local search capabilities and the ability to escape local optima through large
jumps.
The implementation uses the Mantegna algorithm to generate Lévy-distributed steps: 1. Generate u ~ Normal(0, σ_u²) where σ_u = [Γ(1+β)sin(πβ/2)/Γ((1+β)/2)β2^((β-1)/2)]^(1/β) 2. Generate v ~ Normal(0, 1) 3. Lévy step = u / |v|^(1/β)
Parameters:
- mutationProbability: The probability of mutating each variable. Must be in [0, 1].
- beta: The Lévy index parameter. Must be in (1, 2]. Controls the tail heaviness:
- Values closer to 1.0 produce heavier tails with more frequent large jumps
- Values around 1.5 provide balanced exploration with moderate large jumps (typical choice)
- Values closer to 2.0 approach Gaussian behavior with fewer large jumps
- stepSize: The scaling factor for Lévy steps. Must be positive (> 0).
Typical values range from 0.001 to 0.1:
- Smaller values (0.001-0.01) provide fine-grained local search
- Medium values (0.01-0.05) balance local and global search
- Larger values (0.05-0.1) emphasize global exploration
- Author:
- Antonio J. Nebro
Code generated by Claude Sonnet 4
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionConstructor with default parameters Default: beta = 1.5 (typical for Lévy flights), stepSize = 0.01LevyFlightMutation(double mutationProbability, double beta, double stepSize) ConstructorLevyFlightMutation(double mutationProbability, double beta, double stepSize, RepairDoubleSolution solutionRepair) ConstructorLevyFlightMutation(double mutationProbability, double beta, double stepSize, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor -
Method Summary
Modifier and TypeMethodDescriptiondoublebeta()Get the beta parametervoidbeta(double beta) Set the beta parameterexecute(DoubleSolution solution) Execute the mutation operationdoubleGet the mutation probabilityvoidmutationProbability(double mutationProbability) Set the mutation probabilityGet the solution repair strategyvoidsolutionRepair(RepairDoubleSolution solutionRepair) Set the solution repair strategydoublestepSize()Get the step size parametervoidstepSize(double stepSize) Set the step size parametertoString()Get string representation of the operator
-
Constructor Details
-
LevyFlightMutation
public LevyFlightMutation()Constructor with default parameters Default: beta = 1.5 (typical for Lévy flights), stepSize = 0.01 -
LevyFlightMutation
public LevyFlightMutation(double mutationProbability, double beta, double stepSize) Constructor- Parameters:
mutationProbability- The probability of mutating each variablebeta- The Lévy index parameterstepSize- The scaling factor for Lévy steps
-
LevyFlightMutation
public LevyFlightMutation(double mutationProbability, double beta, double stepSize, RepairDoubleSolution solutionRepair) Constructor- Parameters:
mutationProbability- The probability of mutating each variablebeta- The Lévy index parameterstepSize- The scaling factor for Lévy stepssolutionRepair- The repair strategy for out-of-bounds values
-
LevyFlightMutation
public LevyFlightMutation(double mutationProbability, double beta, double stepSize, RepairDoubleSolution solutionRepair, RandomGenerator<Double> randomGenerator) Constructor- Parameters:
mutationProbability- The probability of mutating each variablebeta- The Lévy index parameterstepSize- The scaling factor for Lévy stepssolutionRepair- The repair strategy for out-of-bounds valuesrandomGenerator- The random number generator
-
-
Method Details
-
execute
Execute the mutation operation- Specified by:
executein interfaceMutationOperator<DoubleSolution>- Specified by:
executein interfaceOperator<DoubleSolution,DoubleSolution> - Parameters:
solution- The solution to be mutated- Returns:
- The mutated solution
-
mutationProbability
public double mutationProbability()Get the mutation probability- Specified by:
mutationProbabilityin interfaceMutationOperator<DoubleSolution>- Returns:
- The mutation probability
-
mutationProbability
public void mutationProbability(double mutationProbability) Set the mutation probability- Parameters:
mutationProbability- The new mutation probability
-
beta
public double beta()Get the beta parameter- Returns:
- The beta parameter
-
beta
public void beta(double beta) Set the beta parameter- Parameters:
beta- The new beta parameter
-
stepSize
public double stepSize()Get the step size parameter- Returns:
- The step size parameter
-
stepSize
public void stepSize(double stepSize) Set the step size parameter- Parameters:
stepSize- The new step size parameter
-
solutionRepair
Get the solution repair strategy- Returns:
- The solution repair strategy
-
solutionRepair
Set the solution repair strategy- Parameters:
solutionRepair- The new solution repair strategy
-
toString
-