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}), ([1.0254048746029696 0.12870975383083585 … -1.903873311091148 2.4093637619910817; 3.014143060257128 -0.6723227137691129 … 4.740434524685407 -0.1964049927075047; … ; -0.8150107321984126 -2.050414048461403 … 0.530909399113785 0.34652150642983487; -1.2253012693450491 -1.488171503370254 … 1.576364999598738 2.645998814213718], [0.5353189929596646, -0.5398714568459594, 3.6343949900671215, 2.8622369914337646, 5.123389470092215, 0.6712046701976344, -0.19379044068435414, 4.909957883902412, 1.191653526083906, 2.8850234101130345  …  13.509773205171514, -0.953210193346546, 5.504847937339999, 18.01283836050081, 6.507216517775412, 1.2901061425754448, 0.8797845117846567, 3.127485385475526, 4.8900583534496045, 2.553316945642787]), 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 = (((((1.364269183993067 - (x3 * 0.027091198502393225)) * 0.17228740521297084) + (x2 * x2)) - (x3 * 0.04005204437981021)) - ((x2 * 0.11590278479923033) * cos(x2))), loss = 0.46926158381065003, cost = 0.011055971251335804), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - ((cos(x2) * 0.03706465271007809) * cos(x2))), loss = 0.5301142712332111, cost = 0.01248968239650773), PopMember(tree = (((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5166774153985079, cost = 0.012173105252880378), PopMember(tree = (((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - cos(x2)), loss = 1.0372566609502611, cost = 0.024438139023862684), PopMember(tree = ((0.2350463977201013 - (x3 * 0.015135666017930757)) + (((x2 * x2) - (x3 * 0.02958385065523012)) - ((x2 * cos(x2)) * 0.11590278480240102))), loss = 0.46926158381064986, cost = 0.011055971251335799), PopMember(tree = (((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5166774153985079, cost = 0.012173105252880378), PopMember(tree = ((((x2 * x2) + 0.0) - (x3 * 0.02721831726419835)) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.532936693909772, cost = 0.012556179687246465), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - ((x2 * cos(x2)) * 0.03706465271007809)), loss = 0.5166774153985079, cost = 0.012173105252880378), PopMember(tree = (((((1.361754011106011 - (x2 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5167537438925324, cost = 0.012174903579580681), PopMember(tree = ((x3 + ((x2 * x2) - (x3 * 0.02721831726419835))) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 4.40431609437322, cost = 0.10376726713012638)  …  PopMember(tree = ((((1.361754011106011 - x3) * 0.0007408367946945579) + ((x2 * x2) - (x3 * 0.02721831726419835))) - (x2 * (cos(x2) * 0.03706465271007809))), loss = 0.5324151187080108, cost = 0.012543891188389911), PopMember(tree = (((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - ((x3 * 0.03706465271007809) * cos(x2))), loss = 0.5272654735056813, cost = 0.012422563700106729), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - ((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.0007408367946945579))) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5215056750898723, cost = 0.012286860783235595), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5166774153985079, cost = 0.012173105252880378), PopMember(tree = ((((0.988566476690019 - (x3 * 0.03814966491352472)) * 0.2674177549891378) + ((x2 * x2) - (x3 * 0.021734472900302917))) - ((x2 * ((x2 * -0.283589585906107) * cos(x2))) * 0.07154836092180125)), loss = 0.48081564676800836, cost = 0.011328189119364443), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - (x2 * (cos(x2) * 0.03706465271007809))), loss = 0.5166774153985079, cost = 0.012173105252880378), PopMember(tree = (((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - (cos(x2) * 0.02721831726419835)), loss = 0.5285366870672394, cost = 0.012452513947635548), PopMember(tree = (((((1.361754011106011 - (x3 * (x2 * 0.03706465271007809))) * 0.02721831726419835) + (x2 * x2)) - (x3 * 0.02721831726419835)) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.5172226884917366, cost = 0.012185952082560977), PopMember(tree = (((((x3 * 0.02721831726419835) - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - ((x2 * 0.03706465271007809) * cos(x2))), loss = 0.532936693909772, cost = 0.012556179687246465), PopMember(tree = ((((1.361754011106011 - (x3 * 0.02721831726419835)) * 0.02721831726419835) + ((x2 * x2) - (x3 * 0.02721831726419835))) - (cos(x2 * x2) * 0.03706465271007809)), loss = 0.5256736570718679, cost = 0.012385059933898697)], 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(x5) + ((cos(x5) + cos(cos(cos(x2) + 0.05977192297298134))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.071430674273685, cost = 0.7320540528441334), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 30.980954737401834, cost = 0.7299224073152795), PopMember(tree = (x4 + (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.07627146813198375)))) / (cos(x4) + 0.07116392089794389)))) + 3.125974392517021)), loss = 31.218316761046285, cost = 0.7355147417404875), PopMember(tree = (cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134))) + 1.0579861133576312), loss = 34.84675950820188, cost = 0.8210021544835199), PopMember(tree = (cos(cos(cos(x5) + (cos(x5 + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.558298001357706, cost = 0.7435248217226436), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 7.039545002483253)))) / (cos(x4) + 0.10719616162072118)))) + 3.1549350564890295), loss = 26.727811319845454, cost = 0.6297168226806648), PopMember(tree = (cos(cos(x5) + cos((cos(x5) + cos(cos(cos(x2 + -0.3475757773276392)))) / (cos(x4) + 0.009228672301881218))) + 3.140537087836027), loss = 26.830289518773835, cost = 0.6321312458091048), PopMember(tree = (cos(cos(cos(x5) + (cos(cos(x5) + cos(cos(x2 + 0.05977192297298134))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.36992256937353, cost = 0.7390866289697602), PopMember(tree = ((x2 + 0.9982141903846498) + cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134))))), loss = 35.44868076403052, cost = 0.8351836351961935), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + 0.8544557650647349) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.17351652403478, cost = 0.734459232085446)  …  PopMember(tree = (cos(cos(cos(x5) + (cos(cos(x5) + cos(cos(x2 + 0.05977192297298134))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.36992256937353, cost = 0.7390866289697602), PopMember(tree = ((cos(x2 / x2) + 0.05977192297298134) + cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134))))), loss = 33.10381388558382, cost = 0.7799377303731448), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + -0.30173035018036404)))) / (cos(cos(x2 + -0.5877662972277344)) + 0.017893026706292885)))) + 3.139063436471763), loss = 26.85337780554694, cost = 0.6326752141278689), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 30.980954737401834, cost = 0.7299224073152795), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + 0.9401196562160755) / (cos(x4) + 0.1935140952261152)))) + 3.1139024404373274), loss = 26.55417684090072, cost = 0.6256259320693671), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(0.21496494486517895 - x5) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.464121163473063, cost = 0.7413059816383156), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(cos(x2 + 0.05977192297298134)) + cos(x4))))) + 1.0579861133576312), loss = 31.45393316604257, cost = 0.7410659487641443), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(cos(x5) + cos(cos(cos(x2 + 0.05977192297298134))))))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.066062981235074, cost = 0.7319275880706078), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(cos(x5) + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 31.202988748037086, cost = 0.7351536082554201), PopMember(tree = (cos(cos(cos(x5) + ((cos(x5) + cos(cos(cos(x2 + 0.05977192297298134)))) / (cos(x4) + 0.05977192297298134)))) + 1.0579861133576312), loss = 30.980954737401834, cost = 0.7299224073152795)], 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 * 0.1170011008105462)) + (cos(cos(x2 * cos(cos(x2 * x5)))) + (0.020207823059304627 / x4))) / (x4 / x4))), loss = 0.5066270411129663, cost = 0.01193631482937333), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + (cos(cos(cos(x2 * x2)) + cos(cos(x2 * x5) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.5830889207740916, cost = 0.013737784143123093), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos(((cos(cos(x2 * 0.047870997165460324)) + cos(cos(x2 * x5))) + (0.047870997165460324 / x4)) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / cos(cos(x2 * 0.047870997165460324))))), loss = 0.8797006948188847, cost = 0.020726063942242925), PopMember(tree = (x3 + ((x2 * x2) + cos((cos(cos(x2 * 0.2626957718711145)) + (cos(cos(x2 * x5)) + (0.7997466459428295 / x4))) / (x4 / x4)))), loss = 4.314361536871317, cost = 0.10164790548626129), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 2.4573281441580113)) + (0.9442747272111088 / (cos(cos(x2 * x5)) + x4))) / (x4 / x4))), loss = 0.6916129176321095, cost = 0.016294648439575808), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (x2 + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.9155853138496051, cost = 0.02157151843938512)  …  PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(x2 * cos(x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.6235387901355918, cost = 0.014690797575736592), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * x2)) / (x4 / x4)) + (cos(cos(x4 * x5)) + (0.047870997165460324 / x4)))), loss = 0.555153092774369, cost = 0.013079606014116434), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(cos(cos(x2 * x5)) * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.49970564002948537, cost = 0.011773244136953711), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * x2)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x2))), loss = 1.024311479187858, cost = 0.024133145897755445), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (x2 * x2))) / (x4 / x4))), loss = 1.0215103345955385, cost = 0.02406714992631446), PopMember(tree = ((0.047870997165460324 / x4) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 39.799502859585324, cost = 0.9376905645244212), PopMember(tree = ((x2 * x2) + cos((cos(cos(x2 * 0.047870997165460324)) + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 0.4972753509312388, cost = 0.011715985653988929), PopMember(tree = ((x2 * x2) + cos((x4 + (cos(cos(x2 * x5)) + (0.047870997165460324 / x4))) / (x4 / x4))), loss = 1.0318838302029045, cost = 0.024311553204076002)], 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(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5544429126453597, cost = 0.013062873915516256), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * (x3 * 0.9508659157216457)))) * 0.7475795783911648) + (x2 * x2)), loss = 0.6051363616459611, cost = 0.014257229759074626), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5544429126453597, cost = 0.013062873915516256), PopMember(tree = ((cos(cos((cos(x2 + (x3 * 0.9508659157216457)) * x2) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.6213780211967503, cost = 0.01463988908441153), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) * (x2 * x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.6046323407333237, cost = 0.014245354845567028), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5544429126453597, cost = 0.013062873915516256), PopMember(tree = ((cos(cos((x2 * ((x2 * 0.9508659157216457) + x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5830754577533689, cost = 0.01373746694952532), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (cos(x2 + x2) * x2))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5865860963974631, cost = 0.013820178855340723), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (cos((x2 + x3) * 0.9508659157216457) * x2))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5618712722964722, cost = 0.013237888733648952), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (cos(x2 + (((x2 * 0.9508659157216457) + (x2 * x2)) * 0.9508659157216457)) * x2))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5919930530971483, cost = 0.013947568694806164)  …  PopMember(tree = ((cos(((x2 * 0.9508659157216457) + (x2 * x2)) + cos(cos(x2 + (x3 * 0.9508659157216457)) * x2)) * 0.7475795783911648) + (x2 * x2)), loss = 0.7313935291040359, cost = 0.01723189391623013), PopMember(tree = ((cos(cos(((x2 * 1.0119771242376336) + (x2 * x2)) + (x2 * ((x2 * 0.5847979361601991) + (x2 * x2))))) * 0.33566680745757743) + (x2 * x2)), loss = 0.48054237619622775, cost = 0.011321750766663785), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (cos(x2 + cos(x2 + (x3 * 0.9508659157216457))) * x2))) * 0.7475795783911648) + (x2 * x2)), loss = 0.6077357888196958, cost = 0.014318473195772289), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * 0.9508659157216457))) * 0.7475795783911648) + (x2 * x2)), loss = 0.6053841703908796, cost = 0.014263068222000571), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (cos(x2) * x2))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5814572866927791, cost = 0.013699342258856322), PopMember(tree = ((cos(cos(((x2 * x2) + (x2 * 0.9508659157216457)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + ((x2 + (x3 * 0.9508659157216457)) * x2)), loss = 8.958497385979637, cost = 0.21106541206774565), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + ((x2 * 0.9508659157216457) + (x2 * x2)))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5858619018744741, cost = 0.01380311657259104), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5544429126453597, cost = 0.013062873915516256), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + (x2 * x2)) + (x2 * cos((x2 * x2) + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5618365946360769, cost = 0.01323707171553023), PopMember(tree = ((cos(cos(((x2 * 0.9508659157216457) + x2) + (x2 * cos(x2 + (x3 * 0.9508659157216457))))) * 0.7475795783911648) + (x2 * x2)), loss = 0.5957176135672446, cost = 0.014035320675581693)], 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(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -3.907092466583658))))) + (x2 * x2)), loss = 0.7182312257690187, cost = 0.016921785327984752), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.7094940810223419, cost = 0.01671593506350413), PopMember(tree = (cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577))) + (x2 * x2)), loss = 0.8807384201657922, cost = 0.02075051312367607), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 + x2) + (x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))))))) + (x2 * x2)), loss = 0.7160208361912856, cost = 0.016869707756607146), PopMember(tree = (cos(cos(cos(x2 + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.7410151699267504, cost = 0.017458583225554748), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos((x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6989187206048054, cost = 0.01646677577840063), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(x2 + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.7410151699267504, cost = 0.017458583225554748), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2)) + (x2 * x2))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6714804422081326, cost = 0.015820320096526258)  …  PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos((x2 * x2) + cos(x2 + x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(cos(x2 + x2)) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.705296242865815, cost = 0.016617032490658858), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(x2 + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.7410151699267504, cost = 0.017458583225554748), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(x2 + x2) + cos(x2 * x2))) + -2.0867791877257966)))) + (x2 * x2)), loss = 0.7027741110541867, cost = 0.016557610160420348), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos((x2 * x2) + -0.7372803296428956))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6733165352883748, cost = 0.015863579108152753), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + cos(x2)) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.7140633189673059, cost = 0.01682358794859608), PopMember(tree = (cos(cos(cos(cos(x2) + ((x2 * cos(cos(cos(x2 + x2) + (x2 * x2)))) + -2.39983215145577)))) + (x2 * x2)), loss = 0.6688282281111257, cost = 0.015757832980980213)], 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 * x1) + x2) * x2) + cos(cos(x5 - x2) * (cos((x2 * x1) * x2) + (x1 * ((x2 * x1) + x2))))), loss = 113.91516252221216, cost = 2.6838820934573167), PopMember(tree = ((x2 * x2) + cos(cos((x5 - x2) - x2) * (cos(x2 * (x1 * x2)) + (x1 * ((x2 * x1) + x2))))), loss = 0.3553659509305096, cost = 0.008372549283251506), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * ((x1 * ((x2 * x1) + x2)) + cos((x2 * x1) * x5)))), loss = 0.4163879681275692, cost = 0.009810249898653763), PopMember(tree = ((x2 * x2) + cos(cos((x1 * x2) - x2) * ((x1 * ((x2 * x1) + x2)) + cos(x2 * (x1 * x2))))), loss = 0.4537523764312471, cost = 0.010690568761907066), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x2 * (x1 * x2)) + (x1 * ((x2 * x1) + x2))))), loss = 0.3723874373008119, cost = 0.008773581608200999), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos((x2 * x1) * x2) + (x1 * ((x2 * x1) + ((x2 * x1) * x2)))))), loss = 0.5345960382839728, cost = 0.012595274435954111), PopMember(tree = ((x2 * x2) + cos((x5 - cos(x2)) * (cos(x2 * (x1 * x2)) + (x1 * ((x2 * x1) + x2))))), loss = 0.6670535325191799, cost = 0.015716020516202907), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * ((x2 * x2) + (x1 * ((x2 * x1) + x2))))), loss = 0.7877357250244218, cost = 0.018559336263576143), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x2 * (x1 * x2)) + (((x2 + x2) * x1) * x1)))), loss = 0.5275975655455419, cost = 0.012430387907696195), PopMember(tree = (x2 + cos(cos(x5 - x2) * (x1 * (cos(x2 * (x1 * x2)) + ((x2 * x1) + x2))))), loss = 44.97571172757131, cost = 1.059643902299572)  …  PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos((x2 * x1) * x2) + ((x2 * x1) * ((x2 * x1) + x2))))), loss = 0.5091680707933238, cost = 0.011996182400178274), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos((x2 * x1) * x2) + (x1 * ((x2 * (x1 * ((x2 * x1) + x2))) + x2))))), loss = 0.399186721676597, cost = 0.00940498236171891), PopMember(tree = (cos((x2 * x1) * x2) + cos(cos(x5 - x2) * (cos(x2 * (x1 * x2)) + (x1 * ((x2 * x1) + x2))))), loss = 43.592340762646735, cost = 1.0270511861135607), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos((x2 * x1) * x2) + x1))), loss = 0.32764667776454415, cost = 0.007719473263812211), PopMember(tree = ((x2 * x2) + cos(cos(x2 - x2) * ((x1 * ((x2 * x1) + x2)) + cos(x2 * (x1 * x2))))), loss = 0.4374837609151329, cost = 0.010307274344357277), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x2 * (x1 * x2)) + (x1 * x2)))), loss = 0.43464178474881193, cost = 0.010240316366385433), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x2 * (x1 * x2)) + (x1 * ((x2 + x2) * x1))))), loss = 0.5275975655455419, cost = 0.012430387907696195), PopMember(tree = ((x2 * x2) + cos((x5 - cos(x2)) * (cos((x2 * x1) * x2) + (x1 * ((x2 * x1) + x2))))), loss = 0.6670535325191799, cost = 0.015716020516202907), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x1 * x2) + (x1 * ((x2 * x1) + x2))))), loss = 0.40082210770369237, cost = 0.00944351264317425), PopMember(tree = ((x2 * x2) + cos(cos(x5 - x2) * (cos(x2) + (x1 * ((x2 * x1) + x2))))), loss = 0.4222094580739489, cost = 0.009947406290115555)], 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 = ((x1 / (x1 / cos(x2))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 33.459635694643474, cost = 0.7883210198374476), PopMember(tree = (cos(cos(x1) / (x2 / cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.34799332333581, cost = 0.6207681744319621), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos(x2))), loss = 33.16619979685797, cost = 0.7814075648222688), PopMember(tree = ((cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos(x2 / x2)), loss = 28.046052729104257, cost = 0.6607750631714666), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / ((x1 / x2) / x2)) + cos((x1 / x2) / x2))), loss = 30.551139469770515, cost = 0.7197958054235838), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.219367138257702, cost = 0.6177376953698482), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x1))), loss = 26.325320601355866, cost = 0.6202339969687992), PopMember(tree = ((cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos(x1 / x2)), loss = 26.89917584918084, cost = 0.6337542324648742), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x2 / x2) / x2))), loss = 26.325320601355866, cost = 0.6202339969687992), PopMember(tree = (cos(cos(x1) / (x2 + (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.324478016687312, cost = 0.6202141453717502)  …  PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x2) + cos((x1 / x2) / x2))), loss = 32.88161648795695, cost = 0.7747026799768704), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / (x1 / x2)))), loss = 28.046052729104257, cost = 0.6607750631714666), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / x1))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.262932515307458, cost = 0.6187641112812136), PopMember(tree = (cos(cos(x1) / (x2 / ((x1 / cos(x2)) / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.262932515307458, cost = 0.6187641112812136), PopMember(tree = ((cos(cos(x1 / x2) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos((x1 / x2) / x2)), loss = 26.242845263644472, cost = 0.6182908484261959), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.219367138257702, cost = 0.6177376953698482), PopMember(tree = ((cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos((x1 / x2) / x2)), loss = 26.219367138257702, cost = 0.6177376953698482), PopMember(tree = (cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + (cos(x1 / x2) + cos((x1 / x2) / x2))), loss = 26.219367138257702, cost = 0.6177376953698482), PopMember(tree = ((cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos((x1 / x2) / x2)), loss = 26.219367138257702, cost = 0.6177376953698482), PopMember(tree = ((cos(cos(x1) / (x2 / (x1 / (x1 / cos(x2))))) + cos(x1 / x2)) + cos((x1 / x2) / x2)), loss = 26.219367138257702, cost = 0.6177376953698482)], 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(((x2 + (cos(x2) * x2)) - -0.5157844848727758) + x2) - x2) - 10.711062980705393) + cos(x2)) * 5.294048040454762) + 4.048937969314304), loss = 26.089822232696616, cost = 0.6146855709235857), PopMember(tree = (cos((((cos(0.0 - ((cos(x2) * x2) + x2)) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + cos(cos(x2) * x2)), loss = 36.32873271277113, cost = 0.8559179748068365), PopMember(tree = (cos((((cos(0.0 - ((cos(x2) * x2) + x2)) - (x2 - -1.5988222199466762)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((((cos(x2 * x2) + x2) - -0.6117323237673248) - (x2 - 2.191731576605512)) + x2) - cos(x2)) * -7.588964256151652) + 4.145580433358578), loss = 26.47144226165818, cost = 0.6236766757032931), PopMember(tree = (cos((((cos((x2 + ((cos(x2) * x2) - 0.0)) + x2) - x2) - 0.0) + cos(x2)) * 0.0) + cos(x2)), loss = 38.753543606903236, cost = 0.913047389317503), PopMember(tree = (cos(((cos(x2 + (cos(x2) * x2)) - ((0.0 - x2) + x2)) + cos(x2)) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(((((cos((cos(x2) * x2) + x2) - 0.0) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(((cos((((cos(x2) * x2) + x2) - 0.0) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((cos(0.0 - ((cos(x2) * x2) + x2)) - 0.0) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(cos(((cos((cos(x2 * x2) + x2) - 0.0) - (x2 - 0.0)) + x2) - x2) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698)  …  PopMember(tree = (cos((((((cos(x2 * x2) + x2) - 1.0) - (x2 - 0.0)) + x2) - cos(x2)) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(((cos(x2 + (cos(x2) * x2)) - ((0.0 - x2) + x2)) + cos(x2)) * (x2 - 0.0)) + 1.0), loss = 33.83133795497893, cost = 0.7970784584305534), PopMember(tree = (cos((((cos((cos(x2) * 0.0) + (0.0 - x2)) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((cos(((x2 - cos(x2 * x2)) - 0.0) + x2) - x2) * x2) + cos(x2)) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((((cos(x2 * x2) + x2) - 1.0) - (x2 - 0.0)) + x2) - cos(x2)) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(cos(((((cos(x2 + x2) + x2) - 1.0) - (x2 - 0.0)) + x2) - x2) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((cos(0.0 - (x2 + 0.0)) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((cos(0.0 - ((cos(x2) * (x2 * x2)) + x2)) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos((((cos(0.0 - ((cos(x2) * 0.0) + x2)) - (x2 - 0.0)) + x2) - 1.0) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698), PopMember(tree = (cos(((cos(((x2 - cos(x2 * x2)) - 0.0) + x2) - (x2 * x2)) + cos(x2)) * 0.0) + 1.0), loss = 30.738384051935885, cost = 0.7242073549490698)], 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(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * x2)))))), loss = 4.040297492246943, cost = 0.09519085828076378), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = (((x2 * x2) * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2)))))) + 0.563147561653206), loss = 1.2206870355629764, cost = 0.02875982445114933), PopMember(tree = (cos(x2) * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 44.843388021538956, cost = 1.0565263083173762), PopMember(tree = (cos(x2) * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 44.843388021538956, cost = 1.0565263083173762), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(cos(x2 * (x2 * cos(x2)))) * x2) * cos(x2))))))), loss = 4.911786409146338, cost = 0.11572344978943784), PopMember(tree = ((x2 * x2) * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2)))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = ((x2 * x2) * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2)))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = (x2 * (x2 * cos(cos((x2 * x2) * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2)))))), loss = 1.9204336745053587, cost = 0.04524610628257986), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * x2)))))), loss = 4.040297492246943, cost = 0.09519085828076378)  …  PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * cos((cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 5.42294563393438, cost = 0.1277665444920122), PopMember(tree = ((x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))) + 0.41051991713249764), loss = 1.347679896893099, cost = 0.03175182181984347), PopMember(tree = (x2 * (x2 * cos(cos(x2 * ((x2 * cos(cos(x2 * cos(x2 * cos(x2))) * x2)) * cos(x2)))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = ((x2 * x2) * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * x2)) * x2) * cos(x2)))))), loss = 5.1210376429773286, cost = 0.12065348392254403), PopMember(tree = ((x2 * x2) * cos(cos(x2 * (x2 * (cos(cos(x2 * (x2 * cos(cos(x2)))) * x2) * cos(x2)))))), loss = 3.179826922399936, cost = 0.07491786298122156), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = ((x2 * x2) * cos(cos(x2 * (cos(x2) * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2)))))), loss = 6.76661522957658, cost = 0.1594238821757815), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 1.9204336745053583, cost = 0.04524610628257985), PopMember(tree = (x2 * (x2 * cos(cos(x2 * (x2 * (cos(cos(x2 * cos(x2 * cos(x2))) * x2) * cos(x2))))))), loss = 1.9204336745053583, cost = 0.04524610628257985)], 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.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -1.5658289011045488) / -3.1316578022090975) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 4.73175301056296, cost = 0.11148179833598908), PopMember(tree = ((((((x2 + x2) * 0.22747451929094503) / -1.7457611496567877) * (((x2 + 0.16609503558074057) * 0.22655364845915862) + (x2 + x2))) / -0.9138136099088979) + (((x2 + 0.01633255460319163) * x2) * 0.37783625638306706)), loss = 0.5377484498127716, cost = 0.012669546382427451), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 * 0.23769456700731112)) * 0.23769456700731112)) / -1.3281343340972376) / -1.5658289011045488) + ((x2 + x2) * (x2 * 0.23769456700731112))), loss = 8.04907984418356, cost = 0.18963920855048744), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -1.3281343340972376) / -1.5658289011045488) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 0.5650918271756988, cost = 0.013313766161903225), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -3.1316578022090975) / -1.5658289011045488) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 4.73175301056296, cost = 0.11148179833598908), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) * 0.23769456700731112)) / -1.5658289011045488) / -1.3281343340972376) + ((x2 + x2) * (x2 * 0.23769456700731112))), loss = 0.5650918271756988, cost = 0.013313766161903225), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) / -1.5658289011045488) * (((x2 + x2) * 0.23769456700731112) + (x2 + x2))) / -1.3281343340972376) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 0.5724405014507475, cost = 0.013486903563990571), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) * 0.23769456700731112)) / -1.3281343340972376) / -1.5658289011045488) + ((x2 + x2) * (x2 * 0.23769456700731112))), loss = 0.5650918271756988, cost = 0.013313766161903225), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) * 0.23769456700731112)) / -1.3281343340972376) / -1.5658289011045488) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 0.5650918271756988, cost = 0.013313766161903225), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / 0.47538913401462224) / -1.5658289011045488) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 158.48061623932503, cost = 3.7338601698599003)  …  PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -1.5658289011045488) / -1.3281343340972376) + (((x2 + 0.23769456700731112) * x2) * 0.23769456700731112)), loss = 3.404479316941596, cost = 0.08021075398548189), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) * 0.23769456700731112)) / -1.3281343340972376) / 0.23769456700731112) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 624.0300367582228, cost = 14.70237152238916), PopMember(tree = ((((((x2 + 0.23769456700731112) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -1.5658289011045488) / -1.3281343340972376) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 3.8028723489015808, cost = 0.08959703673275955), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / -1.3281343340972376) / -1.5658289011045488) + (((x2 + x2) * 0.23769456700731112) * x2)), loss = 0.565091827175699, cost = 0.013313766161903228), PopMember(tree = (((((x2 + x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) * 0.23769456700731112)) / -1.3281343340972376) / -1.5658289011045488) + ((x2 + x2) * (x2 + x2))), loss = 500.87499355748923, cost = 11.800794525552057), PopMember(tree = (((((x2 + x2) * x2) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)) / -1.5658289011045488)) / -1.3281343340972376) + ((x2 + x2) * (x2 * 0.23769456700731112))), loss = 3166.575469262554, cost = 74.60565399165203), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) * ((((x2 + 0.23769456700731112) * 0.23769456700731112) + x2) + x2)) / -1.5658289011045488) / -1.3281343340972376) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 0.565091827175699, cost = 0.013313766161903228), PopMember(tree = ((((((x2 + x2) * 0.23769456700731112) / -1.5658289011045488) * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2))) / 0.47538913401462224) + (((x2 + x2) * x2) * 0.23769456700731112)), loss = 158.48061623932506, cost = 3.733860169859901), PopMember(tree = ((((((x2 + x2) * 0.15399106161920628) * ((x2 + 0.0853432446354193) + (x2 + x2))) / -0.8807049933137298) / -1.765713032713433) + (((x2 + x2) * x2) * 0.20932826394097628)), loss = 0.5377484498127718, cost = 0.012669546382427456), PopMember(tree = (((((x2 + x2) * (x2 * (((x2 + 0.23769456700731112) * 0.23769456700731112) + (x2 + x2)))) / -1.3281343340972376) / -1.5658289011045488) + ((x2 + x2) * (x2 * 0.23769456700731112))), loss = 3166.5754692625533, cost = 74.60565399165202)], 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)) + (x2 * x2)), loss = 0.8414698529865484, cost = 0.01982533159424141), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + x1), loss = 44.54933135475741, cost = 1.0495982277619642), PopMember(tree = (cos(x2) + (x2 * x2)), loss = 0.8159099385225129, cost = 0.019223130840439657), PopMember(tree = ((cos(x1) + x2) * x2), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(cos(x1) + (x2 * x2)) + (x2 * x2)), loss = 1.2935785976421175, cost = 0.03047717580189856), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0)  …  PopMember(tree = (x1 + (x2 * x2)), loss = 3.27562227554217, cost = 0.0771748358656234), PopMember(tree = (cos(x2) + (x2 * x2)), loss = 0.8159099385225129, cost = 0.019223130840439657), PopMember(tree = (cos(x1) + (x2 * (x2 + 0.2291010410467937))), loss = 0.19361265253890314, cost = 0.004561583547884706), PopMember(tree = (x2 * (cos(x1) + x2)), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = (x1), loss = 46.08930681488748, cost = 1.0858806020332634), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + x2) * x2), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = ((cos(x1) + x2) * x2), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = (x2 * (cos(x1) + x2)), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = (cos(x1) + (x2 * x1)), loss = 47.24002146566457, cost = 1.1129918519978799)], 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(x2) * (cos((x2 * ((x2 * x2) / 0.8413643484970063)) * x2) * cos(cos(x2) * (x2 + 0.568928891427572)))) + 0.568928891427572), loss = 32.59137713483824, cost = 0.767864536700728), PopMember(tree = (cos(cos(x2) * (cos(x2 * (x2 / 0.8413643484970063)) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.528656561504235, cost = 0.7663868174934215), PopMember(tree = (cos(((cos(x2) * cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2)))) * cos((x2 + 0.568928891427572) * 0.568928891427572)) + 0.568928891427572)), loss = 36.68391542460554, cost = 0.8642862069112511), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 / 10.313009038272321) * x2)) * x2) * cos((x2 * ((x2 / 11.078358572296306) * x2)) * x2))) + 3.084630185488347), loss = 26.306281814953017, cost = 0.6197854363314231), PopMember(tree = (cos((cos(x2) * (cos((x2 * ((x2 * x2) / 3.240150464942718)) * x2) * cos((x2 + -0.15940048538836488) * 0.4567279429626633))) + 0.015302742896266614)), loss = 35.5573436170494, cost = 0.8377437709936075), PopMember(tree = (cos(cos(x2) * (cos((((x2 * x2) / 0.8413643484970063) * -0.5709936606332189) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.54244879696908, cost = 0.7667117675086194), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 / 0.8413643484970063) * x2)) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.479033605146114, cost = 0.7652176828405345), PopMember(tree = (cos(cos(x2 * (cos((x2 * ((x2 * x2) / 0.8413643484970063)) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572)))) + 0.568928891427572), loss = 33.71307541101127, cost = 0.7942921504707185), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 * x2) / 0.8413643484970063)) * x2) * 0.6664462522117788)) + 0.568928891427572), loss = 32.6506811847282, cost = 0.769261761390094), PopMember(tree = (cos((cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2))) * 0.568928891427572) * cos((x2 + 0.568928891427572) * 0.568928891427572)) + 0.568928891427572), loss = 32.635514195221475, cost = 0.7689044216765082)  …  PopMember(tree = (cos((cos(x2) * cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2)))) * cos((x2 + 0.568928891427572) * 0.568928891427572)) + 0.568928891427572), loss = 32.479033605146114, cost = 0.7652176828405345), PopMember(tree = (cos(cos(x2) * (cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2))) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.479033605146114, cost = 0.7652176828405345), PopMember(tree = (cos((cos(x2) * ((x2 * ((x2 / 0.8413643484970063) * x2)) * cos(x2))) * cos((x2 + 0.568928891427572) * 0.568928891427572)) + 0.568928891427572), loss = 37.13939424440704, cost = 0.8750174512982831), PopMember(tree = (cos(cos(x2) * (cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2))) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.479033605146114, cost = 0.7652176828405345), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 * x2) / cos(x2))) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.52388311282742, cost = 0.7662743533302313), PopMember(tree = (cos(cos(x2) * (((x2 * ((x2 * x2) / 67.43262003862976)) * cos(x2)) * cos((x2 + -1.4649776081285464) * -75.98456613344104))) + 2.929231875219012), loss = 27.07143343041274, cost = 0.6378126828721271), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 / cos(cos(x2))) * x2)) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.5206235173622, cost = 0.7661975560917662), PopMember(tree = (cos((cos(x2) * cos(x2 * ((x1 * -2.453537253849505) * ((x2 / 7.201927158166484) * x2)))) * cos((x2 + 0.13007306127830828) * 0.40642944574138)) + 3.045642634870756), loss = 26.29208800986586, cost = 0.6194510251918699), PopMember(tree = (cos(cos(x2) * (cos((x2 * ((x2 * x2) / 0.8413643484970063)) * x2) * cos((x2 + 0.568928891427572) * 0.568928891427572))) + 0.568928891427572), loss = 32.479033605146114, cost = 0.7652176828405345), PopMember(tree = (cos((cos(x2 * (x2 * ((x2 / 0.8413643484970063) * x2))) * cos((x2 + 0.568928891427572) * 0.568928891427572)) * -0.5709936606332189) + 0.568928891427572), loss = 32.6359338410548, cost = 0.7689143086828796)], 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((x2 * x2) + ((x1 + x2) + x1)) * ((cos(x2) * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.2384769970754004, cost = 0.005618603599212165), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) + x1) * (cos(x2 * x1) * 1.0956824014185886)) + (x2 * x2)), loss = 0.42179650027887355, cost = 0.009937676856324507), PopMember(tree = (cos((cos((x2 * x2) + (((x1 + x2) + x1) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.10410359704425541, cost = 0.0024527180911241113), PopMember(tree = (cos((cos(x2 * x2) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.1407462385098388, cost = 0.003316031868754721), PopMember(tree = (cos(((cos((x2 * x2) + ((x1 + x2) + x1)) * cos(x2 * x1)) * 0.9464749654546059) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085), PopMember(tree = (cos((cos((x2 * (x2 * x2)) + ((x1 + x2) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.10531711546555857, cost = 0.0024813090204517246), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * (cos(x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.06281045131891579, cost = 0.0014798367648726322), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * 0.9464749654546059) + x1) + (x2 * x2)), loss = 0.16305564636641035, cost = 0.003841649520840441), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085)  …  PopMember(tree = (cos(((cos((x2 * x2) + ((x1 + x2) + x1)) * cos(x2 * x1)) * 0.9464749654546059) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085), PopMember(tree = (cos((cos(x2 + ((x2 + x1) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.09493756371821303, cost = 0.0022367630578597614), PopMember(tree = (cos((cos((x2 * x2) + (x2 + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.11197122416337794, cost = 0.0026380822083801863), PopMember(tree = (cos((cos((x2 * x2) + ((x2 + x1) + x1)) * ((cos(x2 * x1) * 0.9464749654546059) * cos(x2 * x1))) + x1) + (x2 * x2)), loss = 0.06679282474624638, cost = 0.0015736629114050462), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085), PopMember(tree = (cos((cos((x2 * x2) + ((x2 + x1) + x1)) * (cos((x2 * x1) * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.09531813510360465, cost = 0.0022457294562207844), PopMember(tree = (cos((cos((x2 * x2) + ((x2 + x1) + x1)) * (cos(x2 * x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.08441931894863189, cost = 0.0019889494379110085), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x1) + x2)) * (cos(x1) * 0.9464749654546059)) + x1) + (x2 * x2)), loss = 0.0628104513189158, cost = 0.0014798367648726327), PopMember(tree = ((((cos((x2 * x2) + ((x1 + x2) + x1)) * cos(x2 * x1)) * 3.6310587869792244e-9) + cos(x1)) + (x2 * x2)), loss = 3.2576924912958207e-18, cost = 7.675240371688335e-20), PopMember(tree = (cos((cos((x2 * x2) + ((x1 + x2) + x1)) * (cos(x2 * x1) * -5.253491394091113e-13)) + x1) + (x2 * x2)), loss = 2.3481195087987321e-26, cost = 5.532253796094856e-28)], 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(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (cos(x2) * x2))))) + 0.03166111244378168), loss = 0.06133268790505428, cost = 0.0014450201287285554), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2)) * cos(x2 + (cos(x2) * x2))))), loss = 0.06358837512451049, cost = 0.0014981649287946447), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (cos(x2 * ((x2 + x2) * x1)) * x2))))), loss = 0.1339869615526438, cost = 0.0031567808789086855), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos((x2 * (x2 + x2)) * x1)) * cos(x2 + (cos(x2) * x2))))), loss = 0.06233511394616343, cost = 0.001468637645854281), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((((x2 + x2) * x1) + x2) * x1))) * cos(x2 + (cos(x2) * x2))))), loss = 0.07056823365572744, cost = 0.0016626128996531835), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (x2 * 0.6237467841023063))))), loss = 0.12162752159499927, cost = 0.0028655880398429025), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2)) * cos(x2 + (cos(x2) * x2))))), loss = 0.06358837512451049, cost = 0.0014981649287946447), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (cos(x2 * ((x2 + x2) * x1)) * x2))))), loss = 0.1339869615526438, cost = 0.0031567808789086855), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos((x2 + x2) * (x2 * x1))) * cos(cos(x2) * (x2 + x2))))), loss = 0.11352361303192121, cost = 0.002674657047006724), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (cos(x2) * x2))))), loss = 0.06233511394616339, cost = 0.0014686376458542798)  …  PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + cos(x2 * x2))))), loss = 0.1017003104526562, cost = 0.0023960957969024668), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos((x2 + cos(x2)) * x2)))), loss = 0.1445698634433611, cost = 0.003406117843825655), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + cos(x2 * x2))))), loss = 0.1017003104526562, cost = 0.0023960957969024668), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 * x1) + x2))) * cos(x2 + (cos(x2) * x2))))), loss = 0.0634915531964681, cost = 0.0014958837694373352), PopMember(tree = ((x2 * x2) + cos(x1 + cos(cos(cos((x2 + x2) * (x2 * x1))) * (x2 + (cos(x2) * x2))))), loss = 0.2219767548078339, cost = 0.005229851972307413), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos((x2 + x2) * (x2 * x1))) * (cos(x2) + (cos(x2) * x2))))), loss = 0.24635159538346804, cost = 0.00580413196018054), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * ((x2 + x2) * x1))) * cos(x2 + (cos(x2) * (x2 + (cos(x2) * x2))))))), loss = 0.0490850956496208, cost = 0.0011564624616496452), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2) * ((x2 + x2) * x1)) * cos(x2 + (cos(x2) * x2))))), loss = 0.08804891634013458, cost = 0.0020744640544890607), PopMember(tree = ((x2 * x2) + cos(x1 + cos(cos(cos((x2 + x2) * (x2 * x1))) * (x2 + (cos(x2) * x2))))), loss = 0.2219767548078339, cost = 0.005229851972307413), PopMember(tree = ((x2 * x2) + cos(x1 + (cos(cos(x2 * x2)) * cos(x2 + (cos(x2) * x2))))), loss = 0.06648842098345574, cost = 0.0015664910495558782)], 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 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 53.04032194613382))) * x2), loss = 0.5452816191488087, cost = 0.012847030554335026), PopMember(tree = ((x2 + ((x2 / ((-12.077283182435254 / cos(x2)) + -5.5971378353359365)) / ((x2 + 0.16038849630847737) - -0.1563022641932652))) * x2), loss = 0.5261689661301575, cost = 0.012396729592992688), PopMember(tree = ((x2 + ((-0.013533838746289642 / (cos(0.012126399188533784 / x2) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 1.3965969150107862, cost = 0.032904324314546825), PopMember(tree = ((x2 + ((x2 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 4.567766042827456, cost = 0.10761820654960276), PopMember(tree = ((x2 + ((-0.013533838746289642 / (x2 + -0.013533838746289642)) / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829))) * x2), loss = 0.5387023556514942, cost = 0.012692020746179446), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / -0.027327741962593487)) * x2), loss = 1.5619675115209006, cost = 0.03680051489120784), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5375280672725855, cost = 0.01266435409072352), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / (-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)))) * x2), loss = 4.124785197046058, cost = 0.09718141891384402), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5375280672725855, cost = 0.01266435409072352), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x3)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5378315720114241, cost = 0.012671504771245873)  …  PopMember(tree = ((x2 * x2) + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / (x2 + -0.027327741962593487))), loss = 0.6072329413379932, cost = 0.014306625928718454), PopMember(tree = ((x2 + (0.013966537305647689 / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5376073632487218, cost = 0.01266622233236689), PopMember(tree = (((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843)) * x2), loss = 42.33447404175942, cost = 0.9974153949388164), PopMember(tree = ((x2 + (((0.012126399188533784 / cos(x2)) + 0.013793903216303843) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5405855694381531, cost = 0.012736389938552587), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((x2 + -0.013533838746289642) - 0.027587806432607685)) / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829))) * x2), loss = 0.5401552572140306, cost = 0.012726251628187689), PopMember(tree = ((x2 + (x2 + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843)))) * x2), loss = 40.485559932773576, cost = 0.9538543152758688), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((x2 + -0.013533838746289642) - 0.013278677422796278)) / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829))) * x2), loss = 0.537695925390428, cost = 0.01266830888819511), PopMember(tree = ((x2 + ((-0.013533838746289642 / ((0.012126399188533784 / x2) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5368209401596093, cost = 0.012647693922276278), PopMember(tree = ((x2 * x2) + ((-0.013533838746289642 / ((0.012126399188533784 / cos(x2)) + -0.9811464191145829)) / ((x2 + -0.013533838746289642) - 0.013793903216303843))), loss = 0.607232941337993, cost = 0.01430662592871845), PopMember(tree = ((x2 + (0.013966537305647689 / ((x2 + -0.013533838746289642) - 0.013793903216303843))) * x2), loss = 0.5376073632487218, cost = 0.01266622233236689)], 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(x5) + 3.091400242655242) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 26.84557327145876, cost = 0.632491336505055), PopMember(tree = ((cos(x5) + 0.631293264094901) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 27.402907202479163, cost = 0.6456223238505734), PopMember(tree = ((((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5)) + (cos(x5) + 1.8613467533750714)), loss = 25.611208650478638, cost = 0.6034092632349598), PopMember(tree = ((((cos(x5) + 0.631293264094901) + cos(x5)) + 0.631293264094901) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 26.68560929970619, cost = 0.6287225279471835), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 25.611208650478638, cost = 0.6034092632349598), PopMember(tree = ((cos(cos(x5)) + 0.631293264094901) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 26.389938246180108, cost = 0.6217564118609462), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(x5) + 2.2745887645003435) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 26.93437094418428, cost = 0.6345834415285828), PopMember(tree = (((cos(x5) + -0.5730547161019903) + ((cos(cos(x5)) + 0.4230381596094972) * 3.8605452227301043)) - cos(1.7266095594500124 - x5)), loss = 25.287542277947832, cost = 0.595783567390297), PopMember(tree = ((((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5)) + (cos(x5) + 1.8613467533750714)), loss = 25.611208650478645, cost = 0.6034092632349599), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - (cos(x5) + 1.8613467533750714))), loss = 31.131795819026237, cost = 0.7334762773091051)  …  PopMember(tree = ((((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos((1.044535275220173 - x5) + 0.631293264094901)) + (cos(x5) + 1.8613467533750714)), loss = 25.611208650478638, cost = 0.6034092632349598), PopMember(tree = (cos(1.675828539315074 - x5) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 31.131795819026237, cost = 0.7334762773091051), PopMember(tree = (((cos(x5) + 0.8723223203114138) + ((cos(cos(x5)) + 0.4536503457673593) * 2.5403389305336868)) - cos(x5 - 1.5056112890064366)), loss = 25.361955761043568, cost = 0.5975367757461513), PopMember(tree = ((((cos(cos(x1 - -0.0316964084518213)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5)) + (cos(x5) + 1.8613467533750714)), loss = 25.7824581686413, cost = 0.6074439633146822), PopMember(tree = ((((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(x5)) + (cos(x5) + 1.8613467533750714)), loss = 26.865971952306833, cost = 0.6329719367433913), PopMember(tree = ((cos(x5) + -0.5730559694665943) + (((cos(cos(x5)) + 0.42303813199545326) * 3.860546559309901) - cos(1.7266096106742383 - x5))), loss = 25.28754225511625, cost = 0.5957835668523768), PopMember(tree = ((((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - 0.733741019547524) + (cos(x5) + 1.8613467533750714)), loss = 26.941053799093176, cost = 0.6347408919875562), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 25.611208650478638, cost = 0.6034092632349598), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(cos(x5)) * 1.044535275220173) + 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 25.623911378039892, cost = 0.6037085440531131), PopMember(tree = ((cos(x5) + 1.8613467533750714) + (((cos(cos(x5)) + 1.044535275220173) * 1.044535275220173) - cos(1.675828539315074 - x5))), loss = 25.611208650478638, cost = 0.6034092632349598)], 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(0.45041683146752415 / x5)) * x2), loss = 2.9977307738839385, cost = 0.07062761239939638), PopMember(tree = (((x2 * x2) + cos(x1)) + 0.04524391276207875), loss = 0.002047011642022592, cost = 4.8228328604208744e-5), PopMember(tree = (cos(x1)), loss = 40.8724889199939, cost = 0.9629705010166187), PopMember(tree = (((x2 * x2) + x2) + 0.4262874497989997), loss = 3.94306420718331, cost = 0.0929000072044689), PopMember(tree = ((x2 * x2) + ((x2 * x2) + cos(x1))), loss = 40.872488919993906, cost = 0.962970501016619), PopMember(tree = (((x2 * cos(x1)) + cos(x1)) + 0.04524391276207875), loss = 41.5432783509429, cost = 0.9787745406399956), PopMember(tree = ((x2 * x2) + cos(x2 * x2)), loss = 1.078158949657113, cost = 0.02540181161854766), PopMember(tree = ((x2 * x2) + cos(x2 * x2)), loss = 1.078158949657113, cost = 0.02540181161854766), PopMember(tree = ((x2 * x2) + cos(x2 * x2)), loss = 1.078158949657113, cost = 0.02540181161854766), PopMember(tree = (((x2 * x2) + cos(x1)) + 0.0904878255241575), loss = 0.008188046568090367, cost = 0.00019291331441683498)  …  PopMember(tree = ((x2 * x2) + (cos(x1) + 0.04524391276207875)), loss = 0.002047011642022592, cost = 4.8228328604208744e-5), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (x2), loss = 47.23278697650746, cost = 1.1128214048381326), PopMember(tree = (x1 + cos(x1)), loss = 44.54933135475741, cost = 1.0495982277619642), PopMember(tree = ((x2 * x2) + cos(x2 * x2)), loss = 1.078158949657113, cost = 0.02540181161854766), PopMember(tree = ((x2 + cos(x1)) * x2), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = ((x2 * x2) + ((x2 * x2) + cos(x1))), loss = 40.872488919993906, cost = 0.962970501016619), PopMember(tree = (cos(x1) + cos(x1)), loss = 40.39129047455487, cost = 0.951633293023245), PopMember(tree = (((x2 * x2) + (x2 * x2)) + 0.04524391276207875), loss = 40.7056162856286, cost = 0.9590389218892683), PopMember(tree = (((x2 * x2) + cos(x1)) + 0.04524391276207875), loss = 0.002047011642022592, cost = 4.8228328604208744e-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 = (x2 * x2), loss = 0.5452440535352355, cost = 0.012846145495003446), PopMember(tree = (cos((x2 - (cos((cos(x2 + x3) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365), PopMember(tree = (cos(x2 - (cos((cos(x2 + x3) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.433251724390661)) + (x2 * x2)), loss = 0.710208024017616, cost = 0.01673275581658335), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365), PopMember(tree = (cos((x2 - ((cos(cos(x2 + x3) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 1.3239564671966513, cost = 0.031192889305962583), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * -0.2166258621953305) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.8603596348474096, cost = 0.020270381631156336), PopMember(tree = (cos((x2 - (cos((cos((x2 * x2) + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 1.0678870754548273, cost = 0.025159802577544143), PopMember(tree = (cos((x2 - (cos((cos(x2 / x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 1.093474183612915, cost = 0.025762644024532873), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365)  …  PopMember(tree = ((cos((x2 - (cos((cos(x2 + x3) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + x2) * x2), loss = 2.5955690859811233, cost = 0.06115253876618735), PopMember(tree = (cos((x2 - (cos((cos(x2 + x3) * (x2 - -0.2166258621953305)) + (x2 + x3)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.7530264423304169, cost = 0.01774157311215174), PopMember(tree = (cos((x2 - cos(((cos(x3 + x2) * (x2 - 0.32832461825467607)) + (x2 / x2)) - 0.29520153996072884)) - -0.23225751319384105) + (x2 * x2)), loss = 0.5574169124694346, cost = 0.01313294241822522), PopMember(tree = (cos((x2 - (cos(((x3 + cos(x2)) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.7406741126933576, cost = 0.017450547794789606), PopMember(tree = (cos((x2 - (cos((cos(x2 + x3) * (x2 - 2.4786845065968945)) + (x4 / x2)) - -0.021911284186717273)) - -0.2760462582680142) + (x2 * x2)), loss = 0.7536594134248058, cost = 0.017756486138199305), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - 0.48259136075119324)) + (x2 / x2)) - -0.11196937302061406)) - -0.36153320459291344) + (x2 * x2)), loss = 0.5777792651592523, cost = 0.013612686752121139), PopMember(tree = (cos((x2 - (((cos(x2 + x3) * (x2 - -0.2166258621953305)) + cos(x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 1.1881700393082357, cost = 0.027993712354666123), PopMember(tree = (cos((x2 - (cos((cos(x3 + x4) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.9215613114132082, cost = 0.021712315085734735), PopMember(tree = (cos((x2 - (cos((cos(x3 + x2) * (x2 - -0.2166258621953305)) + (x2 / x2)) - -0.2166258621953305)) - -0.2166258621953305) + (x2 * x2)), loss = 0.6161342420200748, cost = 0.014516343765924365)], 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((x5 / 0.5) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 27.462240431924116, cost = 0.6470202360207223), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / x5) + 2.092180702442048)) / (2.092180702442048 / (x5 + 7.224356211420377))) + cos(x5 / -3.6398512703915125)) + 2.092180702442048), loss = 28.53336615106652, cost = 0.6722563422053345), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / (2.092180702442048 / (x5 / 4.184361404884096))) + cos(x5 / -3.6398512703915125)) + 2.092180702442048), loss = 26.29924234554587, cost = 0.6196195839069436), PopMember(tree = ((cos((x5 / (2.092180702442048 / (x5 + (x5 + 7.224356211420377)))) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.246944116746473, cost = 0.618387418875648), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / (2.092180702442048 / (x5 + 7.224356211420377))) + cos(x5 / -3.6398512703915125)) + 2.499733032047763), loss = 25.734183529962458, cost = 0.6063065955099968), PopMember(tree = ((cos((x1 / (2.092180702442048 / (x5 + 7.224356211420377))) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.972149012622584, cost = 0.6354735063729989), PopMember(tree = ((cos((x5 * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) / (2.092180702442048 / (x5 + 7.224356211420377))) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.074102704476495, cost = 0.614315213199702), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / ((2.092180702442048 / x5) + 7.224356211420377)) + cos(x5 / -3.6398512703915125)) + 2.092180702442048), loss = 26.6216577270506, cost = 0.6272158059542678), PopMember(tree = ((cos((x5 / (4.069472416785886 / (x5 + 6.4720148515745555))) * (((x5 / 0.861681439357753) + 1.2696799119444973) / (x5 + 7.302743585613987))) + 2.8663593553685236) + cos(x5 / -1.8595110153855863)), loss = 25.90460450771475, cost = 0.6103217748804313), PopMember(tree = ((cos((x5 / (3.4278031466948837 / (x5 + 5.224054692308178))) * (((x5 / 7.679109848616605) + 1.683316896502657) / 4.635988814505295)) + -0.9089844986638854) + (x5 + 4.2231910079523844)), loss = 31.000817198254218, cost = 0.7303903740181608)  …  PopMember(tree = (cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / (2.092180702442048 / (x5 + 7.224356211420377))) + (cos(x5 / -3.6398512703915125) + 2.092180702442048)), loss = 26.074102704476495, cost = 0.614315213199702), PopMember(tree = ((cos((x5 / (-1.299094483392757 / (x5 + 9.306322265945443))) * (((x5 / -6.294631769603129) + 5.019957934147524) / 2.9591940430862698)) + 3.3738269847319713) + cos(x5 / (x4 + x2))), loss = 24.555483420412255, cost = 0.5785359980975486), PopMember(tree = ((cos((x5 / (2.092180702442048 / (x5 + 7.224356211420377))) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.074102704476495, cost = 0.614315213199702), PopMember(tree = ((cos((x5 / (2.092180702442048 / (x5 + 7.224356211420377))) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.074102704476495, cost = 0.614315213199702), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / (2.092180702442048 / (x5 + 7.224356211420377))) + cos(x5 / -3.6398512703915125)) + 2.092180702442048), loss = 26.074102704476495, cost = 0.614315213199702), PopMember(tree = ((cos((x5 / (2.092180702442048 / (x5 + 7.224356211420377))) * (((x5 / 0.5888420477381331) / 4.184361404884096) + 2.092180702442048)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 28.157166090825875, cost = 0.6633929338329806), PopMember(tree = ((cos((x5 / 0.2896009888237094) * (((x5 / 0.5888420477381331) + 2.092180702442048) / 4.184361404884096)) + 2.092180702442048) + cos(x5 / -3.6398512703915125)), loss = 26.272245538342876, cost = 0.6189835294447599), PopMember(tree = ((cos((x5 / (1.823926882759604 / (x5 + 5.791059211780422))) * (((x5 / 0.6760125555295355) + 2.4006603982058614) / 4.011617022594103)) + 2.8923599162560283) + cos(x5 / -2.6929195077086794)), loss = 25.306476651595172, cost = 0.5962296680256977), PopMember(tree = (cos((x5 / (2.011067618067188 / (x5 + 7.606143480297532))) * (((x5 / 0.8146766100055524) + 2.3405255795677813) / 4.118577069211978)) + 3.635431049871241), loss = 25.651476525998874, cost = 0.604357988827387), PopMember(tree = ((cos(((x5 / 4.184361404884096) * ((x5 / 0.5888420477381331) + 2.092180702442048)) / (2.092180702442048 / (x5 + 7.224356211420377))) + cos(x5 / -3.6398512703915125)) + 2.092180702442048), loss = 26.074102704476495, cost = 0.614315213199702)], 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(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 * x2) + cos(x1)) - -0.5021551704668338), loss = 0.25215981522657493, cost = 0.005940975703248882), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 * x2) + cos(x1)) + cos(x1)), loss = 0.5452440535352355, cost = 0.012846145495003446), PopMember(tree = (x2 + cos(x1)), loss = 45.77031256862564, cost = 1.0783649831595148), PopMember(tree = ((x2 * x2) + cos(cos(x5))), loss = 0.7483296684106499, cost = 0.01763091543374284), PopMember(tree = ((x2 * ((x2 * x2) + cos(x1))) + cos(x1)), loss = 746.5839691253055, cost = 17.589786132350824), PopMember(tree = (x2 * x2), loss = 0.5452440535352355, cost = 0.012846145495003446), PopMember(tree = ((x2 * x1) + cos(x1)), loss = 47.24002146566457, cost = 1.1129918519978799), PopMember(tree = ((x2 * x2) + cos(x2)), loss = 0.8159099385225129, cost = 0.019223130840439657)  …  PopMember(tree = ((x2 + cos(x1)) * x2), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = ((x2 * x1) + cos(x1)), loss = 47.24002146566457, cost = 1.1129918519978799), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * (x2 * x2)) + cos(x1)), loss = 740.1448267756175, cost = 17.438077628698547), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + x1), loss = 3.27562227554217, cost = 0.0771748358656234), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (x2 * (x2 + cos(x1))), loss = 2.7289947684196414, cost = 0.06429609570782131), PopMember(tree = (x2), loss = 47.23278697650746, cost = 1.1128214048381326), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0)], 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 = (3.926447841772372), loss = 27.027182713355117, cost = 0.6367701201043267), PopMember(tree = (cos(1.716488335122402e-11)), loss = 35.591279762219656, cost = 0.8385433187476272), PopMember(tree = (x2 * x2), loss = 0.5452440535352355, cost = 0.012846145495003446), PopMember(tree = (4.102972799502925 - cos(x2)), loss = 23.595575101315813, cost = 0.5559202137546934), PopMember(tree = ((x2 * x2) + 0.23769456700731112), loss = 0.48874534635232164, cost = 0.011515015686167475), PopMember(tree = (cos(x1) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * (x2 + 0.02721831726419835)) - -0.24282774792869244), loss = 0.4860389317355425, cost = 0.011451251586932411), PopMember(tree = ((x2 * x2) + cos(x1 + -0.0)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + cos(x1 + cos(1.5381478173687748))), loss = 0.00048476613327724376, cost = 1.1421263998667837e-5), PopMember(tree = ((x2 * x2) + cos((-0.5640993013331487 - -0.5640993013331487) + x1)), loss = 0.0, cost = 0.0)  …  PopMember(tree = (cos(x1 + (cos((x1 * 1.9619288451263868e-13) + (x1 + ((-1.1003437012921455 / x4) * x2))) * 1.9619288451263868e-13)) + (x2 * x2)), loss = 8.289921755773063e-27, cost = 1.9531353038401036e-28), PopMember(tree = ((x2 * x2) + cos((-0.10507019020703336 * (((-0.10507019020703336 * -0.18701086898979022) * ((1.3669334374123998 * -0.5640993013331487) - -0.5499915700117674)) * (-0.5640993013331487 - -0.5499915700117674))) + x1)), loss = 1.8858226837712616e-11, cost = 4.4430658924990846e-13), PopMember(tree = (cos((cos((x2 * x2) + cos(x2 * x1)) * (0.9464749654546059 * cos(x2 * x1))) + x1) + (x2 * x2)), loss = 0.09515126067970697, cost = 0.002241797834931409), PopMember(tree = (cos((cos((x2 * x2) + ((x2 + x1) + x1)) * (cos(x2 * x1) * -4.638222516074175e-13)) + x1) + (x2 * x2)), loss = 1.8285685228866456e-26, cost = 4.30817303559412e-28), PopMember(tree = ((((0.007268530384643756 + cos(x1 + 0.007268530384643756)) + 0.007268530384643756) + (((0.007268530384643756 * (0.007268530384643756 + cos(x1 + 0.007268530384643756))) + 0.007268530384643756) + 0.007268530384643756)) + (x2 * x2)), loss = 0.0009753583869958307, cost = 2.297979348491989e-5), PopMember(tree = ((x2 * x2) + cos((-0.10507019020703336 * ((((-0.5499915700117674 - -0.10507019020703336) * (-0.10507019020703336 * -0.10507019020703336)) * ((-0.5499915700117674 - -0.5499915700117674) * -0.10507019020703336)) * (-0.10507019020703336 - -0.5640993013331487))) + x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + cos(((x1 + 0.001034978141125548) - (((x1 - (-4.910275957203314e-11 * cos(x1 + ((x1 + 0.11736072148608413) - 0.001034978141125548)))) + x1) * -4.910275957203314e-11)) + -0.0010349780453189857)), loss = 1.6031963470171602e-20, cost = 3.7771881045392387e-22), PopMember(tree = ((x2 * x2) + cos((((-0.10507019020703336 * ((-0.5499915700117674 - -0.5640993013331487) * -0.10507019020703336)) * (((-0.5499915700117674 - -0.5640993013331487) * -0.10507019020703336) * 0.10137765920801346)) * (-0.10507019020703336 * (-0.5640993013331487 - -0.5640993013331487))) + x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + cos((-0.10507019020703336 * ((((cos(1.3898966427820727) - -0.5640993013331487) * (-0.10507019020703336 * -0.10507019020703336)) * (-0.5499915700117674 - -0.5640993013331487)) * (((-0.5499915700117674 - -0.5640993013331487) * 0.10137765920801346) * -0.10507019020703336))) + x1)), loss = 1.5222638498129333e-18, cost = 3.5865082378596337e-20), PopMember(tree = ((x2 * x2) + cos((((-0.10507019020703336 * ((-0.5499915700117674 - -0.5640993013331487) * -0.10507019020703336)) * (((-0.5499915700117674 - (x2 * x2)) * -0.10507019020703336) * 0.10137765920801346)) * (-0.10507019020703336 * (-0.5640993013331487 - -0.5640993013331487))) + 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}}}[3.926447841772372, x2 * x2, (x2 * x2) + 0.23769456700731112, cos(x1) + (x2 * x2)], equation_strings = ["3.926447841772372", "x2 * x2", "(x2 * x2) + 0.23769456700731112", "cos(x1) + (x2 * x2)"], losses = [27.027182713355117, 0.5452440535352355, 0.48874534635232164, 0.0], complexities = [1, 3, 5, 6], scores = [0.0, 1.9516824533085604, 0.054695954678001486, 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.