Skip to content

Commit 79db8ec

Browse files
author
Maximilian Reißmann
committed
adapt + test function
1 parent a326601 commit 79db8ec

File tree

2 files changed

+8
-42
lines changed

2 files changed

+8
-42
lines changed

docs/src/examples/physical-dimensions.md

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -98,47 +98,13 @@ n_samples = 500
9898

9999
println("Generating synthetic data...")
100100

101-
# Create realistic ranges for each variable
102-
rho_range = (1e-6, 1e-3) # Charge density range
103-
q_range = (1e-19, 1e-16) # Charge range (around elementary charge)
104-
A_range = (1e-6, 1e-3) # Magnetic vector potential range
105-
m_range = (1e-30, 1e-27) # Mass range (around electron mass)
106-
107-
# Generate random data within physical ranges
108-
rho = rho_range[1] .+ (rho_range[2] - rho_range[1]) .* rand(n_samples)
109-
q = q_range[1] .+ (q_range[2] - q_range[1]) .* rand(n_samples)
110-
A = A_range[1] .+ (A_range[2] - A_range[1]) .* rand(n_samples)
111-
m = m_range[1] .+ (m_range[2] - m_range[1]) .* rand(n_samples)
112-
113-
# Combine into feature matrix
114-
x_data = hcat(rho, q, A, m)
115-
116-
# Calculate target using the true relationship: J = -ρ * q * A / m
117-
y_data = -rho .* q .* A ./ m
118-
119-
# Add small amount of noise (1% relative noise)
120-
noise_level = 0.01
121-
y_data += noise_level * abs.(y_data) .* randn(n_samples)
122-
123-
println("Data ranges:")
124-
println(" ρ (charge density): $(minimum(rho)) to $(maximum(rho))")
125-
println(" q (electric charge): $(minimum(q)) to $(maximum(q))")
126-
println(" A (magnetic potential): $(minimum(A)) to $(maximum(A))")
127-
println(" m (mass): $(minimum(m)) to $(maximum(m))")
128-
println(" J (current density): $(minimum(y_data)) to $(maximum(y_data))")
129-
println(" Noise level: $(noise_level * 100)%")
130-
println()
131-
132-
# Split data for training and testing
133-
train_ratio = 0.8
134-
n_train = round(Int, n_samples * train_ratio)
135-
train_indices = 1:n_train
136-
test_indices = (n_train+1):n_samples
101+
# J = -ρ * q * A / m
102+
n_samples = 5000
137103

138-
x_train = x_data[train_indices, :]
139-
y_train = y_data[train_indices]
140-
x_test = x_data[test_indices, :]
141-
y_test = y_data[test_indices]
104+
# Load the data from the file => rho_c_0,q,A_vec,m,target
105+
data = Matrix(CSV.read("./paper/srsd/feynman-III.21.20\$0.txt", DataFrame))
106+
num_cols = size(data, 2)
107+
x_train, y_train, x_test, y_test = train_test_split(data[:, 1:num_cols-1], data[:, num_cols]; consider=4)
142108

143109
println("Training samples: $(length(y_train))")
144110
println("Test samples: $(length(y_test))")
@@ -147,7 +113,7 @@ println()
147113
# Evolution parameters
148114
epochs = 1000
149115
population_size = 1000
150-
num_features = size(x_data, 2)
116+
num_features = num_cols - 1
151117

152118
# Create regressor with dimensional constraints
153119
regressor = GepRegressor(

src/Entities.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ Genetic operators for chromosome modification.
767767
# Effects
768768
Modify chromosome genes in place
769769
"""
770-
@inline function genetic_operations!(space_next::Vector{Chromosome}, i::Int, toolbox::Toolbox)
770+
@inline function genetic_operations!(space_next::Vector{Chromosome}, i::Int, toolbox::Toolbox; generation::Int64, max_generation::Int64, parents::Vector{Chromosome})
771771
#allocate them within the space - create them once instead of n time
772772
space_next[i:i+1] = replicate(space_next[i], space_next[i+1], toolbox)
773773
rand_space = rand(15)

0 commit comments

Comments
 (0)