Hello everyone,
I am brand new to Julia
, machine learning
and sciML
so forgive me if I still don’t have the technical jargon.
I have read through Automatically Discover Missing Physics by Embedding Machine Learning into Differential Equations · Overview of Julia's SciML and would like to ask a question regarding UODE’s which I would like to apply to the Lotka-Volterra [predator-prey] system.
In the tutorial, the data is generated for an initial condition u0 = 5.0f0 * rand(rng, 2)
and a set of parameters \alpha, \beta, \gamma, \delta = [1.3, 0.9, 0.8, 1.8]
.
Latter we assume only partial knowledge of the physics and try to capture what the physics is missing with a neural network.
Now, my question.
Let us assume that I have data on several types of [predator-prey] populations.
[wolf-rabit]
, [cat-mouse]
, [human-mamuth]
A similar approach to generate the data can be used as in the example.
function lotka!(du, u, p, t)
α, β, γ, δ = p
du[1] = α * u[1] - β * u[2] * u[1]
du[2] = γ * u[1] * u[2] - δ * u[2]
end
# Define the experimental parameter
t_true= LinRange(0.0,5.0,300)
tspan = (0.0, 5.0)
u0_wolf_rabit = 5.0f0 * rand(rng, 2)
p_wolf_rabit = [1.3, 0.9, 0.8, 1.8]
prob_wolf_rabit = ODEProblem(lotka!, u0_wolf_rabit, tspan, p_wolf_rabit)
solution_wolf_rabit = solve(prob_wolf_rabit, Vern7(), abstol = 1e-12, reltol = 1e-12, saveat = t_true)
u0_cat_mouse = 4.0f0 * rand(rng, 2)
p_cat_mouse = [1.5, 1.1, 1.0, 2.0]
prob_cat_mouse = ODEProblem(lotka!, u0_cat_mouse, tspan, p_cat_mouse)
solution_cat_mouse = solve(prob_cat_mouse, Vern7(), abstol = 1e-12, reltol = 1e-12, saveat = t_true)
u0_human_mamuth = 3.0f0 * rand(rng, 2)
p_human_mamuth = [1.1, 0.7, 0.6, 1.6]
prob_human_mamuth = ODEProblem(lotka!, u0_human_mamuth, tspan, p_human_mamuth)
solution_human_mamuth = solve(prob_human_mamuth, Vern7(), abstol = 1e-12, reltol = 1e-12, saveat = t_true)
plt= plot(solution_wolf_rabit, alpha = 0.75, color = :black, label = ["wolf-rabit" nothing])
plot!(plt,solution_cat_mouse, alpha = 0.75, color = :red, label = ["cat-mouse" nothing] )
plot!(plt,solution_human_mamuth, alpha = 0.75, color = :blue, label = ["human-mamuth" nothing] )
I want to do the same thing as in the post. Given the same limited physical knowledge how can I use these data to train a network? Basically, how can I train the NN with sets of populations?
Best Regards,
James