Welcome! This guide walks you through 5 real planning problems step-by-step. By the end, you'll be able to solve your own planning challenges with confidence.
Before you begin, understand this critical distinction:
Variable Type
How It Works
Use For
BASIC
Each entity gets ONE value per variable
Tasks, Shifts, Lessons, Jobs
LIST
Each entity gets MULTIPLE values in order
Vehicle routes (stops)
Important
Tutorials 1-4 use BASIC variables. Tutorial 5 uses LIST variables. Don't mix them!
Tutorial 1: Task Assignment
The Business Problem
Scenario: You're a project manager at a software company. You need to assign 12 development tasks to 6 developers, scheduling each task into a specific time slot over a 2-week sprint.
Goals:
Every task gets assigned to a qualified developer
Each task is scheduled in a time slot
Developers don't work on multiple tasks at the same time
Skills must match task requirements
Balance workload fairly
Step 1: Define Your Problem
Field
What to Enter
Problem Statement
"Assign 12 development tasks to 6 developers across 2-week sprint timeslots"
Success Criteria
"All tasks assigned, skills matched, no scheduling conflicts, balanced workload"
Unless you have pre-committed assignments, skip this step.
Step 6: Solver Settings
Setting
Value
Why
Timeout
60 seconds
Medium problem size
Algorithm
Default (Tabu Search)
Works well for task assignment
Step 7: Solve!
Click "Solve Now" and wait. Expected result:
Score: 0hard / 0medium / -2500soft
Sample assignments:
T01 (API Security) → Alice + W1-MON-AM
T02 (Database Schema) → David + W1-MON-AM
T03 (React Dashboard) → Carol + W1-MON-AM
...
What Success Looks Like
✅ 0hard = All tasks assigned, skills matched, no conflicts
✅ Soft score = Cost and balance optimization applied
Common Mistakes to Avoid
Mistake
Symptom
Fix
Developer lacks required skill
-Xhard score
Check developer skills cover all task requirements
Not enough timeslots
-Xhard score
Add more time slots
All same hourly rate
No cost optimization
Vary rates for meaningful cost optimization
Tutorial 2: Employee Rostering
The Business Problem
Scenario: You're scheduling nurses at City General Hospital. You need to assign 10 nurses to shifts across a 2-week period, ensuring they're placed in appropriate hospital units with proper supervisor oversight.
Goals:
All nurses assigned to shifts
Nurses work in units matching their certifications
Supervisors oversee their assigned units
Respect availability and max shifts per week
Honor preferences when possible
Step 1: Define Your Problem
Field
What to Enter
Problem Statement
"Schedule 10 nurses to shifts, units, and supervisors over 2 weeks"
Expected Score:0hard / 0medium / -Xsoft (feasible with soft penalties)
What Success Looks Like
✅ All nurses scheduled
✅ ICU and ER only have RNs (no LPNs)
✅ Supervisors only oversee their assigned units
✅ No one exceeds 5 shifts per week
Common Mistakes to Avoid
Mistake
Symptom
Fix
LPN assigned to ICU/ER
Hard constraint violation
Check unit certification requirements
Supervisor overloaded
Hard constraint violation
Increase max oversight or add supervisors
Not enough RNs for critical units
Infeasible solution
Add more RN-certified nurses
Tutorial 3: Maintenance Scheduling
The Business Problem
Scenario: You manage maintenance at a manufacturing plant. You need to schedule 6 maintenance tasks, assigning each to a technician, time slot, plant zone, and toolset.
Goals:
All jobs assigned to qualified technicians
Jobs scheduled in appropriate time slots
Jobs performed in zones with correct equipment
Jobs use toolsets with required capabilities
Step 1: Define Your Problem
Field
What to Enter
Problem Statement
"Schedule 6 maintenance jobs across technicians, times, zones, and toolsets"
Success Criteria
"All jobs done, skills matched, equipment available, tools match"
Problem Type
Maintenance Scheduling
Step 2: List Your Entities (Maintenance Jobs)
ID
Name
Required Skill
Equipment Type
Tool Capability
MAINT-1
Motor Inspection
electrical
motor
electrical-work
MAINT-2
Conveyor Service
mechanical
conveyor
mechanical-work
MAINT-3
Control Panel Update
electrical
panel
electrical-work
MAINT-4
Press Maintenance
mechanical
press
mechanical-work
MAINT-5
Hydraulic System Check
hydraulic
press
hydraulic-work
MAINT-6
PLC Programming
plc
plc
plc-work
Step 3: Define Your Values (4 Variables)
Variable 1: Technicians
ID
Name
Skills
TECH-ELEC
John (Electrical)
electrical
TECH-MECH
Mary (Mechanical)
mechanical
TECH-HYD
Tom (Hydraulic)
hydraulic
TECH-PLC
Lisa (PLC)
plc
Variable 2: Time Slots
ID
Name
Time
SLOT-1
Monday AM
08:00-12:00
SLOT-2
Monday PM
13:00-17:00
SLOT-3
Tuesday AM
08:00-12:00
SLOT-4
Tuesday PM
13:00-17:00
Variable 3: Zones
ID
Name
Equipment Types
ZONE-PROD
Production Floor
motor, conveyor, press
ZONE-CTRL
Control Room
panel, plc
Variable 4: Toolsets
ID
Name
Capabilities
TOOLS-ELEC
Electrical Toolkit
electrical-work
TOOLS-MECH
Mechanical Toolkit
mechanical-work
TOOLS-SPEC
Specialized Toolkit
hydraulic-work, plc-work
Step 4: Define Constraints
Constraint
Level
Rule
Target
Why
Technician Assigned
Hard
unassigned
technician
Every job needs someone
Skill Match
Hard
skill
technician
Technician has required skill
Zone Equipment Match
Hard
skill
zone
Zone has required equipment type
Tool Capability Match
Hard
skill
toolset
Toolset has required capability
No Technician Conflict
Hard
no_conflict
timeslot
Same tech can't do 2 jobs at once
Steps 5-7: Configure and Solve
Timeout: 60 seconds
Expected Score:0hard / 0medium / 0soft (often perfect for small problems)
What Success Looks Like
MAINT-1 (Motor) → John + Monday AM + Production Floor + Electrical Toolkit
MAINT-2 (Conveyor) → Mary + Monday AM + Production Floor + Mechanical Toolkit
MAINT-3 (Panel) → John + Monday PM + Control Room + Electrical Toolkit
MAINT-4 (Press) → Mary + Tuesday AM + Production Floor + Mechanical Toolkit
MAINT-5 (Hydraulic) → Tom + Monday AM + Production Floor + Specialized Toolkit
MAINT-6 (PLC) → Lisa + Monday AM + Control Room + Specialized Toolkit
Common Mistakes to Avoid
Mistake
Symptom
Fix
No toolset has required capability
Hard violation
Add capability to a toolset
Equipment not in any zone
Hard violation
Ensure zone contains equipment type
Not enough technicians
Hard violation
Add technicians or reduce jobs
Tutorial 4: School Timetabling
The Business Problem
Scenario: You're creating a university timetable. You need to assign 6 lessons to rooms, time slots, teachers, and equipment setups.
Goals:
All lessons scheduled
Rooms match lesson requirements (lab vs lecture hall)
Teachers only teach their subjects
Equipment matches lesson needs
No conflicts (same teacher/room at same time)
Step 1: Define Your Problem
Field
What to Enter
Problem Statement
"Assign 6 lessons to rooms, timeslots, teachers, and equipment"
Success Criteria
"All lessons scheduled, room types match, teachers match subjects, no conflicts"
Problem Type
School Timetabling
Step 2: List Your Entities (Lessons)
ID
Name
Subject
Required Room Type
Required Equipment
LESSON-MATH1
Math 101
math
lecture-hall
projector
LESSON-PROG1
Programming 101
programming
computer-lab
lab-tools
LESSON-PHYS1
Physics 101
physics
lecture-hall
smartboard
LESSON-MATH2
Math 102
math
lecture-hall
projector
LESSON-PROG2
Programming 102
programming
computer-lab
lab-tools
LESSON-ELEC1
Electronics Lab
electronics
computer-lab
lab-tools
Step 3: Define Your Values (4 Variables)
Variable 1: Rooms
ID
Name
Type
Capacity
ROOM-LECT
Lecture Hall
lecture-hall
100
ROOM-LAB
Computer Lab
computer-lab
40
ROOM-CLASS
Classroom
classroom
50
Variable 2: Time Slots
ID
Name
Time
TS-MON-AM
Monday AM
08:00-10:00
TS-MON-PM
Monday PM
10:00-12:00
TS-TUE-AM
Tuesday AM
08:00-10:00
TS-TUE-PM
Tuesday PM
10:00-12:00
Variable 3: Teachers
ID
Name
Subjects
TEACH-MATH
Prof. Smith
math
TEACH-PROG
Prof. Johnson
programming
TEACH-PHYS
Prof. Williams
physics, electronics
Variable 4: Equipment
ID
Name
Type
EQUIP-PROJ
Projector Setup
projector
EQUIP-SMART
Smartboard Setup
smartboard
EQUIP-LAB
Lab Tools Kit
lab-tools
Step 4: Define Constraints
Constraint
Level
Rule
Target
Why
Room Assigned
Hard
unassigned
room
Every lesson needs a room
Room Type Match
Hard
skill
room
Lesson gets correct room type
Teacher Subject Match
Hard
skill
teacher
Teacher teaches that subject
Equipment Match
Hard
skill
equipment
Equipment type matches need
No Teacher Conflict
Hard
no_conflict
timeslot
Teacher can't be in 2 places
No Room Conflict
Hard
no_conflict
timeslot
Room can't host 2 lessons
Steps 5-7: Configure and Solve
Timeout: 60 seconds
Expected Score:0hard / 0medium / 0soft
Common Mistakes to Avoid
Mistake
Symptom
Fix
No teacher for a subject
Hard violation
Add teacher with that subject
Room type doesn't exist
Hard violation
Add room with required type
Not enough timeslots
Hard violation
Add more time slots
Tutorial 5: Vehicle Routing
CRITICAL: This Tutorial Uses LIST Variables
Vehicle Routing is fundamentally different from the other tutorials:
Other Problems
Vehicle Routing
Each entity → ONE value
Each entity → MULTIPLE values
BASIC variables
LIST variables
Task → One Developer
Vehicle → [Stop1, Stop2, Stop3, ...]
If you use BASIC variables for Vehicle Routing, you'll get wrong results!
The Business Problem
Scenario: You manage a delivery fleet at SecureBank. You need to route 4 service vehicles to visit 15 bank branches, ensuring each branch is visited exactly once by the appropriate vehicle.
Goals:
Every branch visited exactly once
Vehicle capacity not exceeded
Service capabilities match branch needs
Time windows respected
Step 1: Define Your Problem
Field
What to Enter
Problem Statement
"Route 4 service vehicles to visit 15 bank branches"
Success Criteria
"All branches visited, capacity respected, service types matched"
Problem Type
Vehicle Routing
Step 2: List Your Entities (Vehicles)
In Vehicle Routing, entities are the vehicles, not the stops!
ID
Name
Capacity
Service Capabilities
Max Visits
V1
Armored Van 1
200
cash
6
V2
Armored Van 2
180
cash
5
V3
Service Van 1
100
maintenance, audit
8
V4
Audit Van
50
audit
6
Step 3: Define Your Values
Variable 1: Visits (LIST of branches)
This is the key difference. The visits variable is of type LIST, meaning each vehicle gets assigned a list of branches to visit.