def describe_info(sec, actions, info): Distance = info['Distance'] Distance_to_inverse = info['Distance_to_inverse'] np.fill_diagonal(Distance, np.nan) np.fill_diagonal(Distance_to_inverse, np.nan) max_value = max(np.nanmax(Distance), np.nanmax(Distance_to_inverse)) min_value = max(np.nanmin(Distance), np.nanmin(Distance_to_inverse)) params = dict(filter='scale', filter_params={'min_value': min_value / 1.5, 'max_value': max_value }) sec.array_as_image('Distance', zoom(Distance), **params) sec.array_as_image('DistanceInv', zoom(Distance_to_inverse), **params) n = len(actions) actual_inverse = np.zeros((n, n)) for i, j in itertools.product(range(n), range(n)): u_i = actions[i].original_cmd u_j = actions[j].original_cmd actual = np.allclose(u_i, -u_j) actual_inverse[i, j] = 1 if actual else 0 sec.array_as_image('Actual', zoom(actual_inverse)) sec.text('DistanceS', formatm('distance', Distance, format_str='%.3f')) sec.text('DistanceInvS', formatm('distance_inv', Distance_to_inverse, format_str='%.3f')) s = "" for action in actions: s += '%s\n' % action sec.text('list_of_actions', s)
def describe_info(sec, actions, info): Distance = info['Distance'] Distance_to_inverse = info['Distance_to_inverse'] np.fill_diagonal(Distance, np.nan) np.fill_diagonal(Distance_to_inverse, np.nan) max_value = max(np.nanmax(Distance), np.nanmax(Distance_to_inverse)) min_value = max(np.nanmin(Distance), np.nanmin(Distance_to_inverse)) params = dict(filter='scale', filter_params={ 'min_value': min_value / 1.5, 'max_value': max_value }) sec.array_as_image('Distance', zoom(Distance), **params) sec.array_as_image('DistanceInv', zoom(Distance_to_inverse), **params) n = len(actions) actual_inverse = np.zeros((n, n)) for i, j in itertools.product(range(n), range(n)): u_i = actions[i].original_cmd u_j = actions[j].original_cmd actual = np.allclose(u_i, -u_j) actual_inverse[i, j] = 1 if actual else 0 sec.array_as_image('Actual', zoom(actual_inverse)) sec.text('DistanceS', formatm('distance', Distance, format_str='%.3f')) sec.text('DistanceInvS', formatm('distance_inv', Distance_to_inverse, format_str='%.3f')) s = "" for action in actions: s += '%s\n' % action sec.text('list_of_actions', s)
def __init__(self, id_dds, dds, ds, collapse_threshold, min_visibility=0.5, debug_it=1000, max_it=1000): ''' :param id_dds: :param dds: :param ds: :param collapse_threshold: info distance for two plans to be the same node :param debug_it: Number of iterations for drawing debug graph. ''' WithInternalLog.__init__(self) self.collapse_threshold = collapse_threshold self.dds = dds self.ds = ds self.id_dds = id_dds self.debug_graph_iterations = debug_it self.max_it = max_it self.min_visibility = min_visibility from geometry import formatm self.info('Min_visibility: %s' % min_visibility) self.info('collapse_threshold: %s' % collapse_threshold) self.info( formatm('samew', self.ds.samew, 'oppow', self.ds.oppositew, 'swapw', self.ds.swappablew)) GenericGraphSearch.__init__(self)
def __init__(self, id_dds, dds, ds, collapse_threshold, min_visibility=0.5, debug_it=1000, max_it=1000): ''' :param id_dds: :param dds: :param ds: :param collapse_threshold: info distance for two plans to be the same node :param debug_it: Number of iterations for drawing debug graph. ''' WithInternalLog.__init__(self) self.collapse_threshold = collapse_threshold self.dds = dds self.ds = ds self.id_dds = id_dds self.debug_graph_iterations = debug_it self.max_it = max_it self.min_visibility = min_visibility from geometry import formatm self.info('Min_visibility: %s' % min_visibility) self.info('collapse_threshold: %s' % collapse_threshold) self.info(formatm('samew', self.ds.samew, 'oppow', self.ds.oppositew, 'swapw', self.ds.swappablew)) GenericGraphSearch.__init__(self)
def from_matrices(labels, commute, inverse, same): logger.info('Creating PlanReducer from matrices:\n' + formatm('same', same, 'oppo', inverse, 'swap', commute)) pr = PlanReducer() for i, j in iterate_indices(commute.shape): li = labels[i] lj = labels[j] if commute[i, j]: assert commute[j, i] pr.set_commute(li, lj) if same[i, j]: assert same[j, i] pr.set_same(li, lj) if inverse[i, j]: assert inverse[j, i] pr.set_inverse(li, lj) return pr
def description(self): s = "" for i in range(self.k): s += formatm('M^s_v%d' % i, self.M[:, :, i]) s += formatm('N^s_%d' % i, self.N[:, i]) return s