1. A method for generating a work schedule, comprising the acts of: receiving an identification of a number of work periods and a plurality of tasks; receiving information for a plurality of workers related to the plurality of tasks; receiving a parameter for optimization; and outputting a work schedule distributing the plurality of workers into the plurality of tasks for each of the number of work periods, wherein the work schedule is optimized for the parameter.