Gradient Optimization Talk to us
Solutions · Rostering

Rosters that cover the ward and keep to the rules.

Who works which shift, on which day, with which skill — over weeks at a time, inside every contract, around leave and requests. Built on Gradient Path, our column generation engine.

Who has this problem

Anyone who staffs shifts by skill, around the clock.

  • Hospital wards and departments Registered nurses, enrolled nurses and healthcare assistants across early, day, late and night shifts.
  • Aged care Minimum care time and registered-nurse cover, delivered by a largely part-time workforce.
  • Emergency and critical care Cover that cannot run short, with strict rest between shifts.
  • Other 24/7 operations Control rooms, contact centres, security and transport crews — wherever shifts need particular skills.
What is decided

One roster per person, for the whole horizon.

For every person: which days they work, which shift they work on each of those days, and which skill they cover — across a horizon of two, four or more weeks. Each roster has to work for that person, and together the rosters have to cover the ward.

What constraints matter

The rules that make rostering hard.

  • Contracts Hours over the roster and per week, the number of shifts in total and per week, minimum and maximum runs of consecutive shifts, minimum days off in a row, weekends worked, and minimum rest between shifts.
  • Shift rules Sequences that are not allowed — no early straight after a night — and limits on particular shifts per contract, down to never working them at all.
  • Cover Headcount for every day, shift and skill. Each can be hard — never short, never over — or allowed to bend at a cost you set.
  • Leave and requests Time someone cannot work is respected. Requests to work, or not to work, a shift are honoured wherever the rest of the roster allows, weighted by how much each one matters.
What Gradient does differently

Each column is a person's whole roster.

On the platform page, the Master Planner asks a Route Finder for one better route at a time. In rostering, the Route Finder becomes a Roster Finder: given what each shift is currently costing the plan, it builds the best complete roster for one person — every contract rule included — and offers it to the Master Planner as a new column.

Because each roster is built whole, the rules that span weeks — consecutive shifts, days off, weekends, rest — are kept by construction rather than checked afterwards. The engine then branches until every person has exactly one roster (branch-and-price).

Rosters also change after they are made. Pin the shifts that must not move — a person, a day, a single slot — and re-optimise the rest. A stay-close-to-the-draft setting prices every change, so the engine moves somebody only when it is worth it.

What the output looks like

A roster your planners can read, edit and publish.

The roster screen for a 25-person ward over two weeks: each nurse's Early, Day, Late and Night shifts on a timeline, with counts of shifts short, over, rule breaks and unmet preferences above the chart.
Every person's shifts against the clock, with what is short, over or breaking a rule counted above the chart.

Change it, and keep the rest.

Drag a shift to swap it, pin what must hold, and re-optimise only what is broken, the week on screen, or everything not pinned. The result comes back as a proposal, person by person, to accept or discard. Publish freezes a roster once staff have been told.

A draft roster with staff pinned, shown hatched, and the Re-optimise panel open.
Pinned rosters are hatched; the panel sets what the engine may touch.
What it changes

What your planners get.

  • A first roster in seconds A 25-person ward over two weeks solves in about 14 seconds, so there is time to try several versions before choosing one.
  • Cover, priced in Shortfalls and overstaffing are what the plan is costed on, so the engine works to remove them — and shows any it cannot.
  • No rules to check by hand Every roster is built inside its contract, so rule breaks are not left for a planner to find.
  • Small changes stay small Pins and the stay-close setting keep a published roster steady when something changes.
Have a rostering problem?

Ask for a demo of the rostering application.