def __init__(self, relations, before_dist_1_beginning_dist_2_beginning, same_dist_1_beginning_dist_2_beginning, before_dist_1_beginning_dist_2_ending, same_dist_1_beginning_dist_2_ending, before_dist_1_ending_dist_2_beginning, same_dist_1_ending_dist_2_beginning, before_dist_1_ending_dist_2_ending, same_dist_1_ending_dist_2_ending): self.relations = relations self[dist_1_beginning, dist_2_beginning] = ( before_dist_1_beginning_dist_2_beginning, same_dist_1_beginning_dist_2_beginning ) self[dist_1_beginning, dist_2_ending] = ( before_dist_1_beginning_dist_2_ending, same_dist_1_beginning_dist_2_ending ) self[dist_1_ending, dist_2_beginning] = ( before_dist_1_ending_dist_2_beginning, same_dist_1_ending_dist_2_beginning ) self[dist_1_ending, dist_2_ending] = ( before_dist_1_ending_dist_2_ending, same_dist_1_ending_dist_2_ending ) self.formula = FormulaCreator(self)
class Individual(dict): combinations = [ (dist_1_beginning, dist_2_beginning), (dist_1_beginning, dist_2_ending), (dist_1_ending, dist_2_beginning), (dist_1_ending, dist_2_ending) ] def __init__(self, relations, before_dist_1_beginning_dist_2_beginning, same_dist_1_beginning_dist_2_beginning, before_dist_1_beginning_dist_2_ending, same_dist_1_beginning_dist_2_ending, before_dist_1_ending_dist_2_beginning, same_dist_1_ending_dist_2_beginning, before_dist_1_ending_dist_2_ending, same_dist_1_ending_dist_2_ending): self.relations = relations self[dist_1_beginning, dist_2_beginning] = ( before_dist_1_beginning_dist_2_beginning, same_dist_1_beginning_dist_2_beginning ) self[dist_1_beginning, dist_2_ending] = ( before_dist_1_beginning_dist_2_ending, same_dist_1_beginning_dist_2_ending ) self[dist_1_ending, dist_2_beginning] = ( before_dist_1_ending_dist_2_beginning, same_dist_1_ending_dist_2_beginning ) self[dist_1_ending, dist_2_ending] = ( before_dist_1_ending_dist_2_ending, same_dist_1_ending_dist_2_ending ) self.formula = FormulaCreator(self) def compare(self, dist_1_key=dist_1_beginning, dist_2_key=dist_2_beginning): before, same = self[dist_1_key, dist_2_key] return before, same, 1 - before def fitness(self): actual = self.relations approximation = self.formula.calculate_relations() goal, solution = [], [] for relation in all_relations: goal.append(actual[relation]) solution.append(approximation[relation]) goal, solution = np.array(goal), np.array(solution) return np.linalg.norm(goal - solution)
def get_composition_data(self): data = [] for key in self.combinations: before, same, after = self.compare(*key) data.append(before) data.append(same) return data def check(self): from spatiotemporal.temporal_events import FormulaCreator print self.data print FormulaCreator(self).calculate_relations().to_vector() print if __name__ == "__main__": from spatiotemporal.temporal_events import FormulaCreator from spatiotemporal.temporal_events.trapezium import generate_random_events for i in xrange(50): A, B = generate_random_events(2) relations = A * B formula = FormulaCreator(DecompositionFitter(relations)) print relations.to_list() relations_estimate = formula.calculate_relations() print relations_estimate.to_list() print relations.to_vector() - relations_estimate.to_vector() print
def check(self): from spatiotemporal.temporal_events import FormulaCreator print self.data print FormulaCreator(self).calculate_relations().to_vector() print
data = [] for key in self.combinations: before, same, after = self.compare(*key) data.append(before) data.append(same) return data def check(self): from spatiotemporal.temporal_events import FormulaCreator print self.data print FormulaCreator(self).calculate_relations().to_vector() print if __name__ == '__main__': from spatiotemporal.temporal_events import FormulaCreator from spatiotemporal.temporal_events.trapezium import generate_random_events for i in xrange(50): A, B = generate_random_events(2) relations = A * B print relations.to_list() # from the 13 relations, learns parameters for all combinations of the # before, same, and after relationships between the beginning and # ending distributions of the two intervals formula = FormulaCreator(DecompositionFitter(relations)) # from these relationships, computes the 13 relations again relations_estimate = formula.calculate_relations() print relations_estimate.to_list() print relations.to_vector() - relations_estimate.to_vector() print