PowerSolver Docs
Back to Wizard
This page belongs to the full documentation. You don't need it to plan: back to the essentials.

PowerSolver 2.0 — Quick Start

Start with tutorial 0: a real plan from an Excel workbook, in five minutes. Tutorials 1 to 4 then build sequence plans by hand in the wizard, to show how the model works.

#ProblemVariableTime
0A week of machining (235 operations, 19 machines) from one workbookbasic (machine, time slot)5 min
1Schedule 4 tasks on 2 machines back-to-backlist (sequence)5 min
2Roster 3 employees across 5 shiftslist (sequence)7 min
3Route 2 trucks through 6 customer visitslist (sequence)7 min
4Schedule 5 maintenance jobs on 2 crewslist (sequence)5 min

Tutorials 1 to 4 use the §5bis sequence shape. They all share the same canonical pair of derived shadows (startTime / endTime) and the same constraint vocabulary — once you understand tutorial 1, the others are variations.


Tutorial 0 — A plan from an Excel workbook

  1. Open the wizard and sign in.
  2. Step 1 → Load a plan from Excel → choose powersolver-demos/18-job-shop-machining-week/input/problem.week.xlsx. (No file? Download workbook template gives a small worked example; ⓘ explains every sheet.)
  3. The dialog lists what the workbook holds: 235 operations (step 2), 19 machines and 40 slots (step 3), 8 rules (step 4). Click Fill all steps now.
  4. Step 7 opens. Can this work? checks the data before planning: green "No problem found".
  5. Click Plan it. In about two minutes the Results page shows the plan: every operation on a machine and a slot, every must-follow rule at 0, the calendar per machine, Check before you use it.

To see each step instead, choose Go through the steps one by one and press Import on each step's banner. What each sheet holds and how to fill one for your own data: Wizard User Guide (step 1) and Customer Handover.


Tutorial 1 — Back-to-back Task Assignment

Business question: "I have 4 tasks (Cut, Bevel, Tack, Weld) and 2 machines starting work at 08:00. Schedule them back-to-back, high-priority work first."

Step 1 — Open the wizard

Go to https://wizard.planningpowertools.com/.

Step 2 — Pick problem type

Click Task Assignment. Below the cards, toggle Sequence Mode to "Consecutive on a host".

Step 3 — Define entities (the tasks)

Step 2 of the wizard. Click Add Entity four times, fill in:

idnamepriorityduration
T1Cut1PT30M
T2Bevel2PT45M
T3Tack3PT20M
T4Weld1PT90M

priority 1 = highest. duration is ISO-8601 (PT30M = 30 minutes).

Step 4 — Define hosts (the machines)

Step 3 of the wizard. Set variable count to 1. Variable config: label "Resources", assignment type list. Then in the value grid:

idnamestartTime
M1Mill-12026-06-01T08:00
M2Mill-22026-06-01T08:00

Step 5 — Apply the sequence template

In Step 3's Sequence Configuration card, click Apply default template. The derived-shadow table now shows the canonical startTime and endTime rows.

Step 6 — Add constraints

Step 4 of the wizard. Add:

  • All tasks scheduled — type: hard, rule: unassigned_count, params: {"inverse_field": "host"}, weight: 100
  • Prefer high priority first — type: soft, rule: minimize_property, params: {"property": "priority"}, weight: 1

Step 7 — Solve

Step 7 of the wizard. Can this work? runs first (green: nothing makes the plan impossible). Click Plan it. Expected output:

Score: 0hard / -6soft   (feasible)

Mill-1: [T1 Cut (08:00–08:30), T4 Weld (08:30–10:00)]
Mill-2: [T2 Bevel (08:00–08:45), T3 Tack (08:45–09:05)]

(Exact distribution may vary; the solver finds equivalent-scoring solutions.)

What you just did

You built a list variable on the resources collection, pointed at the entities collection. You declared the canonical previous + host shadows and the startTime + endTime derived shadows. The solver placed every task into some machine's list (hard constraint satisfied) and minimised the sum of priority across all tasks (soft constraint).


Tutorial 2 — Employee Rostering

Business question: "I have 5 shifts (morning reception, morning triage, afternoon reception, afternoon triage, evening on-call) and 3 employees (Alice and Bob start at 06:00, Carol at 14:00). Cover all shifts."

Setup

In the wizard: Problem type Employee Rostering, Sequence Mode on.

Entities (shifts):

idnameskillduration
S1Morning-Reception1PT4H
S2Morning-Triage2PT4H
S3Afternoon-Reception1PT4H
S4Afternoon-Triage2PT4H
S5Evening-On-Call3PT4H

