123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import numpy as np
- import random
- import pickle
- # 司机
- class Driver():
- def __init__(self,id,x,y):
- self.id = id
- self.x = x
- self.y = y
- # 订单
- class Order():
- def __init__(self,id,x,y,to_x,to_y,order_time):
- self.id = id
- self.x = x
- self.y = y
- self.to_x = to_x
- self.to_y = to_y
- # time range: 1 ~ 144
- self.order_time = order_time
- self.travel_distance = (abs(self.to_x - self.x) + abs(self.to_y - self.y) ) * random.uniform(0.96,1.04)
- self.order_money = (12 + (max(self.travel_distance,8)-8) * 1.8 ) * random.uniform(0.92,1.08)
- self.travel_time = int(self.travel_distance / 5 + random.randint(0,1))
- self.arrive_time = self.order_time + self.travel_time
- self.arrive_time = self.arrive_time if self.arrive_time<=144 else self.arrive_time-144
- # 配对
- class Match():
- def __init__(self,order,driver):
- self.order = order
- self.driver = driver
- self.distance = (abs(order.x - driver.x) + abs(order.y - driver.y) ) * random.uniform(0.96,1.03)
- self.money = order.order_money
- def save(object_to_save, path):
- with open(path, 'wb') as f:
- pickle.dump(object_to_save, f)
- def load(path):
- with open(path, 'rb') as f:
- object1 = pickle.load(f)
- return object1
|