sk-surya / GA_VRP_GPU

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

An improved version of this algorithm can be found at the link below:

(https://github.com/MarwanAbdelatti/GA_VRP_mod/tree/master)

The Multi-GPU implementation of this algorithm is also available at:

(https://github.com/MarwanAbdelatti/GA_VRP_mGPU) ## For the research paper: ## (https://ieeexplore.ieee.org/abstract/document/9926363)

An Improved GPU-Accelerated Heuristic Technique Applied to the Capacitated Vehicle Routing Problem

This is the repository hosting the source code of the GPU implementation of the paper: Marwan F. Abdelatti and Manbir S. Sodhi. 2020. An Improved GPU-Accelerated Heuristic Technique Applied to the Capacitated Vehicle Routing Problem. In Proceedings of the Genetic and Evolutionary Computation Conference 2020 (GECCO ’20). ACM, New York, NY, USA, 9 pages. You can access the paper from this link (free pdf version can be downloaded from here.)

In this work, an improved genetic algorithm is designed to be entirely executed on an NVIDIA GPU, taking advantage of the special CUDA GPU architecture to solving the CVRP. By distributing array elements over the GPU grid and using GPU kernel functions, the proposed algorithm successfully provides high-quality solutions within reasonable computational times, and near-optimal solutions for smaller benchmark problems. The algorithm entirely runs on an NVIDIA GPU.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

Hardware

To run the algorithm successfully, An NVIDIA GPU of Pascal, Turing, or Ampere architecture with 6+ GB of shared memory (e.g., NVIDIA RTX 2080) is required.

Software libraries

The following software and libraries are essintial to run the algorithm:

  • Python 3.6 or higher.
  • Proper NVIDIA GPU driver.
  • NVIDIA Cuda 10.
  • Numba
  • Cupy.
  • Numpy.

Running the tests

To run the algorithm, open a command line instance then browse into the project directory. Use the following command:

python3 ga-vrp-gpu.py <problem-instance> <number-of-iterations (optional)>

You don't have to provide the full path of the problem file, just use the problem instance. For example:

user:~/GA_VRP_GPU$ python3 ga-vrp-gpu.py M-n151-k12 500000

The program will automatically read the problem file located at "GA_VRP_GPU/test_set/M/M-n151-k12.vrp"

License

We will be glad if you find this code helpful for you. Use and improve it freely and give reference to this repository and the original research paper.

About


Languages

Language:Python 100.0%