コード例 #1
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_init(self):

        p = Population(10, objective_function)
        self.assertEqual(p._pop_size, 10)
        self.assertEqual(p._obj_fn, objective_function)

        kwargs = {'my_kwarg', 2}
        p = Population(10, objective_function_kwargs, kwargs)
        self.assertEqual(p._obj_fn_args, kwargs)

        p = Population(10, objective_function, num_processes=8)
        self.assertEqual(p._num_processes, 8)
コード例 #2
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    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])
コード例 #3
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    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()
コード例 #4
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_none_property(self):

        p = Population(10, objective_function)
        self.assertEqual(p.best_fitness, None)
        self.assertEqual(p.best_ret_val, None)
        self.assertEqual(p.best_params, None)
        self.assertEqual(p.average_fitness, None)
        self.assertEqual(p.average_ret_val, None)
コード例 #5
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_add_parameter(self):

        p = Population(10, objective_function)
        p.add_param(0, 1)
        p.add_param(2, 3)
        p.add_param(4, 5)
        self.assertEqual(p._params[0]._min_val, 0)
        self.assertEqual(p._params[0]._max_val, 1)
        self.assertEqual(p._params[1]._min_val, 2)
        self.assertEqual(p._params[1]._max_val, 3)
        self.assertEqual(p._params[2]._min_val, 4)
        self.assertEqual(p._params[2]._max_val, 5)
        self.assertEqual(p._params[0]._dtype, int)
        p.add_param(0.0, 10.0)
        self.assertEqual(p._params[3]._dtype, float)
        self.assertTrue(p._params[3]._restrict)
        p.add_param(0.0, 10.0, False)
        self.assertFalse(p._params[4]._restrict)
コード例 #6
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_initialize(self):

        p = Population(20, objective_function)
        p.add_param(0, 10)
        p.add_param(0, 10)
        p.initialize()
        self.assertEqual(len(p._members), 20)
コード例 #7
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_kwargs(self):

        p = Population(10, objective_function_kwargs, {'my_kwarg': 2})
        p.add_param(0, 0)
        p.add_param(0, 0)
        p.initialize()
        self.assertEqual(p.best_ret_val, 2)
コード例 #8
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    def test_get_stats(self):

        p = Population(10, objective_function)
        p.add_param(0, 0)
        p.add_param(0, 0)
        p.initialize()
        self.assertEqual(p.best_fitness, 1)
        self.assertEqual(p.best_ret_val, 0)
        self.assertEqual(p.best_params, [0, 0])
        self.assertEqual(p.average_fitness, 1)
        self.assertEqual(p.average_ret_val, 0)
コード例 #9
0
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))
コード例 #10
0
ファイル: population.py プロジェクト: tjkessler/pygenetics
    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)