Graphviz 13.0.0~dev.20241222.1117
|
#include <solve_VPSC.h>
Public Member Functions | |
virtual void | satisfy () |
virtual void | solve () |
VPSC (const unsigned n, Variable *vs[], const unsigned m, Constraint *cs[]) | |
virtual | ~VPSC ()=default |
Protected Member Functions | |
void | printBlocks () |
Protected Attributes | |
Blocks | bs |
Constraint ** | cs |
unsigned | m |
Variable Placement with Separation Constraints problem instance
Definition at line 29 of file solve_VPSC.h.
VPSC::VPSC | ( | const unsigned | n, |
Variable * | vs[], | ||
const unsigned | m, | ||
Constraint * | cs[] | ||
) |
Definition at line 49 of file solve_VPSC.cpp.
References printBlocks(), and RECTANGLE_OVERLAP_LOGGING.
|
virtualdefault |
|
protected |
Definition at line 59 of file solve_VPSC.cpp.
References bs, cs, LOGFILE, m, and RECTANGLE_OVERLAP_LOGGING.
Referenced by IncVPSC::satisfy(), and VPSC().
|
virtual |
Produces a feasible - though not necessarily optimal - solution by examining blocks in the partial order defined by the directed acyclic graph of constraints. For each block (when processing left to right) we maintain the invariant that all constraints to the left of the block (incoming constraints) are satisfied. This is done by repeatedly merging blocks into bigger blocks across violated constraints (most violated first) fixing the position of variables inside blocks relative to one another so that constraints internal to the block are satisfied.
Reimplemented in IncVPSC.
Definition at line 80 of file solve_VPSC.cpp.
References bs, Blocks::cleanup(), cs, LOGFILE, m, Blocks::mergeLeft(), RECTANGLE_OVERLAP_LOGGING, and Blocks::totalOrder().
Referenced by satisfyVPSC(), and solve().
|
virtual |
Calculate the optimal solution. After using satisfy() to produce a feasible solution, refine() examines each block to see if further refinement is possible by splitting the block. This is done repeatedly until no further improvement is possible.
Reimplemented in IncVPSC.
Definition at line 137 of file solve_VPSC.cpp.
References satisfy().
Referenced by solveVPSC().
|
protected |
Definition at line 37 of file solve_VPSC.h.
Referenced by IncVPSC::moveBlocks(), printBlocks(), satisfy(), IncVPSC::satisfy(), IncVPSC::solve(), and IncVPSC::splitBlocks().
|
protected |
Definition at line 38 of file solve_VPSC.h.
Referenced by printBlocks(), satisfy(), and IncVPSC::satisfy().
|
protected |
Definition at line 39 of file solve_VPSC.h.
Referenced by printBlocks(), satisfy(), and IncVPSC::satisfy().