Sorter Chute Balancing: Optimizer Example | Vose Software

ModelRisk Optimizer example · Logistics

Parcel Hub: Sorter Chute Balancing

Which chute should each parcel go to, so the busiest chute finishes as early as possible?

  • Complexity: ★★★★★
  • Free Excel workbook
  • Needs ModelRisk with the Optimizer

The optimisation problem

Shortest mean makespan

Decide
A chute for each of 16 parcels (6 chutes)
Goal
Shortest mean makespan
Limit
None
Engine
Genetic Algorithm

What the Optimizer found

Starting planOptimizer’s plan
Decisions changed–11 of 16
Goal: Mean makespan (busiest chute load)265126
All 16 decisions starting plan, then the Optimizer’s
Parcel 101
Parcel 212
Parcel 320
Parcel 435
Parcel 544
Parcel 650
Parcel 700
Parcel 811
Parcel 922
Parcel 1034
Parcel 1144
Parcel 1253
Parcel 1302
Parcel 1413
Parcel 1523
Parcel 1635

ModelRisk Optimizer run on 13 Oct 2026: the Genetic Algorithm engine, with Turbo simulation, tried 897 plans, each simulated with 10,000 samples, in 8 seconds. Both plans above were then simulated again with the same 10,000 samples.

What the workbook models

This workbook showcases the ModelRisk optimizer on a COMBINATORIAL assignment problem. Routing 16 parcels to 6 chutes gives 6^16 (about 2.8 x 10^12) possible layouts — far too many to enumerate, even though the sheet itself is small. Method = Auto detects the combinatorial assignment GROUP and routes the model to the GENETIC ALGORITHM (GA).

That routing is structural, not a tuning preference: any Order / Project / Schedule group goes to GA, because the engine has to preserve the group structure while it searches.

GA carries a whole population of candidate layouts and recombines their good parts, so it keeps finding better assignments across the run.

The problem is deliberately sized so a classic (non-Turbo) run finishes in minutes rather than hours: the search ends on stagnation or on the trial budget (1000 trials, stagnation after 450), and the Time (max) limit of 1800 s is only a safety net.

Decision, objective and constraint

Decision
16 integer chute assignments (Model!B7:B22), each 0 to 5 — a Schedule (assignment) group
Objective
Minimise the Mean makespan = Mean of MAX(chute loads), Model!F14
Constraint
None — any assignment is valid (a chute may take many parcels)

Why the Genetic Algorithm

Parallel-machine makespan (P||Cmax) is NP-hard and rugged: moving one parcel to a lighter chute usually just makes that chute the new bottleneck, so a search that changes one coordinate at a time can settle into a local trap. GA works on whole layouts instead: it recombines two good chute plans and repairs the result, which lets it leave traps that a single move cannot.

The routing itself does not depend on which engine wins a particular instance: Method = Auto sends ANY model carrying an Order, Project or Schedule group to GA, because that engine keeps the group structure valid while it searches. A Schedule group is many-to-one, so every assignment here is already valid.

The model

Route 16 parcels to 6 sorter chutes so the busiest chute closes as early as possible.

InputDecision (the Optimizer changes it)Calculated or uncertain (sampled each iteration)Objective

Parcels (decision = chute 0 to 5; sizes are uncertain, low spread)

ParcelChute (dec)Handle time s (unc.)ChuteLoad
Parcel 10uncertain0calculated
Parcel 21uncertain1calculated
Parcel 32uncertain2calculated
Parcel 43uncertain3calculated
Parcel 54uncertain4calculated
Parcel 65uncertain5calculated
Parcel 70uncertain
Parcel 81uncertainMakespan = busiest chute load — objective (Min Mean)calculated
Parcel 92uncertain
Parcel 103uncertain
Parcel 114uncertain
Parcel 125uncertain
Parcel 130uncertain
Parcel 141uncertain
Parcel 152uncertain
Parcel 163uncertain

Decision cells hold starting values: the workbook opens at the starting plan above, and the Optimizer finds its plan when you run it. The figures are illustrative.

Run it yourself. Open the workbook with ModelRisk, open the Optimizer from the ribbon (the saved task opens with it) and press Start.

How to run it

  1. ModelRisk ribbon to Optimizer (the saved task opens).
  2. Start Optimization.
  3. Read the chute assignments in B7:B22 and the Mean makespan in F14.

Find similar models