def Simulate(self, simulation_loop=1, state_value_report=True): for looptime in range(simulation_loop): R = 0 is_end = False next_feature = False current_feature = -1 current_label = -1 self.Reset() while True: if is_end: Update.MonteCarlo_Update(R, self.state_list, self.state_action_label_value_map) break else: next_feature = Select.MonteCarlo_Epsilon_Select( self.feature_remaining, current_feature, current_label, self.state_action_label_value_map) Select.Erase_Feature(self.feature_remaining, next_feature) self.hypo_remaining_set = Observe.Observe_Subset( self.true_hypothesis, self.hypo_remaining_set, next_feature) Observe.Clear_Overlap(self.feature_remaining, self.hypo_remaining_set) is_end = Observe.Check_End(self.hypo_remaining_set) self.state_list.append( (current_feature, next_feature, current_label)) R += -1 current_label = self.true_hypothesis[next_feature] current_feature = next_feature if state_value_report: Report.Report_State_Value_Map(self.state_action_label_value_map)
def Apply_Policy_To_Random_Hypo(hypo_subset, number_features, state_action_label_value_map): R = 0 is_end = False next_feature = 0 true_hypothesis = Generate.Get_Hypo(hypo_subset) hypo_remaining_set = hypo_subset feature_remaining_set = [] feature_trajectory = [] current_feature = -1 current_label = -1 for i in range(number_features): feature_remaining_set.append(i) while True: if is_end: break else: next_feature = Select.MonteCarlo_Select( feature_remaining_set, current_feature, current_label, state_action_label_value_map) Select.Erase_Feature(feature_remaining_set, next_feature) hypo_remaining_set = Observe.Observe_Subset( true_hypothesis, hypo_remaining_set, next_feature) Observe.Clear_Overlap(feature_remaining_set, hypo_remaining_set) is_end = Observe.Check_End(hypo_remaining_set) feature_trajectory.append(next_feature) current_label = true_hypothesis[next_feature] current_feature = next_feature return feature_trajectory