R中的TSP,错误的行程长度

R中的TSP,错误的行程长度,r,traveling-salesman,R,Traveling Salesman,我得到了简单的距离表(矩阵): ETSP中的E代表“欧几里德”。此函数将V1、V2、V3解释为三维欧氏空间中的3个点,而不是距离矩阵的行(如您所想)。请注意: > sum(sqrt(sum((V1-V2)^2)) + sqrt(sum((V1-V3)^2)) + sqrt(sum((V2-V3)^2))) [1] 98559.14 还有另一个构造函数名为simply。您不能直接向其提供数据表,但以下方法有效: > tspObj <- TSP(as.dist(datalist)

我得到了简单的距离表(矩阵):


ETSP
中的
E
代表“欧几里德”。此函数将
V1
V2
V3
解释为三维欧氏空间中的3个点,而不是距离矩阵的行(如您所想)。请注意:

> sum(sqrt(sum((V1-V2)^2)) + sqrt(sum((V1-V3)^2)) + sqrt(sum((V2-V3)^2)))
[1] 98559.14
还有另一个构造函数名为simply。您不能直接向其提供数据表,但以下方法有效:

> tspObj <- TSP(as.dist(datalist))
> tour <- solve_TSP(tspObj, start = 1, method = "two_opt")
> tour
object of class ‘TOUR’ 
result of method ‘two_opt’ for 3 cities
tour length: 67164.31 
>tspObj巡回赛
“TOUR”类的对象
三个城市的“两个选择”方法结果
行程长度:67164.31

TSP需要对称的martix,或在dist中。但仍然像ETSP一样给出结果。为什么使用
data.table()
而不是
rbind()
cbind()
直接创建对称矩阵?它显然是通过计算成对距离将数据表强制为
dist
对象。也许可以用你的数据尝试
dist()
as.dist()
,直到你得到你想要的。@Adamek我下载了这个软件包,并且能够让它按预期工作,如上面的编辑所示
> sum(sqrt(sum((V1-V2)^2)) + sqrt(sum((V1-V3)^2)) + sqrt(sum((V2-V3)^2)))
[1] 98559.14
> tspObj <- TSP(as.dist(datalist))
> tour <- solve_TSP(tspObj, start = 1, method = "two_opt")
> tour
object of class ‘TOUR’ 
result of method ‘two_opt’ for 3 cities
tour length: 67164.31