R TSP封装和协和

时间:2018-07-17 20:22:34

标签: r windows

我已经安装并运行了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

感谢您的任何建议和帮助。

2 个答案:

答案 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)