PowerSolver Docs
Back to Wizard

PowerSolver Quick Start Guide

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 Start

What You'll Learn

Tutorial Problem Type Variables Difficulty
1. Task Assignment Assign tasks to developers + timeslots 2 (BASIC) ⭐ Beginner
2. Employee Rostering Schedule nurses to shifts + units + supervisors 3 (BASIC) ⭐⭐ Intermediate
3. Maintenance Scheduling Schedule jobs to technicians + times + zones + tools 4 (BASIC) ⭐⭐⭐ Advanced
4. School Timetabling Assign lessons to rooms + times + teachers + equipment 4 (BASIC) ⭐⭐⭐ Advanced
5. Vehicle Routing Route vehicles to multiple customer stops LIST ⭐⭐⭐ Advanced

Key Concept: BASIC vs LIST Variables

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"
Problem Type Task Assignment

Step 2: List Your Entities (Tasks)

Create 12 tasks with these properties:

ID Name Required Skills Duration
T01API Security Frameworkjava, security8 hours
T02Database Schema Designjava, database6 hours
T03React Dashboardreact, ui8 hours
T04Mobile App Loginmobile, security6 hours
T05API Documentationjava, api4 hours
T06Unit Test Suitejava, testing6 hours
T07User Profile Pagereact, ui4 hours
T08Push Notificationsmobile, api6 hours
T09Performance Testingjava, testing4 hours
T10Admin Panelreact, database8 hours
T11Security Auditsecurity, testing6 hours
T12Mobile Settingsmobile, ui4 hours

Properties to fill:

  • ID (required): Unique identifier
  • Name (required): Task description
  • Skills (for skill constraint): Comma-separated required skills
  • Duration (for cost constraint): Hours to complete

Step 3: Define Your Values

Variable 1: Developers

ID Name Skills Hourly Rate
DEV1Alice Chenjava, security, api, database$85
DEV2Bob Martinezjava, react, api$70
DEV3Carol Wangreact, mobile, ui$75
DEV4David Kimjava, database, testing$65
DEV5Eva Thompsonmobile, react, api$60
DEV6Frank Wilsonjava, testing$45

Variable 2: Time Slots (20 slots over 2 weeks)

ID Name Start Time End Time
W1-MON-AMWeek 1 Monday AM2025-01-06 09:002025-01-06 12:00
W1-MON-PMWeek 1 Monday PM2025-01-06 13:002025-01-06 17:00
W1-TUE-AMWeek 1 Tuesday AM2025-01-07 09:002025-01-07 12:00
... Continue for all weekdays in 2 weeks

Step 4: Define Constraints

Constraint Level Rule Target Variable Why
All Tasks AssignedHardunassigneddeveloperEvery task must have someone
Skill MatchHardskilldeveloperDeveloper must have required skills
No ConflictsHardno_conflicttimeslotSame dev can't do 2 tasks at same time
Minimize CostSoftcostdeveloperPrefer lower hourly rates
Balance WorkloadSoftbalancedeveloperDistribute tasks evenly

Step 5: Skip (No Pinned Assignments)

Unless you have pre-committed assignments, skip this step.

Step 6: Solver Settings

