123456789101112131415161718192021222324252627282930313233343536373839 |
- import numpy as np
- from entity import *
- from KM import KM
- def dispatch(match_list):
- drivers = list(set([match.driver for match in match_list]))
- orders = list(set([match.order for match in match_list]))
- label = np.zeros(shape=(len(drivers),len(orders)))
- label = label+1000
- for match in match_list:
- driver = match.driver
- order = match.order
- value = match.value
- label[drivers.index(driver),orders.index(order)] = value
- # label[drivers.index(driver),orders.index(order)] = value + 1000
- # print(label)
- max_dispatch = KM(label).max_dispatch
- return [Match(orders[col],drivers[row]) for row,col in max_dispatch]
- if __name__ == '__main__':
- d1 = Driver(1,15,20)
- d2 = Driver(2,3,40)
- d3 = Driver(3,33,44)
- d4 = Driver(4,10,19)
- d5 = Driver(5,12,39)
- o1 = Order(1,13,25,15,15,70)
- o2 = Order(2,40,14,30,21,70)
- o3 = Order(3,31,46,20,41,70)
- o4 = Order(4,25,35,11,29,70)
- test_data = [Match(o2,d1,get_value=True),Match(o3,d1,get_value=True),Match(o2,d1,get_value=True),
- Match(o1,d2,get_value=True),Match(o3,d2,get_value=True),Match(o2,d3,get_value=True),
- Match(o2,d4,get_value=True),Match(o3,d4,get_value=True),Match(o4,d5,get_value=True)]
- res = dispatch(test_data)
- print(res)
- pass
|