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