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