An algorithm practice repository for multiple variants of Capacitated Vehicle Routing Problem (CVRP) problems. This repository uses instances from the CVRPLIB: CVRPLIB
This repository is dedicated to exploring and developing various heuristics and algorithms for solving CVRP problems. The CVRP is a well-known NP-hard problem in combinatorial optimization, where the objective is to determine the optimal set of routes for a fleet of vehicles to deliver goods to a given set of customers, subject to vehicle capacity constraints.
-
Developing Construction Algorithms
- Design and implement algorithms for initial feasible solutions.
-
Developing Improvement Heuristics and Efficient Local Search Algorithms
- Implement and test local search techniques such as 2-opt, 3-opt, and Lin-Kernighan.
-
Developing Mathematical Models and Getting Solver Solutions and Performances
- Formulate the CVRP using integer programming
- Compare performance metrics such as runtime and solution quality.
-
Applying Metaheuristics on Solutions and Performance Comparison
- Implement metaheuristics such as Genetic Algorithms, Ant Colony Optimization, and Particle Swarm Optimization.
- Compare the performance of different metaheuristics on various instances.
-
Working with Multiple Objectives and Focusing on Finding All Efficient Solutions
- Formulate and solve multi-objective CVRP (e.g., minimizing distance and balancing load).
- Use Pareto optimization techniques to identify efficient solutions.
-
Applying Clustering Algorithms and Comparison
- Apply clustering techniques to partition the customer set before routing (e.g., k-means, hierarchical clustering).
- Compare the efficiency and effectiveness of different clustering methods.
-
Hybrid Algorithms
- Combine different heuristics and metaheuristics to leverage their strengths.
-
Adaptive and Reactive Search Strategies
- Develop algorithms that adapt their parameters or strategies based on the problem instance or search history.
- Explore learning-based methods to guide the search process.
-
Benchmarking and Performance Analysis
- Create a benchmarking framework to systematically evaluate and compare the performance of various algorithms.
- Analyze the impact of different problem characteristics (e.g., customer density, demand variability) on algorithm performance.
-
Scalability and Parallelization
- Investigate the scalability of different algorithms to larger instances.
- Implement parallel and distributed computing techniques to enhance performance.