Python数学规划案例:路径优化CVRP
容量限制的车辆路径问题(Capacitated Vehicle Routing Problem, CVRP)可描述为从一个配送中心出发,用多辆车对多个需求点进行配送,满足货车容量约束下使配送路程最短。每个需求点都有固定的货物需求,货物不可拆分,只能由一辆车配送;每辆车携带的货物总量不能超过货车的容量。
数学模型
数据集
http://vrp.atd-lab.inf.puc-rio.br/index.php/en/
包含节点坐标、货物需求量和货车容量等数据。
Python代码
0)载入packages
from math import sqrt
from docplex.mp.model import Model
import matplotlib.pyplot as plt
import numpy as np
1)把数据集文件下载下来,本文的例子使用“P-n16-k8.vrp”
n表示节点数;k表示车辆数;配送中心为0号节点。
2)生成class CVRP,指定读写文件目录
class CVRP:
def __init__(self):
self.mDir = "D:\\pycharm\\CVRP\\"
self.mDir_input = "i\\"
3)定义读数据函数read_data
def read_data(self):
ls_fn = self.mDir + self.mDir_input
filename = "P-n16-k8.vrp"
with open(ls_fn + filename, "r") as f: