在这里插入代码片
from ortools.constraint_solver import routing_enums_pb2
from ortools.constraint_solver import pywrapcp
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
os.chdir(‘C:/Users/guoxiaobi/Desktop/高德API/’)
capacity_ratio, time_ratio, distance_ratio = 100, 60*60, 1000
def create_data_model():
“”“Stores the data for the problem.”""
data = {}
data = {}
data_t = pd.read_csv(‘time_matrix.csv’, encoding=‘gbk’)
data[‘time_matrix’] = data_t.iloc[:, 1:].values
data_ = pd.read_excel('getlocation.xlsx')
data['time_windows'] = (data_.loc[:,['start', 'end']].values).astype('int64').tolist()
data['num_vehicles'] = 4
data['vehicles_time'] = [8 * time_ratio, 9.5 * time_ratio, 13 * time_ratio,8 * time_ratio,]
data1 = pd.read_csv('distance_matrix.csv')
data['distance_matrix'] = data1.iloc[:, 1:].values
data['distance_limit'] = [70 * distance_ratio] * data['num_vehicles']
data['demands'] = (data_.loc[:, '实际量'].values) * capacity_ratio
data['clients'] = data_.iloc[:, 1:3].values # 经纬度
data['vehicle_capacities'] = [8 * capacity_ratio, 8 * capacity_ratio, 8 * capacity_ratio, 8 * capacity_ratio]
data['depot'] = 0
return data
def print_solution(data, manager, routing, solution):
“”“Prints solution on console.”""
time_dimension = routing.GetDimensionOrDie(‘Time’)
total_time = 0
total_distance = 0
total_load = 0
path_list, path_dict = list(), di