|
Open Graph Drawing Framework |
v. 2023.09 (Elderberry)
|
|
|
Go to the documentation of this file.
56 class KuratowskiWrapper;
58 namespace cluster_planarity {
89 <<
"\tReturn=" << (ret ?
"(error)" :
"(ok)") <<
"\n";
103 while (v != parent[v]) {
119 return pricingRealO(0.001);
130 int pricingReal(
double minViolate);
134 Logger::slout() <<
"\tSeparate (minViolate=" << minViolate <<
")..";
140 inline int pricingRealO(
double minViolate) {
141 Logger::slout() <<
"\tPricing (minViolate=" << minViolate <<
")..";
142 int r = pricingReal(minViolate);
166 virtual int solveLp()
override;
175 virtual int improve(
double& primalValue)
override;
188 double minViolation) {
212 for (
int i = num; i-- > 0;) {
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.
virtual int selectBranchingVariable(int &variable) override
Chooses a branching variable.
Declaration and implementation of ArrayBuffer class.
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
CPlanarityMaster * master()
Includes declaration of graph class.
Abstract base class for all branching rules.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
int separateKuraPool(double minViolation)
int clusterBags(ClusterGraph &CG, cluster c)
virtual int pricing() override
Should generate inactive variables which do not price out correctly.
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.
Declaration of the CPlanarityMaster class for the Branch&Cut algorithm for c-planarity testing via an...
void myAddVars(ArrayBuffer< abacus::Variable * > &b)
Copies of graphs supporting edge splitting.
int addKuraCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the planarity cut pool.
Contains logging functionality.
const Sub * father() const
Returns a pointer to the father of the subproblem in the branch-and-bound tree.
int addPoolCons(ArrayBuffer< abacus::Constraint * > &cons, abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool)
Adds the given constraints to the given pool.
Variable * variable(int i) const
Returns a pointer to the i-th active variable.
int getArrayIndex(double lpValue)
virtual int optimize() override
Performs the optimization of the subproblem.
Representation of clusters in a clustered graph.
int separateConnPool(double minViolation)
bool detectedInfeasibility
void kuratowskiSupportGraph(GraphCopy &support, double low, double high)
CPlanaritySub(abacus::Master *master)
void connectivitySupportGraph(GraphCopy &support, EdgeArray< double > &weight)
Master * master_
A pointer to the corresponding master of the optimization.
Declaration of singly linked lists and iterators.
int separateRealO(double minViolate)
virtual int solveLp() override
Solves the LP-relaxation of the subproblem.
bool checkCConnectivityOld(const GraphCopy &support)
virtual int separate() override
Must be redefined in derived classes for the generation of cutting planes.
INDEX size() const
Returns number of elements in the buffer.
bool checkCConnectivity(const GraphCopy &support)
Checks if the cluster induced graphs and their complement are connected in the current solution.
void push(E e)
Puts a new element in the buffer.
void intSolutionInducedGraph(GraphCopy &support)
double heuristicImprovePrimalBound(List< NodePair > &connectionEdges)
KuraSize subdivisionLefthandSide(SListConstIterator< KuratowskiWrapper > it, GraphCopy *gc, SListPure< NodePair > &subDivOrig)
virtual int makeFeasible() override
The default implementation of makeFeasible()does nothing.
RegisteredArray for nodes, edges and adjEntries of a graph.
void clusterSpanningTree(ClusterGraph &C, cluster c, ClusterArray< List< NodePair >> &treeEdges, ClusterArray< List< edgeValue >> &clusterEdges)
int id() const
Returns the identity number of the subproblem.
virtual bool removeNonLiftableCons()
int addCutCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the connectivity cut pool.
virtual int optimize()
Performs the optimization of the subproblem.
List< abacus::Constraint * > criticalSinceBranching
Basic declarations, included by all source files.
ArrayBuffer< abacus::Constraint * > bufferedForCreation
virtual bool feasible() override
Must check the feasibility of a solution of the LP-relaxation.
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
virtual int selectBranchingVariableCandidates(ArrayBuffer< int > &candidates) override
Selects candidates for branching variables.
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 improve(double &primalValue) override
Can be redefined in order to implement primal heuristics for finding feasible solutions.
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.
int separateReal(double minViolate)
these functions are mainly reporting to let abacus think everthing is normal.
int createVariablesForBufferedConstraints()
void childClusterSpanningTree(GraphCopy &GC, List< edgeValue > &clusterEdges, List< NodePair > &MSTEdges)
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)
int separateCutPool(abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool, double minViolation)
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 ...
The master of the optimization.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.