I have a group of "experts" (about 300) which can handle a job. And I have pool of jobs which have to be done, let's say about 500 of them. I also have the information, how "good" a single expert would be able to do a certain job. Which would lead to a 300 x 500 matrix holding the weights.
I would like to find a "optimal" distribution of jobs to experts. But with the restriction, that a single expert should get only a maximum number of jobs assigned.
I have general basics in optimization algorithms, but I have no idea how to model this kind of fixed discrete upper bound. Does anybody know a class of algorithms which can handle that kind of questions?
Try modelling it as a minimum cost network flow problem.
Add a node for each person.
Add a node for each job with demand 1.
Add an edge between each person and each job with capacity 1 and with cost according to your matrix.
Add a source node with demand equal to (minus) the number of jobs.
Add an edge between the source and each person with capacity according to the number of jobs they can do.
Solve for the maximum cost flow (e.g. by multiplying costs by -1 and using min_cost_flow from Networkx)
The answer to this question gives Python code for a similar problem.