futurejump
futurejump

Reputation: 41

I need a team-building algorithm that takes restrictions into account

my scenario is the following:

We have a certain set of Positions which need to be filled each by a person. But a Position requires specific skills. So let a Position be [ ] and we have different skills like A,B,C,D. Now the Position [A,C] needs a Person that has the skills A and C. We have a pool of Persons to choose from. Each Person has a different set of skills and is on a different Location. But we want the physically closest Person that also has the required skills to get the Position.

What would be a way to find the optimal Solution?

Upvotes: 0

Views: 86

Answers (1)

ardenit
ardenit

Reputation: 3890

You just need to solve a typical Maximum weight matching problem.

Create nodes for each Position, they will be the first part of graph. Create nodes for each Person, they will be the second part of graph. Add edges from each position [A, B] to all persons that have both skills A and B.

Define a weigth of edge from position to person as something that is as big as person and position locations are close to each other - for example, 1 / distance(person, position), or some_constant - distance(person, position).

Then you can use any algorithm that solves mentioned problem and you'll have your matching.

Upvotes: 1

Related Questions