Exemplo n.º 1
0
class TestCovarianceMatrixAdaption(unittest.TestCase):
    def setUp(self):
        self.n_envs = 4
        self.evaluator = Evaluator(TEST_CONFIG, self.n_envs, store=True)
        self.domain = UnitSimplex(7)

    def test_cma_es(self):
        mu, obj, prolif = cma_es(self.evaluator,
                                 self.domain,
                                 MAX_ITER,
                                 verbose=True,
                                 seed=23)
        self.assertTrue(np.abs(obj - np.average(prolif)) < EPS)
        self.assertTrue(self.domain.contains(mu))

        # compare objective with sequential computation
        treatment = prepare_dict(mu.flatten(),
                                 max_dosage=TEST_CONFIG["max_dosage"],
                                 scale=TEST_CONFIG["scale"])
        print(treatment)
        prolifs = []
        for line in TEST_CONFIG["cell_lines"]:
            simulator = Simulator()
            simulator.initialize(line)
            prolifs.append(simulator.apply_treatment(treatment))
        o = TEST_CONFIG["objective"].eval(prolifs, treatment)
        self.assertTrue(np.abs(obj - o) <= EPS)

    def tearDown(self):
        # performs internal check if all environments terminate
        self.evaluator.terminate()
class TestCrossEntropy(unittest.TestCase):
 
    def setUp(self):
        self.n_envs = 4
        self.evaluator = Evaluator(TEST_CONFIG, self.n_envs, store=True)
        self.domain = UnitSimplex(7)

    def test_cross_entropy(self):
        mu, obj, prolif = cross_entropy_method(self.evaluator, self.domain, MAX_ITER, 20, 10, 7, verbose=True, seed=23)
        self.assertTrue(np.abs(obj - np.average(prolif)) < EPS)
        self.assertTrue(self.domain.contains(mu))

    def tearDown(self):
        # performs internal check if all environments terminate
        self.evaluator.terminate()