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
endImplementing the hooks
Create the state once per output at search start:
function SymbolicRegression.init_plugin_state(::MutationCounterPlugin, options, dataset)
return MutationCounterState(0, 0)
endThe 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
endRunning 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)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}), ([0.7779254127638586 -0.45827325636108096 … 2.6932321036118854 2.42290638698967; 2.9223251856744406 2.262742759985926 … -2.1457511917465726 1.3467579278033777; … ; -0.4310687339475145 -1.1216373988162698 … -2.4487352426304576 2.981539273602155; 1.8436740221432455 -2.4069849285765357 … -0.47711131371129917 3.0910481357781396], [0.9223853991138262, 4.143947750186552, -0.8412211471688144, 1.5720819212049628, 0.4866463530767039, 1.4950919662359048, 5.997477594584713, 18.539925466978005, 0.36858382580882076, 0.6878622758095714 … 5.6388918398740655, 1.100374761847683, 1.0892692295651742, 0.786618806187521, 1.4467265927216906, 0.9686662639144485, 8.079531485569788, 1.4001085354396856, 2.1665901610979734, 5.524072678926438]), 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.339798932001909 / cos(cos(-1.5434893957573554 - ((x1 - x1) - (((x1 - (x1 - x1)) - x1) * x1))))), loss = 22.594457815738366, cost = 0.762600027597286), PopMember(tree = (cos(cos(2.535130344556018 - cos(x1 - (x1 - (0.12938873871518222 - ((x1 - x1) - ((x1 - x1) * x1)))))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos((x1 - ((x1 - x1) - (((x1 - (x1 - x1)) - x1) * x1))) - 2.535130344556018))), loss = 25.2332475997967, cost = 0.8516635129244093), PopMember(tree = (cos(cos(2.535130344556018 - cos(x1 - (x1 - (0.12938873871518222 - ((x1 - x1) - ((x1 - x1) * x1)))))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(cos(0.12938873871518222 - (((x1 - x1) - ((x1 - (x1 - 0.9916409487986626)) - x1)) * x1)) - 2.535130344556018))), loss = 24.92559507105864, cost = 0.8412797352378921), PopMember(tree = (cos(cos(-1.5434893957573554 - ((x1 - x1) - (((x1 - (x1 - x1)) - x1) * x1))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(-1.5434893957573554 - ((x1 - x1) - (((x1 - (x1 - x1)) - x1) * x1))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(2.535130344556018 - cos((x1 - x1) - (0.12938873871518222 - (((x1 - x1) + (x1 - x1)) * x1)))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(2.535130344556018 - cos((x1 - x1) - (0.12938873871518222 - (((x1 - x1) - (x1 - x1)) * x1)))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(cos(0.12938873871518222 - (((x1 - x1) - ((x1 - x1) - (x1 - x1))) * x1)) - 2.535130344556018))), loss = 24.04171662270981, cost = 0.8114473872081044) … PopMember(tree = (cos(cos(2.535130344556018 - cos(x1 * (x1 - (0.12938873871518222 - ((x1 - x1) - ((x1 - x1) * x1)))))))), loss = 25.02827299074079, cost = 0.8447452835162268), PopMember(tree = (cos(cos(cos(0.12938873871518222 - (((x1 - x1) - ((x1 - (x1 - x1)) - x1)) * x1)) - 2.535130344556018))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(cos(0.13285353814288953 - (((x1 - x1) - ((x1 - (x1 - x1)) - x1)) * x1)) - 2.5619842680156504))), loss = 24.040006383560527, cost = 0.8113896638304036), PopMember(tree = (cos(cos(2.535130344556018 - cos((x1 - x1) - cos(1.4410438150641605 - (((x1 - x1) - (x1 - x1)) * x1)))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(cos(0.12938873871518222 - (((x1 - x1) - ((x1 - x1) - x1)) * x1)) - 2.535130344556018))), loss = 25.0572081481097, cost = 0.845721892558498), PopMember(tree = (cos(cos(2.535130344556018 - cos((x1 - x1) - (0.12938873871518222 - (((x1 - x1) + (x1 - x1)) * x1)))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(cos(0.12938873871518222 - ((x1 - x1) - (((x1 - (x1 - x1)) - (x1 - x1)) * x1))) - 2.535130344556018))), loss = 25.06822484504554, cost = 0.8460937241579023), PopMember(tree = (cos(cos(2.535130344556018 - cos((x1 - x1) - (0.12938873871518222 - (((x1 - x1) - (x1 - x1)) * x1)))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(2.535130344556018 - cos(x1 - (x1 - (0.12938873871518222 - ((x1 - x1) - ((x1 - x1) * x1)))))))), loss = 24.04171662270981, cost = 0.8114473872081044), PopMember(tree = (cos(cos(-1.5434893957573554 - ((x1 - x1) - (((x1 - (x1 - x1)) - x1) * x1)))) - x5), loss = 26.512806805516096, cost = 0.8948507358067516)], 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(x5 - cos(cos(x1))) - cos(x1)) - (cos(x5 - cos(cos(x1))) - cos(x1))) * cos(cos(cos(x2 - x5))))), loss = 24.38563489118534, cost = 0.8230551931209314), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x4 + 0.24306048916350706))) - cos(x1)) - x5) * cos(cos(cos(x5 - x2))))), loss = 24.3669995551801, cost = 0.822426219951149), PopMember(tree = (cos(cos(cos(cos(x1) - cos(x1)) - x5) * cos(cos(cos(x5 - x2))))), loss = 24.50334372472076, cost = 0.8270280594067526), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x1))))), loss = 24.365622360160067, cost = 0.8223797373593184), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(x1))), loss = 24.32667621044254, cost = 0.8210652408977698), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - (cos(x5 - cos(cos(x1))) - cos(x1))) * cos(cos(cos(x5 - x2))))), loss = 24.38563489118534, cost = 0.8230551931209314), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) - cos(cos(cos(x5 - x2))))), loss = 25.636659464344213, cost = 0.8652793253305258), PopMember(tree = (cos(cos(x5 - cos(x5)) * cos(cos(cos(x2 - x5))))), loss = 24.323673743883273, cost = 0.8209639027245049), PopMember(tree = (cos(cos(cos(cos(cos(x5 - cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.52553684009222, cost = 0.8277771134682737), PopMember(tree = (cos(cos(cos((cos(x5 - cos(cos(x1))) - cos(x1)) - x5)) * cos(cos(cos(x2 - x5))))), loss = 24.700286566142104, cost = 0.8336752034775605) … PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.358790078416895, cost = 0.8221491366390715), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x2 - x5)) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.418585224562463, cost = 0.8241673209421722), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x3 - x5))))), loss = 24.402154367291658, cost = 0.8236127525471105), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x5 - cos(cos(x1)))) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.50334372472076, cost = 0.8270280594067526), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(cos(cos(x5 - x2))))) - cos(x1)) - x5) * cos(cos(cos(x5 - x2))))), loss = 24.371777091593213, cost = 0.8225874696447774), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.358790078416895, cost = 0.8221491366390715), PopMember(tree = (cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.358790078416895, cost = 0.8221491366390715), PopMember(tree = (cos(cos(x5 - cos(cos(x5 - cos(cos(x1))) - cos(x1))) * cos(cos(cos(x2 - x5))))), loss = 24.358790078416895, cost = 0.8221491366390715), PopMember(tree = (cos(cos(cos(x5) - x5) * cos(cos(cos(x2 - x5))))), loss = 24.323673743883273, cost = 0.8209639027245049), PopMember(tree = (cos(cos(cos(cos(cos(cos(x5 - cos(cos(x1))) - cos(x1)) - x5) * cos(cos(cos(x2 - x5))))) * cos(cos(cos(x2 - x5))))), loss = 24.44904244820668, cost = 0.8251953022188655)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * 0.8924317527845296) + 4.144546148713059), loss = 33.66038233834306, cost = 1.13609313883493), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + cos(x2)) * -2.339805549449501) + 4.144546148713059), loss = 9.275204352224383, cost = 0.3130533670097555), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + cos(x2)) * -2.339805549449501) + 4.144546148713059), loss = 9.275204352224383, cost = 0.3130533670097555), PopMember(tree = (((((-2.7816751892870966 - (cos(x2) * -0.48566736889821205)) + 0.8715863612817422) * ((cos(x2) * 1.318846829220425) + (cos(x2) * 1.3188468289984452))) + 1.2503981959923616) - -2.550122882009326), loss = 8.701622669317626, cost = 0.2936940439942987), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * -0.8779767082818679) + 4.144546148713059), loss = 11.352609615125438, cost = 0.3831692035453675), PopMember(tree = (((((cos(x2) * 1.4192359014359603) + 1.4192359014359603) * cos(x2)) * -1.6486375147937866) + 4.144546148713059), loss = 12.821239635810565, cost = 0.4327378766880596), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + -3.126457401904477) * -1.6486375147937866) + 4.144546148713059), loss = 41.76447329698667, cost = 1.409619507075892), PopMember(tree = (((((-2.2340256491199475 - (((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * 1.4192359014359603)) + 1.4192359014359603) * ((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603))) + 1.42241073138796) - -2.7221354173250987), loss = 51.335490855444256, cost = 1.7326570552099205), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * -1.6486375147937866)) * -1.6486375147937866) + 4.144546148713059), loss = 21.238187094772247, cost = 0.7168236651958076), PopMember(tree = (3.071025760373798), loss = 18.826909510659178, cost = 0.635439089952383) … PopMember(tree = ((((cos(x2) * 1.4192359014359603) + 2.014230543924743) * -1.6486375147937866) + 4.144546148713059), loss = 20.451537285705438, cost = 0.690272943288868), PopMember(tree = (((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * -1.7072215004685167) + 1.42241073138796) - -2.7221354173250987), loss = 8.923918048950958, cost = 0.3011968778319421), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * -1.6486375147937866) + 4.144546148713059), loss = 8.92753214318184, cost = 0.30131885944277287), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + 2.014230543924743) * -1.7072215004685167) + 4.144546148713059), loss = 21.108749548369445, cost = 0.7124549356045118), PopMember(tree = ((((cos(x2) + (cos(x2) * 1.4192359014359603)) * -1.7072215004685167) + 1.42241073138796) - -2.7221354173250987), loss = 9.121058549088598, cost = 0.3078506932087726), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + cos(x2)) * -2.339805549449501) + 4.144546148713059), loss = 9.275204352224383, cost = 0.3130533670097555), PopMember(tree = ((((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * -1.7072215004685167) + 1.42241073138796) - -2.7221354173250987) * 0.71060126950393), loss = 10.953528891924613, cost = 0.3696995742668767), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * -0.2848107690805568) - -2.7221354173250987), loss = 16.333859020084482, cost = 0.5512945449308426), PopMember(tree = ((((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603)) * 1.4192359014359603) + 4.144546148713059), loss = 44.80056774745619, cost = 1.51209267685044), PopMember(tree = (((((-2.2340256491199475 - (cos(x2) * 0.6288114272486915)) + 1.4192359014359603) * ((cos(x2) * 1.4192359014359603) + (cos(x2) * 1.4192359014359603))) + 1.42241073138796) - -2.7221354173250987), loss = 12.273934212960476, cost = 0.41426542056747523)], 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(x1 + (((x1 + x1) * cos(x1)) + x2))) / -0.6118509593497047))), loss = 24.264787142926444, cost = 0.8189763833123991), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + (x1 + ((x1 * cos(x1)) + x1)))) / -0.6118509593497047))), loss = 24.553596674090333, cost = 0.8287241789104207), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + ((x1 + x1) + x2))) / -0.6118509593497047))), loss = 24.25651209793646, cost = 0.8186970869650738), PopMember(tree = (cos(cos(cos(x1) / -0.6118509593497047))), loss = 24.786995475444822, cost = 0.8366017714512839), PopMember(tree = (cos(cos(cos(cos(x1 + ((x1 * -0.6118509593497047) + (x1 + x2)))) / -0.6118509593497047))), loss = 24.30615688241416, cost = 0.8203726799056748), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + (x1 + x2))) / -0.6118509593497047))), loss = 24.302163963221155, cost = 0.8202379123307405), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + ((x1 + -1.4603782254572828) + x2))) / -0.6118509593497047))), loss = 24.43051127087621, cost = 0.8245698445752755), PopMember(tree = (cos(cos(cos(cos(x1 + (((x1 * cos(x1)) + x1) + ((x1 * cos(x1)) + x2)))) / -0.6118509593497047))), loss = 24.418989268250286, cost = 0.8241809580796506), PopMember(tree = (cos(cos(cos((x1 * cos(x1)) + ((x1 + x1) + x2))))), loss = 25.641528976979153, cost = 0.8654436793725689), PopMember(tree = (cos(cos(cos(cos(x1 + (x1 + ((x1 + x2) * cos(x1))))) / -0.6118509593497047))), loss = 24.387134440255885, cost = 0.8231058053627434) … PopMember(tree = (cos(cos(cos(cos(cos(x1 + ((x1 * cos(x1)) + (x1 + x2)))) / -0.6118509593497047) / -0.6118509593497047))), loss = 25.877705034192513, cost = 0.8734150088559997), PopMember(tree = (cos(cos(cos(x1 + cos((x1 * cos(x1)) + (x1 + x2))) / -0.6118509593497047))), loss = 24.82959702314507, cost = 0.8380396435930648), PopMember(tree = (cos(cos(cos(cos(x1 + ((cos(x1) * x1) + x1))) / -0.6118509593497047))), loss = 24.698666108286524, cost = 0.8336205103658486), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + ((x1 + x1) + x2))) / -0.5419689327368361))), loss = 24.190793879552974, cost = 0.8164789892544936), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + (x5 + (x1 + x2)))) / -0.6118509593497047))), loss = 24.264553592934195, cost = 0.8189685006169174), PopMember(tree = (cos(cos(cos(cos(x1 + ((cos(x1) * x1) + ((x1 + x2) + x2)))) / -0.6118509593497047))), loss = 24.26086299785339, cost = 0.818843936976868), PopMember(tree = (cos(cos(cos(cos(x1 + ((x1 * cos(x1)) + (x1 + x2)))) / -0.6118509593497047))), loss = 24.25651209793646, cost = 0.8186970869650738), PopMember(tree = (cos(cos(cos(cos(x1 + ((x1 * cos(x1)) + (x1 + x2)))) / -0.6118509593497047))), loss = 24.25651209793646, cost = 0.8186970869650738), PopMember(tree = (cos(cos(cos(cos(x1 + ((x1 * cos(x1)) + (cos(x1 + (x1 + ((x1 * cos(x1)) + x2))) + x2)))) / -0.6118509593497047))), loss = 24.457657472691345, cost = 0.8254860734320247), PopMember(tree = (cos(cos(cos(cos((x1 * cos(x1)) + (x1 + (x1 + x2)))) / -0.6118509593497047))), loss = 24.25651209793646, cost = 0.8186970869650738)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (((x2 * x2) + cos(((x2 * x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2)))) * x2)) * 0.8893164067309464), loss = 1.1827573251179622, cost = 0.03992000056525253), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) / (cos(cos(x4)) + ((x2 * cos(x2)) * x2))) * x2)), loss = 0.8340664054406546, cost = 0.028151109842696018), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / ((x2 * x2) + ((x2 * x2) * cos(x2))))), loss = 0.8618095045079529, cost = 0.02908748496118277), PopMember(tree = ((x2 * cos(cos(x4))) + cos(((x2 * x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2)))) * x2)), loss = 32.95657300749324, cost = 1.1123384190046783), PopMember(tree = ((x2 * x2) + cos((x2 * (x2 * cos(cos(x4)))) / (((x2 * x2) * cos(x2)) + cos(cos(x4))))), loss = 0.7603770619063773, cost = 0.025663973578079733), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / (((x2 * x2) * cos(x2)) + cos(cos(x4))))), loss = 0.8340664054406546, cost = 0.028151109842696018), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / (x2 + ((x2 * x2) * cos(x2))))), loss = 1.0548165246409686, cost = 0.03560178860503402), PopMember(tree = ((x2 * x2) + (cos((x2 * x2) * x2) / (((x2 * x2) * cos(x2)) + cos(cos(x4))))), loss = 1.6953936943699117, cost = 0.05722231923680742), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2))))), loss = 0.8340664054406546, cost = 0.028151109842696018), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) / (((x2 * x2) * cos(x2)) + cos(cos(x4)))) * x2)), loss = 0.8340664054406546, cost = 0.028151109842696018) … PopMember(tree = ((x2 * x2) + cos(((x2 * x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2)))) * x2)), loss = 0.8340664054406546, cost = 0.028151109842696018), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) / ((x2 * x2) * cos(x2))) * x2)), loss = 0.9068730629701239, cost = 0.030608454006208756), PopMember(tree = ((x2 * x2) + cos((x2 * (x2 * x2)) / (cos((x2 * x2) * x2) + cos(cos(x4))))), loss = 0.9778482224926982, cost = 0.03300398210659695), PopMember(tree = ((x2 * x2) + cos((((x2 * x2) / cos(cos(x4))) + ((x2 * cos(x2)) * x2)) * x2)), loss = 1.0796922154891646, cost = 0.03644138399086009), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / cos(((x2 * x2) * cos(x2)) + cos(x4)))), loss = 0.8526448576185427, cost = 0.02877816308996197), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) / (((x2 * cos(x2)) * x2) + cos(cos(x4)))) * x2)), loss = 0.8340664054406546, cost = 0.028151109842696018), PopMember(tree = ((x2 * x2) + cos(((x2 / x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2)))) * x2)), loss = 0.8234576197462603, cost = 0.027793045917051232), PopMember(tree = (x2 * (x2 + cos(((x2 * x2) / (cos(cos(x4)) + ((x2 * x2) * cos(x2)))) * x2))), loss = 1.8879263730834284, cost = 0.06372061307938126), PopMember(tree = ((x2 * x2) + cos(((x2 * x2) * x2) / (((x2 * (x2 + 0.22206941008855394)) * cos(x2)) + cos(cos(x4))))), loss = 0.8024247209757343, cost = 0.027083151069666068), PopMember(tree = ((x2 * x2) + cos((x2 * (x2 * x2)) / (((x2 * x2) * cos(x2)) + x2))), loss = 1.0548165246409686, cost = 0.03560178860503402)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x2 - x2) * (x2 + cos(x2 + x4)))) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - (cos((x4 * x2) + cos(x2 + x2)) - x2)) * (cos(x4) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((x2 - cos((x2 - x2) * (x2 + (cos(x2) + x4)))) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos(x2 + cos((x2 - x2) * (x2 + x4)))) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (((((0.19867638696345002 - x3) + (0.7228047167152711 - (cos(x2) + x4))) * (cos(x2) + x2)) * (x2 - x2)) + (x2 * x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - (cos(x4 * cos(x2 + x4)) - x2)) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x4 - x2) * (x2 + cos(x2 + x4)))) * cos(x2 + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + ((((0.7228047167152711 - ((0.19867638696345002 - x3) + (cos(x2) + x4))) * (cos(x2) + x2)) * (x2 - x2)) + (x2 * x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - (cos(x2) - x2)) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x2 - x2) * (x2 + cos(x2 + x4)))) * cos(x2 + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0) … PopMember(tree = ((cos(x1) + (x2 * x2)) + (((x2 - cos((x2 - x2) * (x2 + cos(x2 + x4)))) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = (x2 * ((cos(x1) + ((x2 + cos(x1)) * (x2 - x2))) + x2)), loss = 1.9011417576424021, cost = 0.06416665399399715), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x4 * cos(x2 + x4)) - x2)) * (cos(x2) + x2)) * (x2 - 0.7228047167152711))), loss = 74.96360570464643, cost = 2.5301447038634), PopMember(tree = (cos(x1 + (cos(x4 + ((cos(x1) - (((cos(x2 + x2) - x2) + cos(x4)) - x2)) * x2)) * (x2 - x2))) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos(x2 + ((x2 - x2) * cos(x2 + x4)))) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1 + (cos(x2 + ((cos(x1) - (((cos(x2 + x2) - x2) + cos(x4)) - x2)) * x2)) * (x2 - x2))) + (x2 * x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x2 * (x2 + cos(x2 + x4))) - x2)) * cos(x2 + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + (((0.7228047167152711 - cos((x2 - x2) * (x2 + cos(x2 + x4)))) * cos(x2 + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + ((((0.7228047167152711 - cos((x4 * x2) + cos(x2 + x2))) - x2) * (cos(x2) + x2)) * (x2 - x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) + ((cos(0.7629439581755474 - cos(x2)) * (cos(x2) * x2)) * (((x4 * x2) + cos(x2 + x2)) - x2))), loss = 2.144962377998068, cost = 0.07239600002780647)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x1) + (((x2 * x2) * (x2 / x2)) * (x2 / x2))), loss = 0.0, cost = 0.0), PopMember(tree = (((cos(x2 / x2) * (x2 / x2)) * (x2 / x2)) + (x2 * x2)), loss = 0.6614902603281183, cost = 0.02232638175677657), PopMember(tree = (((cos(x1) * (x2 / x2)) * x2) + (x2 * x2)), loss = 1.9011417576424017, cost = 0.06416665399399714), PopMember(tree = ((cos(x1) * (x2 / x2)) + (x2 * (x2 * (x2 / x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (x2 / x2), loss = 24.040006383560527, cost = 0.8113896638304036), PopMember(tree = (((cos(x1) * (x2 / x2)) * (x2 / x2)) + (x2 * (x2 / x2))), loss = 32.474524553568756, cost = 1.0960684926685846), PopMember(tree = (((cos(x1) + ((x2 * x2) * (x2 / x2))) * (x2 / x2)) + 0.9945853010435278), loss = 0.989199921051845, cost = 0.03338712056050804), PopMember(tree = ((cos(x1) + (x2 * (x2 * (x2 / x2)))) * (x2 / x2)), loss = 0.0, cost = 0.0), PopMember(tree = (((cos(x1) * (x2 / (x2 * (x2 * (x2 / x2))))) * (x2 / x2)) + (x2 * x2)), loss = 28.907881231107673, cost = 0.9756884278615455), PopMember(tree = (((cos(x1) * (x2 / x2)) * (x2 / x2)) + (x2 * x2)), loss = 0.0, cost = 0.0) … PopMember(tree = ((cos(x1) + ((x2 * x2) * (x2 / x2))) * (x2 / x2)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (((x2 * x2) * x1) * (x2 / x2))), loss = 188.6240968945374, cost = 6.366372792406244), PopMember(tree = ((cos(x1) + (x2 * (x2 / x2))) * (x2 / x2)), loss = 32.474524553568756, cost = 1.0960684926685846), PopMember(tree = (cos(x1) + (((x2 * x2) * (x2 / x2)) * ((x2 * x2) / x2))), loss = 433.45951678160725, cost = 14.629969975633054), PopMember(tree = ((cos(x1) + (x2 * (x2 * (x2 / x2)))) * (x2 / x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((cos(x1) + (x2 * x2)) * (x2 / x2)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + (x2 * x2)), loss = 30.53007120819185, cost = 1.030440001516512), PopMember(tree = ((cos(x1) + (((cos(x1) * (x2 / x2)) * (x2 / x2)) * (x2 / x2))) * (x2 / x2)), loss = 30.530071208191842, cost = 1.0304400015165118), PopMember(tree = ((cos(x1) + x2) * (x2 / x2)), loss = 32.474524553568756, cost = 1.0960684926685846), PopMember(tree = ((cos(x1) + ((x2 * x2) * (x2 / x2))) * (x2 / x2)), loss = 0.0, cost = 0.0)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x3)) + cos(cos(x2))) + cos(x2))))), loss = 0.8122458303973383, cost = 0.027414629628568877), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(x2)) + cos(x2))))), loss = 0.8414260118582118, cost = 0.028399508636015362), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(cos(x2))) + cos(cos(x2))) + cos(x2))))), loss = 0.8697043250725922, cost = 0.029353948110224383), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978) … PopMember(tree = ((x2 * x2) + cos(cos(cos(cos(x2) + (cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))))))), loss = 0.7085431768701267, cost = 0.023914494901428978), PopMember(tree = (((x2 - -0.18262613768791272) * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.8640487669797211, cost = 0.02916306374411681), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(x2) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7831315108558011, cost = 0.026431973568975933), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(cos(x2)) + x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.781969132136338, cost = 0.02639274137979175), PopMember(tree = ((x2 * x2) + cos(cos(cos(((cos(cos(x2)) + cos(cos(x2))) + cos(cos(x2))) + cos(x2))))), loss = 0.9123502099498441, cost = 0.03079331670448424), PopMember(tree = ((x2 * x2) + cos(cos(cos(cos(cos(cos(x2)) + (cos(cos(x2)) + cos(x2))) + cos(x2))))), loss = 0.9994999365785244, cost = 0.033734762986316856), PopMember(tree = ((x2 * x2) + cos(cos(cos(cos((cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.9994999365785244, cost = 0.033734762986316856), PopMember(tree = ((x2 * x2) + cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))), loss = 0.621365782440115, cost = 0.02097211478590002), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(x2) + cos(cos(x2))) + cos(x2))))), loss = 0.8173714525775722, cost = 0.027587627788028), PopMember(tree = ((x2 * x2) + cos(cos(cos((cos(cos(cos(x2)) + cos(x2)) + cos(cos(x2))) + cos(x2))))), loss = 0.7085431768701267, cost = 0.023914494901428978)], 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(1.0 / ((x2 * x2) + 1.2202439602717787)) + ((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787)))), loss = 1.8446209460464016, cost = 0.062258983854955034), PopMember(tree = (((x2 * x2) + ((1.7129765182813714 / ((x2 * x2) + 1.6468424771636072)) / 2.0531920403977915)) + -0.15336096030008325), loss = 0.4643822189411987, cost = 0.01567366191604603), PopMember(tree = (((x2 * x2) + (1.0 / ((x2 * x2) + (x1 / -0.04179862431246647)))) + -0.3093131951823226), loss = 0.6564848262396626, cost = 0.02215744014263729), PopMember(tree = ((x2 * x2) + ((1.0 / ((x2 * x2) + 1.2202439602717787)) + -0.3093131951823226)), loss = 0.47433539981074246, cost = 0.016009598103039098), PopMember(tree = (cos((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787))) + ((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787)))), loss = 1.1497640776195537, cost = 0.03880642432199855), PopMember(tree = ((x2 * (x2 + -0.3093131951823226)) + (1.0 / ((x2 * x2) + 1.2202439602717787))), loss = 0.7731520286812262, cost = 0.026095149669779008), PopMember(tree = ((x2 * x2) + ((1.0 / ((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787)))) + -0.3093131951823226)), loss = 0.5502530368214861, cost = 0.018571942928998438), PopMember(tree = ((x2 * (x2 + -0.3093131951823226)) + (1.0 / ((x2 * x2) + 1.2202439602717787))), loss = 0.7731520286812262, cost = 0.026095149669779008), PopMember(tree = (1.5759538566961013), loss = 21.72914770507866, cost = 0.7333943914341711), PopMember(tree = (cos(0.5668844834666681 / x2) + ((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787)))), loss = 1.5538730496591031, cost = 0.05244576524988797) … PopMember(tree = ((x2 * x2) + 0.012695001242528314), loss = 0.5011383390234547, cost = 0.01691424128368073), PopMember(tree = (((x2 * x2) + (1.8852670518784238 / ((x2 * x2) + 1.2202439602717787))) + -0.3093131951823226), loss = 0.666919542546712, cost = 0.022509628940820484), PopMember(tree = ((((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787))) + -0.6186263903646452) + (1.0 / ((x2 * x2) + 1.2202439602717787))), loss = 0.5772736283729202, cost = 0.019483932233227967), PopMember(tree = ((((x2 * x2) + (1.0 / ((x2 * x2) + 1.2202439602717787))) + -0.3093131951823226) * 1.0641106750146914), loss = 0.5622445467800453, cost = 0.018976676067536537), PopMember(tree = (((x2 * x2) + -0.3093131951823226) + (1.0 / ((x2 * x2) + 1.2202439602717787))), loss = 0.47433539981074246, cost = 0.016009598103039098), PopMember(tree = ((x2 * x2) + 1.5759538566961013), loss = 2.595239900255051, cost = 0.08759360528569529), PopMember(tree = (((x2 * x2) + 0.10729054544724978) + (-0.3193791872634993 / ((x2 * 8.915339781231332) + -9.58360790629978))), loss = 0.46859460750115994, cost = 0.01581583694225265), PopMember(tree = (3.294091351902046), loss = 18.777151252518806, cost = 0.6337596670894626), PopMember(tree = (x2 * (x2 + ((1.0 / ((x2 * x2) + 1.2202439602717787)) + -0.3093131951823226))), loss = 0.6184247215158516, cost = 0.020872849153579943), PopMember(tree = (((x2 * x2) + ((1.8852670518784238 / ((x2 * x2) + 1.2202439602717787)) / 1.8852670518784238)) + -0.3093131951823226), loss = 0.4743353998107425, cost = 0.0160095981030391)], 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(x1)) * ((x2 / x2) * (x2 * (x2 / x2)))), loss = 1.9011417576424021, cost = 0.06416665399399715), PopMember(tree = (cos(x1) + (x2 * ((x2 / x2) * (x2 * (x2 / x2))))), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 / x2) * (x2 * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * (x2 / x2)) + (((x2 / x2) * x2) * x2)), loss = 3.939877795447712, cost = 0.13297734072846454), PopMember(tree = ((x2 * ((x2 / x2) * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 / x2) * (x2 * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * ((x2 / x2) * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (x2 * (((x2 / x2) * (x2 * (x2 / x2))) + cos(x1))), loss = 1.9011417576424021, cost = 0.06416665399399715), PopMember(tree = (((x2 / x2) * (x2 * cos(x1))) + cos(x1)), loss = 30.564963763441664, cost = 1.03161768251304), PopMember(tree = (((x2 / x2) * (x2 * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0) … PopMember(tree = ((cos(x1) * (x2 * (x2 / x2))) + cos(x1)), loss = 30.564963763441664, cost = 1.03161768251304), PopMember(tree = (cos(x1) + ((x2 / x2) * (x2 * x2))), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * ((x2 / x2) * ((x2 * x2) / x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + (((x2 / x2) * x2) * x2)), loss = 0.0, cost = 0.0), PopMember(tree = (x2 + (((x2 / x2) * x2) * x2)), loss = 3.939877795447712, cost = 0.13297734072846454), PopMember(tree = (((x2 / x2) * (cos(x1) + ((x2 / x2) * (x2 * x2)))) + cos(x1)), loss = 0.5041391763746159, cost = 0.017015524468498577), PopMember(tree = (cos(x1) + ((x2 / x2) * (x1 * x2))), loss = 37.064365222260456, cost = 1.2509831469239008), PopMember(tree = ((x2 * (((x2 / x2) * x2) * (x2 / x2))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * ((x2 / x2) * (x2 * (x2 / x2)))) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = (cos(x1) + ((x2 / x2) * (x2 * x2))), loss = 0.0, cost = 0.0)], 27) … Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((((x2 * -0.04233870834981845) + ((x2 - -0.15750144168056326) - ((x2 * x2) * -0.9683712618207233))) - (x2 - -0.009666451832594793)) - -0.07795868564835802), loss = 0.4632531568822404, cost = 0.015635554218824774), PopMember(tree = (((x2 * x2) + (((x2 - (x2 * (x2 * 0.015509519974306602))) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.4765058322620738, cost = 0.01608285375983695), PopMember(tree = (((x2 * -0.04233870835115694) + (((x2 - (x2 * (x2 * -0.9683712618236411))) - -0.1082952042863827) - (x2 - -0.06958351232832767))) - -0.1870819835455444), loss = 0.4632531568822405, cost = 0.015635554218824777), PopMember(tree = (((x2 * x2) + (((x2 - ((x2 * x2) * 0.015509519974306602)) - -0.12453722324793741) - (x2 - x2))) - -0.12453722324793741), loss = 3.9231755270008986, cost = 0.1324136117608411), PopMember(tree = (((x2 * x2) + (((x2 - (x2 * -0.12453722324793741)) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.5716758985028119, cost = 0.019294999664531708), PopMember(tree = ((((x2 * x2) + ((x2 - -0.12453722324793741) - ((x2 * x2) * 0.015509519974306602))) - (x2 - -0.12453722324793741)) - -0.12453722324793741), loss = 0.4765058322620738, cost = 0.01608285375983695), PopMember(tree = (((x2 * x2) + ((x2 - ((x2 * (x2 * 0.015509519974306602)) - -0.12453722324793741)) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.5630320464875737, cost = 0.01900325547491119), PopMember(tree = (((x2 * x2) + ((x2 - -0.24907444649587482) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.5041391763753653, cost = 0.017015524468523873), PopMember(tree = (((x2 * x2) + (((x2 - ((x2 * 0.015509519974306602) * x2)) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.4765058322620738, cost = 0.01608285375983695), PopMember(tree = (((x2 * x2) + (((x2 - (x2 * (x2 * 0.015509519974306602))) - x2) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 3.4118169467731514, cost = 0.11515442056563759) … PopMember(tree = (((x2 * x2) + (((x2 - (x2 * (x2 * 0.015509519974306602))) - (x2 - -0.12453722324793741)) - -0.12453722324793741)) - -0.12453722324793741), loss = 0.4765058322620739, cost = 0.016082853759836955), PopMember(tree = ((x2 * x2) + ((((x2 - -0.12453722324793741) - ((x2 * x2) * 0.015509519974306602)) - (x2 - -0.12453722324793741)) - -0.12453722324793741)), loss = 0.4765058322620739, cost = 0.016082853759836955), PopMember(tree = (((x2 * x2) + (((x2 - (x2 * (x2 * 0.015509519974306602))) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.4765058322620739, cost = 0.016082853759836955), PopMember(tree = (((x2 * x2) + (((x2 - -0.12453722324793741) - (x2 * (((x2 * (x2 * 0.015509519974306602)) * -0.12453722324793741) * x2))) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.5449177544810125, cost = 0.018391868395089935), PopMember(tree = (((x2 * -0.12453722324793741) + (((x2 - (x2 * (x2 * 0.015509519974306602))) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 29.777908070705298, cost = 1.005053261366219), PopMember(tree = (((x2 * x2) + (((x2 - ((x2 * x2) * 0.015509519974306602)) - -0.12453722324793741) - (x2 - -0.12453722324793741))) - x2), loss = 3.411816946773151, cost = 0.11515442056563757), PopMember(tree = (((x2 * x2) + ((x2 - (x2 * (x2 * 0.015509519974306602))) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 0.5042594194005171, cost = 0.01701958286793522), PopMember(tree = ((((x2 * x2) + ((x2 - -0.12453722324793741) - ((x2 * x2) * 0.015509519974306602))) - (x2 - (x2 * 0.015509519974306602))) - -0.12453722324793741), loss = 0.48478098993640834, cost = 0.01636215391044396), PopMember(tree = (((x2 * x2) + (((x2 - ((x2 * 0.015509519974306602) * x2)) - x2) - (x2 - -0.12453722324793741))) - -0.12453722324793741), loss = 3.4118169467731514, cost = 0.11515442056563759), PopMember(tree = ((((x2 * x2) + ((x2 - -0.12453722324793741) - ((x2 * x2) * 0.015509519974306602))) - (x2 - -0.12453722324793741)) - -0.12453722324793741), loss = 0.4765058322620738, cost = 0.01608285375983695)], 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((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + x2) + -0.9729837606476676) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911), PopMember(tree = (cos((-8.248055614803323e-9 / (x2 + 12.737397192985725)) * cos(cos(cos(((x2 + x2) + -0.39218641409040184) - (x1 + cos(x2)))) + (x5 + x2)))), loss = 24.040006383560527, cost = 0.8113896638304036), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - (x1 + cos(x2)))) + (x5 + x2)))), loss = 23.973235728945333, cost = 0.8091360446700108), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - x1)) + (x5 + x2)))), loss = 23.99309321787911, cost = 0.80980626750662), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - (x5 + x2))) + (x5 + x2)))), loss = 23.993045566906417, cost = 0.8098046592080989), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - (x1 + cos(x2)))) + cos(x1 + x2)))), loss = 24.001780327293822, cost = 0.8100994717044558), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos((x2 + x2) + -0.9729837606476676))) + (x5 + x2)))), loss = 24.01499860183695, cost = 0.8105456101607793), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + x2) + -0.9729837606476676) - (x1 + cos(x2)))) + (x5 + x2)))), loss = 23.973235728945333, cost = 0.8091360446700108), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911) … PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + x2) + -0.9729837606476676) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * (cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2))) + cos(x5 + x2)))), loss = 24.069755103644496, cost = 0.8123937319493215), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((((x2 + -0.9729837606476676) + x2) + x2) + x2) - (x1 + cos(x2)))) + (x5 + x2)))), loss = 23.977062315527498, cost = 0.809265198246386), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - ((x1 + cos(x2)) + cos(x2)))) + (x5 + x2)))), loss = 24.02887025769787, cost = 0.8110138013087426), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2)) + (x5 + x2))))), loss = 24.10933545442396, cost = 0.8137296337374009), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + x2) + -0.9729837606476676) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - (x1 + cos(x2)))) + (x5 + x2)))), loss = 23.973235728945333, cost = 0.8091360446700108), PopMember(tree = (cos(cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2))) + (x5 + x2)) * -0.9729837606476676)), loss = 24.986964157716876, cost = 0.8433510426160489), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos(((x2 + -0.9729837606476676) + x2) - cos(x1 + x2))) + (x5 + x2)))), loss = 23.970212109345358, cost = 0.809033992546911), PopMember(tree = (cos((-0.9729837606476676 / (x2 + x2)) * cos(cos(cos((x1 + x2) - cos(x1 + x2))) + (x5 + x2)))), loss = 24.001381923612207, cost = 0.8100860249264419)], 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.6307529746581967) * (x2 / -1.9362177140465395)) + 0.22539509123053203) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 18.7181506781217, cost = 0.6317683008867229), PopMember(tree = ((cos(((cos(x2) + -2.2178470950668103) * ((x2 / -1.7819916764084445) + 0.08457111893301167)) * -0.4770085509501169) + -1.1564073973850153) * -4.430397564498108), loss = 4.345066858210054, cost = 0.14665313649062023), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) + -3.872435428093079) * -1.9362177140465395), loss = 19.969684396155518, cost = 0.6740096175713266), PopMember(tree = ((cos((((cos(x2) + -0.6307529746581967) * (x2 / -0.6307529746581967)) + -1.5636578039770699) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 11.722399915623901, cost = 0.39565023299361146), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * 0.22539509123053203) + -1.9362177140465395) * -1.9362177140465395), loss = 20.64989811659518, cost = 0.6969679468310803), PopMember(tree = ((cos(((((cos(x2) + -0.6307529746581967) * x2) / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 10.982802050646166, cost = 0.3706875914094419), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.34244803792244377) * -0.35734289061842794)) + -1.9362177140465395) * -1.9362177140465395), loss = 10.93455676966409, cost = 0.3690592340083299), PopMember(tree = (cos(((cos(x2) + -0.6307529746581967) * ((x2 / -0.6307529746581967) + 0.22539509123053203)) * -0.35734289061842794) * -1.9362177140465395), loss = 29.97444433881251, cost = 1.0116866829205098), PopMember(tree = ((cos(cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) + -1.9362177140465395) + -1.9362177140465395) * -1.9362177140465395), loss = 11.665908335903701, cost = 0.39374354947834556), PopMember(tree = ((cos((((x2 / -0.6307529746581967) + cos(x2)) * ((x2 / -0.6307529746581967) + 0.34244803792244377)) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 16.10362073701213, cost = 0.5435236250682458) … PopMember(tree = ((cos(((cos(x2) + -0.6307529746581967) * ((x2 / -0.6307529746581967) + 0.22539509123053203)) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 10.91752047043275, cost = 0.36848423095360183), PopMember(tree = ((cos(((cos(x2) + -0.6307529746581967) * ((x2 / ((x2 / -0.6307529746581967) + 0.34244803792244377)) + 0.22539509123053203)) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 20.877693918612845, cost = 0.7046564289500987), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) + -1.9362177140465395) * -1.9362177140465395), loss = 10.91752047043275, cost = 0.36848423095360183), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) + -0.6307529746581967) * -1.9362177140465395), loss = 20.679382579946243, cost = 0.6979630958516314), PopMember(tree = ((cos((((cos(x2) + -0.6307529746581967) * (x2 / -0.6307529746581967)) + 0.22539509123053203) * (x2 / -0.6307529746581967)) + -1.9362177140465395) * -1.9362177140465395), loss = 14.18694977521296, cost = 0.4788328349513511), PopMember(tree = (((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) * -1.9362177140465395), loss = 35.80912187926141, cost = 1.2086166243094214), PopMember(tree = ((cos((((cos(x2) + -0.6307529746581967) * (x2 / -0.6307529746581967)) + 0.12769394147553376) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 10.951709602687133, cost = 0.3696381702697539), PopMember(tree = ((cos((((cos(x2) + -0.6307529746581967) * -0.35734289061842794) + 0.22539509123053203) * -0.35734289061842794) + -1.9362177140465395) * -1.9362177140465395), loss = 20.74553482001594, cost = 0.700195842506328), PopMember(tree = ((cos(((cos(x2) + -1.6621194831850683) * ((x2 / -0.9623752366770058) + 0.1837052341605311)) * -0.30090967613085906) + -1.3263878458664673) * -4.22115523867924), loss = 4.593564724767984, cost = 0.1550403472588708), PopMember(tree = ((cos((cos(x2) + -0.6307529746581967) * (((x2 / -0.6307529746581967) + 0.22539509123053203) * -0.35734289061842794)) + -1.9362177140465395) * -1.9362177140465395), loss = 10.91752047043275, cost = 0.36848423095360183)], 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((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.4866080562246667, cost = 0.016423820395792297), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - ((x4 * -0.9534337505911512) * x3)) * -0.2749442047369591)), loss = 0.5320782397478865, cost = 0.017958513703879006), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - x2)) - (x2 * x3)) * -0.2749442047369591)), loss = 0.507272876865335, cost = 0.017121292002297922), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - (((x3 - x2) * x3) - x2))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.5137686535260148, cost = 0.01734053512382349), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 * (x2 * x3))) - (x2 - ((x3 - x2) * (x3 - x2)))) * -0.22646217836829174)), loss = 0.47634377892291424, cost = 0.016077384193719315), PopMember(tree = ((x2 * x2) + (cos(x5 - ((x2 - ((x3 - x2) * (x3 - x2))) - (x2 * x3))) * -0.2749442047369591)), loss = 0.5364429680142995, cost = 0.01810583044515981), PopMember(tree = (((x2 * x3) * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 130.4275760786638, cost = 4.402144717442769), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - (x5 * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.540293952726733, cost = 0.018235807498467677), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 * (x3 - x2)) - x2))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.5137686535260148, cost = 0.01734053512382349), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.4866080562246667, cost = 0.016423820395792297) … PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - (x3 - x2))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.5781696184486144, cost = 0.019514173368555203), PopMember(tree = ((cos((x2 - (x5 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.04295627856870621) + (x2 * x2)), loss = 0.5032035822586335, cost = 0.01698394663182347), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 0.4866080562246667, cost = 0.016423820395792297), PopMember(tree = ((cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - x3) * -0.03631700294937465) + (x2 * x2)), loss = 0.5034356962450879, cost = 0.016991780859753138), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x3 * x3)) * -0.2749442047369591)), loss = 0.5463351425942293, cost = 0.0184397075697703), PopMember(tree = ((cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - ((x2 * 0.3138829233692273) * x3)) * -0.2749442047369591) + (x2 * x2)), loss = 0.48756770622107676, cost = 0.016456210157906277), PopMember(tree = (x2 * ((cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591) + x2)), loss = 0.5399787084345918, cost = 0.01822516748630862), PopMember(tree = ((x2 * x2) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - x2) * -0.2749442047369591)), loss = 0.4823601884086598, cost = 0.016280447886474547), PopMember(tree = ((cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.20012399410399428) + (x2 * x2)), loss = 0.48375940834326847, cost = 0.016327673855313862), PopMember(tree = ((x2 * -0.2749442047369591) + (cos((x5 - (x2 - ((x3 - x2) * (x3 - x2)))) - (x2 * x3)) * -0.2749442047369591)), loss = 29.96269982082806, cost = 1.0112902861663986)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.487690528217087, cost = 0.7252448154965737), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - (-1.2969473824744857 - x2)), loss = 20.062545299908788, cost = 0.6771438254528552), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) / 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 22.170635682559485, cost = 0.7482953351326842), PopMember(tree = ((cos(((x2 - -1.0245272092830675) - (1.125764612913683 / x2)) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 22.70080204731034, cost = 0.7661893199181271), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.487690528217087, cost = 0.7252448154965737), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.487690528217087, cost = 0.7252448154965737), PopMember(tree = ((cos((((x2 - -88.45497817154062) / x2) - 0.31267087797835486) / (x2 * 40.98029270479441)) + 3.2023518432139593) - x5), loss = 17.78047370464271, cost = 0.600120164353244), PopMember(tree = ((((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 282947.9949513037, cost = 9549.959132374497), PopMember(tree = ((cos(((((x2 * 0.011196612419851044) - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 22.198371164318875, cost = 0.7492314531545294), PopMember(tree = ((cos(((x2 - 0.1012374036306154) / x2) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.7719052618588, cost = 0.7348375291384012) … PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.487690528217087, cost = 0.7252448154965737), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 21.487690528217087, cost = 0.7252448154965737), PopMember(tree = ((cos(cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683))) + 1.125764612913683) - x5), loss = 23.887114301271332, cost = 0.806229305165283), PopMember(tree = ((cos((((x2 - (x5 * x1)) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 22.338459424271164, cost = 0.7539596618053809), PopMember(tree = ((cos(x2 / (x2 * 2.0966075442093275)) + 2.511836654635436) - x5), loss = 20.749909401836504, cost = 0.7003434918212306), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - -1.0245272092830675) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 22.94471255121797, cost = 0.7744216996693094), PopMember(tree = ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / ((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) * 1.125764612913683)) + 1.125764612913683) - x5), loss = 23.45173327196653, cost = 0.7915344809888912), PopMember(tree = ((cos((((-1.0245272092830675 - x2) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5), loss = 23.140826677103952, cost = 0.7810408732309203), PopMember(tree = (x5 + ((cos((((x2 - -1.0245272092830675) / x2) - 1.125764612913683) / (x2 * 1.125764612913683)) + 1.125764612913683) - x5)), loss = 19.321706644876116, cost = 0.6521393051682605), PopMember(tree = ((cos((((x2 - 27.195030287564144) / x2) - x2) / (x2 * 28.792651779680664)) + 2.9303830377288036) - x5), loss = 18.2840608632752, cost = 0.6171170573171139)], 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.03626324500631528)) + cos(x2 + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479)))), loss = 30.288362426263692, cost = 1.0222819334950468), PopMember(tree = ((x2 * x2) + cos(x2 + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * 1.0385972967920494))), loss = 0.6913180868964313, cost = 0.023333119849350676), PopMember(tree = ((x2 * x2) + cos(x2 + cos(((x2 * ((x2 - -0.848168189231479) * 0.19042910756057038)) - -0.44903619347742163) * (x2 - -0.848168189231479)))), loss = 0.785581525465684, cost = 0.02651466558240451), PopMember(tree = ((x2 * x2) + (x2 + cos(cos(((x2 * -0.09247510730104135) - -0.3521534787532616) * (x2 - 0.9404453799062108))))), loss = 3.863481300915038, cost = 0.13039883367536004), PopMember(tree = (x2 * (x2 + cos(x2 + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479))))), loss = 2.30433148144327, cost = 0.0777749687853931), PopMember(tree = ((x2 * x2) + cos(x2 + (((x2 * 0.03626324500631528) - -0.44903619347742163) * cos(x2 - -0.848168189231479)))), loss = 0.7587185057543242, cost = 0.025607994586344586), PopMember(tree = ((x2 * x2) + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479))), loss = 0.822109954338137, cost = 0.027747559998079065), PopMember(tree = ((x2 * x2) + cos(x2 + cos(((x2 * 0.3251282976400578) - -0.15035497549113283) * (x2 - -0.4716439719707485)))), loss = 0.610406526742742, cost = 0.020602221922551876), PopMember(tree = ((x2 * x2) + cos(x2 + cos(((x2 * 0.03626324500631528) - 0.0) * (x2 - -0.848168189231479)))), loss = 0.7134997459498216, cost = 0.024081787241337672), PopMember(tree = ((x2 * x2) + cos(x2 + (cos((x2 * 2.380589018458017) - -1.9305392137302058) * (x2 - -1.343260554282927)))), loss = 0.5605921921982974, cost = 0.018920906388975638) … PopMember(tree = ((x2 * x2) + cos(x2 + cos((x2 - -0.848168189231479) * 0.4062814126842711))), loss = 0.6874792621702059, cost = 0.023203553215531237), PopMember(tree = ((x2 * x2) + cos(x2 + cos(x2 + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479))))), loss = 0.7505960612805037, cost = 0.025333848756849252), PopMember(tree = ((x2 * x2) + cos(cos(x2 + (((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479))))), loss = 0.8851588913549996, cost = 0.02987556508238552), PopMember(tree = ((x2 * x2) + cos(cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479)) + 0.7488494724470377)), loss = 0.7487172130033826, cost = 0.025270434544405276), PopMember(tree = ((x2 * x2) + cos(x2 + cos((((x2 * -0.1694087636200432) - 0.02573004584050382) * x2) - -1.9085269063072674))), loss = 0.6118095265717981, cost = 0.020649575469031397), PopMember(tree = ((x2 * x2) + cos(x2 + cos((((x2 * 0.19042910756057038) * x2) - -0.44903619347742163) * (x2 - -0.848168189231479)))), loss = 0.776329074274726, cost = 0.026202380171924233), PopMember(tree = ((x2 * x2) + cos(cos(x2 + (((x2 * 0.03626324500631528) - -0.44903619347742163) * (x2 - -0.848168189231479))))), loss = 0.8851588913549996, cost = 0.02987556508238552), PopMember(tree = ((x2 * x2) + cos(x2 + cos((x2 - -0.848168189231479) * 0.45035121641580966))), loss = 0.6809289576703768, cost = 0.022982469689957062), PopMember(tree = ((x2 * x2) + cos(x2 + cos((x2 - -0.44903619347742163) * (x2 - -0.848168189231479)))), loss = 0.8779782148402608, cost = 0.02963320546690085), PopMember(tree = ((x2 * x2) + cos(x2 + cos(((x2 * 0.03626324500631528) - -0.44903619347742163) * 0.19042910756057038))), loss = 0.7135270709835866, cost = 0.024082709506066183)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = (cos(x2 * (cos(cos(cos(x2) * (cos(x4) * -0.12879629259371725))) * -0.12879629259371725))), loss = 24.16684701383016, cost = 0.8156707432408024), PopMember(tree = (cos(cos(cos(x4 * 0.016588484985886425)) * (cos(cos((cos(x2) * cos(x4)) * -0.12879629259371725)) * -0.12879629259371725))), loss = 24.043266435538193, cost = 0.8114996959342236), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.12879629259371725))), loss = 24.043264346720857, cost = 0.8114996254332109), PopMember(tree = (cos(cos(x2) * (cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.12879629259371725))), loss = 24.0446948772013, cost = 0.8115479081843511), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos(cos(x4) * 0.10537096409913183)) * -0.12879629259371725))), loss = 24.043272312210064, cost = 0.8114998942815425), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos(cos(x2) * (cos(x4) * -0.12879629259371725))) * -0.12879629259371725))), loss = 24.043264346720857, cost = 0.8114996254332109), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * cos(cos((cos(x2) * -0.12879629259371725) * cos(x4)) * -0.12879629259371725))), loss = 24.70284409952223, cost = 0.8337615244259174), PopMember(tree = (cos(cos(cos((cos(x4) * -0.0021267337225668323) * cos(x4))) * (cos(cos((cos(x2) * cos(x4)) * -0.1283698640201813)) * 4.547880163063752e-10))), loss = 24.040006383560527, cost = 0.8113896638304036), PopMember(tree = (cos(cos(cos(x4) * 0.016588484985886425) * (cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.12879629259371725))), loss = 24.05116449073796, cost = 0.8117662682575086), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos((cos(x2) * cos(x4)) * -0.12879629259371725)) * -0.12879629259371725))), loss = 24.043264346720857, cost = 0.8114996254332109) … PopMember(tree = (cos(cos(cos(cos(x4)) * 0.016588484985886425) * (cos(cos(cos(x2) * (cos(x4) * -0.12879629259371725))) * -0.12879629259371725))), loss = 24.051163629542476, cost = 0.8117662391907479), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016408816657644775)) * (cos((cos(x2) * cos(x4)) * 0.9945581365739065) * 3.0321235217176286e-10))), loss = 24.040006383560527, cost = 0.8113896638304036), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos((cos(x2) * -0.12879629259371725) * cos(cos(x4))) * -0.12879629259371725))), loss = 24.051067220754405, cost = 0.8117629852359487), PopMember(tree = (cos(cos(cos(cos(cos(x4) * 0.016588484985886425))) * (cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.12879629259371725))), loss = 24.048212196484837, cost = 0.8116666234819062), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * cos(cos((cos(x2) * -0.12879629259371725) * cos(x4)) * -0.12879629259371725))), loss = 24.70284409952223, cost = 0.8337615244259174), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.12879629259371725))), loss = 24.043264346720857, cost = 0.8114996254332109), PopMember(tree = (cos(cos(cos((cos(x2) * -0.12879629259371725) * cos(x4))) * -0.07048421087629214)), loss = 24.043348152067953, cost = 0.8115024540011955), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos(cos(cos(cos(cos(x4) * 0.016588484985886425))) * (cos(x4) * -0.12879629259371725))) * -0.12879629259371725))), loss = 24.043274497185926, cost = 0.8114999680280633), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos(cos(x2) * ((x4 * x2) * cos(x4)))) * -0.12879629259371725))), loss = 24.04755081320923, cost = 0.8116443007110593), PopMember(tree = (cos(cos(cos(cos(x4) * 0.016588484985886425)) * (cos(cos(cos(x2) * cos(x4)) * -0.12879629259371725) * -0.12879629259371725))), loss = 24.050962462354892, cost = 0.8117594494680621)], 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.12453722324793741)) - (((cos(x2) + (x2 * -0.12453722324793741)) + -0.12453722324793741) * cos((x2 + x2) / x2))), loss = 0.5168536283152174, cost = 0.017444658085240344), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))) - -0.12453722324793741), loss = 30.43414329379981, cost = 1.027202276993122), PopMember(tree = (((x2 * x2) - -0.06893440562280098) - ((cos(x2) * cos((x2 + x2) / x2)) + ((x2 * 0.042091097262131484) + 0.03408463514555764))), loss = 0.46804099320978443, cost = 0.01579715155146681), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 + x2) / x2) * ((x2 * -0.12453722324793741) + (cos(x2) + -0.12453722324793741)))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))) - -0.12453722324793741), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 + x2) / x2) * (((x2 + x2) * -0.12453722324793741) + (cos(x2) + -0.12453722324793741)))), loss = 0.4813752004093651, cost = 0.016247202925184886), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 / x2) + x2) * (((x2 * -0.12453722324793741) + cos(x2)) + -0.12453722324793741))), loss = 0.6629179135479621, cost = 0.022374567395650097), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 + x2) / x2) * ((x2 * -0.12453722324793741) + (cos(x2) + -0.12453722324793741)))), loss = 0.46975731898609197, cost = 0.015855080362817457) … PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos(x2 + x2) * ((x2 * -0.12453722324793741) + (cos(x2) + -0.12453722324793741)))), loss = 0.6926439242018801, cost = 0.023377869034038816), PopMember(tree = (((x2 * x2) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))) - -0.12453722324793741), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 + x2) / x2) * ((x2 * -0.12453722324793741) + cos(x2 + -0.12453722324793741)))), loss = 0.4842374873171718, cost = 0.016343809805185534), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos((x2 + x2) / x2) * (((x2 * -0.12453722324793741) + -0.12453722324793741) + cos(x2)))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2 + (x2 * -0.12453722324793741)) + -0.12453722324793741) * cos((x2 + x2) / x2))), loss = 0.4782225476628487, cost = 0.016140795721652727), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + x2)) * cos((x2 + x2) / x2))), loss = 1.0013374358125986, cost = 0.0337967816007064), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - ((cos(x2) + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))), loss = 0.46975731898609197, cost = 0.015855080362817457), PopMember(tree = (((x2 * x2) - -0.09226447762017197) - (cos((x2 + x2) / x2) * (((x2 * -0.101144820927101) + -0.13796742423235647) + cos(x2)))), loss = 0.4680409932097846, cost = 0.015797151551466816), PopMember(tree = (((x2 * x2) - -0.12453722324793741) - (cos(x2 + ((x2 * -0.12453722324793741) + -0.12453722324793741)) * cos((x2 + x2) / x2))), loss = 0.500084344262785, cost = 0.016878667230958197)], 27), Population{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}, PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}}(PopMember{Float64, Float64, Expression{Float64, Node{Float64, 2}, @NamedTuple{operators::OperatorEnum{Tuple{Tuple{typeof(cos)}, Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}}}, variable_names::Vector{String}}}}[PopMember(tree = ((x2 * x2) + cos((x2 + -2.0544026383646177) - (x2 + (x1 + -1.0272013191823088)))), loss = 0.48965067755291786, cost = 0.01652651385840224), PopMember(tree = ((x2 * x2) + cos(((x2 + -1.0272013191823088) + x2) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088))))), loss = 0.8581502867667435, cost = 0.02896398035783323), PopMember(tree = ((x2 * x2) + cos((((x2 * x2) + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088))))) + x2) + -1.0272013191823088)), loss = 0.636530183528677, cost = 0.021483938206623063), PopMember(tree = ((x2 * x2) + cos(x2 + -2.0544026383646177)), loss = 1.324112265903273, cost = 0.044690961772775005), PopMember(tree = ((x2 * x2) + cos(((-1.0272013191823088 - x2) + x2) + -1.0272013191823088)), loss = 0.8361542538931757, cost = 0.028221578154018028), PopMember(tree = ((x2 * x2) + cos(x1 + -1.0272013191823088)), loss = 0.4717827896275119, cost = 0.0159234433206561), PopMember(tree = ((x2 * x2) + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088))))), loss = 0.4896506775529179, cost = 0.01652651385840224), PopMember(tree = ((x2 * x1) + cos((x2 + -2.0544026383646177) - (x2 + (x1 + -1.0272013191823088)))), loss = 37.745674994114125, cost = 1.27397846971744), PopMember(tree = ((x2 * x2) + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + ((-1.0272013191823088 - ((x2 + x1) + -1.0272013191823088)) + x1))))), loss = 1.324112265903273, cost = 0.044690961772775005), PopMember(tree = (cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088)))) + -1.0272013191823088), loss = 37.56739558059621, cost = 1.267961246964076) … PopMember(tree = ((x2 * x2) + cos((x2 + -2.0544026383646177) - (x2 + (x2 + -1.0272013191823088)))), loss = 0.7194389560065418, cost = 0.0242822453266831), PopMember(tree = ((x2 * x2) + cos(((-1.0272013191823088 - (x2 + (x2 + x1))) + -1.0272013191823088) + x2)), loss = 1.182311195126441, cost = 0.039904942945962855), PopMember(tree = ((x2 * x2) + cos(x2)), loss = 0.7032369196657211, cost = 0.02373540001349149), PopMember(tree = ((x2 * x2) + cos(((-1.0272013191823088 - (x2 + -2.0544026383646177)) + x2) + -1.0272013191823088)), loss = 1.2550647298817494, cost = 0.042360494128675985), PopMember(tree = ((x2 * x2) + cos((x2 + -2.0544026383646177) - (x2 + ((x2 * x2) + x1)))), loss = 1.4999586721579268, cost = 0.050626066538567334), PopMember(tree = ((x2 * x2) + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (((-1.0272013191823088 - ((x2 + x1) + -1.0272013191823088)) + -1.0272013191823088) + x2))))), loss = 0.4717827896275119, cost = 0.0159234433206561), PopMember(tree = ((x2 * x2) + cos((x1 + x2) + (-1.0272013191823088 - ((x2 + x1) + -1.0272013191823088)))), loss = 1.2550647298817494, cost = 0.042360494128675985), PopMember(tree = ((x2 * x2) + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088))))), loss = 0.4896506775529179, cost = 0.01652651385840224), PopMember(tree = (-1.0272013191823088 - ((x2 + x1) + -1.0272013191823088)), loss = 36.07039556554193, cost = 1.2174350399577571), PopMember(tree = (x2 * (x2 + cos((x2 + -1.0272013191823088) + (-1.0272013191823088 - (x2 + (x1 + -1.0272013191823088)))))), loss = 1.9870852470099138, cost = 0.06706738778889347)], 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(x5 + (x4 + (x5 + cos(((x5 / x5) * (x4 + (cos(x5) + x5))) - (x5 * x5))))))), loss = 25.414740436037995, cost = 0.8577891939677452), PopMember(tree = (cos(cos(x5 + (x4 + (cos(x5) + cos(((x5 / x5) * (x4 + (cos(x5) + x5))) - (x5 * x5))))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x1 * 1.4402788902210701))))), loss = 25.307393189528838, cost = 0.8541660482468794), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos(x5 + (x4 + (cos(x5) + cos(((x5 / x5) * ((x4 + cos(x5)) + x5)) - (x5 * x5))))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * ((cos(x5) + x5) + x4)) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos(x5 + ((x4 + cos(((x5 * (cos(x5) + (x4 + x5))) / x5) - (x5 * x5))) + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos(x5 + (x4 + (cos(x5) + cos(((x5 / x5) * (x4 + (cos(x5) + x5))) - (x5 * x5))))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(x5 * (((x5 / x5) * (cos(x5) + (x4 + x5))) - x5))) + (x5 + cos(x5))))), loss = 25.06841712557158, cost = 0.8461002139411785), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * cos(x5 + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 25.10776457719173, cost = 0.8474282550004557) … PopMember(tree = (cos(cos(x5 + ((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x5 + x4) + (cos(x5) + cos(((x5 / x5) * ((x4 + cos(x5)) + x5)) - (x5 * x5)))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos(x5 + ((x4 + cos(((cos(x5) / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + cos(x5))))), loss = 25.19596593340409, cost = 0.8504051955064063), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * ((cos(x5) + x4) + x5)) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos(x5 + (x4 + (cos(x5) + (cos((x5 / x5) * (x4 + (cos(x5) + x5))) - (x5 * x5))))))), loss = 24.817028536525395, cost = 0.8376154365454258), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.740696779948767, cost = 0.8350391145045695), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (cos(x3) + x5))) - (x5 * x5))) + (x5 + cos(x5))))), loss = 24.92470579824564, cost = 0.8412497208212034), PopMember(tree = (cos(cos((x4 + cos(((x5 / x5) * (cos(x5) + (x4 + x5))) - (x5 * x5))) + (x5 + cos(x1 * 1.4776673287968864))))), loss = 25.297090275347806, cost = 0.8538183079867296)], 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.2940913358844695), loss = 18.7771512525188, cost = 0.6337596670894624), PopMember(tree = (cos(0.011426503954941486)), loss = 24.04030591258373, cost = 0.8113997734264481), PopMember(tree = (x2 * x2), loss = 0.5041391763746159, cost = 0.017015524468498577), PopMember(tree = (3.512016871152968 - cos(x2)), loss = 15.141899397096626, cost = 0.5110639517119947), PopMember(tree = ((x2 * x2) - -0.12453722324793741), loss = 0.48862965640068395, cost = 0.01649205271907237), PopMember(tree = ((x2 * x2) + cos(x1)), loss = 0.0, cost = 0.0), PopMember(tree = ((x2 * x2) + (-0.4136756133212027 * -0.2898369607770644)), loss = 0.48865117431627975, cost = 0.016492778984033497), PopMember(tree = (0.008538927117684144 + ((x2 * x2) + cos(x1))), loss = 7.291327632112139e-5, cost = 2.4609427226868215e-6), PopMember(tree = ((cos(x1) + (x2 * x2)) + cos(1.2370721045755733)), loss = 0.10729820354930344, cost = 0.003621490440493848), PopMember(tree = (cos(x1) + (x2 * ((x2 * x2) / x2))), loss = 0.0, cost = 0.0) … PopMember(tree = (cos(x1) + (x2 * (((x1 + (cos(x4 + x4) * (x2 - x2))) * (x2 - x2)) + x2))), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 * ((x2 - x2) * x2)) + cos(x1)) + ((x2 * x2) - ((x2 - x2) * (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (((cos(x2) * ((x2 - x2) * x2)) + cos(x1)) + ((x2 * x2) - ((x2 - x2) * (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x3 - -0.39573952054204514) * ((x2 - x2) * x2)) + cos(x1)) + ((x2 * x2) - ((x2 - x2) * (x2 * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (((cos(x2) * ((x2 - x2) * x2)) + cos(x1)) + ((x2 * x2) - ((x2 - x2) * ((x2 * x2) * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (((x2 * ((x2 - x2) * x2)) + cos(x1)) + ((x2 * x2) - ((x2 - x2) * (((x2 - x2) * x2) * x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (((((x2 - x2) * x2) * x2) + cos(x1)) + ((x2 * x2) - ((x2 * (x2 - x2)) * (cos(x2) - (x2 - x5))))), loss = 0.0, cost = 0.0), PopMember(tree = ((((x2 - x2) * (x2 * (x2 - x2))) + cos(x1)) + ((x2 * x2) - ((x5 * ((x2 * x2) - x2)) * (x2 - x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (((((x2 - x2) * x2) * (x2 - cos(x3))) + cos(x1)) + ((x2 * x2) - (((x2 - 0.6422553247151529) * (x2 - x2)) * (x2 - x2)))), loss = 0.0, cost = 0.0), PopMember(tree = (cos((((x2 - x2) * (x2 - cos(x3))) * x2) + x1) + ((x2 * x2) - ((x2 * (x2 - x2)) * (cos(x2) * (x2 - x5))))), 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.2940913358844695, x2 * x2, (x2 * x2) - -0.12453722324793741, (x2 * x2) + cos(x1)], equation_strings = ["3.2940913358844695", "x2 * x2", "(x2 * x2) - -0.12453722324793741", "(x2 * x2) + cos(x1)"], losses = [18.7771512525188, 0.5041391763746159, 0.48862965640068395, 0.0], complexities = [1, 3, 5, 6], scores = [0.0, 1.8087718386053528, 0.015623759941847799, 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.
@test report(mach).best_idx isa IntTest PassedShow raw source code
#=
# 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 Intwhich uses Literate.jl to generate this page.