Hosts (employees):

idnamestartTime
E1Alice2026-06-01T06:00
E2Bob2026-06-01T06:00
E3Carol2026-06-01T14:00

Sequence config: Apply default template.

Constraints:

  • All shifts staffed — hard, unassigned_count, {"inverse_field": "host"}, weight 100
  • Lower-skill first — soft, minimize_property, {"property": "skill"}, weight 1

Expected output

Score: 0hard / -10soft

Alice: [S1 Reception (06:00–10:00), S3 Reception (10:00–14:00)]
Bob:   [S2 Triage (06:00–10:00),    S4 Triage (10:00–14:00)]
Carol: [S5 On-Call (14:00–18:00)]

Why it works

Carol starts at 14:00, so any shift placed on her list begins at 14:00 by the canonical derived shadow. The other employees have 06:00 startTimes and absorb the earlier shifts. The minimize_property rule pushes low-skill shifts to be scheduled first (lower priority sum overall).


Tutorial 3 — Vehicle Routing

Business question: "Two trucks visit six customers. Higher-priority customers earlier in the route."

Setup

Problem type Vehicle Routing, Sequence Mode on.

Entities (customers):

idnamepriorityduration
C1Customer-North1PT20M
C2Customer-East2PT15M
C3Customer-South3PT25M
C4Customer-West2PT20M
C5Customer-Downtown1PT30M
C6Customer-Uptown4PT15M

Hosts (vehicles):

idnamestartTime
V1Truck-12026-06-01T08:00
V2Truck-22026-06-01T08:00

Sequence config: Apply default template.

Constraints:

  • Every customer visited — hard, unassigned_count, weight 100
  • High-priority first — soft, minimize_property on priority, weight 1

Expected output

Score: 0hard / -13soft

Truck-1: [C1 (08:00–08:20), C2 (08:20–08:35), C3 (08:35–09:00)]
Truck-2: [C5 (08:00–08:30), C4 (08:30–08:50), C6 (08:50–09:05)]

The exact partition between trucks may vary but priority-1 customers always come first on their route (the minimize_property rule rewards early scheduling of low-priority-number entities).

What's NOT modelled

This tutorial doesn't model:

  • Geographic distance between customers — the solver ignores location here
  • Vehicle capacity — there's no cap on how many customers per truck
  • Time windows on customers — every customer is reachable at any time

To add distance, capacity, or time windows you'd extend the derived shadows (e.g. cumulativeDistance, cumulativeLoad) and add assertions in the test harness. The native solver constraint vocabulary for those checks is still on the roadmap.


Tutorial 4 — Maintenance Scheduling

Business question: "Two maintenance crews handle five jobs. Higher-priority jobs first."

Setup

Problem type Maintenance Scheduling, Sequence Mode on.

Entities (jobs):

idnamepriorityduration
J1Pump-A-Overhaul1PT2H
J2Valve-B-Service2PT1H
J3Pipe-Inspection3PT45M
J4Filter-Change4PT30M
J5Pressure-Test2PT90M

Hosts (crews):

idnamestartTime
CREW1Crew-Alpha2026-06-01T07:00
CREW2Crew-Bravo2026-06-01T07:00

Sequence config: Apply default template.

Constraints:

  • Every job scheduled — hard, unassigned_count, weight 100
  • High-priority first — soft, minimize_property on priority, weight 1

Expected output

Score: 0hard / -12soft

Crew-Alpha: [J1 Pump (07:00–09:00), J5 Pressure (09:00–10:30)]
Crew-Bravo: [J2 Valve (07:00–08:00), J3 Pipe (08:00–08:45), J4 Filter (08:45–09:15)]

What to try next

  • Add your own data. The wizard's Step 2 / Step 3 imports accept CSV-like paste or a §5bis JSON file. Replace the toy entities and hosts with real ones.
  • Tighten the schedule. Add an endTime upper bound to host properties and inspect whether all jobs fit (use the assertion harness via scripts/run_corpus_against_env.py).
  • Save as a template. Click Download in Step 7 — the JSON is ready to commit to your project's repo.
  • Read the Wizard User Guide. Each tutorial above touches every step but doesn't explain every option. See WIZARD_USER_GUIDE.md for the field-by-field reference.

Where the templates come from

The four tutorials above mirror the starter templates under D:\PowerProjects\PowerSolver\timefold-templates\sequence\. Each starter.json is a working §5bis spec you can POST directly to /api/solve. Use them as starting points for your own problems.