第一次在这里问问题。我之前使用一个简单的 MATLAB 脚本对 90 个 Hopf 振荡器进行建模,这些振荡器通过一个矩阵耦合,带有 randn 噪声,以及一个简单的欧拉阶跃积分。我想升级这个,所以我进入了 Julia,似乎有很多令人兴奋的属性。
我有点迷路了。我开始使用 differentequations.jl (stochastic solver) ,找到了一个解决方案,并发现自己有一个基准,告诉我解决 200 秒占用了 4 Gb !!!(2.5 Gb,alg_hints=[:stiff])(我没有固定 dt,以前我使用 dt=0.1)
function Shopf(du,u,p,t)
du[1:90,1]=(p[1:90,1]-u[1:90,1].^2.0-u[1:90,2].^2.0).*u[1:90,1]-p[1:90,2].*u[1:90,2] + 0.5*(-p[: , end].*u[:,1]+p[:,4:end-1] *u[:,1])
du[1:90,2]=(p[1:90,1]-u[1:90,1].^2.0-u[1:90,2].^2.0).*u[1:90,1]+p[1:90,2].*u[1:90,1] + 0.5*(-p[: , end].*u[:,2]+p[:,4:end-1] *u[:,2])
end
function σ_Shopf(du,u,p,t)
du[1:90,1]=0.04*ones(90,1)
du[1:90,2]=0.04*ones(90,1)
end
#initial condition
u0=-0.1*ones(90,2);
#initial time
t0=0.0;
#final time
tend=200.0;
#setting parameter matrix
p0=[0.1 , 2*pi*0.04]
push!(p0,-p0[2])
p=p0'.*ones(90,3);
SC=SC;
p=[p SC]
p=[p sum(SC,dims=2)]
#
#col 1 :alpha
#col 2-3 : [w0 -w0]
#col 3-93 : coupling matrix
#col 94: col-wise sum of coupling matrix
@benchmark solve(prob_sde_Shopf,nlsolver=Rosenbrock23(),alg_hints=[:stiff])
BenchmarkTools.Trial:内存估计:2.30 GiB
分配器估计:722769
最短时间:859.224 毫秒(13.24% GC)
中位时间:942.707 毫秒(13.10% GC)
平均时间:975.430 毫秒(12.99% GC)
最长时间:1.223 秒(13.00% GC)
样品:6
评估/样本:1
有什么想法吗?我正在检查几种解决方案,但它们都没有将内存量减少到合理的量。提前致谢。