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

example fails #64

Closed JeffreySarnoff closed 1 year ago

JeffreySarnoff commented 1 year ago

running


using Metaheuristics

n = 32
xs = rand(n)
ys = @. 1 / (1 + exp(-xs))

F(x,y) = @. sum(x^2 + y^2)
f(x,y) = @. sum((x - y)^2)

bounds = [ -5 -5 -5; 5 5 5.0]

Ψ(x) = minimizer( optimize(y -> f(x,y), bounds) )

result = minimizer( optimize(x -> F(x, Ψ(x)), bounds) )

gives

ERROR: MethodError: no method matching create_child(::Vector{Float64}, ::Vector{Float64}; ε::Float64)

Closest candidates are:
  create_child(::AbstractMatrix, ::AbstractVector; ε)
   @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:161
  create_child(::Any, ::Float64; ε)
   @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:133
  create_child(::Any, ::Tuple{Float64, Vector{Float64}, Vector{Float64}}; ε)
   @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:138
  ...

Stacktrace:
  [1] create_solution(x::Vector{Float64}, problem::Problem{Float64}; ε::Float64)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:320
  [2] (::Metaheuristics.var"#26#27"{Float64, Problem{Float64}, Matrix{Float64}})(i::Int64)
    @ Metaheuristics .\none:0
  [3] iterate
    @ .\generator.jl:47 [inlined]
  [4] collect(itr::Base.Generator{UnitRange{Int64}, Metaheuristics.var"#26#27"{Float64, Problem{Float64}, Matrix{Float64}}})
    @ Base .\array.jl:782
  [5] #generate_population#25
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:260 [inlined]
  [6] gen_initial_state(problem::Problem{Float64}, parameters::ECA, information::Information, options::Options)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\algorithm.jl:26
  [7] gen_initial_state
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\algorithm.jl:8 [inlined]
  [8] initialize!(::State{Any}, ::ECA, ::Problem{Float64}, ::Information, ::Options; kargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\ECA\ECA.jl:268
  [9] initialize!(::State{Any}, ::ECA, ::Problem{Float64}, ::Information, ::Options)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\ECA\ECA.jl:231
 [10] optimize(f::Function, bounds::Matrix{Float64}, method::Metaheuristics.Algorithm{ECA}; logger::Metaheuristics.var"#112#114")
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:63
 [11] optimize
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:36 [inlined]
 [12] optimize(f::Function, bounds::Matrix{Float64})
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:36
 [13] Ψ(x::Vector{Float64})
    @ Main .\REPL[166]:1
 [14] (::var"#19#20")(x::Vector{Float64})
    @ Main .\REPL[167]:1
 [15] create_solution(x::Vector{Float64}, problem::Problem{Float64}; ε::Float64)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:320
 [16] (::Metaheuristics.var"#26#27"{Float64, Problem{Float64}, Matrix{Float64}})(i::Int64)
    @ Metaheuristics .\none:0
 [17] iterate
    @ .\generator.jl:47 [inlined]
 [18] collect(itr::Base.Generator{UnitRange{Int64}, Metaheuristics.var"#26#27"{Float64, Problem{Float64}, Matrix{Float64}}})
    @ Base .\array.jl:782
 [19] #generate_population#25
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\solutions\individual.jl:260 [inlined]
 [20] gen_initial_state(problem::Problem{Float64}, parameters::ECA, information::Information, options::Options)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\algorithm.jl:26
 [21] gen_initial_state
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\algorithm.jl:8 [inlined]
 [22] initialize!(::State{Any}, ::ECA, ::Problem{Float64}, ::Information, ::Options; kargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\ECA\ECA.jl:268
 [23] initialize!(::State{Any}, ::ECA, ::Problem{Float64}, ::Information, ::Options)
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\algorithms\ECA\ECA.jl:231
 [24] optimize(f::Function, bounds::Matrix{Float64}, method::Metaheuristics.Algorithm{ECA}; logger::Metaheuristics.var"#112#114")
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:63
 [25] optimize
    @ C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:36 [inlined]
 [26] optimize(f::Function, bounds::Matrix{Float64})
    @ Metaheuristics C:\Users\MrJSa\.julia\packages\Metaheuristics\rpBDB\src\optimize.jl:36
 [27] top-level scope
    @ REPL[167]:1
jmejia8 commented 1 year ago

Seems like @. sum( XXX ) should be sum( @. XXX)

JeffreySarnoff commented 1 year ago

thank you