我已经安装并运行了TSP软件包。 我从Concorde(TSP / Waterloo)网站下载了所有文件。我尝试了不同的版本。甚至提取了所有文件。
我将文件放在R工作目录中。 最后,在运行concorde_path()时,它能够发现已找到文件。 但是,当我运行concorde_help()时,会收到错误消息。
我遇到了cygwin1.dll找不到错误。所以我安装了cygwin。 我仍然收到错误消息。 我尝试将所有的concorde文件放入cygwin(cygwin1.dll所在的文件夹)的bin文件夹中,并指向R工作目录和concorde_path(),然后出现状态123错误。
我还下载了Concorde Windows应用程序,它确实可以工作。我发现另一则文章暗示它必须工作才能在R中工作。
在Windows下运行R / Rstudio
感谢您的任何建议和帮助。
答案 0 :(得分:0)
我刚为TSPMap工作,所以希望可以帮助到别人。
Windows的Concorde似乎没有与TSP软件包一起使用的命令行界面。这是Cygwin出现的地方,因为该版本的concorde可以在命令行上与TSP软件包进行界面。
您真的需要首先使其在cygwin中工作。.因此,您需要启动并运行cygwin控制台。
如果控制台正常工作,则可以下载和压缩协和二进制文件并进行测试。.仅在cygwin中运行./concorde.exe即可显示该程序的帮助。
另一项测试是使用以下测试文件,并查看该文件是否可以通过协和协议运行。
NAME: TEST
TYPE: TSP
DIMENSION: 6
EDGE_WEIGHT_TYPE: EXPLICIT
EDGE_WEIGHT_FORMAT: FULL_MATRIX
EDGE_WEIGHT_SECTION:
0 1 2 1 1 2
1 0 1 2 2 1
2 1 0 1 2 1
1 2 1 0 1 2
1 2 2 1 0 1
2 1 1 2 1 0
一旦您在cygwin中工作了,就该从命令行尝试看看cygwin是否与Windows集成了。如果可以的话,R应该不会有问题。
如果系统可以识别,此命令应显示协和命令行帮助。
t1 <-try(system(“ c:/cygwin64/home/davisst5/concorde.exe”)
这一测试是concorde_path应该工作。.
concorde_path(“ c:/ cygwin64 / home / davisst5 /”)
找到:concorde.exe
如果您已经完成所有这些操作并且仍然有问题,则可能存在32/64位版本问题,其中R或cygwin要么以不同的模式运行,而无法正确调用其他模式(这可能可能是dll问题的来源。)我有64位的RGui和64位的Cygwin。。我读过的一个教程说,安装32位cygwin使其工作非常关键,因此,这可能是原因。
答案 1 :(得分:0)
我遵循了上面“斯蒂芬·戴维森”的回答。但是,我仍然收到cygwin1.dll文件丢失的错误。我在C驱动器中安装了cygwin 32位。我所做的是从C:\ cygwin \ bin文件夹中获取cygwin1.dll文件,并将其粘贴到我的R工作目录中,该目录为E:\ RA \ Concorde_Code
然后在我的R-studio(已安装64位)中,运行以下代码来检查Concorde是否正常工作
concordePath = "E:/RA/Concorde_Code/"
concorde_path(concordePath)
它说以下
found: concorde concorde.exe
然后我运行了以下代码
concorde_help()
它给了我以下输出
The following options can be specified in solve_TSP with method "concorde" using clo in control:
/Concorde_Code/concorde
Usage: /Concorde_Code/concorde [-see below-] [dat_file]
-B do not branch
-C # maximum chunk size in localcuts (default 16)
-d use dfs branching instead of bfs
-D f edgegen file for initial edge set
-e f initial edge file
-E f full edge file (must contain initial edge set)
-f write optimal tour as edge file (default is tour file)
-F f read extra cuts from file
-g h be a grunt for boss h
-h be a boss for the branching
-i just solve the blossom polytope
-I just solve the subtour polytope
-J # number of tentative branches
-k # number of nodes for random problem
-K h use cut server h
-M f master file
-m use multiple passes of cutting loop
-n s problem location (just a name or host:name, not a file name)
-o f output file name (for optimal tour)
-P f cutpool file
-q do not cut the root lp
-r # use #x# grid for random points, no dups if #<0
-R f restart file
-s # random seed
-S f problem file
-t f tour file (in node node node format)
-u v initial upperbound
-U do not permit branching on subtour inequalities
-v verbose (turn on lots of messages)
-V just run fast cuts
-w just subtours and trivial blossoms
-x delete files on completion (sav pul mas)
-X f write the last root fractional solution to f
-y use simple cutting and branching in DFS
-z # dump the #-lowest reduced cost edges to file xxx.rcn
-N # norm (must specify if dat file is not a TSPLIB file)
0=MAX, 1=L1, 2=L2, 3=3D, 4=USER, 5=ATT, 6=GEO, 7=MATRIX,
8=DSJRAND, 9=CRYSTAL, 10=SPARSE, 11-15=RH-norm 1-5, 16=TOROIDAL
17=GEOM, 18=JOHNSON
这确认了协和飞机已正确安装并正常工作。
安装后,我运行TSP代码以使用以下代码检查Concorde的工作情况
tour_test <- solve_TSP(tsp_test, method = "concorde")
现在工作正常。我得到以下输出
Used control parameters:
clo =
exe = E:\RA\Concorde_Code\/concorde
precision = 6
verbose = TRUE
keep_files = FALSE
/Concorde_Code/concorde -x -o file225841777aa0.sol file225841777aa0.dat
Host: Pasha Current process id: 1193
Using random seed 1586547969
Problem Name: TSP
Generated by write_TSPLIB (R-package TSP)
Problem Type: TSP
Number of Nodes: 6
Explicit Lengths (CC_MATRIXNORM)
Optimal Solution: 60000.00
Total Running Time: 0.01 (seconds)