I'm trying to find out the best techniques or resources to help me solve an optimization problem. The problem is to optimally match meeting attendees with predefined roles. Prior to the meeting, an attendee with decide for each role whether he or she:
- actively seeks to fill the role, if possible ("A")
- is willing to fill the role but does not feel strongly about it ("W")
- is unwilling to fill the role ("U").
For example, a possible input matrix would be:
The objective is to maximum the number of matches for attendees with roles for which they have marked "A", under the following constraints:
- All roles are filled by exactly one attendee
- Matches for which the attendee marked "U" are forbidden
For this example, an optimal solution would be as follows, where 4/5 roles are filled using "A" matches.
Does anyone know if there a better way to solve this kind of problem that is better than brute force (which can very quickly become infeasible for larger matrices)? I'm open to general suggestions for optimization algorithms that I would implement myself (i.e., tabu search, genetic algorithms, branch-and-bound, etc.), or even to pointers to functionality within an existing package such as OptaPlanner.
Thanks!