Setting Value Why
Timeout60 secondsMedium problem size
AlgorithmDefault (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 scoreCheck developer skills cover all task requirements
Not enough timeslots-Xhard scoreAdd more time slots
All same hourly rateNo cost optimizationVary 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"
Success Criteria"Full coverage, certifications matched, supervisor oversight, preferences honored"
Problem TypeEmployee Rostering

Step 2: List Your Entities (Nurses)

ID Name Role Certifications Max Shifts/Week Preferred Shift
N01Sarah MitchellSenior RNRN, ICU, ACLS, Trauma5Morning
N02James ChenRNRN, ER, ACLS5Afternoon
N03Maria GarciaSenior RNRN, ICU, Pediatrics5Morning
N04David WilsonRNRN, Medical5Afternoon
N05Emily BrownRNRN, Surgical, ACLS5Morning
N06Michael LeeLPNLPN, Medical5Afternoon
N07Jessica TaylorRNRN, ER, Trauma5Night
N08Robert MartinezLPNLPN, Surgical5Morning
N09Amanda JohnsonRNRN, Pediatrics, ACLS5Morning
N10Christopher DavisSenior RNRN, ICU, ER, ACLS5Night

Step 3: Define Your Values (3 Variables)

Variable 1: Shifts (42 shifts = 7 days × 3 shifts × 2 weeks)

ID Name Type Time
W1-MON-AMWeek 1 Mon Morningmorning06:00-14:00
W1-MON-PMWeek 1 Mon Afternoonafternoon14:00-22:00
W1-MON-NTWeek 1 Mon Nightnight22:00-06:00
... Continue for all days

Variable 2: Units (4 hospital units)

ID Name Required Certifications Accepts LPN?
UNIT-ICUIntensive Care UnitRN, ICUNo
UNIT-EREmergency RoomRN, ERNo
UNIT-MEDMedical WardRNYes
UNIT-SURGSurgical WardRN, SurgicalYes

Variable 3: Supervisors (3 supervisors)

ID Name Units Supervised Max Oversight/Shift
SUP-ADr. Patricia AdamsICU, ER4
SUP-BDr. Richard BrownMED, SURG5
SUP-CDr. Helen ClarkAll units6

Step 4: Define Constraints

Constraint Level Rule Target Why
Shift AssignedHardunassignedshiftEveryone works
Unit AssignedHardunassignedunitEveryone has a unit
Supervisor AssignedHardunassignedsupervisorEveryone has oversight
Max Shifts/WeekHardcapacityshiftDon't exceed 5 shifts
Unit CertificationHardskillunitNurse has unit certifications
ICU/ER Require RNHardskillunitNo LPNs in critical units
Supervisor Unit MatchHardskillsupervisorSupervisor oversees unit
AvailabilityHardavailabilityshiftRespect unavailable days
Shift PreferenceSoftpreferenceshiftHonor morning/afternoon/night preference
Unit PreferenceSoftpreferenceunitHonor preferred unit
Balance HoursSoftbalanceshiftFair distribution

Steps 5-7: Configure and Solve

  • Timeout: 120 seconds (larger problem)
  • 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/ERHard constraint violationCheck unit certification requirements
Supervisor overloadedHard constraint violationIncrease max oversight or add supervisors
Not enough RNs for critical unitsInfeasible solutionAdd 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 TypeMaintenance Scheduling

Step 2: List Your Entities (Maintenance Jobs)

ID Name Required Skill Equipment Type Tool Capability
MAINT-1Motor Inspectionelectricalmotorelectrical-work
MAINT-2Conveyor Servicemechanicalconveyormechanical-work
MAINT-3Control Panel Updateelectricalpanelelectrical-work
MAINT-4Press Maintenancemechanicalpressmechanical-work
MAINT-5Hydraulic System Checkhydraulicpresshydraulic-work
MAINT-6PLC Programmingplcplcplc-work

Step 3: Define Your Values (4 Variables)

Variable 1: Technicians

ID Name Skills
TECH-ELECJohn (Electrical)electrical
TECH-MECHMary (Mechanical)mechanical
TECH-HYDTom (Hydraulic)hydraulic
TECH-PLCLisa (PLC)plc

Variable 2: Time Slots

ID Name Time
SLOT-1Monday AM08:00-12:00
SLOT-2Monday PM13:00-17:00
SLOT-3Tuesday AM08:00-12:00
SLOT-4Tuesday PM13:00-17:00

Variable 3: Zones

ID Name Equipment Types
ZONE-PRODProduction Floormotor, conveyor, press
ZONE-CTRLControl Roompanel, plc

Variable 4: Toolsets

ID Name Capabilities
TOOLS-ELECElectrical Toolkitelectrical-work
TOOLS-MECHMechanical Toolkitmechanical-work
TOOLS-SPECSpecialized Toolkithydraulic-work, plc-work

Step 4: Define Constraints

Constraint Level Rule Target Why
Technician AssignedHardunassignedtechnicianEvery job needs someone
Skill MatchHardskilltechnicianTechnician has required skill
Zone Equipment MatchHardskillzoneZone has required equipment type
Tool Capability MatchHardskilltoolsetToolset has required capability
No Technician ConflictHardno_conflicttimeslotSame 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 capabilityHard violationAdd capability to a toolset
Equipment not in any zoneHard violationEnsure zone contains equipment type
Not enough techniciansHard violationAdd 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 TypeSchool Timetabling

Step 2: List Your Entities (Lessons)

ID Name Subject Required Room Type Required Equipment
LESSON-MATH1Math 101mathlecture-hallprojector
LESSON-PROG1Programming 101programmingcomputer-lablab-tools
LESSON-PHYS1Physics 101physicslecture-hallsmartboard
LESSON-MATH2Math 102mathlecture-hallprojector
LESSON-PROG2Programming 102programmingcomputer-lablab-tools
LESSON-ELEC1Electronics Labelectronicscomputer-lablab-tools

Step 3: Define Your Values (4 Variables)

Variable 1: Rooms

ID Name Type Capacity
ROOM-LECTLecture Halllecture-hall100
ROOM-LABComputer Labcomputer-lab40
ROOM-CLASSClassroomclassroom50

Variable 2: Time Slots

ID Name Time
TS-MON-AMMonday AM08:00-10:00
TS-MON-PMMonday PM10:00-12:00
TS-TUE-AMTuesday AM08:00-10:00
TS-TUE-PMTuesday PM10:00-12:00

Variable 3: Teachers

ID Name Subjects
TEACH-MATHProf. Smithmath
TEACH-PROGProf. Johnsonprogramming
TEACH-PHYSProf. Williamsphysics, electronics

Variable 4: Equipment

ID Name Type
EQUIP-PROJProjector Setupprojector
EQUIP-SMARTSmartboard Setupsmartboard
EQUIP-LABLab Tools Kitlab-tools

Step 4: Define Constraints

Constraint Level Rule Target Why
Room AssignedHardunassignedroomEvery lesson needs a room
Room Type MatchHardskillroomLesson gets correct room type
Teacher Subject MatchHardskillteacherTeacher teaches that subject
Equipment MatchHardskillequipmentEquipment type matches need
No Teacher ConflictHardno_conflicttimeslotTeacher can't be in 2 places
No Room ConflictHardno_conflicttimeslotRoom 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 subjectHard violationAdd teacher with that subject
Room type doesn't existHard violationAdd room with required type
Not enough timeslotsHard violationAdd 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 valueEach entity → MULTIPLE values
BASIC variablesLIST variables
Task → One DeveloperVehicle → [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 TypeVehicle Routing

Step 2: List Your Entities (Vehicles)

In Vehicle Routing, entities are the vehicles, not the stops!

ID Name Capacity Service Capabilities Max Visits
V1Armored Van 1200cash6
V2Armored Van 2180cash5
V3Service Van 1100maintenance, audit8
V4Audit Van50audit6

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.

ID Name Demand Required Service Time Window
BR01Downtown Main50cash09:00-12:00
BR02Midtown East35cash09:00-14:00
BR03Upper West Side40maintenance10:00-15:00
BR04Financial District80cash08:00-11:00
BR05Chelsea30maintenance11:00-16:00
BR06SoHo45cash09:00-13:00
BR07East Village25audit12:00-17:00
BR08Tribeca55cash08:00-12:00
BR09Harlem30maintenance10:00-15:00
BR10Greenwich Village35cash09:00-14:00
BR11Murray Hill40audit11:00-16:00
BR12Battery Park60cash08:00-11:00
BR13Gramercy35maintenance10:00-15:00
BR14Hell's Kitchen30audit09:00-14:00
BR15Lower East Side40cash12:00-17:00

Step 4: Define Constraints

Constraint Level Rule Target Why
All Branches VisitedHarddemand_satisfiedvisitsEvery branch exactly once
Vehicle CapacityHardlist_capacityvisitsTotal demand ≤ vehicle capacity
Max VisitsHardlist_max_sizevisitsDon't exceed max visits
Service CapabilityHardskillvisitsVehicle can serve branch type
Time WindowsHardlist_time_windowvisitsVisit within branch hours
Minimize DistanceSoftlist_distancevisitsShorter routes preferred

Steps 5-7: Configure and Solve

  • Timeout: 120 seconds (routing is complex)
  • Expected Score: 0hard / 0medium / -Xsoft

What Success Looks Like

Score: 0hard / 0medium / -15000soft

V1 (Armored Van 1) → [BR04, BR08, BR12, BR01, BR06]
V2 (Armored Van 2) → [BR02, BR10, BR15]
V3 (Service Van) → [BR03, BR05, BR09, BR13]
V4 (Audit Van) → [BR07, BR11, BR14]

Each vehicle gets a list of branches in visiting order.

Common Mistakes to Avoid

Mistake Symptom Fix
Using BASIC instead of LISTEach vehicle gets only 1 stopSet variable type to list
No vehicle can serve a branchBranch never visitedAdd vehicle with matching capability
Total demand exceeds all capacityInfeasibleAdd vehicles or reduce demand
Time windows too narrowVisits can't be scheduledWiden time windows

Summary: Choosing the Right Approach

Problem Entities Key Question Variable Type
Task AssignmentTasks"Who does this task?"BASIC
Employee RosteringNurses/Employees"Which shift does this person work?"BASIC
Maintenance SchedulingJobs"Who does this job and when?"BASIC
School TimetablingLessons"Where and when is this class?"BASIC
Vehicle RoutingVehicles"Which stops does this vehicle visit?"LIST

The Golden Rules

  1. If each entity needs ONE value → BASIC
  2. If each entity needs MULTIPLE values in order → LIST
  3. Vehicle Routing almost always needs LIST
  4. Everything else usually needs BASIC

Next Steps

Now that you've completed these tutorials:

  1. User Guide — Full reference for all features
  2. Concepts Guide — Deep dive into planning concepts
  3. Wizard User Guide — Screen-by-screen reference
  4. Templates — Import pre-built templates from /timefold-templates

Need Help?