Hey, 
I have a problem where I have task in order of 10^7 and machines of order 10^3, I have to assign the task to machines such that overall waiting time for task is minimum and also each machine have some preference of doing some kind of task. How to solve this problem?