56class KuratowskiWrapper;
58namespace 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);
175 virtual int improve(
double& primalValue)
override;
188 double minViolation) {
212 for (
int i = num; i-- > 0;) {
Declaration and implementation of ArrayBuffer class.
Declaration of the CPlanarityMaster class for the Branch&Cut algorithm for c-planarity testing via an...
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
Includes declaration of graph class.
Declaration of doubly linked lists and iterators.
Contains logging functionality.
Declaration of singly linked lists and iterators.
Basic declarations, included by all source files.
Abstract base class for all branching rules.
The master of the optimization.
BranchRule * branchRule() const
Returns a pointer to the branching rule of the subproblem.
int id() const
Returns the identity number of the subproblem.
Variable * variable(int i) const
Returns a pointer to the i-th active variable.
virtual int optimize()
Performs the optimization of the subproblem.
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.
double dualBound() const
Returns a bound which is "better" than the optimal solution of the subproblem w.r....
virtual int constraintPoolSeparation(int ranking=0, Pool< Constraint, Variable > *pool=nullptr, double minViolation=0.001)
Tries to generate inactive constraints from a pool.
Master * master_
A pointer to the corresponding master of the optimization.
virtual bool removeNonLiftableCons()
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.
const Sub * father() const
Returns a pointer to the father of the subproblem in the branch-and-bound tree.
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
void push(E e)
Puts a new element in the buffer.
INDEX size() const
Returns number of elements in the buffer.
RegisteredArray for labeling the clusters of a ClusterGraph.
Representation of clusters in a clustered graph.
Representation of clustered graphs.
Copies of graphs supporting edge splitting.
Doubly linked lists (maintaining the length of the list).
static std::ostream & slout(Level level=Level::Default)
stream for logging-output (global)
Class for the representation of nodes.
Encapsulates a pointer to an ogdf::SList element.
int createVariablesForBufferedConstraints()
virtual int improve(double &primalValue) override
Can be redefined in order to implement primal heuristics for finding feasible solutions.
CPlanaritySub(abacus::Master *master, abacus::Sub *father, abacus::BranchRule *branchRule, List< abacus::Constraint * > &criticalConstraints)
void childClusterSpanningTree(GraphCopy &GC, List< edgeValue > &clusterEdges, List< NodePair > &MSTEdges)
CPlanaritySub(abacus::Master *master)
ArrayBuffer< abacus::Constraint * > bufferedForCreation
int separateRealO(double minViolate)
virtual int solveLp() override
Solves the LP-relaxation of the subproblem.
int separateCutPool(abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool, double minViolation)
int addPoolCons(ArrayBuffer< abacus::Constraint * > &cons, abacus::StandardPool< abacus::Constraint, abacus::Variable > *pool)
Adds the given constraints to the given pool.
List< abacus::Constraint * > criticalSinceBranching
void kuratowskiSupportGraph(GraphCopy &support, double low, double high)
virtual int separate() override
Must be redefined in derived classes for the generation of cutting planes.
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
bool checkCConnectivityOld(const GraphCopy &support)
bool checkCConnectivity(const GraphCopy &support)
Checks if the cluster induced graphs and their complement are connected in the current solution.
int addCutCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the connectivity cut pool.
int separateConnPool(double minViolation)
int addKuraCons(ArrayBuffer< abacus::Constraint * > cons)
Adds the given constraints to the planarity cut pool.
virtual int selectBranchingVariableCandidates(ArrayBuffer< int > &candidates) override
Selects candidates for branching variables.
virtual int selectBranchingVariable(int &variable) override
Chooses a branching variable.
CPlanarityMaster * master()
void connectivitySupportGraph(GraphCopy &support, EdgeArray< double > &weight)
bool detectedInfeasibility
virtual int optimize() override
Performs the optimization of the subproblem.
int separateReal(double minViolate)
these functions are mainly reporting to let abacus think everthing is normal.
int getArrayIndex(double lpValue)
double heuristicImprovePrimalBound(List< NodePair > &connectionEdges)
int clusterBags(ClusterGraph &CG, cluster c)
int separateKuraPool(double minViolation)
void clusterSpanningTree(ClusterGraph &C, cluster c, ClusterArray< List< NodePair > > &treeEdges, ClusterArray< List< edgeValue > > &clusterEdges)
virtual bool feasible() override
Must check the feasibility of a solution of the LP-relaxation.
void intSolutionInducedGraph(GraphCopy &support)
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 ...
void myAddVars(ArrayBuffer< abacus::Variable * > &b)
virtual int makeFeasible() override
The default implementation of makeFeasible()does nothing.
KuraSize subdivisionLefthandSide(SListConstIterator< KuratowskiWrapper > it, GraphCopy *gc, SListPure< NodePair > &subDivOrig)
virtual int pricing() override
Should generate inactive variables which do not price out correctly.
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
RegisteredArray for nodes, edges and adjEntries of a graph.
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
The namespace for all OGDF objects.