Class Scheduling Optimization for a Trade School

We are exploring ways to model, simulate, and optimize class scheduling for a trade school, focusing on addressing the complex dynamics of managing class schedules for apprentices. Below is an overview of the context, rules, and challenges involved. I am hoping for some direction to solve the puzzle described below.

Originally posted this to Mathematics Stack Overflow, but it was closed for being too unfocused. Looking for any advice on how to begin to solve a problem like this. Thanks in advance. https://math.stackexchange.com/questions/4873603/given-these-constraints-is-class-scheduling-forecasting-impossible


  • We have approximately 1000 active apprentices at any time, distributed across four levels:
    • Level 1: 250 apprentices
    • Level 2: 250 apprentices
    • Level 3: 250 apprentices
    • Level 4: 250 apprentices
  • New apprentices are added at irregular intervals, in varying numbers (e.g., 25 or 15).

Rules of Apprentice Scheduling

Adding New Apprentices

  • Apprentices can start the program at any time, allowing for continuous enrollment.
  • New apprentices immediately take 1 or 2 introductory classes.

Progressing Through the Program

  • Classes are available 52 weeks of the year.
  • Each apprentice must complete 4 classes each year, with classes spaced 3 months apart.
  • Each class lasts one week, Monday to Friday, totaling 35 hours.
  • Classes within a level can be completed in any order.
  • Ideally, each class section accommodates exactly 12 students.


Apprentices advance to the next pay level/grade (1 through 4) upon meeting three criteria:

  1. Passing their anniversary (12 months from initiation or last upgrade date).
  2. Completing the required 4 on-level classes.
  3. Meeting a minimum number of work hours. (Levels: 1=Freshman, 2=Sophomore, 3=Junior, 4=Senior)


Apprentices graduate after completing approximately 16 classes over 4 years.

Example Curriculum

  • Level 1: GC101, GC102, GC103, GC104
  • Level 2: GC201, GC202, GC203, GC204
  • Level 3: GC301, GC302, GC303, GC304
  • Level 4: GC401, GC402, GC403, GC404

Classes can be taken in any order within a level, but apprentices should generally complete all classes at their current level before advancing.

Scheduling Challenge

The main question is determining how many sections of each course to offer annually and scheduling each section to meet all students' progression needs while optimizing instructor allocation.

Real-life Problem

Offering two 35-hour classes with 6 students each requires 70 instructor hours, whereas one 12-student class requires only 35 instructor hours. We aim to mitigate such inefficiencies.

Additional Consideration

Given the fluid progression of apprentices through levels, it's challenging to determine a precise count of apprentices at each level for a given year, complicating the scheduling of appropriate numbers of class sections.


Our goal is to develop a scheduling model that accommodates the dynamic nature of apprentice enrollment and progression, ensuring efficient allocation of resources and meeting educational requirements.

  • 1
    $\begingroup$ A general approach to optimization modeling looks like this. Start by identifying what decisions you have to make, and create a variable for each. Next, figure out what you are trying to optimize and express it as a function (hopefully linear) of the decision variables. After that, think about what restricts your decisions (things you have to do, things you cannot do, resources that limit you) and turn those into constraints (again, hopefully linear). The process is a bit iterative -- you might think of variables you missed while writing the objective or constraints. $\endgroup$
    – prubin
    Commented Mar 2 at 23:18

1 Answer 1


Track 2 in the International Timetabling Competition 2007 was similar if I recall correctly: Post Enrollment based Course Timetabling. You might be able to find some papers around that.

I've heard public mentions of US Navy pilot training and NATO school scheduling implementations based our school-scheduling quickstart, but that requires customization because that quickstart does not assign students to lessons out-of-the-box - only lessons to rooms and timeslots.

Also, because your case is more likely to work on dates than on day-of-week or date offsets, you might be better off with a time grain pattern, as used in the maintenance scheduling quickstart. Each pattern has a trade-off:



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.