self.best_value, self.best = max(self.nests)
def new_nest(space):
- position = [2 * space.bound * random.random()
- - space.bound for _ in xrange(space.dimension)]
- value = space.d_function(*position)
- return (value, position)
+ position = [2 * space.bound * random.random()
+ - space.bound for _ in xrange(space.dimension)]
+ value = space.d_function(*position)
+ return (value, position)
def get_cuckoos(space):
beta = 1.5
space.nests = [max(n, m) for (n, m) in zip(space.nests, nests)]
space.best_value, space.best = max(space.nests)
-def optimize(dimension, boundary, function_d, n_nest, n_turns):
- space = Space(dimension, boundary, function_d, n_nest)
- for _ in xrange(n_turns):
- next_turn(space)
- return space.best
+def optimize(dimension, boundary, function_d, n_nest, n_turns, reset=1):
+ best_list = []
+ for i in xrange(reset):
+ space = Space(dimension, boundary, function_d, n_nest)
+ for _ in xrange(n_turns / reset):
+ next_turn(space)
+ best_list.append((space.best_value, space.best))
+ print space.best_value
+
+ return max(best_list)[1]
f_dist = partial(job_4, im_l=im_l_s, v1=v1, v2=v2, h1=h1, h2=h2,
dv=delta_v, dh=delta_h, size=size)
- x_v, y_v, x_h, y_h = Optimizer.optimize(4, 30, f_dist, 128, 256)
+ x_v, y_v, x_h, y_h = Optimizer.optimize(4, 30, f_dist, 64, 256, 4)
v1 = (v1[0] + x_v * delta_v, v1[1] + x_v)
v2 = (v2[0] + y_v * delta_v, v2[1] + y_v)