Skip to content

Writing a Custom Plugin

This tutorial walks through building a simple plugin from scratch. We'll create a plugin that counts how many mutations are accepted vs rejected during the search, which is useful for diagnosing whether the search is exploring effectively.

Defining the plugin

A plugin has two parts: an immutable config struct (subtyping AbstractPlugin) and a mutable state object returned by init_plugin_state.

julia
using SymbolicRegression
using SymbolicRegression: AbstractPlugin, MutationEvent, AbstractMutation
using SymbolicRegression: machine, fit!, report
using Test

struct MutationCounterPlugin <: AbstractPlugin end

mutable struct MutationCounterState
    accepted::Int
    rejected::Int
end

Implementing the hooks

Create the state once per output at search start:

julia
function SymbolicRegression.init_plugin_state(::MutationCounterPlugin, options, dataset)
    return MutationCounterState(0, 0)
end

The on_mutation_end! hook fires on the worker after each mutation's accept/reject decision. We increment the appropriate counter:

julia
function SymbolicRegression.on_mutation_end!(
    state::MutationCounterState,
    ::MutationCounterPlugin,
    ::AbstractMutation,
    event::MutationEvent,
    dataset,
    options,
)
    if event.accepted
        state.accepted += 1
    else
        state.rejected += 1
    end
    return nothing
end

Pass the plugin to SRRegressor via the plugins keyword. All default plugins (like AdaptiveParsimonyPlugin) are still active alongside yours.

julia
X = 2randn(100, 5)
y = @. cos(X[:, 1]) + X[:, 2]^2

