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()