graph convenet tsp项目搭建及简单复现

graph convenet tsp项目搭建及简单复现

1.按照源项目搭建环境

环境说明

  源项目由 Chaitanya K. Joshi 等人在github上开源发布 https://github.com/chaitjo/graph-convnet-tsp 本次对该项目的复现是在WSL2 ubuntu-18.04上进行的,基本环境要求如下:

  • CUDA:cuda9.0
  • python:3.6.7
  • pytorch:0.4.1

环境搭建步骤

  1. 将开源项目克隆到本地

    git clone https://github.com/chaitjo/graph-convnet-tsp.git

  2. 创建虚拟环境,命名为 GCN-TSP

    conda create -n GCN-TSP python=3.6.7

  3. 安装CUDA 9.0

    • 查看gcc版本,安装cuda9.0要求的gcc-5与g+±5

      gcc --version,g++ -version

      先更换源链接为ubuntu16.04的软件源

      sudo vim /etc/apt/sources.list

      在sources.list下添加ubuntu16.04的软件源

      deb http://mirrors.aliyun.com/ubuntu/ xenial main
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
      deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
      deb http://mirrors.aliyun.com/ubuntu/ xenial universe
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
      deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
      deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
      deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
      deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
      

      添加后,按住esc+shift+:,输入wq!保存并退出,更新源:

      sudo apt-get update

      查看能够安装的gcc版本

      apt-cache policy gcc-5

      安装gcc-5,g+±5

      sudo apt install gcc-5,sudo apt install g++-5

      将下载好的版本设置为默认版本

      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40

      sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 40

      查看版本 gcc --version , g++ --version

      显示为目标版本号即为成功

    • CUDA 9.0 下载安装

      官网下载链接 https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux

      选择 Linux → \rightarrow ×86_64 → \rightarrow Ubuntu → \rightarrow 16.04 → \rightarrow 并下载

      安装相关依赖

      sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

      转到安装包目录下,进行安装

      cd /home/zpy
      sudo sh cuda_9.0.176_384.81_linux.run 
      

      安装选项如下

      #直接按q退出协议说明
      accept/decline/quit: accept
      You are attempting to install on an unsupported configuration. Do you wish to continue? y
      Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? n
      Install the CUDA 9.0 Toolkit? y
      Enter Toolkit Location 默认则直接回车
      Do you want to install a symbolic link at /usr/local/cuda? #如果安装了多个版本cuda,如果目前想转换到当前cuda,则y否则n
      Install the CUDA 9.0 Samples? y
      Enter CUDA Samples Location 默认则直接回车
      

      修改cuda的环境变量,然后更新

      vim ~/.bashrc
      #末尾添加:
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
      export PATH=$PATH:/usr/local/cuda/bin
      export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
      
      export PATH=$PATH:/home/zpy/anaconda3/bin
      export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
      export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
      #保存退出
      #更新:source ~/.bashrc
      

      切换CUDA版本

      #查看已安装的cuda版本
      cd /usr/local/
      ls
      #查看当前使用的cuda版本
      stat cuda
      #选择切换使用的cuda版本
      sudo rm -rf cuda
      sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda
      #并且更改export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
      export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}中对应的版本
      
  4. 安装pytorch 0.4.1

    conda install pytorch=0.4.1 cuda90 -c pytorch

  5. 安装其他依赖包

    pip install numpy==1.15.4 scipy==1.1.0 matplotlib==3.0.2 seaborn==0.9.0 pandas==0.24.2 networkx==2.2 scikit-learn==0.20.2 tensorflow-gpu==1.12.0 tensorboard==1.12.0 Cython

    原作者用conda命令下载安装依赖项,但版本不兼容,推荐使用pip安装

    pip3 install tensorboardx==1.5 fastprogress==0.1.18

    conda install -c conda-forge jupyterlab

  6. 安装concorde

    concorde要求的python版本要求为>=3.7,因此搭建并使用concorde生成实例不能在模型的环境中,需要创建新的环境。

    conda create -n concorde python=3.9

    搭建和使用concorde时需要转到在concorde环境下:

    conda activate concorde

    将concord包克隆到data文件夹下:

    git clone https://github.com/jvkersch/pyconcorde

    cd /home/zpy/GCN_TSP/graph-convnet-tsp/data/pyconcorde

    使用如下命令安装

    pip install -e .

    用concorde创建实例数据,转到data文件夹并生成实例

    如果在其他python文件中使用concorde,引用格式为

    from pyconcorde.concorde.tsp import TSPsolver
    # 与在pyconcorde目录下使用 
    from concorde.tsp import TSPsolver
    # 区分开
    
  7. jupyter说明

    主文件main.ipynb使用的是jupyter文件格式,即使通过shift+ctrl+P选择解释器也会无法导入相关的包,解决方式如下:

    • 查看jupyter可用kernel:

      jupyter kernelspec list

      显示为:

      Available kernels:    
      python3    /home/zpy/anaconda3/envs/GCN-TSP/share/jupyter/kernels/python3
      
    • 添加kernel路径

      打开路径 /home/zpy/anaconda3/envs/GCN-TSP/share/jupyter/kernels/python3

      复制python3文件夹并重命名为解释器环境名称 GCN-TSP

      进入GCN-TSP并打开kernel.json文件

      • "/home/zpy/anaconda3/python.exe" 改为 虚拟环境解释器路径 "/home/zpy/anaconda3/envs/GCN-TSP/bin/python"
    • 测试,问题解决

  8. 安装cuDNN

    下载链接:https://developer.nvidia.com/rdp/cudnn-archive

    移动到下载目录

    cd \home\zpy
    tar -xzvf cudnn-9.0-linux-x64-v7.6.5.32.tgz
    

    将相关文件拷贝到指定目录并授权

    sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
    sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h
    sudo chmod a+r /usr/local/cuda-9.0/lib64/libcudnn*
    

    查看cuDNN版本

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
    

2.项目的简单复现

  用1000个具有30个节点的TSP实例训练并验证模型,在200个实例上测试模型。

生成数据实例

  • 生成1000个节点数目为30的tsp实例

    conda activate concorde
    cd /home/zpy/GCN_TSP/graph-convnet-tsp/data
    python generate_tsp_concorde.py --num_samples 1000 --num_nodes 30
    
  • 划分训练集和验证集

    python split_train_val.py --num_nodes 30 --val_size 200
    
  • 生成测试集

    python generate_tsp_concorde.py --num_samples 200 --num_nodes 30 --filename tsp30_test_concorde.txt
    

训练并测试实例

  直接在 main.ipynb 主程序文件里面运行即可

  • 部分结果如图:

在这里插入图片描述

在这里插入图片描述

  • 并且可比较三种搜索方法的时间:

    G time: 0.3797297477722168s
    BS time: 8.47810435295105s
    BS* time: 13.203379392623901s
    

目前只是进行了简要尝试,日后有其他测试持续更新。

参考文章:

An Efficient Graph Convolutional Network Technique for the Travelling Salesman Problem.https://doi.org/10.48550/arXiv.1906.01227
Ubuntu20.4安装CUDA9.0,多版本CUDA切换.http://t.csdnimg.cn/ZwgjE

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑蘑菇球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值