model = SRRegressor(;
    binary_operators=[+, -, *, /],
    unary_operators=[cos],
    plugins=(MutationCounterPlugin(),),
    niterations=5,
)
mach = machine(model, X, y)
fit!(mach)
SymbolicRegression.MLJInterfaceModule.Machine{SRRegressor{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing}, Tuple{Matrix{Float64}, Vector{Float64}}}(SRRegressor{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing}(nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, false, :log, nothing, true, true, nothing, nothing, nothing, true, Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.BackTracking{Float64, Int64}, Nothing, Nothing, Optim.Flat}(LineSearches.InitialStatic{Float64}(1.0, false), LineSearches.BackTracking{Float64, Int64}(0.0001, 0.5, 0.1, 1000, 3, Inf, nothing), nothing, nothing, Optim.Flat()), 2, 0.14, nothing, nothing, nothing, true, true, true, nothing, nothing, nothing, nothing, nothing, nothing, Base.PipeEndpoint(RawFD(-1) closed, 0 bytes waiting), nothing, nothing, false, false, nothing, false, nothing, nothing, 5, nothing, nothing, true, nothing, nothing, nothing, false, "pysr_trace.jsonl", PopMember, (Main.MutationCounterPlugin(),), nothing, true, nothing, nothing, nothing, nothing, false, nothing, nothing, [cos], Function[+, -, *, /], 5, :multithreading, nothing, nothing, nothing, nothing, nothing, nothing, nothing, true, nothing, Nothing, nothing, SymbolicRegression.MLJInterfaceModule.choose_best, DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}), ([-4.324399028302684 -0.03798258081561861 … -2.17933176120453 -2.0763180248113784; -0.7320766411483542 3.3093900989890037 … 3.964963714500202 2.1324596838915633; … ; 3.42376704627593 -3.7900119452818353 … -1.4006815836302946 -1.7455165125941492; 1.1194278961704598 -1.1465153351370625 … -1.9018084190725202 1.5320978863520442], [-0.37688586036357047, 11.695850774943228, 6.817578508025434, 1.1384438002354624, 1.3084345361932783, -0.5254917064629684, 4.471149557882376, 2.082029110576413, 3.406129001046705, 12.285037610641753  …  11.132113155767302, 4.720406487457324, 5.490697324678747, 0.805913138338599, 19.51985346990912, 0.3394991090116317, 0.2939127867671786, 1.146640674341024, 13.403738284221987, 1.7506947395629735]), SymbolicRegression.MLJInterfaceModule.SRFitResult{SRRegressor{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing}, Tuple{Vector{Vector{Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}}, HallOfFame{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}, Options{SymbolicRegression.CoreModule.OptionsStructModule.ComplexityMapping{Int64, Int64, 2}, OperatorEnum, Tuple{Int64, Int64}, Tuple{Vector{Int64}, Vector{Tuple{Int64, Int64}}}, Node{T, 2} where T, Expression, @NamedTuple{}, Tuple{Main.MutationCounterPlugin, SimulatedAnnealingPlugin, AdaptiveParsimonyPlugin, AdaptiveMutationWeightsPlugin}, PopMember, false, false, nothing, Nothing, 5, false, Symbol, Nothing}, Nothing, Nothing, SymbolicRegression.MLJInterfaceModule.SRFitResultTypes{Float64, Matrix{Float64}, Vector{Float64}, Nothing, Tuple{Vector{Vector{Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}}, HallOfFame{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}, Vector{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}}, DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing, Nothing}}(SRRegressor{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing}(nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing, false, :log, nothing, true, true, nothing, nothing, nothing, true, Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.BackTracking{Float64, Int64}, Nothing, Nothing, Optim.Flat}(LineSearches.InitialStatic{Float64}(1.0, false), LineSearches.BackTracking{Float64, Int64}(0.0001, 0.5, 0.1, 1000, 3, Inf, nothing), nothing, nothing, Optim.Flat()), 2, 0.14, nothing, nothing, nothing, true, true, true, nothing, nothing, nothing, nothing, nothing, nothing, Base.PipeEndpoint(RawFD(-1) closed, 0 bytes waiting), nothing, nothing, false, false, nothing, false, nothing, nothing, 5, nothing, nothing, true, nothing, nothing, nothing, false, "pysr_trace.jsonl", PopMember, (Main.MutationCounterPlugin(),), nothing, true, nothing, nothing, nothing, nothing, false, nothing, nothing, [cos], Function[+, -, *, /], 5, :multithreading, nothing, nothing, nothing, nothing, nothing, nothing, nothing, true, nothing, Nothing, nothing, SymbolicRegression.MLJInterfaceModule.choose_best, DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}), (Vector{Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}[[Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (4.407308347796639), loss = 33.275330294228915, cost = 0.6314140703398955), PopMember(tree = (0.5393199616373225), loss = 48.23666445034301, cost = 0.9153119855129781), PopMember(tree = (0.873528439659297), loss = 45.762930733978564, cost = 0.8683717970617877), PopMember(tree = (4.407308348744454), loss = 33.27533029422891, cost = 0.6314140703398954), PopMember(tree = (0.873528439659297), loss = 45.762930733978564, cost = 0.8683717970617877), PopMember(tree = (0.8122251673001493), loss = 46.1999533695225, cost = 0.8766644943453161), PopMember(tree = (0.7130160256297865), loss = 46.923126056471375, cost = 0.8903870150772658), PopMember(tree = (0.5393199616373225), loss = 48.23666445034301, cost = 0.9153119855129781), PopMember(tree = (0.7130160256297865), loss = 46.923126056471375, cost = 0.8903870150772658), PopMember(tree = (0.5393199616373225), loss = 48.23666445034301, cost = 0.9153119855129781)  …  PopMember(tree = (0.5083918528048964), loss = 48.47688012980354, cost = 0.9198701839917455), PopMember(tree = (0.8914518952508598), loss = 45.63657688972818, cost = 0.8659741771314736), PopMember(tree = (0.7563924824283673), loss = 46.60451695084087, cost = 0.8843412667569733), PopMember(tree = (0.873528439659297), loss = 45.762930733978564, cost = 0.8683717970617877), PopMember(tree = (4.4073083478807895), loss = 33.27533029422892, cost = 0.6314140703398956), PopMember(tree = (0.5083918528048964), loss = 48.47688012980354, cost = 0.9198701839917455), PopMember(tree = (cos(cos(x3) * 0.7130160256297865)), loss = 45.58856573786637, cost = 0.8650631443468033), PopMember(tree = (4.407308347907324), loss = 33.275330294228915, cost = 0.6314140703398955), PopMember(tree = (4.407308347880521), loss = 33.27533029422891, cost = 0.6314140703398954), PopMember(tree = (0.873528439659297), loss = 45.762930733978564, cost = 0.8683717970617877)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos((cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.5515011807228347, cost = 0.010464978175674418), PopMember(tree = ((cos(cos(cos(x2 * (x2 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.45612837473174084, cost = 0.008655237112307184), PopMember(tree = ((cos(cos(cos((x1 - x1) * x2)) * (x1 + cos(x2))) - cos(cos(cos((x1 - x2) * (x2 + x1)) * x1))) + (x2 * x2)), loss = 0.304118803700035, cost = 0.00577078844937694), PopMember(tree = ((cos(cos(cos(x1 * (x1 - x1))) * (cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x1 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos((x1 - x2) * (x2 + x1)) * x1))) + (x2 * x2)), loss = 0.304118803700035, cost = 0.00577078844937694), PopMember(tree = (((cos(cos(x1 * (x1 - x1))) * cos(cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.7755723829083533, cost = 0.014716828076694026), PopMember(tree = ((cos(cos(cos(x1 * (x1 - x1))) * (cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x1)), loss = 79.32111654013974, cost = 1.5051531755103633), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + (x1 - (x2 * x1))) * x1))) + (x2 * x2)), loss = 0.28268398502806613, cost = 0.005364053310011162)  …  PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos((cos(x2) + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.32957859425079306, cost = 0.00625389920558913), PopMember(tree = (((cos(cos(cos(x1 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + x2) * x2), loss = 2.5008450039459715, cost = 0.047454637092049626), PopMember(tree = ((cos(cos(cos((x1 - x1) * x1)) * (cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 * x1) - x2)) * x1))) + (x2 * x2)), loss = 0.28448125713557554, cost = 0.005398157341041853), PopMember(tree = ((cos(cos(cos(x1 * (x1 - x1))) * (cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.28069774457619756, cost = 0.0053263635212908505), PopMember(tree = (((cos(cos((x1 - x1) * x1)) * cos(cos(x2) + x1)) - cos(cos(cos(x2 + ((x1 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.7755723829083533, cost = 0.014716828076694026), PopMember(tree = ((cos(cos(cos(x2 * (x1 - x1))) * (x1 + cos(x2))) - cos(cos(cos(x2 + ((x2 - x2) * x1)) * x1))) + (x2 * x2)), loss = 0.3222216508434287, cost = 0.006114297959229456)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + (((x2 * 0.001970171999543806) * x2) / (x1 + 0.044386619600323314))) * -0.05293082200012654))), loss = 9.325589484735054e-5, cost = 1.7695717406287398e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * 0.044386619600323314) * x2) + x2) * -0.05293082200012654))), loss = 9.325589484735054e-5, cost = 1.7695717406287398e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.05046827528790336) + x2) * 0.05184422519799544) - x1) + ((x2 + ((((x2 * 0.058478312782032985) / (x1 + x1)) * x2) * -0.00012454412025495864)) * -0.05445533550478442))), loss = 6.236565633386131e-11, cost = 1.1834158389109078e-12), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.025160659298378393) + x2) * 0.07596190482550573) - x1) + ((x2 + (((x2 * 0.028812291835238195) * ((x2 / x1) + 0.03967360067273628)) * 0.002813808004642251)) * -0.07787042163330908))), loss = 8.765905238459286e-10, cost = 1.663369186087188e-11), PopMember(tree = ((x2 * x2) + cos((((x2 + 0.001970171999543806) * 0.044386619600323314) - x1) + ((x2 + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * 0.044386619600323314) * x2)) * -0.05293082200012654))), loss = 0.00015753089432603864, cost = 2.9892182079388418e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * 0.044386619600323314) * x2)) * -0.05293082200012654))), loss = 9.325589484735054e-5, cost = 1.7695717406287398e-6), PopMember(tree = ((x2 * x2) + cos((((x2 + x2) * 0.020651211989243714) - x1) + ((x2 + ((((x2 * 0.00645888578223947) / (x1 + 0.03859679479246081)) * x2) * 0.08073495729704112)) * -0.041311851036479455))), loss = 1.009924590662363e-8, cost = 1.916376459340724e-10), PopMember(tree = ((x2 * x2) + cos((((x2 * 0.044386619600323314) + x2) * (0.044386619600323314 - x1)) + ((x2 + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * 0.044386619600323314) * x2)) * -0.05293082200012654))), loss = 0.5885397542229728, cost = 0.011167801445842276), PopMember(tree = ((x2 * x2) + (cos((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + (((x2 * 0.044386619600323314) * (x2 / (x1 + 0.044386619600323314))) * 0.044386619600323314)) * -0.05293082200012654))), loss = 0.013302140910620543, cost = 0.00025241399145680196), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.050738128276642584) + x2) * 0.06855100246709028) - x1) + ((x2 + (((x1 + ((x2 * 0.048029205146495495) / 0.0401601846780288)) * 4.27356532154571e-9) * x2)) * -0.0720291516927972))), loss = 4.51119731356835e-18, cost = 8.560195894916811e-20)  …  PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + ((((x2 * 0.044386619600323314) * x2) / (x1 + 0.044386619600323314)) * x2)) * -0.05293082200012654))), loss = 0.005766280464045248, cost = 0.00010941771535640295), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 * -0.05293082200012654) + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * x2) * 0.044386619600323314)))), loss = 0.00018761646889777232, cost = 3.560105256418341e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + (((x2 * 0.001970171999543806) / (x1 + 0.044386619600323314)) * x2)) * -0.05293082200012654))), loss = 9.325589484735054e-5, cost = 1.7695717406287398e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + ((((x2 / (x2 + 0.044386619600323314)) * 0.044386619600323314) * x2) * 0.044386619600323314)) * -0.05293082200012654))), loss = 9.720511947755867e-5, cost = 1.8445100200206278e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + (((x2 / (x1 + 0.044386619600323314)) * 0.001970171999543806) * x2)) * -0.05293082200012654))), loss = 9.325589484735054e-5, cost = 1.7695717406287398e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - 0.044386619600323314) + ((x2 + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * x2) * 0.044386619600323314)) * -0.05293082200012654))), loss = 1.4210132614001332, cost = 0.026964353455065225), PopMember(tree = ((x2 * x2) + cos(((((x1 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + ((x2 + (((x2 * 0.001970171999543806) / (x1 + 0.044386619600323314)) * x2)) * -0.05293082200012654))), loss = 0.000168766265962653, cost = 3.2024143407533807e-6), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) / x1) + ((x2 + ((((x2 * 0.044386619600323314) / (x1 + 0.044386619600323314)) * 0.044386619600323314) * x2)) * -0.05293082200012654))), loss = 1.4463724557445516, cost = 0.027445555353888353), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.04452655593433735) + x2) * 0.047631240205996676) - x1) + ((x2 + (((x2 / (x2 + 0.04449262758490037)) * -6.481421452592925e-7) * x2)) * -0.04975212733853863))), loss = 1.7458930600020705e-18, cost = 3.3129090940542024e-20), PopMember(tree = ((x2 * x2) + cos((x2 + (((x2 * 0.001970171999543806) / (x1 + 0.044386619600323314)) * x2)) * (((((x2 * 0.044386619600323314) + x2) * 0.044386619600323314) - x1) + -0.05293082200012654))), loss = 0.592370978889975, cost = 0.011240500623881631)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (cos(x3)), loss = 51.48042603278528, cost = 0.9768637923882738), PopMember(tree = (x1 / cos(x3 - x3)), loss = 53.651814262729566, cost = 1.018066841867697), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (cos(cos(x4) - x3)), loss = 51.439178784186524, cost = 0.9760811076516304), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (x3), loss = 57.146878604869016, cost = 1.0843872294598478), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436)  …  PopMember(tree = (cos((x3 - x3) - x3)), loss = 51.48042603278528, cost = 0.9768637923882738), PopMember(tree = (cos(x3)), loss = 51.48042603278528, cost = 0.9768637923882738), PopMember(tree = (cos(cos(x3 - x3) - x3)), loss = 52.022602080770774, cost = 0.9871518220568687), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (x3), loss = 57.146878604869016, cost = 1.0843872294598478), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (x3), loss = 57.146878604869016, cost = 1.0843872294598478), PopMember(tree = (x1 + cos(x3 - x3)), loss = 45.678525917999, cost = 0.8667701784469549), PopMember(tree = (cos(x3 - x3)), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (cos(x3)), loss = 51.48042603278528, cost = 0.9768637923882738)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x1 + (x1 + ((x1 + cos(x1 + ((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 47.86108479868935, cost = 0.9081851959517455), PopMember(tree = (cos(x1 + (x1 + (((x1 + x1) + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)) * -1.0592531268254457)))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + ((x1 + -1.0592531268254457) * (x1 + (x1 + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)))))), loss = 50.474708653698436, cost = 0.9577798614903458), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * -0.5296265634127229) * x1) + -0.5296265634127229) + x1) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.31492419038354, cost = 0.8598706752779026), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos((cos(((x1 * -0.5296265634127229) * x1) + (x1 + -0.5296265634127229)) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * x1) * x1) + -0.5296265634127229) + x1) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.55925400371823, cost = 0.8645069412617086), PopMember(tree = (cos(x1 + (x1 + (((x1 + x1) + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)) * -1.0592531268254457)))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + ((x1 + -0.7168733113842487) * (x1 + (x1 + cos(((cos(((x1 * -1.1084376749325224) * x1) + -0.3384631506470175) + x1) * -0.560990439044527) + -0.8627811353036221)))))), loss = 47.20660138736164, cost = 0.8957660845240809), PopMember(tree = (cos((x1 + x1) + (((x1 + x1) + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)) * -1.0592531268254457))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * -0.5705467420724416) * x1) + -0.5418763354746478) + x1) * 0.011617738309822524) + -1.5921805182842743))) * -0.9962819260484952)))), loss = 44.88637414023372, cost = 0.8517387490395507)  …  PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos((x1 + x1) + ((x1 + (x1 + cos((cos((((x1 * -0.6781048077749289) * x1) + x1) + -0.31761178499724113) * -2.5896796061166934e-5) + -1.5708225183041316))) * -1.0000092164450536))), loss = 44.88508047846539, cost = 0.8517142012368524), PopMember(tree = (cos((x1 + x1) + (((x1 + x1) + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)) * -1.0592531268254457))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + (x1 + ((x1 * -1.0592531268254457) + (x1 + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)))))), loss = 52.73553846458539, cost = 1.0006801044215328), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos((cos((((x1 * -0.5296265634127229) * x1) + -0.5296265634127229) + x1) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.52029662387807, cost = 0.8637677077948384), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * -0.5296265634127229) * x1) + -0.5296265634127229) + x1) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.31492419038354, cost = 0.8598706752779026), PopMember(tree = (cos((x1 + x1) + (((x1 + -0.5296265634127229) + cos((cos((((x1 * -0.5296265634127229) * x1) + x1) + -0.5296265634127229) * -0.5296265634127229) + -1.0592531268254457)) * -1.0592531268254457))), loss = 53.43225282135915, cost = 1.0139005666674346), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos((cos(((x1 * -0.5296265634127229) * x1) + -0.5296265634127229) + (x1 * -0.5296265634127229)) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 47.1737136211537, cost = 0.895142024653236), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * -0.5321287584544114) * x1) + -1.1686391128907774) + x1) + -2.889139388914693) * -0.5776719695522411))) * -0.8754997450822162)))), loss = 44.985937186886055, cost = 0.8536280017678127), PopMember(tree = (cos(x1 + (x1 + ((x1 + (x1 + cos(((cos(((x1 * -0.5296265634127229) * x1) + -0.5296265634127229) + x1) * -0.5296265634127229) + -1.0592531268254457))) * -1.0592531268254457)))), loss = 45.31492419038354, cost = 0.8598706752779026)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (x2 * (x2 + -0.9564948092743332)), loss = 4.855511924507342, cost = 0.09213548057158735), PopMember(tree = ((cos(x1) + x2) + (x2 * (x2 + -0.9564948092743332))), loss = 0.008292636581498649, cost = 0.00015735643708040655), PopMember(tree = ((cos(x1) + ((x2 * x2) + -0.9564948092743332)) + x2), loss = 4.741094923562749, cost = 0.08996436750843502), PopMember(tree = (cos(x1) + ((x2 * (x2 + -0.9564948092743332)) + x2)), loss = 0.008292636581498652, cost = 0.00015735643708040663), PopMember(tree = ((cos(x1) + (x2 * (x2 + -3.0001001682933293e-12))) + -8.867351297681125e-13), loss = 4.176785943937865e-23, cost = 7.925635569897454e-25), PopMember(tree = ((cos(cos(x1) + (x2 * (x2 + -0.9564948092743332))) + (x2 * (x2 + -0.9564948092743332))) + x2), loss = 1.0958424427301363, cost = 0.020794093735425782), PopMember(tree = ((x2 * (x2 + -0.9564948092743332)) + x2), loss = 0.4664126433289393, cost = 0.008850385645409862), PopMember(tree = ((cos(x1) + ((x2 + -0.9564948092743332) * (x2 + -0.9564948092743332))) + x2), loss = 4.004298388217583, cost = 0.0759833282435803), PopMember(tree = ((cos(x1) + (x2 * (x2 + -0.9564948092743332))) + x2), loss = 0.008292636581498647, cost = 0.00015735643708040652), PopMember(tree = ((cos(x1) + x2) + ((x2 * x2) + -0.9564948092743332)), loss = 4.74109492356275, cost = 0.08996436750843503)  …  PopMember(tree = ((cos(x1) + x2) + (x2 * (x2 + -0.9564948092743332))), loss = 0.008292636581498649, cost = 0.00015735643708040655), PopMember(tree = ((cos(x1) + (x2 * (x2 + -0.9564948092743332))) + x2), loss = 0.008292636581498647, cost = 0.00015735643708040652), PopMember(tree = ((cos(x1) + x2) + (x2 * (x2 + -0.9564948092743332))), loss = 0.008292636581498649, cost = 0.00015735643708040655), PopMember(tree = ((cos(x1) + (x2 * (x2 + x2))) + x2), loss = 63.48739173245653, cost = 1.2047012629054576), PopMember(tree = (x1 + x2), loss = 50.17719322490548, cost = 0.9521343749926306), PopMember(tree = ((cos(x1) + x2) + (x2 * (x2 + (x2 * (x2 + -0.7942696781804804))))), loss = 1015.6421789263356, cost = 19.27225835278876), PopMember(tree = ((cos(x1) + (cos(x1) + (x2 * (x2 + -0.9564948092743332)))) + x2), loss = 0.5002552353773485, cost = 0.009492563757758898), PopMember(tree = (x2 + (x2 * (x2 + -0.9564948092743332))), loss = 0.4664126433289393, cost = 0.008850385645409862), PopMember(tree = ((cos(x1) + (x2 * x2)) + x2), loss = 4.3813755393535185, cost = 0.08313853351804774), PopMember(tree = ((cos(x1) + ((cos(x1) + (x2 * (x2 + -0.9564948092743332))) + x2)) + x2), loss = 5.651804830477136, cost = 0.10724548971335604)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((x2 * x2) + cos(cos(cos((x2 * x5) + (x5 * x5))) + cos(cos(cos(((x5 * (cos(x2) * x2)) * x2) + (x5 * -0.32007779412645276)))))), loss = 0.47071369560224824, cost = 0.008932000009523496), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * cos(x2)) * x5) * x2) + (x5 * -0.32007779412645276)))))), loss = 0.45686062936156413, cost = 0.00866913196691129), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(cos((x2 * x5) + (x5 * x5))) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4707136956022483, cost = 0.008932000009523497), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos(((x2 * (x5 * cos(x2))) * x2) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(((x2 * x5) + x5) * cos(x5)) + cos(cos(cos(((x5 * (cos(x2) * x2)) * x2) + (x5 * -0.32007779412645276)))))), loss = 0.7512808496430925, cost = 0.014255885517801516), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122)  …  PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) + (x5 * -0.32007779412645276)) * cos(x2)))))), loss = 0.4315133847388745, cost = 0.008188156819329082), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x2) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.43806514907414335, cost = 0.008312479437624996), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x2 * -0.32007779412645276)))))), loss = 0.4456596370874125, cost = 0.008456588197664486), PopMember(tree = ((x2 * x2) + cos(cos(cos((x2 * x5) + x5) * x5) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.7454835121410324, cost = 0.01414587848144928), PopMember(tree = ((x5 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos(((x5 * (x2 * x2)) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 44.41836511018946, cost = 0.8428580712520392), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) + (x5 * -0.32007779412645276)) * cos(x2)))))), loss = 0.4315133847388745, cost = 0.008188156819329082), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.4126027849494005, cost = 0.00782931984671122), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos(((x5 * x2) * x2) + (x5 * -0.32007779412645276)))))), loss = 0.43763836364192793, cost = 0.008304380995790336), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x2)) + cos(cos(cos((((x5 * x2) * x2) * cos(x2)) + (x5 * -0.32007779412645276)))))), loss = 0.444203838462731, cost = 0.008428963776597062), PopMember(tree = ((x2 * x2) + cos(cos(cos(((x2 * x5) + x5) * x5)) + cos(cos(cos((((x5 * x2) * x2) + (x5 * -0.32007779412645276)) * cos(x2)))))), loss = 0.4315133847388745, cost = 0.008188156819329082)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((((x2 + x2) - ((x2 - x2) + x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((((x2 - x2) + x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - (x2 + (x2 - x2))) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - (x2 + (x2 - x2))) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((((x2 + x2) - x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 + x2) - x2)) + (cos(x1) + ((((x2 - x2) + x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((((x2 - x2) - x2) + x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((((x2 - x2) + x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 + x2) - x2)) + (cos(x1) + ((((x2 - x2) + x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0)  …  PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 + x2) - x2)) + (cos(x1) + ((((x2 - x2) + x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 + x2) - x2)) + (cos(x1) + ((((x2 - x2) - x2) + x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - (x2 + (x2 - x2))) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * (((x2 - x2) + (x2 - x2)) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((x2 - x2) + ((x2 - x2) + (x2 * x2))))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((x2 - x2) + ((x2 - x2) + (x2 * x2))))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (x2 * ((((x2 - x2) + x2) - x2) + x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + ((((x2 + x2) - x2) - x2) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (((x2 - x2) + (x2 - x2)) + (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + x2) - ((x2 + x2) - x2)) - ((x2 - x2) + x2)) + (cos(x1) + (((x2 - x2) + (x2 - x2)) + (x2 * x2)))), loss = 0.0, cost = 0.0)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((((x2 * x2) + -0.9999999999999999) + x2) + cos(x1)), loss = 4.800961583546797, cost = 0.09110036378928149), PopMember(tree = (((x2 + (x2 * (x2 + -0.9999999999999999))) + x2) + cos(x1)), loss = 4.3813755393535185, cost = 0.08313853351804774), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + x2) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (((x2 * (((x2 * (x2 + -0.9999999999999999)) + x2) + -0.9999999999999999)) + x2) + cos(x1)), loss = 916.4756446473568, cost = 17.390529621715867), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (x2 + cos(x1)), loss = 49.337619820812485, cost = 0.93620309930761), PopMember(tree = (x2 + cos(x1)), loss = 49.337619820812485, cost = 0.93620309930761), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = ((((x2 * x2) + -0.9999999999999999) + x2) + cos(x1)), loss = 4.800961583546797, cost = 0.09110036378928149), PopMember(tree = ((x2 + (x2 * x2)) + cos(x1)), loss = 4.3813755393535185, cost = 0.08313853351804774)  …  PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + cos(x1)) + cos(x1)), loss = 4.467467943339585, cost = 0.08477217485971211), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + x2) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (((((x2 * (x2 + -0.9999999999999999)) + x2) * (x2 + -0.9999999999999999)) + x2) + cos(x1)), loss = 1091.2842872622773, cost = 20.70760072478534), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + (x2 + -0.9999999999999999)), loss = 4.938919604587339, cost = 0.09371817809288145), PopMember(tree = (x1 + cos(x1)), loss = 53.285046029693056, cost = 1.0111072528615102), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + x2) + cos(x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 1.0852078498932363, cost = 0.02059229764534402), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + cos(x1)), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = ((x2 + (x2 * (x2 + -0.9733300655920825))) + cos(x5)), loss = 0.8879034548585761, cost = 0.016848359717058694), PopMember(tree = ((((x2 * x2) + -0.9999999999999999) + x2) + cos(x1)), loss = 4.800961583546797, cost = 0.09110036378928149)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (x2 + (cos(x5) + ((x2 + -0.9564948092743332) * x2))), loss = 0.8891452499570763, cost = 0.01687192332681821), PopMember(tree = (-0.9564948092743332), loss = 62.04571460293582, cost = 1.1773448034378116), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2))), loss = 0.008292636581498647, cost = 0.00015735643708040652), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2))), loss = 0.008292636581498647, cost = 0.00015735643708040652), PopMember(tree = (x2 + (cos(x1) + ((x2 + (x4 * -0.3229163180987973)) * x2))), loss = 5.997972334288391, cost = 0.1138141707953519), PopMember(tree = (cos(x1) + (x2 + ((x2 + -0.9564948092743332) * x2))), loss = 0.008292636581498652, cost = 0.00015735643708040663), PopMember(tree = (((x2 + -0.9564948092743332) * x2) + (x2 + (x2 + -0.9564948092743332))), loss = 5.225240549146481, cost = 0.0991512443142859), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9999999999810792) * x2))), loss = 1.5685297368228839e-21, cost = 2.976354364687614e-23), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2))), loss = 0.008292636581498647, cost = 0.00015735643708040652), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * (cos(x1) + ((x2 + -0.9564948092743332) * x2))))), loss = 1319.9022326321149, cost = 25.045727083331172)  …  PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9999999999810792) * x2))), loss = 1.5685297368228839e-21, cost = 2.976354364687614e-23), PopMember(tree = (x2 + (cos(x1) + ((x2 + (x2 + (cos(x1) + ((x2 + -1.8289578512356304) * x2)))) * x2))), loss = 1009.2540587014582, cost = 19.15104095367221), PopMember(tree = (x2 + (cos(x1) + ((x2 + (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2)))) * x2))), loss = 1048.8597262719768, cost = 19.902575966190692), PopMember(tree = (x2 + (cos(cos(x1)) + ((x2 + -0.9564948092743332) * x2))), loss = 1.0887766808134978, cost = 0.02066001778629505), PopMember(tree = (-0.9564948092743332), loss = 62.04571460293582, cost = 1.1773448034378116), PopMember(tree = (x2), loss = 49.61723785227423, cost = 0.9415089747962843), PopMember(tree = (x2 + (cos(x1) + (((x2 + (cos(x1) + ((x2 + 0.05069525729387304) * x2))) + -12.938539429718274) * x2))), loss = 316.0475171523129, cost = 5.99714104898216), PopMember(tree = ((x2 + cos(x1)) + ((x2 + -0.9564948092743332) * x2)), loss = 0.008292636581498649, cost = 0.00015735643708040655), PopMember(tree = (x2 + (cos(x1) + (((x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2))) + -0.9564948092743332) * x2))), loss = 912.479867123621, cost = 17.314707980634445), PopMember(tree = (x2 + (cos(x1) + ((x2 + -0.9564948092743332) * x2))), loss = 0.008292636581498647, cost = 0.00015735643708040652)], 27)  …  Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((((x2 + ((x2 - x2) - ((x2 + x2) - x2))) + (x2 + x2)) - x2) * ((x2 + (x2 - x2)) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (((((x2 - x2) + ((x2 - x2) - ((x2 + x2) - x2))) + (x2 + x2)) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - ((x2 - x2) + x2)) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 - x2) + (x2 - x2)) + (((((x2 - ((x2 + x2) - x2)) - x2) + (x2 + x2)) * ((x2 + x2) - x2)) + cos(x1))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - ((x2 + x2) - x2)) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - (x2 + (x2 - x2))) - x2) + (x2 + x2))) * ((((x2 - x2) + x2) + x2) - x2)) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) * ((((x2 + x2) - x2) + x2) - x2)) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + ((((x2 - ((x2 + x2) - x2)) - x2) + x2) + x2)) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0)  …  PopMember(tree = ((((x2 - x2) + (((x2 - ((x2 + x2) - x2)) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - (x2 + (x2 - x2))) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - ((x2 + x2) - x2)) - x2) + (x2 + x2))) * ((x2 + x2) - x2)) + ((x2 + cos(x1)) - x2)), loss = 1.1845432122953693e-31, cost = 2.2477229964525164e-33), PopMember(tree = ((((x2 - x2) + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + ((((x2 - ((x2 + x2) - x2)) + x2) - x2) + x2)) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((x2 - (x2 + (x2 - x2))) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) + (((((x2 - x2) + x2) - x2) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 + (((x2 - x2) - ((x2 + x2) - x2)) + (x2 + x2))) - x2) * ((x2 + (x2 - x2)) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (((x2 - x2) + (((x2 - ((x2 + x2) - x2)) - x2) + (x2 + x2))) * (((x2 - x2) + x2) + (x2 - x2)))), loss = 0.0, cost = 0.0)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((x2 * x2) + 5.594413821086164e-13) * 1.0), loss = 0.47504130277161605, cost = 0.009014118264503419), PopMember(tree = (x2 * (x2 + (x2 * 1.0))), loss = 52.31264591257696, cost = 0.9926555317059803), PopMember(tree = (x2 * ((x2 + 5.594413821086164e-13) * 1.0)), loss = 0.4750413027714276, cost = 0.009014118264499842), PopMember(tree = (x2 * ((x2 + 5.594413821086164e-13) * 1.0)), loss = 0.4750413027714276, cost = 0.009014118264499842), PopMember(tree = (x2 * 5.594413821086164e-13), loss = 52.699697167524135, cost = 0.9999999999999207), PopMember(tree = ((x2 * x2) + 0.025932808334098407), loss = 0.47436879221353484, cost = 0.009001357080014191), PopMember(tree = (x2 * ((x2 * 0.9999999999994406) + 5.594413821086164e-13)), loss = 0.4750413027715357, cost = 0.009014118264501894), PopMember(tree = ((x2 * 1.0) * (x2 + 5.594413821086164e-13)), loss = 0.4750413027714276, cost = 0.009014118264499842), PopMember(tree = ((x2 * 1.0) * (x2 + 5.594413821086164e-13)), loss = 0.4750413027714276, cost = 0.009014118264499842), PopMember(tree = (x2 * ((x2 + 5.594413821086164e-13) * 1.0)), loss = 0.4750413027714276, cost = 0.009014118264499842)  …  PopMember(tree = ((x2 * 0.9987747383233906) * (x2 + 0.045431538989351615)), loss = 0.466335414500958, cost = 0.00884892019433268), PopMember(tree = (1.0), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = ((x2 * 0.5403023058681398) * (x2 + 5.594413821086164e-13)), loss = 11.559325530032776, cost = 0.21934330084073467), PopMember(tree = (x2 * (((x2 * 1.0) * (x2 + 5.594413821086164e-13)) * (x2 + 5.594413821086164e-13))), loss = 20167.992195037947, cost = 382.6965481590044), PopMember(tree = (((x2 * 1.0) * x2) + 5.594413821086164e-13), loss = 0.47504130277161605, cost = 0.009014118264503419), PopMember(tree = (((x2 * 1.0) * x2) + 5.594413821086164e-13), loss = 0.47504130277161605, cost = 0.009014118264503419), PopMember(tree = ((x2 * 1.0) * (x2 + 5.594413821086164e-13)), loss = 0.4750413027714276, cost = 0.009014118264499842), PopMember(tree = (x2 * (cos(5.594413821086164e-13 - (x2 * 1.0)) * (x2 + 5.594413821086164e-13))), loss = 113.1687725452183, cost = 2.1474273786709515), PopMember(tree = ((x2 * cos(5.594413821086164e-13 - ((x2 * 1.0) + 5.594413821086164e-13))) * (x2 + 5.594413821086164e-13)), loss = 113.16877254520769, cost = 2.1474273786707503), PopMember(tree = (x2 * 1.1188827642172328e-12), loss = 52.699697167519965, cost = 0.9999999999998416)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((x2 + ((x2 + -0.999999999999995) * x2)) - ((x2 * -0.999999999999995) + x2)) + -0.999999999999995), loss = 1.526906919826108, cost = 0.028973732334214134), PopMember(tree = (cos(x1) + (((x2 * -0.7478262742668159) + x2) - ((x2 * -1.5552080990289145) + x2))), loss = 49.17506307079968, cost = 0.9331185132710708), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - ((x2 * -0.999999999999995) + x2))), loss = 8.553459328312036e-31, cost = 1.6230566375213204e-32), PopMember(tree = (cos(x1) + ((x2 - ((x2 * -0.999999999999995) + x2)) + ((x2 + -0.999999999999995) * (x2 - ((x2 * -0.999999999999995) + x2))))), loss = 1.2321316104035864e-27, cost = 2.338024081024098e-29), PopMember(tree = ((cos(x1) + x2) + ((x2 + -0.999999999999995) * (x2 - ((x2 * -0.999999999999995) + x2)))), loss = 1.3925466353324645e-27, cost = 2.6424186668581134e-29), PopMember(tree = ((cos(x1) + (x2 + ((x2 + -0.999999999999995) * x2))) - ((x2 * -0.999999999999995) + x2)), loss = 1.241672072235728e-30, cost = 2.3561275281877756e-32), PopMember(tree = (cos(x1) + (x2 + ((x2 + -0.999999999999995) * x2))), loss = 1.114872946928054e-28, cost = 2.1155205947084627e-30), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - (x2 + ((x2 + -0.999999999999995) * x2)))), loss = 52.031130237281, cost = 0.9873136475884863), PopMember(tree = (cos(x1) + ((x2 + (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - ((x2 * -0.999999999999995) + x2)))) - ((x2 * -0.999999999999995) + x2))), loss = 5.245365740910695, cost = 0.09953312870539043), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - x2)), loss = 4.381375539353474, cost = 0.0831385335180469)  …  PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - ((x2 * -0.999999999999995) + x2))), loss = 8.553459328312036e-31, cost = 1.6230566375213204e-32), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - (cos(x1) + x2))), loss = 5.245365740910694, cost = 0.09953312870539041), PopMember(tree = ((cos(x1) + (x2 + ((x2 + -0.999999999999995) * x2))) - ((x2 * -0.999999999999995) + x2)), loss = 1.241672072235728e-30, cost = 2.3561275281877756e-32), PopMember(tree = ((x2 + -0.999999999999995) * x2), loss = 5.245365740910695, cost = 0.09953312870539043), PopMember(tree = ((cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - ((x2 * -0.999999999999995) + x2))) - -0.6133549272085804), loss = 0.37620426673104307, cost = 0.00713864190784851), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.999999999999995) * x2)) - -0.999999999999995)), loss = 0.9999999999999929, cost = 0.018975441107774667), PopMember(tree = (cos(x1) + (x2 + (((x2 + -0.999999999999995) - ((x2 * -0.999999999999995) + x2)) * x2))), loss = 1.2250823447322996e-27, cost = 2.3246477884642417e-29), PopMember(tree = (cos(x1) + ((x2 - ((x2 * -0.999999999999995) + x2)) + ((x2 + -0.999999999999995) * x2))), loss = 6.1498987577167655e-31, cost = 1.166970416958319e-32), PopMember(tree = (cos(x1) + (x2 + (((x2 + -0.999999999999995) * x2) - ((x2 * -0.999999999999995) + x2)))), loss = 1.1056551958433239e-30, cost = 2.0980295054230207e-32), PopMember(tree = (cos(x1) + ((x2 + ((x2 + -0.5963090877691188) * x2)) - (x2 + ((x2 + -1.403690912526407) * x2)))), loss = 49.175063070799666, cost = 0.9331185132710705)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x1) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + x2) + 0.5403023058681398), loss = 0.7389447720082681, cost = 0.01402180300314097), PopMember(tree = ((cos(x1) + (x2 * (x2 + -0.9999999999999999))) + x2), loss = 4.788786288119974e-31, cost = 9.086933218794006e-33), PopMember(tree = ((x2 + -0.9999999999999999) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.938919604587339, cost = 0.09371817809288145), PopMember(tree = ((x2 * (x2 + -0.9999999999999999)) + x2), loss = 0.4750413027716452, cost = 0.009014118264503972), PopMember(tree = ((((x2 * (x2 + -1.0443866195559273)) + x2) + cos(x1)) + cos(x1)), loss = 0.4664092393644054, cost = 0.008850321053681316), PopMember(tree = (cos(x1) + (x2 + (x2 * (cos(x1) + x2)))), loss = 6.768822671880559, cost = 0.12844139597924042), PopMember(tree = (x1 + cos(x1)), loss = 53.285046029693056, cost = 1.0111072528615102), PopMember(tree = (cos(x1) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = ((x2 + (x2 * (x2 + -0.9999999999999999))) + x2), loss = 4.467467943339588, cost = 0.08477217485971215)  …  PopMember(tree = ((x2 + -0.9999999999999999) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.938919604587339, cost = 0.09371817809288145), PopMember(tree = (cos(x1) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (cos(x1) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (x2 + (cos(x1) + (x2 * (x2 + -0.9999999999999999)))), loss = 4.788786288119974e-31, cost = 9.086933218794006e-33), PopMember(tree = (cos(x1) + (x2 + (x2 * (x1 + x2)))), loss = 26.545117113442792, cost = 0.5037053064851187), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + cos(x1)) + x2), loss = 4.788786288119974e-31, cost = 9.086933218794006e-33), PopMember(tree = ((x2 + (x2 * (x2 + -0.9564948092769565))) + 0.013307298597382), loss = 0.4662355591328128, cost = 0.008847025394675145), PopMember(tree = (cos(x1) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 4.221965846187367e-31, cost = 8.011366427336498e-33), PopMember(tree = (((x2 * cos(x1)) + x2) + cos(x1)), loss = 48.115337280003104, cost = 0.9130097489374203), PopMember(tree = (cos((x2 * (x2 + -0.9999999999999999)) + x2) + (x2 + (x2 * (x2 + -0.9999999999999999)))), loss = 1.0852078498932363, cost = 0.02059229764534402)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((x2 * x2) + x2) - (x2 * 0.8081071707420507)), loss = 0.5617395671294134, cost = 0.010659256073971094), PopMember(tree = (((x2 * x2) + x2) - ((x2 + x1) * 0.8081071707420507)), loss = 3.8676906430852434, cost = 0.07339113602095568), PopMember(tree = (x2 - (x2 * 0.8081071707420507)), loss = 51.42877554914606, cost = 0.9758837016777897), PopMember(tree = (((x2 * -0.6298647703857384) + x2) - (x2 * 0.8081071707420507)), loss = 56.80908032714346, cost = 1.0779773581345589), PopMember(tree = (((x2 * x2) + x2) - x2), loss = 0.4750413027716452, cost = 0.009014118264503972), PopMember(tree = (x2 - (x2 * 0.8081071707420507)), loss = 51.42877554914606, cost = 0.9758837016777897), PopMember(tree = (((x2 * x2) + x2) - cos(x2 * -0.6298647703857384)), loss = 5.344375348881175, cost = 0.10141187969053814), PopMember(tree = ((((x2 * 0.9987747382854992) * x2) + x2) - (x2 * 0.9546241263591796)), loss = 0.4663354145009579, cost = 0.008848920194332678), PopMember(tree = ((x2 * x2) + (x2 - (x2 * 0.8081071707420507))), loss = 0.5617395671294136, cost = 0.010659256073971097), PopMember(tree = ((x2 * x2) + (x2 - (x2 * 0.8081071707420507))), loss = 0.5617395671294136, cost = 0.010659256073971097)  …  PopMember(tree = ((x2 + x2) - (x2 * 0.8081071707420507)), loss = 50.02782533046821, cost = 0.949300053308344), PopMember(tree = (((x2 * x2) + x2) - x2), loss = 0.4750413027716452, cost = 0.009014118264503972), PopMember(tree = (((x2 * ((x2 * x2) + x2)) + x2) - (x2 * 0.8081071707420507)), loss = 956.9439380845042, cost = 18.158433340564606), PopMember(tree = (((x2 * x2) + x2) - (x2 * 0.8081071707420507)), loss = 0.5617395671294134, cost = 0.010659256073971094), PopMember(tree = (((x2 * x2) + (x2 * x2)) - (x2 * 0.8081071707420507)), loss = 49.77089344541559, cost = 0.9444246574548183), PopMember(tree = (((x2 * x2) + x2) - x2), loss = 0.4750413027716452, cost = 0.009014118264503972), PopMember(tree = (((x2 * x2) - (x2 * 0.8081071707420507)) + x2), loss = 0.5617395671294136, cost = 0.010659256073971097), PopMember(tree = ((((x2 * 0.8081071707420507) * x2) + x2) - (x2 * 0.8081071707420507)), loss = 2.2542931431405107, cost = 0.04277620677732331), PopMember(tree = (((x2 * x2) + x2) - (x2 * 0.8081071707420507)), loss = 0.5617395671294134, cost = 0.010659256073971094), PopMember(tree = (((x2 * x2) + x2) - (x2 * 0.8081071707420507)), loss = 0.5617395671294134, cost = 0.010659256073971094)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2)))) + 0.24540062528580195)) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.002575414473730564, cost = 4.8869625674385155e-5), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * 0.24540062528580195)), loss = 50.53811950163435, cost = 0.9589831103009477), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.36989545211713587) * ((x2 * 0.3132857309851844) + (cos(x2) * cos(x2))))) * 0.036513900902248514))) + 0.14330047300691284) * cos(x1)) + (x2 * x2)), loss = 6.297703691769183e-7, cost = 1.1950170551738208e-8), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.2527450654958269) * ((x2 * 0.28187458967806084) + cos(x2 * cos(x2))))) * 0.03985260082955433))) + 0.14371004998488407) * cos(x1)) + (x2 * x2)), loss = 1.0164401746590066e-6, cost = 1.9287400673818314e-8), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.2527450654958269) * ((x2 * 0.28187458967806084) + cos(x2 * cos(x2))))) * 0.03985260082955433))) + 0.14371004998488407) * cos(x1)) + (x2 * x2)), loss = 1.0164401746590066e-6, cost = 1.9287400673818314e-8), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + (cos(x2) * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0022528828483693547, cost = 4.274944581194864e-5), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + (x2 * cos(cos(x2)))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0028931614967188284, cost = 5.489901559626973e-5), PopMember(tree = ((cos(x1) * 0.24540062528580195) + (x2 * x2)), loss = 0.2704981213847176, cost = 0.0051328211720994285), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0021149604812436447, cost = 4.013230805710983e-5), PopMember(tree = (((cos(cos(cos(x2 + (((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2)))) * 0.24540062528580195)))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.005005554054756061, cost = 9.4982596177807e-5)  …  PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + (x2 * cos(cos(x2)))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0028931614967188284, cost = 5.489901559626973e-5), PopMember(tree = (((cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2))))) * 0.9700400729244735)) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.016565893350927556, cost = 0.000314345133678204), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.23707340705244698) * ((x2 * 0.26262086752492614) + cos(x2 * cos(x2))))) * -8.373977798135279e-9))) * cos(x1)) + 0.0036940415560378233) + (x2 * x2)), loss = 0.009625458108281191, cost = 0.00018264731346904318), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * x2) + cos(x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0037624824637748568, cost = 7.139476441039523e-5), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.2527450654958269) * ((x2 * 0.28187458967806084) + cos(x2 * cos(x2))))) * 0.03985260082955433))) + 0.14371004998488407) * cos(x1)) + (x2 * x2)), loss = 1.0164401746590066e-6, cost = 1.9287400673818314e-8), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0021149604812436447, cost = 4.013230805710983e-5), PopMember(tree = (((cos(cos(cos((x2 + ((x2 + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0023358210781511523, cost = 4.432323530675623e-5), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * ((x2 * 0.24540062528580195) + cos(cos(x2 * x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0024269027005854307, cost = 4.6051549269258464e-5), PopMember(tree = (((cos(cos(cos((x2 + ((cos(x2) + 0.24540062528580195) * cos((x2 * 0.24540062528580195) + (x2 * cos(x2))))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0024128649187421165, cost = 4.578517616660686e-5), PopMember(tree = (((cos(cos(cos(((cos(x2) + 0.24540062528580195) * (x2 + ((x2 * 0.24540062528580195) + cos(cos(x2) * 0.24540062528580195)))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0028632376457604987, cost = 5.4331197324692114e-5)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x4 - 0.8413058435515873) + (((x2 + -0.9999999999999999) * x2) + x2)), loss = 1.0601898196146562, cost = 0.0201175694851603), PopMember(tree = (((((x2 + -0.9999999999999999) * x2) + x2) + 0.5403023058681398) / 0.9515249863078996), loss = 1.1466852185298604, cost = 0.021758857833369245), PopMember(tree = ((((x2 + 0.6497512680891783) * ((((x2 + -0.5078189423881019) * x2) + x2) + -13.220458611596193)) + x2) + 7.910321060342886), loss = 322.95863823931, cost = 6.128282620157174), PopMember(tree = (((x2 + 0.04350519073268792) * x2) + 0.013307298602376894), loss = 0.46623555913281295, cost = 0.008847025394675148), PopMember(tree = (((x2 * 0.5403023058681398) + x2) + 0.5403023058681398), loss = 47.610491384196024, cost = 0.9034300753730312), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + 0.5403023058681398) + x2), loss = 0.7389447720082681, cost = 0.01402180300314097), PopMember(tree = (x2), loss = 49.61723785227423, cost = 0.9415089747962843), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + cos(x2)) + x2), loss = 1.1267099250155415, cost = 0.02137981782767777), PopMember(tree = (((x2 + -0.9999999999999999) * x2) + (x2 + -0.9999999999999999)), loss = 1.5269069198261187, cost = 0.028973732334214335), PopMember(tree = ((((x2 + -1.956494809289233) * x2) + (x2 + 0.376360326557448)) + (x2 + -0.363053027963357)), loss = 0.4662355591328128, cost = 0.008847025394675145)  …  PopMember(tree = (x3 + (((x2 + -0.9999999999999999) * x2) + (x2 + 0.5403023058681398))), loss = 5.42133915385719, cost = 0.10287230183929078), PopMember(tree = ((((x2 * x2) + -0.9999999999999999) + x2) + 0.5403023058681398), loss = 4.435817460768101, cost = 0.08417159299164426), PopMember(tree = (((x2 + x2) * x2) + (x2 + -4.645649708847617)), loss = 41.79789729274711, cost = 0.7931335385073426), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + 0.5403023058681398) + x2), loss = 0.7389447720082681, cost = 0.01402180300314097), PopMember(tree = (((x2 + -0.9999999999999999) * x2) + (x2 + x2)), loss = 4.467467943339588, cost = 0.08477217485971215), PopMember(tree = ((x2 * (x2 + -0.9999999999999999)) + -0.4596976941318601), loss = 5.747345172591857, cost = 0.10905840984857058), PopMember(tree = ((((x2 + -0.9999999999999999) * x2) + x2) + 0.5403023058681398), loss = 0.7389447720082681, cost = 0.01402180300314097), PopMember(tree = ((((x2 + -0.9999999999999999) * x2) + x2) + 0.5403023058681398), loss = 0.7389447720082681, cost = 0.01402180300314097), PopMember(tree = (((x2 * (x2 + -0.9999999999999999)) + (x2 + -0.9999999999999999)) + x2), loss = 4.938919604587339, cost = 0.09371817809288145), PopMember(tree = (((x2 + -0.9556133803696386) * x2) + x2), loss = 0.4664092393644056, cost = 0.00885032105368132)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (0.0), loss = 52.69969716752831, cost = 1.0), PopMember(tree = (1.0115068963858027), loss = 44.80679779220414, cost = 0.8502287527339436), PopMember(tree = (0.0), loss = 52.69969716752831, cost = 1.0), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (4.407308347826342), loss = 33.275330294228915, cost = 0.6314140703398955), PopMember(tree = (1.0), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (4.407308347826342), loss = 33.275330294228915, cost = 0.6314140703398955), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483)  …  PopMember(tree = (1.0), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (0.0), loss = 52.69969716752831, cost = 1.0), PopMember(tree = (1.8249119031515604), loss = 39.9441016919789, cost = 0.7579569492591134), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (1.0), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (1.0), loss = 44.8850804717668, cost = 0.8517142011097436), PopMember(tree = (0.0), loss = 52.69969716752831, cost = 1.0), PopMember(tree = (1.5365587543392523), loss = 41.51653352304762, cost = 0.7877945368655483), PopMember(tree = (-0.9772760124833986), loss = 62.269079028107164, cost = 1.1815832419332224)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos(((x1 + ((x2 + cos(x2)) + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671107, cost = 0.012390898023403901), PopMember(tree = (cos(((x2 + cos(x2)) + ((x1 + ((x2 + x2) + x2)) + (x2 + cos((x2 + x2) * x2)))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671108, cost = 0.012390898023403903), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + (x2 + (x2 + x2)))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 * x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.8595631817625078, cost = 0.016310590533945995), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x1 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.9902528075524729, cost = 0.018790483831520603)  …  PopMember(tree = (cos(((cos(x2 + x2) + (x1 + (x2 + (x2 + x2)))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 1.1611481572521283, cost = 0.022033298475338994), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + (x2 + (x2 + x2)))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 * x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 1.0377965600522376, cost = 0.01969264750712251), PopMember(tree = (cos(((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + ((x2 + cos((x2 + x2) * x2)) + (x2 * x2))) + (x2 * x2)), loss = 0.6529965734671108, cost = 0.012390898023403903), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 + x2)) + (x2 * x2)), loss = 0.8965837253220884, cost = 0.017013071678038626), PopMember(tree = (cos((x2 + (((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671107, cost = 0.012390898023403901), PopMember(tree = (cos((((x2 + cos(x2)) + (x2 + (x2 + (x2 + x2)))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 1.081885038300453, cost = 0.02052924582965293), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 + x2)), loss = 55.645615448529476, cost = 1.0559000988494547), PopMember(tree = (cos((((x2 + cos(x2)) + (x1 + ((x2 + x2) + x2))) + (x2 + cos((x2 + x2) * x2))) + (x2 * x2)) + (x2 * x2)), loss = 0.6529965734671106, cost = 0.012390898023403898)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(cos(x1 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 40.09360990185737, cost = 0.7607939334907912), PopMember(tree = (cos((cos(x2) + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 41.16513674331493, cost = 0.7811266279662691), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 - cos(x2)) + x1))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + (((x2 / x2) * (x2 + x1)) - cos(x2))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos((x2 + cos(x1)) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 40.56103535174582, cost = 0.7696635375874246), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * (x2 + (x1 - cos(x2))))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x2) - cos(x2)))), loss = 45.944397887548035, cost = 0.8718152163473407), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + (((x2 / x2) * (x2 + x1)) - cos(x2))), loss = 39.83794836576921, cost = 0.755942643069227)  …  PopMember(tree = (cos(cos(x2 + x1) / (cos(cos(x2 / (x4 + (x1 - x2)))) + (x2 * x2))) + (((x2 / x2) * (x2 + x1)) - cos(x2))), loss = 39.97019782445075, cost = 0.7584521348839737), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 * ((x2 + x2) - cos(x2))) / x2)), loss = 45.944397887548035, cost = 0.8718152163473407), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x1 * x2))) + (((x2 / x2) * (x2 + x1)) - cos(x2))), loss = 41.12483987247787, cost = 0.7803619770668728), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.894587375086196, cost = 0.7570173932549242), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 / x2) * ((x2 + x1) - cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227), PopMember(tree = (cos(cos(x2 + x1) / (cos(x2 / cos(x4 + (x1 - x2))) + (x2 * x2))) + ((x2 + x1) - ((x2 / x2) * cos(x2)))), loss = 39.83794836576921, cost = 0.755942643069227)], 27)]], HallOfFame{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (4.4073083478907105), loss = 33.27533029422891, cost = 0.6314140703398954), PopMember(tree = (cos(-0.0028096807177689412)), loss = 44.885107370098524, cost = 0.8517147115174533), PopMember(tree = (x2 * x2), loss = 0.4750413027716452, cost = 0.009014118264503972), PopMember(tree = (4.491716520450847 - cos(x2)), loss = 28.786717440854403, cost = 0.5462406614850864), PopMember(tree = ((x2 + 0.044386619600323314) * x2), loss = 0.46640923936440537, cost = 0.008850321053681314), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 + 0.04350519073268792) * x2) + 0.013307298602376894), loss = 0.46623555913281295, cost = 0.008847025394675148), PopMember(tree = ((cos(x1) + (x2 * x2)) - -1.9938477952008427e-15), loss = 3.858031320632673e-30, cost = 7.320784611661593e-32), PopMember(tree = ((x2 * x2) + cos(x1 + cos(x1))), loss = 0.16156439249814916, cost = 0.003065755614962042), PopMember(tree = (cos(x1) + (((x2 + x2) - x2) * x2)), loss = 0.0, cost = 0.0)  …  PopMember(tree = ((cos(x1) * (0.24540062528580195 + cos(cos((x2 * 0.24540062528580195) + cos((0.11390740098783911 - 0.49617545295387533) * x2))))) + (x2 * x2)), loss = 0.010341724382473683, cost = 0.0001962387819724681), PopMember(tree = (((((x2 - ((x2 + x2) - x2)) + ((x2 - x2) + x2)) * x2) + cos(x1)) + (x2 - x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + ((x2 * x2) - cos(x1 + (cos((x2 * (x1 - x1)) * (x1 - x1)) * cos(x1))))), loss = 0.3006355120859013, cost = 0.005704691454491739), PopMember(tree = (cos(((x2 + (0.044386619600323314 * (x1 + 0.044386619600323314))) * -0.05293082200012654) + (x1 + ((x2 + (x2 * 0.044386619600323314)) * 0.044386619600323314))) + (x2 * x2)), loss = 0.0001056426861374291, cost = 2.0046165692679234e-6), PopMember(tree = (((cos(cos(cos((x2 + ((x2 * 0.24540062528580195) + cos(x2 * cos(x1)))) * 0.24540062528580195))) + 0.24540062528580195) * cos(x1)) + (x2 * x2)), loss = 0.0029871162970496186, cost = 5.6681849376739375e-5), PopMember(tree = (((((x2 - ((x2 - x2) + x2)) + ((x2 - ((x2 + x2) - x2)) + x2)) * x2) + cos(x1)) + (x2 - x2)), loss = 0.0, cost = 0.0), PopMember(tree = (((0.24540062528580195 + cos(cos((x2 * 0.24540062528580195) + ((0.24540062528580195 + cos(cos((x2 * x2) + 0.24540062528580195))) * cos(x1))))) * cos(x1)) + (x2 * x2)), loss = 0.013662702081872098, cost = 0.0002592557987276362), PopMember(tree = ((x2 * x2) + cos(((((x2 * 0.04452655593433735) + x2) * 0.047631240205996676) - x1) + ((x2 + (((x2 / (x2 + 0.04449262758490037)) * -6.481421452592925e-7) * x2)) * -0.04975212733853863))), loss = 1.7458930600020705e-18, cost = 3.3129090940542024e-20), PopMember(tree = ((x2 * x2) + (cos(cos(cos((cos(x4) * -0.13875986459662717) + (x2 * 0.38877858597842907)) + 0.9806491459196732) * (cos(x1 + (x2 + x5)) * 0.0274486883158437)) * cos(x1))), loss = 1.92127725314967e-10, cost = 3.64570833688489e-12), PopMember(tree = (((((x2 + ((x2 - x2) - ((x2 + x2) - x2))) + (x2 + x2)) - x2) * ((x2 + (x2 - x2)) + (x2 - x2))) + cos(x1)), loss = 0.0, cost = 0.0)], Bool[1, 1, 1, 1, 1, 1, 1, 1, 1, 1  …  1, 1, 1, 1, 1, 1, 1, 1, 1, 1])), 5, 1, Options{SymbolicRegression.CoreModule.OptionsStructModule.ComplexityMapping{Int64, Int64, 2}, OperatorEnum, Tuple{Int64, Int64}, Tuple{Vector{Int64}, Vector{Tuple{Int64, Int64}}}, Node{T, 2} where T, Expression, @NamedTuple{}, Tuple{Main.MutationCounterPlugin, SimulatedAnnealingPlugin, AdaptiveParsimonyPlugin, AdaptiveMutationWeightsPlugin}, PopMember, false, false, nothing, Nothing, 5, false, Symbol, Nothing}(OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}(((cos,), (+, -, *, /))), ([-1], [(-1, -1), (-1, -1), (-1, -1), (-1, -1)]), nothing, SymbolicRegression.CoreModule.OptionsStructModule.ComplexityMapping{Int64, Int64, 2}(false, (Int64[], Int64[]), 0, 0), 15, 0.982, 0.0, nothing, false, 30, 30, Val{false}(), Val{false}(), true, true, true, true, nothing, 31, 0.129, :auto, nothing, Pair{AbstractMutation, Float64}[ConstantMutation(0.129, 0.00743) => 0.0346, OperatorMutation() => 0.293, FeatureMutation() => 0.1, SwapOperandsMutation() => 0.198, RotateTreeMutation() => 4.26, AddNodeMutation() => 2.47, InsertNodeMutation() => 0.0112, DeleteNodeMutation() => 0.87, SimplifyMutation() => 0.00209, RandomizeMutation() => 0.000502, DoNothingMutation() => 0.273, OptimizeMutation() => 0.0, BacksolveMutation(500, 8, 0.001, 8) => 0.0, FormConnectionMutation() => 0.5, BreakConnectionMutation() => 0.1], Pair{AbstractCrossover, Float64}[SubtreeCrossover() => 1.0], 0.2, 0.0, true, true, 1040.0, 27, 380, 0.00036, 0.0614, 0.001, 12, nothing, Val{5}(), true, 0.00743, (1, 4), nothing, L2DistLoss(), nothing, nothing, :log, Node{T, 2} where T, Expression, NamedTuple(), nothing, nothing, Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.BackTracking{Float64, Int64}, Nothing, Nothing, Optim.Flat}(LineSearches.InitialStatic{Float64}(1.0, false), LineSearches.BackTracking{Float64, Int64}(0.0001, 0.5, 0.1, 1000, 3, Inf, nothing), nothing, nothing, Optim.Flat()), 0.14, 2, Optim.Options(x_abstol = 0.0, x_reltol = 0.0, f_abstol = 0.0, f_reltol = 0.0, g_abstol = 1.0e-8, outer_x_abstol = 0.0, outer_x_reltol = 0.0, outer_f_abstol = 0.0, outer_f_reltol = 0.0, outer_g_abstol = 1.0e-8, f_calls_limit = 10000, g_calls_limit = 0, h_calls_limit = 0, allow_f_increases = true, allow_outer_f_increases = true, successive_f_tol = 1, iterations = 8, outer_iterations = 1000, store_trace = false, trace_simplex = false, show_trace = false, extended_trace = false, show_warnings = false, show_every = 1, time_limit = NaN, )
, nothing, "pysr_trace.jsonl", 0.982, nothing, Val{nothing}(), nothing, nothing, Base.PipeEndpoint(RawFD(-1) closed, 0 bytes waiting), true, false, true, Val{false}(), PopMember, (Main.MutationCounterPlugin(), SimulatedAnnealingPlugin(3.17), AdaptiveParsimonyPlugin(true, true), AdaptiveMutationWeightsPlugin(0.02, 0.05, :cost, 0.5))), ["x1", "x2", "x3", "x4", "x5"], nothing, false, nothing, nothing, SymbolicRegression.MLJInterfaceModule.SRFitResultTypes{Float64, Matrix{Float64}, Vector{Float64}, Nothing, Tuple{Vector{Vector{Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}}, HallOfFame{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}, Vector{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}}, DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing, Nothing}(Float64, Matrix{Float64}, Vector{Float64}, Nothing, Tuple{Vector{Vector{Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}}, HallOfFame{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}}, Vector{DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}}, DynamicQuantities.SymbolicDimensions{DynamicQuantities.FRInt32}, Nothing, Nothing)), nothing, (best_idx = 4, equations = Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}[4.4073083478907105, x2 * x2, (x2 + 0.044386619600323314) * x2, cos(x1) + (x2 * x2)], equation_strings = ["4.4073083478907105", "x2 * x2", "(x2 + 0.044386619600323314) * x2", "cos(x1) + (x2 * x2)"], losses = [33.27533029422891, 0.4750413027716452, 0.46640923936440537, 0.0], complexities = [1, 3, 5, 6], scores = [0.0, 2.1245849079769314, 0.009169154329919228, 744.4400719213812]))

