Hello everybody,
I’m having a weird issue using the package Evolutionary.jl.
I tried to write a minimal example of my problem but unluckily, being too much simplified, the issue does not appear. Anyway, I’ll try to explain you the question.
I wrote my optimization problem following the examples reported in the Evolutionary package, in particular this one.
Being relatively long and structured, many parts of the code (such as the objective function) are wrote in external functions that are included at the beginning of the script, anyway, this shouldn’t be a problem for the solver.
I defined my objective function (OF in the code below) and tested it with many random values of the variables to optimize and it always provided correct results (i.e. it never returned NaN or errors).
I only have boundary constraints, therefore I defined them with lb
and ub
and then I wrote
c = WorstFitnessConstraints(Evolutionary.ConstraintBounds(lb, ub, [], []), [])
mthd = GA(populationSize = 20, ɛ = 0.03, crossoverRate = 0.8, mutationRate = 0.1, selection = rouletteinv, crossover = singlepoint, mutation = scramble)
opts = Evolutionary.Options(iterations = 40)
opt_res = Evolutionary.optimize(OF, c, mthd, opts)
Now, when the last line is executed, Julia provides this error:
ERROR: MethodError: no method matching zero(::Type{Any})
Closest candidates are:
zero(::Type{Union{Missing, T}}) where T at missing.jl:105
zero(::Type{Missing}) at missing.jl:103
zero(::Type{LibGit2.GitHash}) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\LibGit2\src\oid.jl:220
...
Stacktrace:
[1] zero(::Type{Any}) at .\missing.jl:105
[2] zeros(::Type{Any}, ::Tuple{Int64}) at .\array.jl:505
[3] zeros(::Type{Any}, ::Int64) at .\array.jl:500
[4] (::Evolutionary.var"#13#14"{DataType})(::Int64) at .\none:0
[5] iterate at .\generator.jl:47 [inlined]
[6] _all(::Base.var"#239#241", ::Base.Generator{Array{Int64,1},Evolutionary.var"#13#14"{DataType}}, ::Colon) at .\reduce.jl:819
[7] all at .\reduce.jl:815 [inlined]
[8] Dict(::Base.Generator{Array{Int64,1},Evolutionary.var"#13#14"{DataType}}) at .\dict.jl:130
[9] initial_population(::GA, ::NLSolversBase.ConstraintBounds{Any}) at C:\Users\umber\.julia\packages\Evolutionary\Ub02D\src\api\utilities.jl:132
[10] optimize(::Function, ::WorstFitnessConstraints{Any,Array{Any,1}}, ::NLSolversBase.ConstraintBounds{Any}, ::GA, ::Evolutionary.Options{Nothing}) at C:\Users\user1\.julia\packages\Evolutionary\Ub02D\src\api\optimize.jl:33
[11] optimize(::Function, ::WorstFitnessConstraints{Any,Array{Any,1}}, ::GA, ::Evolutionary.Options{Nothing}) at C:\Users\user1\.julia\packages\Evolutionary\Ub02D\src\api\optimize.jl:28
I’m not very sure about what is going wrong, I’d say that someting fails in the creation of the initial population but I can’t figure how to solve the issue.
Does anyone have any idea of what is happening?