java.lang.Object
org.cicirello.search.problems.tsp.BaseTSP
org.cicirello.search.problems.tsp.TSP
org.cicirello.search.problems.tsp.TSP.DoubleMatrix
- All Implemented Interfaces:
OptimizationProblem<Permutation>
,Problem<Permutation>
- Enclosing class:
- TSP
Cost function for the Traveling Salesperson Problem (TSP), where edge costs are floating-point
valued, and where all edge costs between pairs of cities are precomputed. This implementation
requires quadratic memory, and may be prohibitive for large instances, in which case you may
prefer to use the
TSP.Double
class, that only requires linear memory but recomputes an
edge cost every time it is needed.-
Nested Class Summary
Nested classes/interfaces inherited from class org.cicirello.search.problems.tsp.TSP
TSP.Double, TSP.DoubleMatrix, TSP.Integer, TSP.IntegerMatrix
-
Constructor Summary
ConstructorDescriptionDoubleMatrix
(double[] x, double[] y) Constructs a TSP instance with city locations specified by arrays of x and y coordinates.DoubleMatrix
(double[] x, double[] y, TSPEdgeDistance distance) Constructs a TSP instance with city locations specified by arrays of x and y coordinates.DoubleMatrix
(int n, double w) Constructs a random TSP instance with cities randomly distributed within a square region.DoubleMatrix
(int n, double w, long seed) Constructs a random TSP instance with cities randomly distributed within a square region.DoubleMatrix
(int n, double w, TSPEdgeDistance distance) Constructs a random TSP instance with cities randomly distributed within a square region.DoubleMatrix
(int n, double w, TSPEdgeDistance distance, long seed) Constructs a random TSP instance with cities randomly distributed within a square region. -
Method Summary
Modifier and TypeMethodDescriptiondouble
cost
(Permutation candidate) Computes the cost of a candidate solution to the problem instance.double
minCost()
A lower bound on the minimum theoretical cost across all possible solutions to the problem instance, where lower cost implies better solution.double
value
(Permutation candidate) Computes the value of the candidate solution within the usual constraints and interpretation of the problem.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.cicirello.search.problems.OptimizationProblem
costAsDouble, getSolutionCostPair, isMinCost
-
Constructor Details
-
DoubleMatrix
public DoubleMatrix(int n, double w) Constructs a random TSP instance with cities randomly distributed within a square region. The edge cost of a pair of cities is the Euclidean distance between them.- Parameters:
n
- The number of cities.w
- The width (and height) of a square region containing the cities.- Throws:
IllegalArgumentException
- if n < 2.IllegalArgumentException
- if w ≤ 0.0.
-
DoubleMatrix
Constructs a random TSP instance with cities randomly distributed within a square region.- Parameters:
n
- The number of cities.w
- The width (and height) of a square region containing the cities.distance
- The distance function to use for the edge costs.- Throws:
IllegalArgumentException
- if n < 2.IllegalArgumentException
- if w ≤ 0.0.
-
DoubleMatrix
public DoubleMatrix(int n, double w, long seed) Constructs a random TSP instance with cities randomly distributed within a square region. The edge cost of a pair of cities is the Euclidean distance between them.- Parameters:
n
- The number of cities.w
- The width (and height) of a square region containing the cities.seed
- The seed for the random number generator to enable reproducing the same instance for experiment reproducibility.- Throws:
IllegalArgumentException
- if n < 2.IllegalArgumentException
- if w ≤ 0.0.
-
DoubleMatrix
Constructs a random TSP instance with cities randomly distributed within a square region.- Parameters:
n
- The number of cities.w
- The width (and height) of a square region containing the cities.distance
- The distance function to use for the edge costs.seed
- The seed for the random number generator to enable reproducing the same instance for experiment reproducibility.- Throws:
IllegalArgumentException
- if n < 2.IllegalArgumentException
- if w ≤ 0.0.
-
DoubleMatrix
public DoubleMatrix(double[] x, double[] y) Constructs a TSP instance with city locations specified by arrays of x and y coordinates. The edge cost of a pair of cities is the Euclidean distance between them.- Parameters:
x
- Array of x coordinates.y
- Array of y coordinates.- Throws:
IllegalArgumentException
- if x.length is not equal to y.length.IllegalArgumentException
- if the length of the arrays is less than 2.
-
DoubleMatrix
Constructs a TSP instance with city locations specified by arrays of x and y coordinates.- Parameters:
x
- Array of x coordinates.y
- Array of y coordinates.distance
- The distance function to use for the edge costs.- Throws:
IllegalArgumentException
- if x.length is not equal to y.length.IllegalArgumentException
- if the length of the arrays is less than 2.
-
-
Method Details
-
cost
Description copied from interface:OptimizationProblem
Computes the cost of a candidate solution to the problem instance. The lower the cost, the more optimal the candidate solution.- Specified by:
cost
in interfaceOptimizationProblem<Permutation>
- Parameters:
candidate
- The candidate solution to evaluate.- Returns:
- The cost of the candidate solution. Lower cost means better solution.
-
value
Description copied from interface:OptimizationProblem
Computes the value of the candidate solution within the usual constraints and interpretation of the problem.- Specified by:
value
in interfaceOptimizationProblem<Permutation>
- Parameters:
candidate
- The candidate solution to evaluate.- Returns:
- The actual optimization value of the candidate solution.
-
minCost
public double minCost()Description copied from interface:OptimizationProblem
A lower bound on the minimum theoretical cost across all possible solutions to the problem instance, where lower cost implies better solution. The default implementation returns Double.NEGATIVE_INFINITY.- Specified by:
minCost
in interfaceOptimizationProblem<Permutation>
- Returns:
- A lower bound on the minimum theoretical cost of the problem instance.
-