my_test.py 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. from entity import *
  2. from dispatch import dispatch
  3. import numpy as np
  4. import time as tt
  5. import copy
  6. env = [[[] for _ in range(30)] for _ in range(30)]
  7. # def didis_way():
  8. # test_drivers = load("get_test_data/test_drivers.pkl")
  9. # test_orders = load("get_test_data/test_orders.pkl")
  10. # distance_sum = 0.
  11. # money_sum = 0.
  12. # count = 0
  13. # for t in range(144):
  14. # print("当前时间段:",t)
  15. # order_list = test_orders[t]
  16. # new_env = env.copy()
  17. # for order in order_list:
  18. # new_env[order.x][order.y].append(order)
  19. # t = t + 1
  20. # matchs_list = []
  21. # sign = tt.time()
  22. # n = 0
  23. # for driver in test_drivers:
  24. # if driver.time == t:
  25. # a_drivers_order = []
  26. # for orders in new_env[driver.x-6:driver.x+6+1]:
  27. # for _orders in orders[driver.y-6:driver.y+6+1]:
  28. # for order in _orders:
  29. # if abs(order.x - driver.x) + abs(order.y - driver.y) <= 6:
  30. # a_drivers_order.append(Match(order,driver,get_value=True))
  31. # # matchs_list.append(Match(order,driver,get_value=True))
  32. # a_drivers_order = value_max_k(a_drivers_order,k=10)
  33. # n+=len(a_drivers_order)
  34. # print('\r'+str(n),end='')
  35. # matchs_list.extend(a_drivers_order)
  36. # print('\ndispatch start--')
  37. # _dispatch = dispatch(matchs_list)
  38. # for match in _dispatch:
  39. # d_id = match.driver.id
  40. # update_driver = Driver(d_id,match.order.to_x,match.order.to_y,match.arrive_time)
  41. # test_drivers[d_id] = update_driver
  42. # # 数据统计
  43. # distance_sum += match.distance
  44. # money_sum += match.money
  45. # count += 1
  46. # print(tt.time()-sign)
  47. # print("平均接客距离:",distance_sum/count)
  48. # print("总收入:",money_sum)
  49. # print("总单数:",count)
  50. # print("平均每单收入:",money_sum/count)
  51. def didis_way():
  52. # test_orders = load("get_test_data/test_orders.pkl")
  53. test_orders = load("get_test_data/test_orders05.pkl")
  54. test_drivers = load("get_test_data/test_drivers.pkl")
  55. distance_sum = 0.
  56. money_sum = 0.
  57. count_orders = 0
  58. count_orders_money = 0
  59. count = 0
  60. for t in range(1,145):
  61. print("当前时间段:", t)
  62. for order_list in test_orders[t-1]:
  63. # order_list = test_orders[t - 1]
  64. # 总单数
  65. count_orders += len(order_list)
  66. count_orders_money += sum([o.order_money for o in order_list])
  67. rest_orders = order_list[:]
  68. is_empty = False
  69. while not is_empty:
  70. have_done_orders = []
  71. new_env = copy.deepcopy(env)
  72. for order in rest_orders:
  73. new_env[order.x][order.y].append(order)
  74. # matchs_list = []
  75. sign = tt.time()
  76. n = 0
  77. graph = [[test_drivers[_],set()] for _ in range(6000)]
  78. for driver in test_drivers:
  79. if driver.atime == t:
  80. a_drivers_order = []
  81. for orders in new_env[max(driver.x - 5,0):driver.x + 5 + 1]:
  82. for _orders in orders[max(driver.y - 5,0):driver.y + 5 + 1]:
  83. for order in _orders:
  84. if abs(order.x - driver.x) + abs(order.y - driver.y) <= 5:
  85. _match = Match(order, driver, get_value=True)
  86. a_drivers_order.append(_match)
  87. a_drivers_order = value_max_k(a_drivers_order, k=10)
  88. update_graph(graph,a_drivers_order)
  89. n += len(a_drivers_order)
  90. print('\r' + str(n), end='')
  91. # matchs_list.extend(a_drivers_order)
  92. print('\ndispatch start--')
  93. if sum([len(_[1]) for _ in graph]):
  94. _dispatch = get_dispatch(graph)
  95. else:
  96. is_empty = True
  97. _dispatch = []
  98. for match in _dispatch:
  99. # 已完成订单
  100. have_done_orders.append(match.order)
  101. d_id = match.driver.id
  102. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  103. test_drivers[d_id] = update_driver
  104. # 数据统计
  105. distance_sum += match.distance
  106. money_sum += match.money
  107. count += 1
  108. rest_orders = list(set(rest_orders) - set(have_done_orders))
  109. if len(rest_orders)==0:
  110. is_empty = True
  111. print("耗时", tt.time() - sign)
  112. if t:
  113. for i in range(len(test_drivers)):
  114. if test_drivers[i].atime == t:
  115. dr = test_drivers[i]
  116. test_drivers[dr.id] = Driver(dr.id, dr.x, dr.y, time=t+1)
  117. sss = [a.atime for a in test_drivers]
  118. print(np.mean(np.array(sss)))
  119. print("s_time"+str(t)+":",sss)
  120. print("didis_way:")
  121. print("接单总数:", count)
  122. weijiedan = count_orders - count
  123. print("未接单总数:", weijiedan)
  124. weijiedan_money = count_orders_money - money_sum
  125. print("未接单总金额:", weijiedan_money)
  126. print("未接单平均金额:", weijiedan_money / weijiedan)
  127. print("平均接客距离:", distance_sum / count)
  128. print("总收入:", money_sum)
  129. print("平均每单收入:", money_sum / count)
  130. def min_distance():
  131. # test_orders = load("get_test_data/test_orders.pkl")
  132. test_orders = load("get_test_data/test_orders05.pkl")
  133. test_drivers = load("get_test_data/test_drivers.pkl")
  134. distance_sum = 0.
  135. money_sum = 0.
  136. count_orders = 0
  137. count_orders_money = 0
  138. count = 0
  139. new_data = [[] for _ in range(144)]
  140. for t in range(1,145):
  141. print("当前时间段:", t)
  142. for order_list in test_orders[t-1]:
  143. # order_list = test_orders[t - 1]
  144. new_env = copy.deepcopy(env)
  145. for order in order_list:
  146. new_env[order.x][order.y].append(order)
  147. #总单数count
  148. count_orders += len(order_list)
  149. count_orders_money += sum([o.order_money for o in order_list])
  150. matchs_list = []
  151. sign = tt.time()
  152. n = 0
  153. graph = [[test_drivers[_],set()] for _ in range(8000)]
  154. for driver in test_drivers:
  155. if driver.atime == t:
  156. a_drivers_order = []
  157. for orders in new_env[max(driver.x - 5,0):driver.x + 5 + 1]:
  158. for _orders in orders[max(driver.y - 5,0):driver.y + 5 + 1]:
  159. for order in _orders:
  160. if abs(order.x - driver.x) + abs(order.y - driver.y) <= 5:
  161. _match = Match(order, driver, get_value=True)
  162. _match.value = _match.distance
  163. a_drivers_order.append(_match)
  164. a_drivers_order = value_min_k(a_drivers_order, k=10)
  165. update_graph(graph,a_drivers_order)
  166. n += len(a_drivers_order)
  167. print('\r' + str(n), end='')
  168. matchs_list.extend(a_drivers_order)
  169. print('\ndispatch start--')
  170. if sum([len(_[1]) for _ in graph]):
  171. _dispatch = get_dispatch(graph)
  172. else:
  173. _dispatch = []
  174. for match in _dispatch:
  175. #收集事务
  176. new_data[t-1].append(match)
  177. d_id = match.driver.id
  178. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  179. test_drivers[d_id] = update_driver
  180. # 数据统计
  181. distance_sum += match.distance
  182. money_sum += match.money
  183. count += 1
  184. print("耗时", tt.time() - sign)
  185. if t:
  186. for i in range(len(test_drivers)):
  187. if test_drivers[i].atime == t:
  188. dr = test_drivers[i]
  189. test_drivers[dr.id] = Driver(dr.id, dr.x, dr.y, time=t+1)
  190. sss = [a.atime for a in test_drivers]
  191. print(np.mean(np.array(sss)))
  192. print("s_time"+str(t)+":",sss)
  193. save(new_data,"train_data111.pkl")
  194. print("min_distance:")
  195. print("接单总数:", count)
  196. weijiedan = count_orders - count
  197. print("未接单总数:",weijiedan)
  198. weijiedan_money = count_orders_money - money_sum
  199. print("未接单总金额:", weijiedan_money)
  200. print("未接单平均金额:", weijiedan_money/weijiedan)
  201. print("平均接客距离:", distance_sum / count)
  202. print("总收入:", money_sum)
  203. print("平均每单收入:", money_sum / count)
  204. def min_distance222():
  205. # test_orders = load("get_test_data/test_orders.pkl")
  206. test_orders = load("get_test_data/test_orders05.pkl")
  207. test_drivers = load("get_test_data/test_drivers.pkl")
  208. distance_sum = 0.
  209. money_sum = 0.
  210. count_orders = 0
  211. count_orders_money = 0
  212. count = 0
  213. new_data = [[] for _ in range(144)]
  214. for t in range(1,145):
  215. print("当前时间段:", t)
  216. for order_list in test_orders[t-1]:
  217. # order_list = test_orders[t - 1]
  218. # 总单数count
  219. count_orders += len(order_list)
  220. count_orders_money += sum([o.order_money for o in order_list])
  221. rest_orders = order_list[:]
  222. is_empty = False
  223. while not is_empty:
  224. have_done_orders = []
  225. new_env = copy.deepcopy(env)
  226. for order in rest_orders:
  227. new_env[order.x][order.y].append(order)
  228. # matchs_list = []
  229. sign = tt.time()
  230. n = 0
  231. graph = [[test_drivers[_],set()] for _ in range(6000)]
  232. for driver in test_drivers:
  233. if driver.atime == t:
  234. a_drivers_order = []
  235. for orders in new_env[max(driver.x - 5,0):driver.x + 5 + 1]:
  236. for _orders in orders[max(driver.y - 5,0):driver.y + 5 + 1]:
  237. for order in _orders:
  238. if abs(order.x - driver.x) + abs(order.y - driver.y) <= 5:
  239. _match = Match(order, driver, get_value=True)
  240. _match.value = _match.distance
  241. a_drivers_order.append(_match)
  242. a_drivers_order = value_min_k(a_drivers_order, k=10)
  243. update_graph(graph,a_drivers_order)
  244. n += len(a_drivers_order)
  245. print('\r' + str(n), end='')
  246. # matchs_list.extend(a_drivers_order)
  247. print('\ndispatch start--')
  248. if sum([len(_[1]) for _ in graph]):
  249. _dispatch = get_dispatch(graph)
  250. else:
  251. is_empty = True
  252. _dispatch = []
  253. for match in _dispatch:
  254. #收集事务
  255. new_data[t-1].append(match)
  256. have_done_orders.append(match.order)
  257. d_id = match.driver.id
  258. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  259. test_drivers[d_id] = update_driver
  260. # 数据统计
  261. distance_sum += match.distance
  262. money_sum += match.money
  263. count += 1
  264. rest_orders = list(set(rest_orders) - set(have_done_orders))
  265. if len(rest_orders)==0:
  266. is_empty = True
  267. print("耗时", tt.time() - sign)
  268. if t:
  269. for i in range(len(test_drivers)):
  270. if test_drivers[i].atime == t:
  271. dr = test_drivers[i]
  272. new_data[t-1].append(Match(Order(-1,dr.x,dr.y,dr.x,dr.y,t),dr,get_value=True,is_cancel=True))
  273. test_drivers[dr.id] = Driver(dr.id, dr.x, dr.y, time=t+1)
  274. sss = [a.atime for a in test_drivers]
  275. print(np.mean(np.array(sss)))
  276. print("s_time"+str(t)+":",sss)
  277. save(new_data,"train_data111.pkl")
  278. print("min_distance:")
  279. print("接单总数:", count)
  280. weijiedan = count_orders - count
  281. print("未接单总数:",weijiedan)
  282. weijiedan_money = count_orders_money - money_sum
  283. print("未接单总金额:", weijiedan_money)
  284. print("未接单平均金额:", weijiedan_money/weijiedan)
  285. print("平均接客距离:", distance_sum / count)
  286. print("总收入:", money_sum)
  287. print("平均每单收入:", money_sum / count)
  288. def min_distance333():
  289. # test_orders = load("get_test_data/test_orders.pkl")
  290. test_orders = load("get_test_data/test_orders05.pkl")
  291. test_drivers = load("get_test_data/test_drivers.pkl")
  292. distance_sum = 0.
  293. money_sum = 0.
  294. count_orders = 0
  295. count_orders_money = 0
  296. count = 0
  297. new_data = [[] for _ in range(144)]
  298. for t in range(1,145):
  299. print("当前时间段:", t)
  300. for order_list in test_orders[t-1]:
  301. # order_list = test_orders[t - 1]
  302. # 总单数count
  303. count_orders += len(order_list)
  304. count_orders_money += sum([o.order_money for o in order_list])
  305. rest_orders = order_list[:]
  306. is_empty = False
  307. for matching_distance in [4,6]:
  308. no_match = False
  309. print("matching_distance:::",matching_distance)
  310. while not no_match:
  311. have_done_orders = []
  312. new_env = copy.deepcopy(env)
  313. for order in rest_orders:
  314. new_env[order.x][order.y].append(order)
  315. # matchs_list = []
  316. sign = tt.time()
  317. n = 0
  318. graph = [[test_drivers[_],set()] for _ in range(6000)]
  319. for driver in test_drivers:
  320. if driver.atime == t:
  321. a_drivers_order = []
  322. for orders in new_env[max(driver.x - matching_distance,0):driver.x + matching_distance + 1]:
  323. for _orders in orders[max(driver.y - matching_distance,0):driver.y + matching_distance + 1]:
  324. for order in _orders:
  325. if abs(order.x - driver.x) + abs(order.y - driver.y) <= matching_distance:
  326. _match = Match(order, driver, get_value=True)
  327. _match.value = _match.distance
  328. a_drivers_order.append(_match)
  329. a_drivers_order = value_min_k(a_drivers_order, k=10)
  330. update_graph(graph,a_drivers_order)
  331. n += len(a_drivers_order)
  332. print('\r' + str(n), end='')
  333. # matchs_list.extend(a_drivers_order)
  334. print('\ndispatch start--')
  335. if sum([len(_[1]) for _ in graph]):
  336. _dispatch = get_dispatch(graph)
  337. else:
  338. no_match = True
  339. _dispatch = []
  340. for match in _dispatch:
  341. #收集事务
  342. new_data[t-1].append(match)
  343. have_done_orders.append(match.order)
  344. d_id = match.driver.id
  345. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  346. test_drivers[d_id] = update_driver
  347. # 数据统计
  348. distance_sum += match.distance
  349. money_sum += match.money
  350. count += 1
  351. rest_orders = list(set(rest_orders) - set(have_done_orders))
  352. if len(rest_orders)==0:
  353. is_empty = True
  354. print("耗时", tt.time() - sign)
  355. if is_empty:
  356. break
  357. for i in range(len(test_drivers)):
  358. if test_drivers[i].atime == t:
  359. dr = test_drivers[i]
  360. new_data[t-1].append(Match(Order(-1,dr.x,dr.y,dr.x,dr.y,t),dr,get_value=True,is_cancel=True))
  361. test_drivers[dr.id] = Driver(dr.id, dr.x, dr.y, time=t+1)
  362. sss = [a.atime for a in test_drivers]
  363. print(np.mean(np.array(sss)))
  364. print("s_time"+str(t)+":",sss)
  365. # save(new_data,"train_data111.pkl")
  366. print("min_distance:")
  367. print("接单总数:", count)
  368. weijiedan = count_orders - count
  369. print("未接单总数:",weijiedan)
  370. weijiedan_money = count_orders_money - money_sum
  371. print("未接单总金额:", weijiedan_money)
  372. print("未接单平均金额:", weijiedan_money/weijiedan)
  373. print("平均接客距离:", distance_sum / count)
  374. print("总收入:", money_sum)
  375. print("平均每单收入:", money_sum / count)
  376. def max_money():
  377. # test_orders = load("get_test_data/test_orders.pkl")
  378. test_orders = load("get_test_data/test_orders05.pkl")
  379. test_drivers = load("get_test_data/test_drivers.pkl")
  380. distance_sum = 0.
  381. money_sum = 0.
  382. count_orders = 0
  383. count_orders_money = 0
  384. count = 0
  385. for t in range(1,145):
  386. print("当前时间段:", t)
  387. for order_list in test_orders[t - 1]:
  388. # order_list = test_orders[t - 1]
  389. # 总单数count
  390. count_orders += len(order_list)
  391. count_orders_money += sum([o.order_money for o in order_list])
  392. rest_orders = order_list[:]
  393. is_empty = False
  394. while not is_empty:
  395. have_done_orders = []
  396. new_env = copy.deepcopy(env)
  397. for order in rest_orders:
  398. new_env[order.x][order.y].append(order)
  399. # matchs_list = []
  400. sign = tt.time()
  401. n = 0
  402. graph = [[test_drivers[_], set()] for _ in range(6000)]
  403. for driver in test_drivers:
  404. if driver.atime == t:
  405. a_drivers_order = []
  406. for orders in new_env[max(driver.x - 5, 0):driver.x + 5 + 1]:
  407. for _orders in orders[max(driver.y - 5, 0):driver.y + 5 + 1]:
  408. for order in _orders:
  409. if abs(order.x - driver.x) + abs(order.y - driver.y) <= 5:
  410. _match = Match(order, driver, get_value=True)
  411. _match.value = _match.money
  412. a_drivers_order.append(_match)
  413. a_drivers_order = value_max_k(a_drivers_order, k=10)
  414. update_graph(graph, a_drivers_order)
  415. n += len(a_drivers_order)
  416. print('\r' + str(n), end='')
  417. # matchs_list.extend(a_drivers_order)
  418. print('\ndispatch start--')
  419. if sum([len(_[1]) for _ in graph]):
  420. _dispatch = get_dispatch(graph)
  421. else:
  422. is_empty = True
  423. _dispatch = []
  424. for match in _dispatch:
  425. # 收集事务
  426. have_done_orders.append(match.order)
  427. d_id = match.driver.id
  428. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  429. test_drivers[d_id] = update_driver
  430. # 数据统计
  431. distance_sum += match.distance
  432. money_sum += match.money
  433. count += 1
  434. rest_orders = list(set(rest_orders) - set(have_done_orders))
  435. if len(rest_orders) == 0:
  436. is_empty = True
  437. print("耗时", tt.time() - sign)
  438. if t:
  439. for i in range(len(test_drivers)):
  440. if test_drivers[i].atime == t:
  441. dr = test_drivers[i]
  442. test_drivers[dr.id] = Driver(dr.id, dr.x, dr.y, time=t+1)
  443. sss = [a.atime for a in test_drivers]
  444. print(np.mean(np.array(sss)))
  445. print("s_time"+str(t)+":",sss)
  446. print("max_money:")
  447. print("接单总数:", count)
  448. weijiedan = count_orders - count
  449. print("未接单总数:",weijiedan)
  450. weijiedan_money = count_orders_money - money_sum
  451. print("未接单总金额:", weijiedan_money)
  452. print("未接单平均金额:", weijiedan_money/weijiedan)
  453. print("平均接客距离:", distance_sum / count)
  454. print("总收入:", money_sum)
  455. print("平均每单收入:", money_sum / count)
  456. def value_max_k(match_list,k=10):
  457. match_list = sorted(match_list,key=lambda x:x.value,reverse=True)
  458. match_list = match_list[:k]
  459. return match_list
  460. def value_min_k(match_list,k=10):
  461. match_list = sorted(match_list,key=lambda x:x.value,reverse=False)
  462. match_list = match_list[:k]
  463. return match_list
  464. def update_graph(graph,match_list):
  465. for match in match_list:
  466. graph[match.driver.id][1].add(match.order)
  467. def matching_strategy(orders,drivers):
  468. rest_orders = orders[:]
  469. is_empty = False
  470. for order in rest_orders:
  471. while not is_empty:
  472. have_done_orders = []
  473. new_env = copy.deepcopy(env)
  474. for order in rest_orders:
  475. new_env[order.x][order.y].append(order)
  476. sign = tt.time()
  477. n = 0
  478. graph = [[drivers[_], set()] for _ in range(6000)]
  479. for driver in drivers:
  480. if driver.atime == order.order_time:
  481. a_drivers_order = []
  482. for orders in new_env[max(driver.x - 5, 0):driver.x + 5 + 1]:
  483. for _orders in orders[max(driver.y - 5, 0):driver.y + 5 + 1]:
  484. for order in _orders:
  485. if abs(order.x - driver.x) + abs(order.y - driver.y) <= 5:
  486. _match = Match(order, driver, get_value=True)
  487. a_drivers_order.append(_match)
  488. a_drivers_order = value_min_k(a_drivers_order, k=10)
  489. update_graph(graph, a_drivers_order)
  490. n += len(a_drivers_order)
  491. print('\r' + str(n), end='')
  492. print('\ndispatch start--')
  493. if sum([len(_[1]) for _ in graph]):
  494. _dispatch = get_dispatch(graph)
  495. else:
  496. is_empty = True
  497. _dispatch = []
  498. for match in _dispatch:
  499. # 收集事务
  500. have_done_orders.append(match.order)
  501. d_id = match.driver.id
  502. update_driver = Driver(d_id, match.order.to_x, match.order.to_y, time=match.arrive_time)
  503. drivers[d_id] = update_driver
  504. rest_orders = list(set(rest_orders) - set(have_done_orders))
  505. if len(rest_orders) == 0:
  506. is_empty = True
  507. print("耗时", tt.time() - sign)
  508. from rtree import index
  509. def test_001():
  510. idx = index.Index()
  511. left, bottom, right, top = (8.0, 8.0, 12.0, 12.0)
  512. idx.insert(0, (left, bottom, right, top))
  513. driver_x = 9.5
  514. driver_y = 10.6
  515. driver_id = 10
  516. idx.insert(driver_id, (driver_x, driver_y, driver_x, driver_y))
  517. print(list(idx.intersection((left, bottom, right, top))))
  518. idx.nearest()
  519. def get_dispatch(graph):
  520. dispatch_list = []
  521. while graph:
  522. ord_set = graph[0]
  523. graph.remove(ord_set)
  524. if ord_set[1]:
  525. new_list = []
  526. new_list.append(ord_set)
  527. res_list = []
  528. res_list.append(ord_set)
  529. while new_list:
  530. temp_list = []
  531. for o_set in new_list:
  532. for s in graph:
  533. if o_set[1] & s[1]:
  534. graph.remove(s)
  535. temp_list.append(s)
  536. res_list.append(s)
  537. new_list = temp_list
  538. _d = []
  539. # print(len(res_list))
  540. for item1 in res_list:
  541. for item2 in list(item1[1]):
  542. _match = Match(item2,item1[0], get_value=True)
  543. _match.value = _match.distance
  544. # _match.value = _match.money
  545. _d.append(_match)
  546. # print('d1')
  547. # print(_d)
  548. res = dispatch(_d)
  549. # print(res)
  550. dispatch_list.extend(res)
  551. return dispatch_list
  552. if __name__ == '__main__':
  553. # didis_way()
  554. # min_distance()
  555. # min_distance222()
  556. min_distance333()
  557. # test_001()
  558. # max_money()
  559. pass