Пример #1
0
 def setUp(self):
     self.D = 20
     self.x, self.task = rnd.uniform(-100, 100,
                                     self.D), Task(self.D, 230, inf,
                                                   MyBenchmark())
     self.s1, self.s2, self.s3 = Individual(x=self.x, e=False), Individual(
         task=self.task, rand=rnd), Individual(task=self.task)
Пример #2
0
 def setUp(self):
     self.D = 20
     rng = default_rng()
     self.x, self.task = default_rng().uniform(
         -100, 100, self.D), StoppingTask(D=self.D,
                                          nFES=230,
                                          nGEN=np.inf,
                                          benchmark=MyBenchmark())
     self.s1, self.s2, self.s3 = Individual(x=self.x, e=False), Individual(
         task=self.task, rng=rng), Individual(task=self.task)
Пример #3
0
	def runTask(self, task):
		pop = [Individual(task=task, e=True, rand=self.Rand) for _i in range(self.Np)]
		ib = argmin([x.f for x in pop])
		x_b, x_bf = pop[ib].x, pop[ib].f
		while not task.stopCondI():
			npop = [Individual(x=self.CrossMutt(pop, i, x_b, self.F, self.CR, rnd=self.Rand), task=task, e=True, rand=self.Rand) for i in range(self.Np)]
			pop = [np if np.f < pop[i].f else pop[i] for i, np in enumerate(npop)]
			ib = argmin([x.f for x in pop])
			if x_bf > pop[ib].f: x_b, x_bf = pop[ib].x, pop[ib].f
		return x_b, x_bf
Пример #4
0
Файл: de.py Проект: tuahk/NiaPy
	def runTask(self, task):
		"""Run."""
		pop = [Individual(task=task) for _i in range(self.Np)]
		pop = [self.evalPopulation(pop[i], pop[i], task) for i in range(self.Np)]
		x_b = pop[argmin([x.f for x in pop])]
		while not task.stopCond():
			npop = [Individual(x=self.CrossMutt(pop, i, x_b, self.F, self.CR, self.Rand)) for i in range(self.Np)]
			pop = [self.evalPopulation(npop[i], pop[i], task) for i in range(self.Np)]
			ix_b = argmin([x.f for x in pop])
			if x_b.f > pop[ix_b].f: x_b = pop[ix_b]
		return x_b.x, x_b.f
Пример #5
0
	def runTask(self, task):
		Gr = task.nFES // (self.pmax * self.Np) + self.rp
		pop = [Individual(task=task, rand=self.Rand, e=True) for _i in range(self.Np)]
		x_b = pop[argmin([x.f for x in pop])]
		while not task.stopCondI():
			npop = [Individual(x=self.CrossMutt(pop, i, x_b, self.F, self.CR, self.Rand), task=task, rand=self.Rand, e=True) for i in range(len(pop))]
			pop = [np if np.f < pop[i].f else pop[i] for i, np in enumerate(npop)]
			ix_b = argmin([x.f for x in pop])
			if x_b.f > pop[ix_b].f: x_b = pop[ix_b]
			if task.Iters == Gr and len(pop) > 3:
				NP = int(len(pop) / 2)
				pop = [pop[i] if pop[i].f < pop[i + NP].f else pop[i + NP] for i in range(NP)]
				Gr += task.nFES // (self.pmax * NP) + self.rp
		return x_b.x, x_b.f
Пример #6
0
	def test_init_population_individual_fine(self):
		r"""Test if custome generation initialization works ok."""
		a = Algorithm(NP=10, InitPopFunc=init_pop_individual, itype=Individual)
		t = Task(D=20, benchmark=MyBenchmark())
		i = Individual(x=full(t.D, 0.0), task=t)
		pop, fpop, d = a.initPopulation(t)
		for e in pop: self.assertEqual(i, e)
Пример #7
0
	def evolve(self, pop, x_b, task):
		npop, x_bc = list(), pop[argmin([x.f for x in pop])]
		for i in range(self.NP):
			ind = Individual(x=self.Selection(pop, i, self.Ts, x_bc, self.Rand), e=False)
			ind.x = self.Crossover(pop, i, self.Cr, self.Rand)
			ind.x = self.Mutation(pop, i, self.Mr, task, self.Rand)
			ind.evaluate(task)
			npop.append(ind)
			if x_b.f > ind.f: x_b = ind
		return npop, x_b
Пример #8
0
	def runTask(self, task):
		Gr = task.nFES // (self.pmax * self.Np) + self.rp
		pop = [Individual(task=task, e=True, rand=self.Rand) for _i in range(self.Np)]
		ib = argmin([x.f for x in pop])
		x_b, x_bf = pop[ib].x, pop[ib].f
		while not task.stopCondI():
			npop = [self.multiMutations(pop, i, x_b, task) for i in range(len(pop))]
			pop = [np if np.f < pop[i].f else pop[i] for i, np in enumerate(npop)]
			ib = argmin([x.f for x in pop])
			if x_bf > pop[ib].f: x_b, x_bf = pop[ib].x, pop[ib].f
			if task.Iters == Gr and len(pop) > 3:
				NP = int(len(pop) / 2)
				pop = [pop[i] if pop[i].f < pop[i + NP].f else pop[i + NP] for i in range(NP)]
				Gr += task.nFES // (self.pmax * NP) + self.rp
		return x_b, x_bf
Пример #9
0
 def test_eq_fine(self):
     self.assertFalse(self.s1 == self.s2)
     self.assertTrue(self.s1 == self.s1)
     s = Individual(x=self.s1.x)
     self.assertTrue(s == self.s1)
Пример #10
0
 def test_repair_fine(self):
     s = Individual(x=full(self.D, 100))
     self.assertFalse(self.task.isFeasible(s.x))
     s.repair(self.task)
     self.assertTrue(self.task.isFeasible(s.x))
Пример #11
0
 def setUp(self):
     self.D = 20
     self.x, self.task = rnd.uniform(-100, 100, self.D), StoppingTask(
         D=self.D, nFES=230, nGEN=inf, benchmark=MyBenchmark())
     self.s1, self.s2, self.s3 = Individual(x=self.x, e=False), Individual(
         task=self.task, rand=rnd), Individual(task=self.task)
Пример #12
0
	def runTask(self, task):
		pop = [Individual(task=task, rand=self.Rand) for _i in range(self.NP)]
		x_b = pop[argmin([c.f for c in pop])]
		while not task.stopCond(): pop, x_b = self.evolve(pop, x_b, task)
		return x_b.x, x_b.f
Пример #13
0
	def multiMutations(self, pop, i, x_b, task):
		L = [Individual(x=strategy(pop, i, x_b, self.F, self.CR, rnd=self.Rand), task=task, e=True, rand=self.Rand) for strategy in self.strategys]
		return L[argmin([x.f for x in L])]