BlackBoxOptim.jl icon indicating copy to clipboard operation
BlackBoxOptim.jl copied to clipboard

bug in `write_results`

Open floswald opened this issue 1 year ago • 2 comments

julia> using BlackBoxOptim

julia> function rosenbrock2d(x)
         return (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
       end
rosenbrock2d (generic function with 1 method)

julia> res = bboptimize(rosenbrock2d; SearchRange = (-5.0, 5.0), NumDimensions = 2, SaveFitnessTraceToCsv = true, SaveParameters = true)
Starting optimization with optimizer DiffEvoOpt{FitPopulation{Float64}, RadiusLimitedSelector, BlackBoxOptim.AdaptiveDiffEvoRandBin{3}, RandomBound{ContinuousRectSearchSpace}}
0.00 secs, 0 evals, 0 steps

Optimization stopped after 10001 steps and 0.06 seconds
Termination reason: Max number of steps (10000) reached
Steps per second = 174100.43
Function evals per second = 176050.16
Improvements/step = 0.20260
Total function evaluations = 10113


Best candidate found: [1.0, 1.0]

Fitness: 0.000000000

ERROR: MethodError: no method matching replace(::String, ::Regex, ::String)

Closest candidates are:
  replace(::AbstractString, ::Pair...; count)
   @ Base strings/util.jl:847
  replace(::Union{Function, Type}, ::Any; count)
   @ Base set.jl:739
  replace(::Any, ::Pair...; count)
   @ Base set.jl:686

Stacktrace:
 [1] write_result(ctrl::BlackBoxOptim.OptRunController{DiffEvoOpt{…}, BlackBoxOptim.ProblemEvaluator{…}}, filename::String)
   @ BlackBoxOptim ~/.julia/dev/BlackBoxOptim/src/opt_controller.jl:376
 [2] write_result(ctrl::BlackBoxOptim.OptRunController{DiffEvoOpt{…}, BlackBoxOptim.ProblemEvaluator{…}})
   @ BlackBoxOptim ~/.julia/dev/BlackBoxOptim/src/opt_controller.jl:373
 [3] run!(oc::BlackBoxOptim.OptController{DiffEvoOpt{…}, FunctionBasedProblem{…}})
   @ BlackBoxOptim ~/.julia/dev/BlackBoxOptim/src/opt_controller.jl:477
 [4] bboptimize(functionOrProblem::Function, parameters::Dict{…}; kwargs::@Kwargs{…})
   @ BlackBoxOptim ~/.julia/dev/BlackBoxOptim/src/bboptimize.jl:93
 [5] bboptimize
   @ BlackBoxOptim ~/.julia/dev/BlackBoxOptim/src/bboptimize.jl:91 [inlined]
 [6] top-level scope
   @ REPL[4]:1
Some type information was truncated. Use `show(err)` to see complete types.

floswald avatar Feb 08 '24 09:02 floswald

also there are a bunch of strftime calls which need to be updated to Libc.strftime

floswald avatar Feb 08 '24 09:02 floswald

Unfortunately, I used the same code as you @floswald but encountered an error. Could you please tell me where the problem might be?

julia> using BlackBoxOptim
       function rosenbrock2d(x)
           return (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
       end

       res = bboptimize(rosenbrock2d; SearchRange = (-5.0, 5.0), NumDimensions = 2, SaveFitnessTraceToCsv = true, SaveParameters = true, TraceMode = :verbose)
Starting optimization with optimizer DiffEvoOpt{FitPopulation{Float64}, RadiusLimitedSelector, BlackBoxOptim.AdaptiveDiffEvoRandBin{3}, RandomBound{ContinuousRectSearchSpace}}
0.00 secs, 0 evals, 0 steps
DE modify state:

Optimization stopped after 10001 steps and 0.09 seconds
Termination reason: Max number of steps (10000) reached
Steps per second = 107537.71
Function evals per second = 108752.76
Improvements/step = 0.19530
Total function evaluations = 10114   


Best candidate found: [1.0, 1.0]

Fitness: 0.000000000

ERROR: SystemError: opening file "240320_202158_<unknown>_2d_DiffEvoOpt{FitPopulation{Float64},_RadiusLimitedSelector,_BlackBoxOptim.AdaptiveDiffEvoRandBin{3},_RandomBound{ContinuousRectSearchSpace}}.csv": Invalid argument
Stacktrace:
  [1] systemerror(p::String, errno::Int32; extrainfo::Nothing)
    @ Base .\error.jl:176
  [2] systemerror
    @ .\error.jl:175 [inlined]
  [3] open(fname::String; lock::Bool, read::Bool, write::Nothing, create::Nothing, truncate::Nothing, append::Bool)
    @ Base .\iostream.jl:293
  [4] open
    @ .\iostream.jl:275 [inlined]
  [5] open(fname::String, mode::String; lock::Bool)
    @ Base .\iostream.jl:356
  [6] open
    @ .\iostream.jl:355 [inlined]
  [7] save_fitness_history_to_csv_file(a::TopListArchive{…}, filename::String; header_prefix::String, line_prefix::String, include_header::Bool, bestfitness::Nothing)
    @ BlackBoxOptim E:\.julia\packages\BlackBoxOptim\lZtsr\src\archive.jl:182
  [8] save_fitness_history_to_csv_file
    @ E:\.julia\packages\BlackBoxOptim\lZtsr\src\archive.jl:178 [inlined]
  [9] write_result(ctrl::BlackBoxOptim.OptRunController{DiffEvoOpt{…}, BlackBoxOptim.ProblemEvaluator{…}}, filename::String)
    @ BlackBoxOptim E:\.julia\packages\BlackBoxOptim\lZtsr\src\opt_controller.jl:378
 [10] write_result(ctrl::BlackBoxOptim.OptRunController{DiffEvoOpt{…}, BlackBoxOptim.ProblemEvaluator{…}})
    @ BlackBoxOptim E:\.julia\packages\BlackBoxOptim\lZtsr\src\opt_controller.jl:373
 [11] run!(oc::BlackBoxOptim.OptController{DiffEvoOpt{…}, FunctionBasedProblem{…}})
    @ BlackBoxOptim E:\.julia\packages\BlackBoxOptim\lZtsr\src\opt_controller.jl:476
 [12] bboptimize(functionOrProblem::Function, parameters::Dict{…}; kwargs::@Kwargs{…})
    @ BlackBoxOptim E:\.julia\packages\BlackBoxOptim\lZtsr\src\bboptimize.jl:93
 [13] bboptimize
    @ E:\.julia\packages\BlackBoxOptim\lZtsr\src\bboptimize.jl:91 [inlined]
 [14] top-level scope
    @ e:\1WHU\item\jsj\julia_project\test.jl:397
Some type information was truncated. Use `show(err)` to see complete types.

hoasxyz avatar Mar 20 '24 12:03 hoasxyz