def print_minimum(self): self.info('print_minimum:') connections = self.compute_connections(only_close_enough=False) self.show_connections(connections, 'all of them') nodes1 = list(self.tree1.G.nodes()) nodes2 = list(self.tree2.G.nodes()) # TODO: do not compute all of this Db = construct_matrix_iterators((nodes1, nodes2), lambda n1, n2: self.distance(n1, n2)) Dp = construct_matrix_iterators( (nodes1, nodes2), lambda n1, n2: self.distance_prediction(n1, n2)) Db_min, m = md_argmin(Db) n1 = nodes1[m[0]] n2 = nodes2[m[1]] assert_allclose(Db_min, self.distance(n1, n2)) self.info('Minimum distance_branch: %g between %s and %s' % (Db_min, self.tree1.node_friendly(n1), self.tree2.node_friendly(n2))) Dp_min, m = md_argmin(Dp) n1 = nodes1[m[0]] n2 = nodes2[m[1]] assert_allclose(Dp_min, self.distance_prediction(n1, n2)) self.info('Minimum distance_prediction: %g between %s and %s' % (Dp_min, self.tree1.node_friendly(n1), self.tree2.node_friendly(n2)))
def print_minimum(self): self.info('print_minimum:') connections = self.compute_connections(only_close_enough=False) self.show_connections(connections, 'all of them') nodes1 = list(self.tree1.G.nodes()) nodes2 = list(self.tree2.G.nodes()) # TODO: do not compute all of this Db = construct_matrix_iterators((nodes1, nodes2), lambda n1, n2: self.distance(n1, n2)) Dp = construct_matrix_iterators((nodes1, nodes2), lambda n1, n2: self.distance_prediction(n1, n2)) Db_min, m = md_argmin(Db) n1 = nodes1[m[0]] n2 = nodes2[m[1]] assert_allclose(Db_min, self.distance(n1, n2)) self.info('Minimum distance_branch: %g between %s and %s' % (Db_min, self.tree1.node_friendly(n1), self.tree2.node_friendly(n2))) Dp_min, m = md_argmin(Dp) n1 = nodes1[m[0]] n2 = nodes2[m[1]] assert_allclose(Dp_min, self.distance_prediction(n1, n2)) self.info('Minimum distance_prediction: %g between %s and %s' % (Dp_min, self.tree1.node_friendly(n1), self.tree2.node_friendly(n2)))
def get_distance_matrix(self, plans, action_distance): D_ij = lambda p1, p2: action_distance( self.plan2action(p1), self.plan2action(p2)) D = construct_matrix_iterators((plans, plans), D_ij) return plans, D
def get_distance_matrix(self, plans, action_distance): D_ij = lambda p1, p2: action_distance(self.plan2action(p1), self.plan2action(p2)) D = construct_matrix_iterators((plans, plans), D_ij) return plans, D