Particle swarm optimization: Difference between revisions
Content added Content deleted
(julia example) |
|||
Line 1,318: | Line 1,318: | ||
Global Best value : -0.801303410098550 |
Global Best value : -0.801303410098550 |
||
f(2.20, 1.57) : -0.801166387820286</pre> |
f(2.20, 1.57) : -0.801166387820286</pre> |
||
=={{header|Julia}}== |
|||
<lang julia>using Optim |
|||
const mcclow = [-1.5, -3.0] |
|||
const mccupp = [4.0, 4.0] |
|||
const miclow = [0.0, 0.0] |
|||
const micupp = Float64.([pi, pi]) |
|||
const npar = [100, 1000] |
|||
const x0 = [0.0, 0.0] |
|||
michalewicz(x, m=10) = -sum(i -> sin(x[i]) * (i * sin( x[i]^2/pi))^(2*m), 1:length(x)) |
|||
mccormick(x) = sin(x[1] + x[2]) + (x[1] - x[2])^2 - 1.5 * x[1] + 2.5 * x[2] + 1 |
|||
println(optimize(mccormick, x0, ParticleSwarm(;lower=mcclow, upper=mccupp, n_particles=npar[1]))) |
|||
@time optimize(mccormick, x0, ParticleSwarm(;lower=mcclow, upper=mccupp, n_particles=npar[1])) |
|||
println(optimize(michalewicz, x0, ParticleSwarm(;lower=miclow, upper=micupp, n_particles=npar[2]))) |
|||
@time optimize(michalewicz, x0, ParticleSwarm(;lower=miclow, upper=micupp, n_particles=npar[2])) |
|||
</lang>{{out}} |
|||
<pre> |
|||
Results of Optimization Algorithm |
|||
* Algorithm: Particle Swarm |
|||
* Starting Point: [0.0,0.0] |
|||
* Minimizer: [-0.5471975503990738,-1.5471975447742121] |
|||
* Minimum: -1.913223e+00 |
|||
* Iterations: 1000 |
|||
* Convergence: false |
|||
* |x - x'| ≤ 0.0e+00: false |
|||
|x - x'| = NaN |
|||
* |f(x) - f(x')| ≤ 0.0e+00 |f(x)|: false |
|||
|f(x) - f(x')| = NaN |f(x)| |
|||
* |g(x)| ≤ 1.0e-08: false |
|||
|g(x)| = NaN |
|||
* Stopped by an increasing objective: false |
|||
* Reached Maximum Number of Iterations: true |
|||
* Objective Calls: 101001 |
|||
* Gradient Calls: 0 |
|||
0.087319 seconds (228.91 k allocations: 12.098 MiB, 59.41% gc time) |
|||
Results of Optimization Algorithm |
|||
* Algorithm: Particle Swarm |
|||
* Starting Point: [0.0,0.0] |
|||
* Minimizer: [2.202905520771759,1.5707963264041795] |
|||
* Minimum: -1.801303e+00 |
|||
* Iterations: 1000 |
|||
* Convergence: false |
|||
* |x - x'| ≤ 0.0e+00: false |
|||
|x - x'| = NaN |
|||
* |f(x) - f(x')| ≤ 0.0e+00 |f(x)|: false |
|||
|f(x) - f(x')| = NaN |f(x)| |
|||
* |g(x)| ≤ 1.0e-08: false |
|||
|g(x)| = NaN |
|||
* Stopped by an increasing objective: false |
|||
* Reached Maximum Number of Iterations: true |
|||
* Objective Calls: 1001001 |
|||
* Gradient Calls: 0 |
|||
2.312291 seconds (3.52 M allocations: 153.253 MiB, 0.49% gc time) |
|||
</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |