V
- the vertex typeE
- the edge typepublic class AhujaOrlinSharmaCapacitatedMinimumSpanningTree<V,E> extends AbstractCapacitatedMinimumSpanningTree<V,E>
A Capacitated Minimum Spanning Tree (CMST) is a rooted minimal cost spanning tree that satisfies the capacity constrained on all trees that are connected to the designated root. The problem is NP-hard. The hard part of the problem is the implicit partition defined by the subtrees. If one can find the correct partition, the MSTs can be calculated in polynomial time.
This algorithm is a very large scale neighborhood search algorithm using a cyclic exchange
neighborhood until a local minimum is found. It makes frequently use of a MST algorithm and the
algorithm for subset disjoint cycles by Ahuja et al. That is, the algorithm may run in
exponential time. This algorithm is implemented in two different version: a local search and a
tabu search. In both cases we have to find the best neighbor of the current capacitated spanning
tree. For further information about finding such an improving neighbor
ImprovementGraph
@see ImprovementGraph
AbstractCapacitatedMinimumSpanningTree.CapacitatedSpanningTreeSolutionRepresentation
CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E>, CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTreeImpl<V,E>
bestSolution, capacity, demands, graph, root
Constructor and Description |
---|
AhujaOrlinSharmaCapacitatedMinimumSpanningTree(CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> initialSolution,
Graph<V,E> graph,
V root,
double capacity,
Map<V,Double> demands,
int lengthBound)
Constructs a new instance of this algorithm with the proposed initial solution.
|
AhujaOrlinSharmaCapacitatedMinimumSpanningTree(CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> initialSolution,
Graph<V,E> graph,
V root,
double capacity,
Map<V,Double> demands,
int lengthBound,
boolean bestImprovement,
boolean useVertexOperation,
boolean useSubtreeOperation,
boolean useTabuSearch,
int tabuTime,
int upperLimitTabuExchanges)
Constructs a new instance of this algorithm with the proposed initial solution.
|
AhujaOrlinSharmaCapacitatedMinimumSpanningTree(Graph<V,E> graph,
V root,
double capacity,
Map<V,Double> demands,
int lengthBound,
boolean bestImprovement,
int numberOfOperationsParameter,
boolean useVertexOperation,
boolean useSubtreeOperation,
boolean useTabuSearch,
int tabuTime,
int upperLimitTabuExchanges)
Constructs a new instance of this algorithm.
|
AhujaOrlinSharmaCapacitatedMinimumSpanningTree(Graph<V,E> graph,
V root,
double capacity,
Map<V,Double> demands,
int lengthBound,
int numberOfOperationsParameter)
Constructs a new instance of this algorithm.
|
Modifier and Type | Method and Description |
---|---|
CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> |
getCapacitatedSpanningTree()
Computes a capacitated spanning tree.
|
public AhujaOrlinSharmaCapacitatedMinimumSpanningTree(Graph<V,E> graph, V root, double capacity, Map<V,Double> demands, int lengthBound, int numberOfOperationsParameter)
graph
- the base graphroot
- the designated root of the CMSTcapacity
- the edge capacity constraintdemands
- the demands of the verticeslengthBound
- the length bound of the cycle detection algorithmnumberOfOperationsParameter
- the number of operations that are considered in the
randomized Esau-Williams algorithm
EsauWilliamsCapacitatedMinimumSpanningTree
@see
EsauWilliamsCapacitatedMinimumSpanningTreepublic AhujaOrlinSharmaCapacitatedMinimumSpanningTree(CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> initialSolution, Graph<V,E> graph, V root, double capacity, Map<V,Double> demands, int lengthBound)
initialSolution
- the initial solutiongraph
- the base graphroot
- the designated root of the CMSTcapacity
- the edge capacity constraintdemands
- the demands of the verticeslengthBound
- the length bound of the cycle detection algorithmpublic AhujaOrlinSharmaCapacitatedMinimumSpanningTree(Graph<V,E> graph, V root, double capacity, Map<V,Double> demands, int lengthBound, boolean bestImprovement, int numberOfOperationsParameter, boolean useVertexOperation, boolean useSubtreeOperation, boolean useTabuSearch, int tabuTime, int upperLimitTabuExchanges)
graph
- the base graphroot
- the designated root of the CMSTcapacity
- the edge capacity constraintdemands
- the demands of the verticeslengthBound
- the length bound of the cycle detection algorithmbestImprovement
- contains whether the best (if true) or the first improvement (if
false) is returned in the neighborhood searchnumberOfOperationsParameter
- the number of operations that are considered in the
randomized Esau-Williams algorithm
EsauWilliamsCapacitatedMinimumSpanningTree
@see
EsauWilliamsCapacitatedMinimumSpanningTreeuseVertexOperation
- contains whether the local search uses the vertex operationuseSubtreeOperation
- contains whether the local search uses the subtree operationuseTabuSearch
- contains whether a tabu search is usedtabuTime
- the tabu time that is the number of iterations an element is in the tabu listupperLimitTabuExchanges
- the upper limit of non-improving exchanges, this is the
stopping criterion in the tabu searchpublic AhujaOrlinSharmaCapacitatedMinimumSpanningTree(CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> initialSolution, Graph<V,E> graph, V root, double capacity, Map<V,Double> demands, int lengthBound, boolean bestImprovement, boolean useVertexOperation, boolean useSubtreeOperation, boolean useTabuSearch, int tabuTime, int upperLimitTabuExchanges)
initialSolution
- the initial solutiongraph
- the base graphroot
- the designated root of the CMSTcapacity
- the edge capacity constraintdemands
- the demands of the verticeslengthBound
- the length bound of the cycle detection algorithmbestImprovement
- contains whether the best (if true) or the first improvement (if
false) is returned in the neighborhood searchuseVertexOperation
- contains whether the local search uses the vertex operationuseSubtreeOperation
- contains whether the local search uses the subtree operationuseTabuSearch
- contains whether a tabu search is usedtabuTime
- the tabu time that is the number of iterations an element is in the tabu listupperLimitTabuExchanges
- the upper limit of non-improving exchanges, this is the
stopping criterion in the tabu searchpublic CapacitatedSpanningTreeAlgorithm.CapacitatedSpanningTree<V,E> getCapacitatedSpanningTree()
CapacitatedSpanningTreeAlgorithm
getCapacitatedSpanningTree
in interface CapacitatedSpanningTreeAlgorithm<V,E>
getCapacitatedSpanningTree
in class AbstractCapacitatedMinimumSpanningTree<V,E>
Copyright © 2019. All rights reserved.