def test_multiprocessing(self): p = Population(10, objective_function, num_processes=4) self.assertEqual(p._num_processes, 4) p.add_param(0, 10) p.add_param(0, 10) p.initialize() p.next_generation()
def test_next_generation(self): p = Population(100, objective_function) p.add_param(0, 10) p.add_param(0, 10) p.add_param(0, 10) p.initialize() for _ in range(100): p.next_generation() self.assertEqual(p.best_fitness, 1) self.assertEqual(p.best_ret_val, 0) self.assertEqual(p.best_params, [0, 0, 0])
def test_exceptions(self): with self.assertRaises(ReferenceError): p = Population(10, None) with self.assertRaises(ValueError): p = Population(1, objective_function) p = Population(10, objective_function) with self.assertRaises(RuntimeError): p.initialize() with self.assertRaises(RuntimeError): p.next_generation() p.add_param(0, 10) p.initialize() with self.assertRaises(RuntimeError): p.add_param(0, 10) with self.assertRaises(ValueError): p.next_generation(p_crossover=1.1) with self.assertRaises(ValueError): p.next_generation(p_crossover=-0.1) with self.assertRaises(ValueError): p.next_generation(p_mutation=1.1) with self.assertRaises(ValueError): p.next_generation(p_mutation=-0.1)
from pygenetics import Population def minimize_integers(integers): return sum(integers) pop = Population(10, minimize_integers) pop.add_param(0, 10) pop.add_param(0, 10) pop.add_param(0, 10) pop.initialize() for _ in range(10): pop.next_generation() print('Average fitness: {}'.format(pop.average_fitness)) print('Average obj. fn. return value: {}'.format(pop.average_ret_val)) print('Best fitness score: {}'.format(pop.best_fitness)) print('Best obj. fn. return value: {}'.format(pop.best_ret_val)) print('Best parameters: {}\n'.format(pop.best_params))