ModelRisk Optimizer example · Media production
Render Farm: Frame Distribution
Which render node should each shot go to, so the busiest node finishes as early as possible?
The optimisation problem
Shortest mean makespan
- Decide
- A render node for each of 20 shots (6 nodes)
- Goal
- Shortest mean makespan
- Limit
- None
- Engine
- Genetic Algorithm
What the Optimizer found
| Starting plan | Optimizer’s plan | |
|---|---|---|
| Decisions changed | – | 18 of 20 |
| Goal: Mean makespan (busiest node load) | 202 | 147 |
All 20 decisions starting plan, then the Optimizer’s
| Shot 1 | 0 | 1 |
|---|---|---|
| Shot 2 | 1 | 0 |
| Shot 3 | 2 | 2 |
| Shot 4 | 3 | 5 |
| Shot 5 | 4 | 3 |
| Shot 6 | 5 | 3 |
| Shot 7 | 0 | 5 |
| Shot 8 | 1 | 2 |
| Shot 9 | 2 | 5 |
| Shot 10 | 3 | 1 |
| Shot 11 | 4 | 4 |
| Shot 12 | 5 | 0 |
| Shot 13 | 0 | 3 |
| Shot 14 | 1 | 0 |
| Shot 15 | 2 | 4 |
| Shot 16 | 3 | 1 |
| Shot 17 | 4 | 5 |
| Shot 18 | 5 | 2 |
| Shot 19 | 0 | 4 |
| Shot 20 | 1 | 2 |
ModelRisk Optimizer run on 13 Oct 2026: the Genetic Algorithm engine, with Turbo simulation, tried 833 plans, each simulated with 10,000 samples, in 7 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. Placing 20 shots on 6 render nodes gives 6^20 (about 3.7 x 10^15) 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 (900 trials, stagnation after 400), and the Time (max) limit of 1800 s is only a safety net.
Decision, objective and constraint
- Decision
- 20 integer node assignments (Model!B7:B26), each 0 to 5 — a Schedule (assignment) group
- Objective
- Minimise the Mean makespan = Mean of MAX(node loads), Model!F16
- Constraint
- None — any assignment is valid (a node may take many shots)
Why the Genetic Algorithm
Parallel-machine makespan (P||Cmax) is NP-hard and rugged: the heavy hero-shots must land on different nodes, and moving one shot usually just shifts the bottleneck, so a search that changes one coordinate at a time can settle into a local trap. GA recombines whole node layouts from a population and repairs them, which lets it leave such traps.
Routing does not depend on which engine wins a given instance: Method = Auto sends any Order / Project / Schedule group to GA, the engine that keeps the group valid.
The model
Distribute 20 shots across 6 render nodes so the whole batch finishes as early as possible.
InputDecision (the Optimizer changes it)Calculated or uncertain (sampled each iteration)Objective
Shots (decision = node 0 to 5; sizes are uncertain, low spread)
| Shot | Node (dec) | Render time min (unc.) | Node | Load |
|---|---|---|---|---|
| Shot 1 | 0 | uncertain | 0 | calculated |
| Shot 2 | 1 | uncertain | 1 | calculated |
| Shot 3 | 2 | uncertain | 2 | calculated |
| Shot 4 | 3 | uncertain | 3 | calculated |
| Shot 5 | 4 | uncertain | 4 | calculated |
| Shot 6 | 5 | uncertain | 5 | calculated |
| Shot 7 | 0 | uncertain | ||
| Shot 8 | 1 | uncertain | ||
| Shot 9 | 2 | uncertain | ||
| Shot 10 | 3 | uncertain | Makespan = busiest node load - objective (Min Mean) | calculated |
| Shot 11 | 4 | uncertain | ||
| Shot 12 | 5 | uncertain | ||
| Shot 13 | 0 | uncertain | ||
| Shot 14 | 1 | uncertain | ||
| Shot 15 | 2 | uncertain | ||
| Shot 16 | 3 | uncertain | ||
| Shot 17 | 4 | uncertain | ||
| Shot 18 | 5 | uncertain | ||
| Shot 19 | 0 | uncertain | ||
| Shot 20 | 1 | uncertain |
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
- ModelRisk ribbon to Optimizer (the saved task opens).
- Start Optimization.
- Read the node assignments in B7:B26 and the Mean makespan in F16.
Find similar models
- Product
- Type
- Application
- Uses
Download the workbook and run the Optimizer. It opens in Excel with ModelRisk.
Related example models
- ModelRiskOptimizer★★★★★Museum: Exhibit Tour SequencingWhich viewing slot should each exhibit occupy so the crowd spreads evenly through the day?Assigns 14 exhibits to eight tour slots so the crowd is as even as possible through the day.
- ModelRiskOptimizer★★★★★Parcel Hub: Sorter Chute BalancingWhich chute should each parcel go to, so the busiest chute finishes as early as possible?Assigns 16 parcels to six sorter chutes so the busiest chute finishes as early as possible.
- ModelRiskOptimizer★★★★★Stadium Egress: Gate-Lane StaffingHow many lanes to open at each gate so the crowd clears within 8 minutes on 95% of nights?Staffs the lanes at six gates at the lowest mean cost, so the crowd clears within eight minutes on 95% of nights.
An illustrative example: the figures are invented for teaching. Last updated 9 October 2026.