Source code for selector.test.test_tournament_performance

import unittest
import sys
import os
import numpy as np
sys.path.append(os.getcwd())
import selector.tournament_performance as tp


[docs]class TestTournamentPerformance(unittest.TestCase):
[docs] def setUp(self): self.instances_set = ["instance_" + f"{n}" for n in range(1, 11)] self.configuration_id = "configuration_1" self.results = {self.configuration_id: {}} self.runtime = 0 for instance in self.instances_set: self.results[self.configuration_id][instance] = np.random.uniform(0, 5) self.runtime += self.results[self.configuration_id][instance]
[docs] def test_get_conf_time_out(self): conf_to = tp.get_conf_time_out(self.results, self.configuration_id, self.instances_set) self.assertEqual(conf_to, False) conf_to = tp.get_conf_time_out(self.results, "configuration_2", self.instances_set) self.assertEqual(conf_to, None) self.results[self.configuration_id][self.instances_set[0]] = np.nan conf_to = tp.get_conf_time_out(self.results, self.configuration_id, self.instances_set) self.assertEqual(conf_to, True)
[docs] def test_get_censored_runtime_for_instance_set(self): censored_runtime = tp.get_censored_runtime_for_instance_set(self.results, self.configuration_id, self.instances_set) self.assertEqual(round(censored_runtime, 10), round(self.runtime, 10)) instance_subset = np.random.choice(self.instances_set, 5, replace=False).tolist() runtime_subset = 0 for instance in instance_subset: runtime_subset += self.results[self.configuration_id][instance] censored_runtime = tp.get_censored_runtime_for_instance_set(self.results, self.configuration_id, instance_subset) self.assertEqual(round(censored_runtime, 10), round(runtime_subset, 10)) runtime_subset -= self.results[self.configuration_id][instance_subset[0]] self.results[self.configuration_id][instance_subset[0]] = np.nan censored_runtime = tp.get_censored_runtime_for_instance_set(self.results, self.configuration_id, instance_subset) self.assertEqual(round(censored_runtime, 10), round(runtime_subset, 10))
[docs] def test_get_runtime_for_instance_set_with_timeout(self): timeout = 2 par_penalty = 10 runtime_to = tp.get_runtime_for_instance_set_with_timeout(self.results, self.configuration_id, self.instances_set, timeout, par_penalty) self.assertEqual(round(runtime_to, 10), round(self.runtime, 10)) self.runtime -= self.results[self.configuration_id][self.instances_set[0]] self.runtime += timeout * par_penalty self.results[self.configuration_id][self.instances_set[0]] = np.nan runtime_to = tp.get_runtime_for_instance_set_with_timeout(self.results, self.configuration_id, self.instances_set, timeout, par_penalty) self.assertEqual(round(runtime_to, 10), round(self.runtime, 10))
[docs] def test_get_censored_runtime_of_configuration(self): censored_runtime = tp.get_censored_runtime_of_configuration(self.results, self.configuration_id) self.assertEqual(round(censored_runtime, 10), round(self.runtime, 10)) self.runtime -= self.results[self.configuration_id][self.instances_set[0]] self.results[self.configuration_id][self.instances_set[0]] = np.nan censored_runtime = tp.get_censored_runtime_of_configuration(self.results, self.configuration_id) self.assertEqual(round(censored_runtime, 10), round(self.runtime, 10))
[docs] def test_get_instances_no_results(self): instances_not_run_on = ["instance_" + f"{n}" for n in range(11, 16)] self.instances_set += instances_not_run_on not_run_on = tp.get_instances_no_results(self.results, self.configuration_id, self.instances_set) self.assertEqual(not_run_on, instances_not_run_on)
if __name__ == "__main__": unittest.main()