jmejia8 / Metaheuristics.jl

High-performance metaheuristics for optimization coded purely in Julia.
https://jmejia8.github.io/Metaheuristics.jl/stable/
Other
253 stars 27 forks source link

Add Co-evolutionary Framework #67

Open jmejia8 opened 1 year ago

jmejia8 commented 1 year ago

Possible features:

  1. Define objective (subjective) functions for each sub-population
  2. Migration scheme

Example

Working with 3 sub-populations:

# objective function
f(x) = sum(10x .^ 2 .- sin.(x)/10)
bounds = [-10ones(5)  10ones(5)]

# subjective functions
f1(x) = f(x)
f2(x) = f(x)
f3(x) = f(x)

# migration scheme (copy all individuals to pop1)
migration(pop1, pop2, pop3) = append!(pop1, pop2, pop3)

# Three optimizers for each sub-pop
cc = Coevo(ECA(), DE(), PSO(); migration_scheme = migration, fitness=[f1, f2, f3])

optimize(f, bounds, cc)

Ref: Potter, M. and De Jong, K., 2001, Cooperative Coevolution: An Architecture for Evolving Co-adapted Subcomponents.