projekty
/
imago.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
better image saving
[imago.git]
/
pso.py
diff --git
a/pso.py
b/pso.py
index
9fdee2d
..
9149167
100644
(file)
--- a/
pso.py
+++ b/
pso.py
@@
-4,9
+4,9
@@
import random
import multiprocessing
from functools import partial
import multiprocessing
from functools import partial
-def particle(dimension, bound, func_d):
+def particle(dimension, bound,
v_max,
func_d):
position = [2 * bound * random.random() - bound for _ in xrange(dimension)]
position = [2 * bound * random.random() - bound for _ in xrange(dimension)]
- velocity = [2 *
bound * random.random() - bound
for _ in xrange(dimension)]
+ velocity = [2 *
v_max * random.random() - v_max
for _ in xrange(dimension)]
value = func_d(*position)
return value, position, velocity, value, position
value = func_d(*position)
return value, position, velocity, value, position
@@
-26,11
+26,13
@@
def move(particle, omega, phi_p, phi_g, v_max, global_best, func_d):
def optimize(dimension, boundary, function_d, n_parts, n_turns):
pool = multiprocessing.Pool(None)
def optimize(dimension, boundary, function_d, n_parts, n_turns):
pool = multiprocessing.Pool(None)
- particles = [particle(dimension, boundary, function_d)
+ v_max = 30.
+ particles = [particle(dimension, boundary, v_max, function_d)
for _ in xrange(n_parts)]
gl_best = max(particles)
for _ in xrange(n_turns):
for _ in xrange(n_parts)]
gl_best = max(particles)
for _ in xrange(n_turns):
- move_p = partial(move, omega=0.9, phi_p=0.9, phi_g=0.2, v_max=20.,
+ move_p = partial(move,
+ omega=0.98, phi_p=2.75, phi_g=3., v_max=v_max,
global_best=gl_best[1], func_d=function_d)
particles = pool.map(move_p, particles)
gl_best = max(max(particles), gl_best)
global_best=gl_best[1], func_d=function_d)
particles = pool.map(move_p, particles)
gl_best = max(max(particles), gl_best)