The search ran with our plugin active. Since on_mutation_end! runs on workers against per-dispatch copies of the state (built by fork_plugin_state, which defaults to deepcopy), the head-side state won't reflect worker counts in multithreading mode. For a production version you'd aggregate via on_generation_end! on the head node. But the plugin loaded, the hooks fired, and the search completed — the API works.

julia
@test report(mach).best_idx isa Int
Test Passed

Show raw source code
julia
#=
# Writing a Custom Plugin

This tutorial walks through building a simple plugin from scratch.
We'll create a plugin that counts how many mutations are accepted vs
rejected during the search, which is useful for diagnosing whether
the search is exploring effectively.

## Defining the plugin

A plugin has two parts: an immutable **config struct** (subtyping
`AbstractPlugin`) and a mutable **state object** returned by
`init_plugin_state`.
=#
using SymbolicRegression
using SymbolicRegression: AbstractPlugin, MutationEvent, AbstractMutation
using SymbolicRegression: machine, fit!, report
using Test

struct MutationCounterPlugin <: AbstractPlugin end

mutable struct MutationCounterState
    accepted::Int
    rejected::Int
end

#=
## Implementing the hooks

Create the state once per output at search start:
=#
function SymbolicRegression.init_plugin_state(::MutationCounterPlugin, options, dataset)
    return MutationCounterState(0, 0)
