Beispiel #1
0
    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
        ]
Beispiel #2
0
    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
        ]
Beispiel #3
0
    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)
Beispiel #4
0
    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)