def generate_initial_population(pop_size=10, number_of_gd_steps=50): p1 = GradientDescentAdam(R, lr=alpha) initial_pop = [] meta_g = None vec_len = None for x in range(pop_size): _, _, _, _, G, S = p1.optimize(number_of_gd_steps, ks=ks) v, meta = roll(G, S) meta_g = meta vec_len = len(v) initial_pop.append(v.tolist()) problem = Problem(vec_len, 1) problem.types[:] = Real(0, 1000) problem.function = partial(fit, p1, meta_g) generator = RandomGenerator() population = [] for i in range(pop_size): p = generator.generate(problem) p.variables = initial_pop[i] problem.evaluate(p) population.append(p) return problem, population, meta_g, generator
def generate_initial_population(number_of_gd_steps=50): p1 = GradientDescentAdam(R, lr=alpha) initial_pop = [] scale = 0.01 noise_scale=0.0000001 Gv, Sv = p1.construct_starting_point(ks, scale=scale) _, _, _, _, G, S = p1.optimize(G=Gv.copy(), S=Sv.copy(), steps=number_of_gd_steps, ks=ks) v, meta = roll(G, S) initial_pop.append(v.tolist()) GvNoise = [] for x in Gv: GvNoise.append(x+np.random.randn(*x.shape)*noise_scale) SvNoise = [] for x in Sv: n=[] for y in x: n.append(y+np.random.randn(*y.shape)*noise_scale) SvNoise.append(n) _, _, _, _, G, S = p1.optimize(G=GvNoise.copy(), S=SvNoise.copy(), steps=number_of_gd_steps, ks=ks) v, meta = roll(G, S) initial_pop.append(v.tolist()) np.random.rand() _, _, _, _, G, S = p1.optimize(number_of_gd_steps, ks=ks) v, meta = roll(G, S) meta_g = meta vec_len = len(v) initial_pop.append(v.tolist()) problem = Problem(vec_len, 1) problem.types[:] = Real(0, 1000) problem.function = partial(fit, p1, meta_g) generator = RandomGenerator() population = [] for i in range(3): p = generator.generate(problem) p.variables = initial_pop[i] problem.evaluate(p) population.append(p) return problem, population, meta_g, p1