import pandas as pd
import math
import random
import numpy as np
import copy
import xlsxwriter
import matplotlib.pyplot as plt
classSol():def__init__(self):
self.nodes_seq=None
self.obj=None
self.routes=NoneclassNode():def__init__(self):
self.id=0
self.name=''
self.seq_no=0
self.x_coord=0
self.y_coord=0
self.demand=0classModel():def__init__(self):
self.best_sol=None
self.node_list=[]
self.node_seq_no_list=[]
self.depot=None
self.number_of_nodes=0
self.opt_type=0
self.vehicle_cap=0defreadXlsxFile(filepath,model):# It is recommended that the vehicle depot data be placed in the first line of xlsx file
node_seq_no =-1#the depot node seq_no is -1,and demand node seq_no is 0,1,2,...
df = pd.read_excel(filepath)for i inrange(df.shape[0]):
node=Node()
node.id=node_seq_no
node.seq_no=node_seq_no
node.x_coord= df['x_coord'][i]
node.y_coord= df['y_coord'][i]
node.demand=df['demand'][i]if df['demand'][i]==0:
model.depot=node
else:
model.node_list.append(node)
model.node_seq_no_list.append(node_seq_no)try:
node.name=df['name'][i]except:passtry:
node.id=df['id'][i]except