def test_find_old_classifier_similar_and_subsumer_subsumer_returned(self): # given cfg = acs2.Configuration( classifier_length=8, number_of_possible_actions=4) subsumer = acs2.Classifier( condition='1#######', action=1, experience=21, quality=0.95, cfg=cfg) similar = acs2.Classifier( condition='10######', action=1, cfg=cfg) population = acs2.ClassifiersList(*[similar, subsumer]) cl = acs2.Classifier( condition='10######', action=1, cfg=cfg) # when old_cls = ga._find_old_classifier(population, cl, True, cfg.theta_exp) # then assert similar == cl assert subsumer == old_cls
def test_should_not_find_old_classifier(self): # given cfg = acs2.Configuration( classifier_length=4, number_of_possible_actions=2) cl = acs2.Classifier(cfg=cfg) population = acs2.ClassifiersList() # when old_cl = ga._find_old_classifier(population, cl, True, cfg.theta_exp) # then assert old_cl is None
def test_should_find_old_classifier_only_subsumer(self): # given cfg = acs2.Configuration( classifier_length=8, number_of_possible_actions=4) subsumer1 = acs2.Classifier( condition='1##0####', action=3, effect='##1#####', quality=0.93, reward=1.35, experience=23, cfg=cfg) subsumer2 = acs2.Classifier( condition='#1#0####', action=3, effect='##1#####', quality=0.93, reward=1.35, experience=23, cfg=cfg) most_general = acs2.Classifier( condition='###0####', action=3, effect='##1#####', quality=0.93, reward=1.35, experience=23, cfg=cfg) nonsubsumer = acs2.Classifier(cfg=cfg) cl = acs2.Classifier( condition='11#0####', action=3, effect='##1#####', quality=0.5, reward=0.35, experience=1, cfg=cfg) population = acs2.ClassifiersList( *[nonsubsumer, subsumer1, nonsubsumer, most_general, subsumer2, nonsubsumer]) # when old_cl = ga._find_old_classifier(population, cl, True, cfg.theta_exp) # then assert old_cl == most_general
def test_find_old_classifier_only_similar(self): # given cfg = acs2.Configuration( classifier_length=4, number_of_possible_actions=2) cl_1 = acs2.Classifier(action=1, experience=32, cfg=cfg) cl_2 = acs2.Classifier(action=1, cfg=cfg) population = acs2.ClassifiersList( *[cl_1, acs2.Classifier(action=2, cfg=cfg), acs2.Classifier(action=3, cfg=cfg), cl_2]) # when cl = acs2.Classifier(action=1, cfg=cfg) old_cl = ga._find_old_classifier(population, cl, True, cfg.theta_exp) # then assert old_cl == cl_1