@@ -11,10 +11,11 @@ function SciMLBase.__solve(prob::OptimizationProblem,
1111 lb, ub = check_init_bounds (prob)
1212 prob = remake (prob; lb = lb, ub = ub)
1313
14- gbest, particles = pso_solve (prob, opt, args... ; maxiters, kwargs... )
14+ gbest, particles, solve_time = pso_solve (prob, opt, args... ; maxiters, kwargs... )
1515 particles_positions = get_pos .(particles)
1616 SciMLBase. build_solution (SciMLBase. DefaultOptimizationCache (prob. f, prob. p), opt,
17- gbest. position, prob. f (gbest. position, prob. p), original = particles_positions)
17+ gbest. position, prob. f (gbest. position, prob. p), original = particles_positions,
18+ stats = Optimization. OptimizationStats (; time = solve_time))
1819end
1920
2021function pso_solve (prob:: OptimizationProblem ,
@@ -33,34 +34,40 @@ function pso_solve(prob::OptimizationProblem,
3334 gpu_init_gbest = KernelAbstractions. allocate (backend, typeof (init_gbest), (1 ,))
3435 copyto! (gpu_init_gbest, [init_gbest])
3536
37+ t0 = time ()
3638 gbest, particles = vectorized_solve! (prob,
3739 gpu_init_gbest,
3840 gpu_particles,
3941 opt,
4042 Val (opt. global_update),
4143 args... ;
4244 kwargs... )
43- gbest, particles
45+ t1 = time ()
46+ gbest, particles, t1 - t0
4447end
4548
4649function pso_solve (prob:: OptimizationProblem ,
4750 opt:: ParallelPSOArray ,
4851 args... ;
4952 kwargs... )
5053 init_gbest, particles = init_particles (prob, opt, typeof (prob. u0))
54+ t0 = time ()
5155 gbest, particles = vectorized_solve! (prob,
5256 init_gbest,
5357 particles,
5458 opt,
5559 args... ;
5660 kwargs... )
57- gbest, particles
61+ t1 = time ()
62+ gbest, particles, t1 - t0
5863end
5964
6065function pso_solve (prob:: OptimizationProblem , opt:: SerialPSO , args... ; kwargs... )
6166 init_gbest, particles = init_particles (prob, opt, typeof (prob. u0))
67+ t0 = time ()
6268 gbest, particles = vectorized_solve! (prob, init_gbest, particles, opt; kwargs... )
63- gbest, particles
69+ t1 = time ()
70+ gbest, particles, t1 - t0
6471end
6572
6673function pso_solve (prob:: OptimizationProblem ,
@@ -74,6 +81,13 @@ function pso_solve(prob::OptimizationProblem,
7481 copyto! (gpu_particles, particles)
7582 init_gbest = init_gbest
7683
77- gbest = vectorized_solve! (prob, init_gbest, gpu_particles, opt, args... ; kwargs... )
78- gbest
84+ t0 = time ()
85+ gbest, particles = vectorized_solve! (prob,
86+ init_gbest,
87+ gpu_particles,
88+ opt,
89+ args... ;
90+ kwargs... )
91+ t1 = time ()
92+ gbest, particles, t1 - t0
7993end
0 commit comments