end

#=
The `on_mutation_end!` hook fires on the worker after each mutation's
accept/reject decision. We increment the appropriate counter:
=#
function SymbolicRegression.on_mutation_end!(
    state::MutationCounterState,
    ::MutationCounterPlugin,
    ::AbstractMutation,
    event::MutationEvent,
    dataset,
    options,
)
    if event.accepted
        state.accepted += 1
    else
        state.rejected += 1
    end
    return nothing
end

#=
## Running the search

Pass the plugin to `SRRegressor` via the `plugins` keyword.
All default plugins (like `AdaptiveParsimonyPlugin`) are still
active alongside yours.
=#
X = 2randn(100, 5)
y = @. cos(X[:, 1]) + X[:, 2]^2

model = SRRegressor(;
    binary_operators=[+, -, *, /],
    unary_operators=[cos],
    plugins=(MutationCounterPlugin(),),
    niterations=5,
)
mach = machine(model, X, y)
fit!(mach)

#=
The search ran with our plugin active. Since `on_mutation_end!` runs on
workers against per-dispatch copies of the state (built by `fork_plugin_state`,
which defaults to `deepcopy`), the head-side state won't reflect worker
counts in multithreading mode. For a production version you'd aggregate
via `on_generation_end!` on the head node. But the plugin loaded, the hooks
fired, and the search completed — the API works.
=#
@test report(mach).best_idx isa Int

which uses Literate.jl to generate this page.