Reads and writes TSPLIB format files. TSPLIB files can be used by most
TSP solvers. Sample instances for the TSP in TSPLIB format are available
on the TSPLIB homepage (see references).
an object of class TSP, ATSP or ETSP.
NAs are not allowed.
file
file name or a connection.
precision
controls the number of decimal places used to represent
distances (see details). If x already is integer, this
argument is ignored and x is used as is.
inf
replacement value for Inf (TSPLIB format cannot handle
Inf). If inf is NULL, a large value of
max(x) + 2 range(x) (ignoring infinite entries) is used.
neg_inf
replacement value for -Inf.
If no value is specified, a small value of
min(x) - 2 range(x) (ignoring infinite entries) is used.
Details
In the TSPLIB format distances are represented by integer values. Therefore, if
x contains double values (which is normal in R) the values given
in x are multiplied by 10^{precision} before coercion to
integer. Note that therefore all results produced by programs using the
TSPLIB file as input need to be divided by 10^{precision} (i.e., the
decimal point has to be shifted precision placed to the left).
Currently only the following EDGE_WEIGHT_TYPEs are implemented:
EXPLICIT, EUC_2D and EUC_3D.
Value
read_TSPLIB returns an object of class TSP or ATSP.
## Drilling problem from TSP
drill <- read_TSPLIB(system.file("examples/d493.tsp", package = "TSP"))
drill
tour <- solve_TSP(drill, method = "nn", two_opt = TRUE)
tour
plot(drill, tour, cex=.6, col = "red", pch= 3, main = "TSPLIB: d493")
## Write and read data in TSPLIB format
x <- data.frame(x=runif(5), y=runif(5))
## create TSP, ATSP and ETSP (2D)
tsp <- TSP(dist(x))
atsp <- ATSP(dist(x))
etsp <- ETSP(x[,1:2])
write_TSPLIB(tsp, file="example.tsp")
#file.show("example.tsp")
r <- read_TSPLIB("example.tsp")
r
write_TSPLIB(atsp, file="example.tsp")
#file.show("example.tsp")
r <- read_TSPLIB("example.tsp")
r
write_TSPLIB(etsp, file="example.tsp")
#file.show("example.tsp")
r <- read_TSPLIB("example.tsp")
r
## clean up
unlink("example.tsp")