46namespace cluster_planarity {
73 const char*
time =
"00:20:00",
302 + 360000 * act->
hours();
303 return ((
double)
tempo) / 100.0;
Declaration and implementation of ArrayBuffer class.
Declaration of the variable class for the Branch&Cut algorithm for the Maximum C-Planar SubGraph prob...
Declaration of graph copy classes.
Contains logging functionality.
Declaration of the master class for the Branch&Cut algorithm for the Maximum C-Planar SubGraph proble...
Forms the virtual base class for all possible constraints given in pool format.
The master of the optimization.
double upperBound() const
Returns the value of the global upper bound.
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.
Representation of clusters in a clustered graph.
Representation of clustered graphs.
Dynamic arrays indexed with edges.
Copies of graphs supporting edge splitting.
Data type for general directed graphs (adjacency list representation).
Doubly linked lists (maintaining the length of the list).
Encapsulates a pointer to a list element.
static std::ostream & slout(Level level=Level::Default)
stream for logging-output (global)
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
Realizes a stopwatch for measuring elapsed time.
int64_t hours() const
Returns the currently elapsed time in hours.
int64_t centiSeconds() const
Returns the currently elapsed time in 1/100-seconds.
int64_t seconds() const
Returns the currently elapsed time in seconds.
int64_t minutes() const
Returns the currently elapsed time in minutes.
virtual void printMe(std::ostream &out)
void setKIterations(int n)
void setPortaFile(bool b)
If set to true, PORTA output is written in a file.
void getCoefficients(abacus::Constraint *con, const List< EdgeVar * > &orig, const List< EdgeVar * > &connect, List< double > &coeffs)
writes coefficients of all orig and connect variables in constraint con into emptied list coeffs
List< NodePair > m_inactiveVariables
int m_nKuratowskiSupportGraphs
List< NodePair > m_connectionOneEdges
virtual ~MaxCPlanarMaster()
Destruction.
void setKBoundHigh(double n)
double m_kuratowskiBoundLow
void setStrongConstraintViolation(double d)
int m_nHeuristicPermutationLists
const EdgeArray< double > * m_pCost
bool perturbation() const
abacus::StandardPool< abacus::Constraint, abacus::Variable > * getCutConnPool()
Returns cut pool for connectivity.
double branchingOEdgeSelectGap() const
void generateVariablesForFeasibility(const List< ChunkConnection * > &ccons, List< EdgeVar * > &connectVars)
void updateBestSubGraph(List< NodePair > &original, List< NodePair > &connection, List< edge > &deleted)
double getKBoundHigh() const
void setHeuristicPermutationLists(int n)
double nextConnectCoeff()
Graph * solutionInducedGraph()
void setNSubdivisions(int n)
void setKBoundLow(double n)
abacus::StandardPool< abacus::Constraint, abacus::Variable > * getCutKuraPool()
Returns cut pool for planarity.
double getStrongVariableViolation() const
void setNHeuristicRuns(int n)
bool m_mpHeuristic
Indicates if simple max planar subgraph heuristic should be used to derive lower bound if only root c...
double m_strongVariableViolation
virtual abacus::Sub * firstSub() override
Should return a pointer to the first subproblem of the optimization, i.e., the root node of the enume...
void updateAddedCCons(int n)
GraphCopy * m_solutionGraph
void clearActiveRepairs()
double m_largestConnectionCoeff
const int m_fastHeuristicRuns
void setPertubation(bool b)
bool getCheckCPlanar() const
void setNumAddVariables(int i)
int addedCConstraints() const
bool m_useDefaultCutPool
Defines if the ABACUS default cut pool or the separate Connectivity and Kuratowski constraint pools a...
double m_kuratowskiBoundHigh
abacus::StandardPool< abacus::Constraint, abacus::Variable > * m_cutConnPool
Cut pools for connectivity and Kuratowski constraints.
double getStrongConstraintViolation() const
void heuristicLevel(int level)
double heuristicInitialUpperBound()
MaxCPlanarMaster(const ClusterGraph &C, const EdgeArray< double > *pCost, int heuristicLevel=1, int heuristicRuns=2, double heuristicOEdgeBound=0.3, int heuristicNPermLists=5, int kuratowskiIterations=3, int subdivisions=10, int kSupportGraphs=3, double kuratowskiHigh=0.7, double kuratowskiLow=0.3, bool perturbation=false, double branchingGap=0.4, const char *time="00:20:00", bool dopricing=true, bool checkCPlanar=false, int numAddVariables=15, double strongConstraintViolation=0.3, double strongVariableViolation=0.3)
int getHeuristicRuns() const
void updateAddedKCons(int n)
void getDeletedEdges(List< edge > &edges) const
int numberOfHeuristicPermutationLists() const
int m_nKuratowskiIterations
const char * getStdConstraintsFileName()
The name of the file that contains the standard, i.e., non-cut, constraints (may be deleted by ABACUS...
ArrayBuffer< int > m_repairStat
void setNKuratowskiSupportGraphs(int n)
EdgeVar * createVariable(ListIterator< NodePair > &it)
double m_strongConstraintViolation
int getNSubdivisions() const
int getHeuristicLevel() const
double heuristicInitialLowerBound()
void getConnectionOptimalSolutionEdges(List< NodePair > &egdes) const
List< NodePair > m_originalOneEdges
bool m_porta
If set to true, PORTA output is written in a file.
void setHeuristicRuns(int n)
double getHeuristicFractionalBound() const
virtual void terminateOptimization() override
The default implementation of terminateOptimization() does nothing.
void getOriginalOptimalSolutionEdges(List< NodePair > &edges) const
void getAllOptimalSolutionEdges(List< NodePair > &edges) const
void setStrongVariableViolation(double d)
double getKBoundLow() const
abacus::StandardPool< abacus::Constraint, abacus::Variable > * m_cutKuraPool
Kuratowski Cuts.
int addedKConstraints() const
const Graph * getGraph() const
bool m_checkCPlanar
Defines if only clustered planarity is checked, i.e., all edges of the original graph need to be fixe...
int getKIterations() const
double getDoubleTime(const Stopwatch *act)
int getNumAddVariables() const
virtual void initializeOptimization() override
The default implementation of initializeOptimization() does nothing.
List< edge > m_deletedOriginalEdges
void setMPHeuristic(bool b)
Switches use of lower bound heuristic.
List< NodePair > m_allOneEdges
bool & useDefaultCutPool()
Returns true if default cut pool is used. Otherwise, separate connectivity and Kuratowski pools are g...
int getNKuratowskiSupportGraphs() const
double m_heuristicFractionalBound
void clusterConnection(cluster c, GraphCopy &GC, double &upperBound)
bool goodVar(node a, node b)
bool getMPHeuristic() const
const ClusterGraph * getClusterGraph() const
void setHeuristicFractionalBound(double b)
void nodeDistances(node u, NodeArray< NodeArray< int > > &dist)
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.