|
Open Graph Drawing Framework |
v. 2023.09 (Elderberry)
|
|
|
Go to the documentation of this file.
56 class KuratowskiWrapper;
58 namespace cluster_planarity {
90 <<
"\tReturn=" << (ret ?
"(error)" :
"(ok)") <<
"\n";
104 while (v != parent[v]) {
120 return pricingRealO(0.001);
131 int pricingReal(
double minViolate);
135 Logger::slout() <<
"\tSeparate (minViolate=" << minViolate <<
")..";
141 inline int pricingRealO(
double minViolate) {
142 Logger::slout() <<
"\tPricing (minViolate=" << minViolate <<
")..";
143 int r = pricingReal(minViolate);
167 virtual int solveLp()
override;
176 virtual int improve(
double& primalValue)
override;
189 double minViolation) {
213 for (
int i = num; i-- > 0;) {
282 void minimumSpanningTree(
287 void recursiveMinimumSpanningTree(
294 double heuristicImprovePrimalBoundDet(
The namespace for all OGDF objects.
virtual int constraintPoolSeparation(int ranking=0, Pool< Constraint, Variable > *pool=nullptr, double minViolation=0.001)
Tries to generate inactive constraints from a pool.
Declaration and implementation of ArrayBuffer class.
virtual abacus::Sub * generateSon(abacus::BranchRule *rule) override
Returns a pointer to an object of a problem specific subproblem, which is generated from the current ...
Includes declaration of graph class.
bool detectedInfeasibility
virtual int selectBranchingVariableCandidates(ArrayBuffer< int > &candidates) override
Selects candidates for branching variables.
Abstract base class for all branching rules.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
int clusterBags(ClusterGraph &CG, cluster c)
virtual bool feasible() override
Must check the feasibility of a solution of the LP-relaxation.
virtual int improve(double &primalValue) override
Can be redefined in order to implement primal heuristics for finding feasible solutions.
BranchRule * branchRule() const
Returns a pointer to the branching rule of the subproblem.
RegisteredArray for labeling the clusters of a ClusterGraph.
Encapsulates a pointer to an ogdf::SList element.
Copies of graphs supporting edge splitting.
int separateRealO(double minViolate)
int separateConnPool(double minViolation)
bool checkCConnectivityOld(const GraphCopy &support)
virtual int solveLp() override
Solves the LP-relaxation of the subproblem.
int getArrayIndex(double lpValue)
double subdivisionLefthandSide(SListConstIterator< KuratowskiWrapper > it, GraphCopy *gc)
void connectivitySupportGraph(GraphCopy &support, EdgeArray< double > &weight)
int addCutCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the connectivity cut pool.
void clusterSpanningTree(ClusterGraph &C, cluster c, ClusterArray< List< NodePair >> &treeEdges, ClusterArray< List< edgeValue >> &clusterEdges)
void myAddVars(ArrayBuffer< abacus::Variable * > &b)
int separateCutPool(abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool, double minViolation)
Contains logging functionality.
const Sub * father() const
Returns a pointer to the father of the subproblem in the branch-and-bound tree.
Variable * variable(int i) const
Returns a pointer to the i-th active variable.
void intSolutionInducedGraph(GraphCopy &support)
Representation of clusters in a clustered graph.
bool checkCConnectivity(const GraphCopy &support)
Checks if the cluster induced graphs and their complement are connected in the current solution.
List< abacus::Constraint * > criticalSinceBranching
MaxCPlanarMaster * master() const
Master * master_
A pointer to the corresponding master of the optimization.
Declaration of singly linked lists and iterators.
int addKuraCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the planarity cut pool.
INDEX size() const
Returns number of elements in the buffer.
void push(E e)
Puts a new element in the buffer.
void kuratowskiSupportGraph(GraphCopy &support, double low, double high)
Declaration of the master class for the Branch&Cut algorithm for the Maximum C-Planar SubGraph proble...
RegisteredArray for nodes, edges and adjEntries of a graph.
int id() const
Returns the identity number of the subproblem.
virtual bool removeNonLiftableCons()
int separateReal(double minViolate)
these functions are mainly reporting to let abacus think everthing is normal.
virtual int separate() override
Must be redefined in derived classes for the generation of cutting planes.
virtual int optimize() override
Performs the optimization of the subproblem.
int separateKuraPool(double minViolation)
virtual int optimize()
Performs the optimization of the subproblem.
void childClusterSpanningTree(GraphCopy &GC, List< edgeValue > &clusterEdges, List< NodePair > &MSTEdges)
Basic declarations, included by all source files.
MaxCPlanarSub(abacus::Master *master)
int createVariablesForBufferedConstraints()
virtual int selectBranchingVariable(int &variable) override
Chooses a branching variable.
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
Declaration of doubly linked lists and iterators.
virtual int addCons(ArrayBuffer< Constraint * > &constraints, Pool< Constraint, Variable > *pool=nullptr, ArrayBuffer< bool > *keepInPool=nullptr, ArrayBuffer< double > *rank=nullptr)
Tries to add new constraints to the constraint buffer and a pool.
virtual int addVars(ArrayBuffer< Variable * > &variables, Pool< Variable, Constraint > *pool=nullptr, ArrayBuffer< bool > *keepInPool=nullptr, ArrayBuffer< double > *rank=nullptr)
Tries to add new variables to the variable buffer and a pool.
node getRepresentative(node v, NodeArray< node > &parent)
run through the pointer list parent and return the representative i.e. the node with parent[v] == v
ArrayBuffer< abacus::Constraint * > bufferedForCreation
double heuristicImprovePrimalBound(List< NodePair > &originalEdges, List< NodePair > &connectionEdges, List< edge > &deletedEdges)
virtual int pricing() override
Should generate inactive variables which do not price out correctly.
virtual int makeFeasible() override
The default implementation of makeFeasible()does nothing.
double dualBound() const
Returns a bound which is "better" than the optimal solution of the subproblem w.r....
Representation of clustered graphs.
Class for the representation of nodes.
static std::ostream & slout(Level level=Level::Default)
stream for logging-output (global)
The master of the optimization.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
int addPoolCons(ArrayBuffer< abacus::Constraint * > &cons, abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool)
Adds the given constraints to the given pool.