<p>This problem seems to be a known problem called <a href="https://en.wikipedia.org/wiki/Nurse_scheduling_problem" rel="nofollow">nurse scheduling</a> which is known to be <a href="https://en.wikipedia.org/wiki/NP-hardness" rel="nofollow">NP-hard</a>. Basically in your employees and dates correspond to nurses and shifts, respectively. Your hard constraints are the days of availability of the employees and soft constraints are the quality of their work, as you mentioned picking <em>the best 10</em> in your example.</p>

<p>Unfortunately, I don't think you can think of an optimal solution off the top of your head. Depending on the size of the sets of employees and dates, finding such a solution may be quite tricky, and I don't think just by your definition of the problem so far, it would be suitable to tell which method that can be used to solve nurse scheduling may be the best fit for your requirements.</p>

<p>Nevertheless, here are a few papers you can look into and see how they fit the specific requirements of your instance of the problem.</p>

<p><a href="http://link.springer.com/article/10.1007%2Fs10732-007-9066-7" rel="nofollow">A grasp-knapsack hybrid for a nurse-scheduling problem</a></p>

<p><a href="http://dl.acm.org/citation.cfm?id=2782372" rel="nofollow">A two-phase adaptive variable neighborhood approach for nurse rostering</a></p>

<p><a href="http://arxiv.org/abs/0803.2969?context=cs.CE" rel="nofollow">An Indirect Genetic Algorithm for a Nurse Scheduling Problem</a></p>
Assign employees to dates
<p>This is my initial condition:</p>

<pre><code>I have a set of employees E1, E2, E3, ...
I have a set of dates for an activity D1, D2, D3, ...
For every employee, I know on which dates he is available to perform the activity
Every employee should perform the activity only once
</code></pre>

<p>I need to find the best configuration that will permit to every employee to perform the activity, minimizing the number of dates used and giving a maximum number of employees per date. So for example if on a particular date I can have 20 employees, I need to use only the best 10 of them, moving the other 10 on different dates.</p>

<p>I think the solution could be some algorithm related to bipartite graphs, but I can't find a good approach to solve it.</p>

<p>Do You have any idea on how to solve it or if the problem could fit in some already know algorithm?</p>

<p>Thanks a lot,
Marco</p>