R语言环境下,使用tspmeta的concorde方法出现:Can not find executables for concorde or linkern.

完整错误提示:Can not find executables for concorde or linkern.Please install the executables or set path manually.

问题:

    在使用R语言的tspmeta包的run_solver()函数时,调用参数method='concorde'时 或者TSP包的concode_path()和concorde_help()函数时,出现的错误。

原因:

    查看源代码里出现这句错误语句的地方

## path
concorde_path <- local({
  .path <- NULL
  function(path){
    if(missing(path)) {
      if(!is.null(.path)) return(.path)
      else {
        ## find concorde and/or linkern
        p <- dirname(Sys.which("concorde"))
        if(p == "") p <- dirname(Sys.which("linkern"))
        if(p == "") stop("Can not find executables for concorde or linkern. Please install the executables or set path manually.")
        return(p)
      }
    } else {
      if(!is.null(path)) {
        path <- normalizePath(path) ### translate all special characters
        ex <- c(list.files(path, pattern = "concorde",
          ignore.case = TRUE),
          list.files(path, pattern = "linkern",
            ignore.case = TRUE))
        if(length(ex) < 1)
          stop(paste("no executable (concorde and/or linkern) found in",
            path))
        cat("found:", ex, "\n")
      }
      .path <<- path

      invisible(.path)

    }
  }
})

    可以看到是 Sys.which('concorde')或者Sys.which(c('concorde'))返回为空即""。

解决:

    推荐使用WSL Windows内置Linux(当然,Windows下使用Cygwin也可以,ps:自从有了WSL就放弃Cygwin了,现在坐等WSL2和Terminal,Microsoft Opensource Yes)

    Ubuntu下安装Concorde--最先进的精确TSP求解器网址

    就是简单的wget下载,然后解压,然后./configure和make命令(详细参考Concorde README和安装指南

mkdir -p ~/src
cd ~/src
wget http://www.math.uwaterloo.ca/tsp/concorde/downloads/codes/src/co031219.tgz
tar xf co031219.tgz
cd co031219
./configure
make

    其他:Windows方法

    然后,将Concorde在Linux下的环境路径指向concorde_path。

concorde_path(path = '/usr/bin/concorde')

 

备注:

    想使用Windows下WSL的Linux环境,但同时还想在Windows下开发,那就R语言工程化实践:RStudio Server环境快速配置教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值