Example #1
0
 def test_pool_size_limit(self):
     size = 1
     pool = BestSolutionArchiver()
     pool.add(SOLUTIONS[0][0], SOLUTIONS[0][1], size)
     pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
     pool.add(SOLUTIONS[2][0], SOLUTIONS[2][1], size)
     pool.add(SOLUTIONS[3][0], SOLUTIONS[3][1], size)
     pool.add(SOLUTIONS[4][0], SOLUTIONS[4][1], size)
     pool.add(SOLUTIONS[5][0], SOLUTIONS[5][1], size)
     pool.add(SOLUTIONS[6][0], SOLUTIONS[6][1], size)
     pool.add(SOLUTIONS[7][0], SOLUTIONS[7][1], size)
     pool.add(SOLUTIONS[8][0], SOLUTIONS[8][1], size)
     pool.add(SOLUTIONS[9][0], SOLUTIONS[9][1], size)
     self.assertLessEqual(pool.length(), 1, msg="Pool must keep one solution (length=%s)" % pool.length())
     size = 2
     pool = BestSolutionArchiver()
     pool.add(SOLUTIONS[0][0], SOLUTIONS[0][1], size)
     pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
     pool.add(SOLUTIONS[2][0], SOLUTIONS[2][1], size)
     pool.add(SOLUTIONS[3][0], SOLUTIONS[3][1], size)
     pool.add(SOLUTIONS[4][0], SOLUTIONS[4][1], size)
     pool.add(SOLUTIONS[5][0], SOLUTIONS[5][1], size)
     pool.add(SOLUTIONS[6][0], SOLUTIONS[6][1], size)
     pool.add(SOLUTIONS[7][0], SOLUTIONS[7][1], size)
     pool.add(SOLUTIONS[8][0], SOLUTIONS[8][1], size)
     pool.add(SOLUTIONS[9][0], SOLUTIONS[9][1], size)
     self.assertLessEqual(pool.length(), 2, msg="Pool must keep one solution (length=%s)" % pool.length())
     size = 3
     pool = BestSolutionArchiver()
     pool.add(SOLUTIONS[0][0], SOLUTIONS[0][1], size)
     pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
     pool.add(SOLUTIONS[2][0], SOLUTIONS[2][1], size)
     pool.add(SOLUTIONS[3][0], SOLUTIONS[3][1], size)
     pool.add(SOLUTIONS[4][0], SOLUTIONS[4][1], size)
     pool.add(SOLUTIONS[5][0], SOLUTIONS[5][1], size)
     pool.add(SOLUTIONS[6][0], SOLUTIONS[6][1], size)
     pool.add(SOLUTIONS[7][0], SOLUTIONS[7][1], size)
     pool.add(SOLUTIONS[8][0], SOLUTIONS[8][1], size)
     pool.add(SOLUTIONS[9][0], SOLUTIONS[9][1], size)
     self.assertLessEqual(pool.length(), 3, msg="Pool must keep one solution (length=%s)" % pool.length())
     size = 4
     pool = BestSolutionArchiver()
     pool.add(SOLUTIONS[0][0], SOLUTIONS[0][1], size)
     pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
     pool.add(SOLUTIONS[2][0], SOLUTIONS[2][1], size)
     pool.add(SOLUTIONS[3][0], SOLUTIONS[3][1], size)
     pool.add(SOLUTIONS[4][0], SOLUTIONS[4][1], size)
     pool.add(SOLUTIONS[5][0], SOLUTIONS[5][1], size)
     pool.add(SOLUTIONS[6][0], SOLUTIONS[6][1], size)
     pool.add(SOLUTIONS[7][0], SOLUTIONS[7][1], size)
     pool.add(SOLUTIONS[8][0], SOLUTIONS[8][1], size)
     pool.add(SOLUTIONS[9][0], SOLUTIONS[9][1], size)
     self.assertLessEqual(pool.length(), 4, msg="Pool must keep one solution (length=%s)" % pool.length())
Example #2
0
    def test_uniqueness_of_solutions(self):
        size = 2
        pool = BestSolutionArchiver()
        pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
        pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)

        self.assertEqual(pool.length(), 1, "Added repeated solution")
Example #3
0
 def setUp(self):
     self.model = TEST_MODEL
     self.representation = [r.id for r in self.model.reactions]
     random = Random(SEED)
     args = {"representation": self.representation}
     self.solutions = BestSolutionArchiver()
     for _ in range(10000):
         self.solutions.add(set_generator(random, args), random.random(), 100)
     self.decoder = ReactionKnockoutDecoder(self.representation, self.model)
Example #4
0
 def test_add_smaller_solution_with_same_fitness(self):
     size = 1
     pool = BestSolutionArchiver()
     pool.add(SOLUTIONS[1][0], SOLUTIONS[1][1], size)
     pool.add(SOLUTIONS[0][0], SOLUTIONS[0][1], size)
     self.assertEqual(pool.length(), 1, msg="Pool must keep one solution (length=%s)" % pool.length())
     solution = set(SOLUTIONS[0][0])
     fitness = SOLUTIONS[0][1]
     sol = pool.get(0)
     self.assertEqual(sol.candidate, solution, msg="Best solution must be the first (%s)" % sol.candidate)
     self.assertEqual(sol.fitness, fitness, msg="Best fitness must be the first (%s)" % sol.fitness)
Example #5
0
    def test_callable_pool(self):
        pool = BestSolutionArchiver()
        size = 3
        args = {}
        args.setdefault('max_archive_size', size)
        population = [SolutionTuple(SOLUTIONS[0][0], SOLUTIONS[0][1]),
                      SolutionTuple(SOLUTIONS[1][0], SOLUTIONS[1][1]),
                      SolutionTuple(SOLUTIONS[2][0], SOLUTIONS[2][1]),
                      SolutionTuple(SOLUTIONS[3][0], SOLUTIONS[3][1]),
                      SolutionTuple(SOLUTIONS[4][0], SOLUTIONS[4][1]),
                      SolutionTuple(SOLUTIONS[5][0], SOLUTIONS[5][1]),
                      SolutionTuple(SOLUTIONS[6][0], SOLUTIONS[6][1])]
        archive = pool(None, population, [], args)
        self.assertEqual(pool.length(), size)

        for sol in pool:
            self.assertTrue(sol in archive)