Random sorting with restrictions


Blue Max

We are attempting to perform a random sort (re-ordering) of employee
assignments where a limited number of employees may not be able to perform
certain assignments. We would like some suggestions on how to successfully
perform such a random sort while also assuring that those with restrictions
are not given a restricted assignment. Here is some further information:

FIRST, each employee is assigned to one line of the weekly schedule and that
line might include serveral different assignments during the day. At the
end of the week, the employees are randomly rotated in order to provide them
with a new set of assignments for the next week. The rotation prevents
single-assignment burnout and assures that no one monopolizes the favored

SECOND, some employees cannot perform certain assignments. As such, they
cannot be assigned a line on the weekly schedule that contains any
assignment they cannot perform. Obviously, this restricts the possible
lines they can be assigned to, to a subset of the total lines to be staffed.

THIRD, each line can have any combination of about a dozen possible
assignments, but will usually only include 4 or 5 of the possible dozen
assignment types. The schedule provides lines for about 50 employees,
including cells to indicate the restrictions for any given employee (cell
marked for the restricted area).

Somehow, we need to identify lines to which a given employee cannot be
assigned, randomly assign that employee to one of the remaining lines, and
then remove that line from the pool of possible line assignments for
remaining unassigned employees. This approach focuses on assigning
employees to a diminishing pool of line assignments, but you could
alternatively approach the problem by assigning lines to a diminishing pool
of employees.

We would appreciate any thoughts on how to efficiently accomplish this
random rotation so that each employee is assured a fair chance to be
assigned to any of the lines on the schedule for which they qualify.


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question