Volunteer scheduling with shifts and preferences for jobs