entity.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import numpy as np
  2. import random
  3. import pickle
  4. # 司机
  5. class Driver():
  6. def __init__(self,id,x,y):
  7. self.id = id
  8. self.x = x
  9. self.y = y
  10. # 订单
  11. class Order():
  12. def __init__(self,id,x,y,to_x,to_y,order_time):
  13. self.id = id
  14. self.x = x
  15. self.y = y
  16. self.to_x = to_x
  17. self.to_y = to_y
  18. # time range: 1 ~ 144
  19. self.order_time = order_time
  20. self.travel_distance = (abs(self.to_x - self.x) + abs(self.to_y - self.y) ) * random.uniform(0.96,1.04)
  21. self.order_money = (12 + (max(self.travel_distance,8)-8) * 1.8 ) * random.uniform(0.92,1.08)
  22. self.travel_time = int(self.travel_distance / 5 + random.randint(0,1))
  23. self.arrive_time = self.order_time + self.travel_time
  24. self.arrive_time = self.arrive_time if self.arrive_time<=144 else self.arrive_time-144
  25. # 配对
  26. class Match():
  27. def __init__(self,order,driver):
  28. self.order = order
  29. self.driver = driver
  30. self.distance = (abs(order.x - driver.x) + abs(order.y - driver.y) ) * random.uniform(0.96,1.03)
  31. self.money = order.order_money
  32. def save(object_to_save, path):
  33. with open(path, 'wb') as f:
  34. pickle.dump(object_to_save, f)
  35. def load(path):
  36. with open(path, 'rb') as f:
  37. object1 = pickle.load(f)
  38. return object1