def get_solution_edges(self, prefix="x"): """ Get the nonzero edge tuples from the LP solution """ varnames = self.get_solution_varnames(prefix=prefix) return [ mip_utils.get_edge_from_varname(varname) for varname in varnames ]
def get_edges(self, prefix="x"): """ Get the edges of the problem graph """ varnames = [name for name in self.get_varnames() if prefix in name] return [ mip_utils.get_edge_from_varname(varname) for varname in varnames ]
def set_mincut_graph(self): """ Build a graph structure for mincut """ values = self.get_varvals() names = self.get_varnames() edges = [mip_utils.get_edge_from_varname(name) for name in names] self.initialise_mincut_graph() self._mincut_graph = constraints.set_mincut_graph( self._mincut_graph, edges, values)
def set_mincut_constraint(self, vertex_a, vertex_b): """ Build a mincut constraint for a given pair of vertices """ variables = constraints.get_mincut_variables(self._mincut_graph, vertex_a, vertex_b, self.variable_dict, self._is_symmetric) if variables is None: return None varnames = [variable.name for variable in variables] edges = [ mip_utils.get_edge_from_varname(varname) for varname in varnames ] uniques = np.unique(edges) if variables is not None: self._funcs["add_mincut"](self.problem, variables, self.variable_dict)