Crossover Operation for 1-dimensional problems in Differential Evolution
I am using Differential Evolution (DE/best/1/bin) for optimizing a 1-dimensional function i.e. My Population has floating point values (Population size=10, hence 10 floating point numbers) and I have applied mutation successfully. However, When I try performing (binomial)crossover operator it appears as the operator is based on n-parameters rather than only 1 (as in my case). Subsequently, my trial vector is either the target vector(floating point scalar actually) or it is the mutant itself. How do I cope with this?
Actually I have an objective function which requires a floating-point number as input and I want to maximize value of that objective function. Now my initial population in DE is like this. Population Size = 10
- x= [0.24390562] f(x) = 0.49096426162493495
- x= [0.18471255] , f(x) = 0.48318779612214563
- x= [0.22484086] , f(x) = 0.49096426162493495
- x= [0.45620016] , f(x) = -1
- x= [0.38523836] , f(x)= -1
- x= [0.89095854] , f(x)= -1
- x= [0.56402371] , f(x)= -1
- x= [0.38672146] , f(x)= -1
- x= [0.25784302] , f(x)= 0.4935944699284827
- x= [0.38617538], f(x) = -1
Now you can see that my population that is x is a floating point scalar value. However, the Original Differential Evolution performs crossover on a vector, takes few parameters from target vector and few from mutant vector.
Now, my question is how can I modify crossover operation to work on a floating point scalar value.
Topic metaheuristics optimization clustering
Category Data Science