def system_configuration_generator(self, case, first_suffix): for qual in [AllCoveredMinusIgnored]: # NewCoveredMinusIgnored for rev in [RevCIAddR]: # RevCIAddB for threshold_addit_mods in [4]: #2, , 8 for stop_threshold in [8]: #2, 4, suffix = 'conf%s_%s' % (self.get_suffix((qual, rev, threshold_addit_mods, stop_threshold)), first_suffix) archive_ = Archive() archive_.mnm_compartments = self.compartments # added access to all compartments archive_.model_of_ref = case['model_of_ref'] # recording entities with proper IDs: base versions and derived versions # these entities were involved in producing new versions and are handled below, not here entities_to_skip = list(case['ents_base_and_derived'].keys()) for list_of_ents in case['ents_base_and_derived'].values(): entities_to_skip.extend(list_of_ents) for ent in case['all_entities']: if ent in entities_to_skip: continue # not-skipped activities: ent.ID = archive_.get_new_ent_id() archive_.mnm_entities.append(ent) for ent in case['ents_base_and_derived'].keys(): derv_ents = case['ents_base_and_derived'][ent]# need to copy this now, dictionary stops working after ID change ent.ID = archive_.get_new_ent_id() archive_.mnm_entities.append(ent) for derv_ent in derv_ents: derv_ent.ID = ent.ID archive_.mnm_entities.append(derv_ent) for act in case['all_activities']: act.ID = archive_.get_new_act_id() archive_.mnm_activities.append(act) for act in case['add_import_activities']: act.ID = archive_.get_new_act_id() archive_.import_activities.append(act) archive_.record(InitialModels(case['initial_models'])) qual_m = qual(archive_) rev_m = rev(archive_, sfx=suffix) cost_model = CostModel(case['all_entities'], self.compartments, case['all_activities'], case['model_of_ref'].setup_conditions, case['add_import_activities']) cost_model.set_all_basic_costs_to_1() cost_model.calculate_derived_costs(case['all_activities']) cost_model.remove_None_valued_elements() exp_m = BasicExpModuleWithCosts(archive_, cost_model, sfx=suffix) # !!!!! switched from no costs oracle_ = Oracle(archive_, case['entities_ref'], case['activities_ref'], case['model_of_ref'], case['all_entities'], self.compartments, case['all_activities'], sfx=suffix) max_numb_cycles = 1000 # max_time = 4 # yield OverseerWithModQuality(archive_, rev_m, exp_m, oracle_, threshold_addit_mods, qual_m, max_numb_cycles, max_time, suffix, stop_threshold)
continue # not-skipped activities: ent.ID = archive_.get_new_ent_id() archive_.mnm_entities.append(ent) for ent in case['ents_base_and_derived'].keys(): # need to copy this now, dictionary stops working after ID change: derv_ents = case['ents_base_and_derived'][ent] ent.ID = archive_.get_new_ent_id() archive_.mnm_entities.append(ent) for derv_ent in derv_ents: derv_ent.ID = ent.ID archive_.mnm_entities.append(derv_ent) for act in case['all_activities']: act.ID = archive_.get_new_act_id() archive_.mnm_activities.append(act) for act in case['add_import_activities']: act.ID = archive_.get_new_act_id() archive_.import_activities.append(act) # if you want to print reverible activities: # for act in archive_.mnm_activities + archive_.import_activities: # print(act.reversibility) archive_.record(InitialModels(case['initial_models'])) qual_m = qual(archive_) rev_m = rev(archive_, sfx=suffix)