@@ -20,7 +20,7 @@ using DelimitedFiles
2020using QuasiMonteCarlo, Random
2121import ModelingToolkit: Interval, infimum, supremum
2222
23- function allen_cahn(strategy, minimizer, maxIters)
23+ function allen_cahn(strategy, minimizer, maxIters, time_limit=3600.0) # Added time_limit parameter (default 1 hour in seconds )
2424 ## DECLARATIONS
2525 @parameters t x1 x2 x3 x4
2626 @variables u(..)
@@ -113,7 +113,7 @@ function allen_cahn(strategy, minimizer, maxIters)
113113 timeCounter = 0.0
114114 startTime = time_ns()
115115
116- # Callback function
116+ # Callback function with time cap
117117 cb = function (p, l)
118118 try
119119 deltaT_s = time_ns()
@@ -124,6 +124,12 @@ function allen_cahn(strategy, minimizer, maxIters)
124124 push!(error, l)
125125
126126 timeCounter += time_ns() - deltaT_s
127+
128+ if (ctime / 1e9 > time_limit)
129+ println("Time limit of $time_limit seconds exceeded. Stopping training.")
130+ return true
131+ end
132+
127133 return false
128134 catch e
129135 @warn "Callback error: $e"
@@ -161,10 +167,10 @@ end
161167maxIters = [(1,1,1,1,1,1,1000),(1,1,1,1,300,300,300)] #iters for ADAM/LBFGS
162168# maxIters = [(1,1,1,1,1,1,10),(1,1,1,3,3,3,3)] #iters for ADAM/LBFGS
163169
164- strategies = [NeuralPDE.QuadratureTraining(quadrature_alg = CubaCuhre(), reltol = 1e-4, abstol = 1e-4, maxiters = 1100 ),
165- NeuralPDE.QuadratureTraining(quadrature_alg = HCubatureJL(), reltol = 1e-4, abstol = 1e-4, maxiters = 1100 , batch = 0),
166- NeuralPDE.QuadratureTraining(quadrature_alg = CubatureJLh(), reltol = 1e-4, abstol = 1e-4, maxiters = 1100 ),
167- NeuralPDE.QuadratureTraining(quadrature_alg = CubatureJLp(), reltol = 1e-4, abstol = 1e-4, maxiters = 1100 ),
170+ strategies = [NeuralPDE.QuadratureTraining(quadrature_alg = CubaCuhre(), reltol = 1e-4, abstol = 1e-4, maxiters = 100 ),
171+ NeuralPDE.QuadratureTraining(quadrature_alg = HCubatureJL(), reltol = 1e-4, abstol = 1e-4, maxiters = 100 , batch = 0),
172+ NeuralPDE.QuadratureTraining(quadrature_alg = CubatureJLh(), reltol = 1e-4, abstol = 1e-4, maxiters = 100 ),
173+ NeuralPDE.QuadratureTraining(quadrature_alg = CubatureJLp(), reltol = 1e-4, abstol = 1e-4, maxiters = 100 ),
168174 NeuralPDE.GridTraining(0.2),
169175 NeuralPDE.StochasticTraining(400 ; bcs_points= 50),
170176 NeuralPDE.QuasiRandomTraining(400 ; bcs_points= 50)]
@@ -194,15 +200,15 @@ losses_res = Dict()
194200## Convergence
195201
196202for min =1:length(minimizers) # minimizer
197- for strat=1:length(strategies) # strategy
198- # println(string(strategies_short_name[strat], " ", minimizers_short_name[min]))
199- res = allen_cahn(strategies[strat], minimizers[min], maxIters[min][strat])
200- push!(error_res, string(strat,min) => res[1])
201- push!(params_res, string(strat,min) => res[2])
202- push!(domains, string(strat,min) => res[3])
203- push!(times, string(strat,min) => res[4])
204- push!(losses_res, string(strat,min) => res[5])
205- end
203+ for strat=1:length(strategies) # strategy
204+ # println(string(strategies_short_name[strat], " ", minimizers_short_name[min]))
205+ res = allen_cahn(strategies[strat], minimizers[min], maxIters[min][strat])
206+ push!(error_res, string(strat,min) => res[1])
207+ push!(params_res, string(strat,min) => res[2])
208+ push!(domains, string(strat,min) => res[3])
209+ push!(times, string(strat,min) => res[4])
210+ push!(losses_res, string(strat,min) => res[5])
211+ end
206212end
207213```
208214
0 commit comments