Production scheduling for cheese manufacturing means coordinating pasteurisation, vat processing, pressing, brining, and packaging across a facility with multiple parallel vats, sequence-dependent cleaning cycles, and time-sensitive curd-to-press handoffs. This guide shows how to model a realistic cheese facility in Schantt, set up its stages and machines with the right parameters, and generate a schedule that respects the process constraints unique to cheese making.
This guide follows a fictional composite company built from industry research on cheese manufacturing; all names, parameters, and figures are illustrative.
Industry context
Cheese manufacturing transforms liquid milk into finished cheese through a sequence of controlled processing steps. The process begins with pasteurisation, where raw milk is heated to eliminate pathogenic bacteria, then moves through coagulation, curd processing, pressing, salting, and finally packaging. Each step imposes its own timing constraints — some run continuously, others in discrete batches — and the inter-stage handoffs are time-sensitive.
The facility in this scenario processes approximately 15,000,000 L of raw milk per year, received twice daily at around 20,000 L per delivery. The plant covers roughly 3,200 m² and employs about 85 people, including a 2-person planning team. Two seasonal patterns affect throughput: a standard season and a spring flush period (March through May) when milk supply increases substantially.
Pasteurisation is the first production stage, served by a single pasteuriser rated at 10,000 L/hr. From there, milk flows into the vat hall where six vats — each with 12,000 L capacity — handle the coagulation and curd-processing phase. Vat cycles differ by product class: Fresh requires 240 min per 1,200 kg batch, Pasta-Filata requires 270 min per 1,200 kg batch, and Semi-Hard requires 390 min per 1,000 kg batch. These cycle times include culturing, rennet addition, coagulation, cutting the curd, and cooking — each step paced by the specific cheese-making technique of each class.
After vat processing, curd transfers to pressing, where four presses shape and consolidate it. Pressing cycles are 150 min for Fresh (1,200 kg), 90 min for Pasta-Filata (1,200 kg), and 240 min for Semi-Hard (1,000 kg). Pressed cheese moves to brining, with four brine tanks serving all classes: Fresh passes through in 15 min (a dry-salt step), Pasta-Filata brines for 120 min per 1,200 kg, and Semi-Hard brines for 720 min per 1,000 kg. Finally, cutting and packaging runs on two lines — Line 1 (flow-wrap) at 500 kg/hr and Line 2 (vacuum-pack) at 400 kg/hr. Semi-hard cheeses transfer to an aging inventory lasting 4 to 12 weeks after packaging; aging is managed outside the schedule. Whey processing, an important co-product stream, runs on dedicated independent equipment and is not scheduled within the cheese line scope.
The plant operates on a standard calendar of Monday to Friday, 06:00 to 22:00 most of the year, switching to an extended high-season calendar (Monday to Saturday, 05:00 to 00:00) during the spring flush months of March through May. Three calendar exceptions apply: New Year's Day, International Workers' Day, and a year-end shutdown from December 24 to December 31.
Stone Mill Creamery runs approximately 85 people at a 3,200 m² facility, making 3 product classes across 5 production stages, scheduled by a 2-person planning team.
Process overview
flowchart LR P["Pasteurisation<br/>(Flow)"] V["Vat Processing<br/>(Batch)"] R["Pressing<br/>(Batch)"] B["Brining<br/>(Batch)"] C["Cutting & Packaging<br/>(Flow)"] P --> V V --> R R --> B B --> C
The five production stages modeled in the cheese manufacturing scenario — Pasteurisation (flow), Vat Processing (batch), Pressing (batch), Brining (batch), and Cutting & Packaging (flow). All three product classes (Fresh, Pasta-Filata, Semi-Hard) pass through all five stages, with class-specific batch sizes, cycle durations, and dwell times.
Scheduling challenges and how Schantt handles them
The production list — which products to make, in what quantity, and by when — is the driver for every schedule in this scenario. The planner enters the orders manually from the weekly or daily production plan; Schantt does not forecast demand or distinguish make-to-stock from make-to-order. Readers whose demand input comes from an ERP integration, a sales forecast, or a different planning rhythm can adapt this approach to their own data source.
Schantt optimises total production time: it schedules forward from a chosen start date and sequences jobs and machine assignments to minimise the time needed to complete the production list. For a facility running one to two weeks ahead, this gives a practical planning horizon that fits the typical cheese-making order book. The scheduling algorithm works in two modes. Auto mode generates a complete optimised schedule from the production list, machines, and constraints, requiring no manual intervention beyond entering the orders. Semi-Auto mode lets the planner assign specific jobs to particular machines or reorder selected sequences while the algorithm fills in the remaining assignments — useful when a planner needs to reserve a vat for a customer order or override the algorithm's suggestion based on floor knowledge.
What Schantt handles well
- Sequential multi-stage production — Define Pasteurisation to Cutting & Packaging once; each product class passes through the stages its type requires, with transfer times between every consecutive pair.
- Parallel-machine stages — Vat processing has 6 vats, pressing has 4 presses, and brining has 4 tanks. Schantt assigns jobs across parallel machines to minimise total production time.
- Sequence-dependent changeovers — Directional cleaning durations per product-class pair (15 min for same-class rinse, 30 min for standard cross-class cleaning, 40–45 min for intensive cleaning after Semi-Hard). The algorithm favours sequences that minimise total cleaning time.
- Mixed batch-and-flow pipelines — Vat processing, pressing, and brining are batch stages (fill, process, empty on a cycle); pasteurisation and packaging are flow stages (continuous throughput). One route mixes both, and the schedule resolves downstream timing effects automatically.
- Multi-product routing with stage-skipping — All three classes share the same five-stage sequence but with class-specific batch sizes, cycle durations, and dwell times — divergent parameters within a single flow. Schantt handles each class's routing independently.
- Partial transfers for overlapping operations — Curd drains incrementally from vat to press. Enabling partial transfer lets pressing begin on the first mould while the vat continues draining, reducing the overall stage-to-stage delay.
How Schantt handles each challenge
1. Cleaning and changeover sequencing.
- Vat changeovers are not all equal: a same-class rinse takes 15 min, a standard cross-class clean takes 30 min, and an intensive clean after Semi-Hard takes 40–45 min. When running all three classes across six vats, the total cleaning time depends heavily on the production sequence. A planner sequencing by hand tends to underestimate the cumulative effect of unfavourable transitions.
- Schantt models directional changeover times per product-class pair on each machine. When you enter the per-pair durations — 15 min for fresh-to-fresh, 30 min for fresh-to-pasta-filata or fresh-to-semi-hard, and the longer durations out of semi-hard — the algorithm incorporates these times into its search for a sequence that minimises total production time. The resulting schedule clusters compatible classes together and avoids high-cleaning transitions where possible. Because Schantt applies changeover times per machine rather than per shared resource, the planner reviews the Gantt for any CIP skid overlap that could arise when multiple vats clean simultaneously.
2. Parallel vat assignment.
- With six vats and class-specific batch cycles ranging from 240 min (Fresh) to 390 min (Semi-Hard), assigning each job to a specific vat and deciding how to sequence the three classes across the vat hall is non-trivial. A manual approach often leaves some vats idle while others are overloaded, or sequences jobs in a way that creates bottlenecks downstream.
- Schantt treats each vat as an independent machine on the Vat Processing stage. When you configure the batch size and cycle duration per class on each vat, the algorithm considers all six vats as available parallel resources and assigns each job to the vat and position that reduces the overall makespan. The same logic applies to the four presses and four brine tanks. The result is balanced machine utilisation across the parallel stages, with the algorithm resolving assignment conflicts that would be tedious to manage by hand.
3. No-wait vat-to-press handoff.
- After vat processing, curd must reach the press within a narrow window — 30 min for Fresh, 10 min for Pasta-Filata, 60 min for Semi-Hard — or the batch quality deteriorates. This no-wait constraint couples the two stages tightly: a delay in vat emptying pushes pressing start past the acceptable window.
- Schantt handles this through two mechanisms. First, a 30 min transfer time on the Vat Processing to Pressing route models the expected handoff delay. Second, partial transfer is enabled on the vat-to-press routing for all three classes: pressing can begin on the first mould as curd drains, rather than waiting for the full vat to empty. This overlapping start reduces the effective delay and keeps the press cycle within the no-wait window for typical batch sizes. The planner verifies the handoff timing on the Gantt chart, since the constraint is approximated rather than hard-enforced.
4. Mixed batch-and-flow pipeline.
- The production line mixes two processing physics: pasteurisation runs as a continuous flow at 10,000 L/hr, vat processing runs as discrete 240–390 min batch cycles, pressing and brining are also batch stages, and packaging runs as a flow at 400–500 kg/hr. A delay or rate change at any stage propagates forward through the pipeline in different ways depending on the stage type.
- Schantt models each stage with its correct production type — flow for pasteurisation and packaging, batch for vat processing, pressing, and brining. Flow stages use throughput rates, and batch stages use cycle durations and batch sizes. The schedule simulation walks each job through its routing, converting material quantities to time for each stage type and chaining them with the defined transfer times. Downstream flow stages receive material at the rate the upstream stages supply it, and the Gantt shows where wait-for-material segments arise when a batch stage cannot feed the next flow stage fast enough.
5. Seasonal capacity swings.
- During the spring flush (March to May), raw milk supply increases, and the facility needs longer production hours and a sixth working day to process the additional volume. Manually adjusting every machine's availability week by week is error-prone and time-consuming.
- Schantt lets you define multiple calendars and switch between them for specific date ranges. The standard calendar (Monday to Friday, 06:00 to 22:00) covers most of the year. The high-season calendar (Monday to Saturday, 05:00 to 00:00) applies during March through May. On the schedule, you assign the appropriate calendar period, and the algorithm respects the extended hours and extra day for those weeks. The amount of additional capacity to add is the planner's decision — Schantt does not forecast the supply increase or recommend a calendar — but once the calendar is set, the schedule automatically uses the correct available hours.
What to model in Schantt
Five first-class entities make up the core of this scenario in Schantt.
| Entity | Count | Notes |
|---|---|---|
| Stage | 5 | Pasteurisation (flow), Vat Processing (batch), Pressing (batch), Brining (batch), Cutting & Packaging (flow) |
| Machine | 17 | 1 pasteuriser, 6 vats, 4 presses, 4 brine tanks, 2 packaging lines |
| Product Class | 3 | Fresh, Pasta-Filata, Semi-Hard — each with its own batch sizes, cycle durations, and dwell times |
| Product | 3 | Cream Cheese (Fresh), Fresh Mozzarella (Pasta-Filata), Gouda (Semi-Hard) — one representative per class |
| Calendar | 2 | Standard (Mon–Fri 06:00–22:00) and High-Season (Mon–Sat 05:00–00:00 for March–May) |
Sub-configuration objects — per-class routings, changeover times, transfer times, calendar exceptions, and machine downtimes — are set on the detail pages of these entities.
Step-by-step setup
1. Create the stages in order. Add five stages in the sequence they appear on the production floor: Pasteurisation (flow), Vat Processing (batch), Pressing (batch), Brining (batch), Cutting & Packaging (flow). On each stage's detail page, set the transfer time to the next stage — 0 min from pasteurisation to vat processing (direct piping), 30 min from vat processing to pressing, 15 min from pressing to brining, and 15 min from brining to cutting and packaging.
2. Add the machines to each stage. Assign the physical equipment to its stage:
- Pasteurisation: 1 machine — pasteuriser-1
- Vat Processing: 6 machines — vat-1 through vat-6
- Pressing: 4 machines — press-1 through press-4
- Brining: 4 machines — brine-tank-1 through brine-tank-4
- Cutting & Packaging: 2 machines — pack-1 (flow-wrap) and pack-2 (vacuum-pack)
3. Create the product classes and define their routings. Add three product classes — Fresh, Pasta-Filata, Semi-Hard — each with kg as the unit. On each class's detail page, define the routing stages in order. All three classes route through all five stages. For the Vat Processing to Pressing leg, enable partial transfer (allow partial transfer, quantity 1) on all three classes so pressing begins as the first mould fills, without waiting for the full vat to drain.
4. Add the products. Create one representative product per class: Cream Cheese (Fresh class), Fresh Mozzarella (Pasta-Filata class), Gouda (Semi-Hard class). Each product inherits its class's routing and processing parameters.
5. Set machine capacity parameters and changeovers. On each machine's detail page, configure:
- Batch stages (Vat Processing, Pressing, Brining): For each product class the machine handles, set the batch size and cycle duration — e.g. Fresh on any vat is 1,200 kg in 240 min; Semi-Hard on any vat is 1,000 kg in 390 min.
- Flow stages (Pasteurisation, Cutting & Packaging): Set the throughput rate — pasteuriser-1 at 10,000 L/hr for all classes, pack-1 at 500 kg/hr for Fresh, pack-2 at 400 kg/hr for Pasta-Filata and Semi-Hard.
- Changeovers: On Vat Processing machines, enter directional changeover times per product-class pair: 15 min for same-class transitions, 30 min for standard cross-class transitions, and 40–45 min for transitions out of Semi-Hard. Apply the same pattern on Pressing and Brining machines.
6. Configure calendars, exceptions, and downtimes. Create the Standard calendar (Monday to Friday, 06:00–22:00) and mark it as the default. Create the High-Season calendar (Monday to Saturday, 05:00–00:00). Add three calendar exceptions: New Year's Day (non-working), International Workers' Day (non-working), and the year-end shutdown (December 24 to 31, non-working). Set two recurring downtimes on pasteuriser-1 for milk receiving (06:00–07:00 and 14:00–15:00 daily) and one factory-wide downtime on all vats for the end-of-day cleaning block (21:00–00:00 daily).
For step-by-step instructions on configuring each of these in Schantt, see the Schantt documentation.
Common mistakes
1. Using a single blanket changeover time. Applying one cleaning duration for all transitions ignores the difference between a 15 min same-class rinse and a 45 min intensive clean out of Semi-Hard. The algorithm cannot favour low-cleaning sequences if all transitions use the same value — it treats every changeover equally and loses the opportunity to cluster compatible classes. Fix: Enter directional per-pair changeover times on each machine so the schedule reflects real cleaning durations and the algorithm can minimise total cleaning time by sequencing intelligently.
2. Modeling six vats as one aggregate machine. Representing the vat hall as a single batch machine with six times the capacity loses the parallelism that lets one vat clean while another processes. The schedule holds all jobs until the aggregate machine is free, creating artificial waits. Fix: Create six individual vat machines on the Vat Processing stage, each with the standard 1,200 kg (or 1,000 kg for Semi-Hard) batch size and class-specific cycle duration.
3. Disabling partial transfer on vat-to-press routing. Without partial transfer, pressing cannot start until the full vat batch has finished draining. The 30 min transfer time plus the full drain delay can push the press start past the no-wait window for Pasta-Filata (10 min) and Fresh (30 min). Fix: Enable partial transfer with quantity 1 on the vat-to-press routing for all three product classes so pressing overlaps with draining.
4. Treating pasteurisation as a batch stage. Setting a batch size and cycle duration on the pasteuriser misrepresents the continuous heat-treatment process and forces the schedule to treat incoming milk as discrete batches, which does not match the actual flow-through physics. Fix: Set the pasteuriser's production type to flow and enter its throughput rate (10,000 L/hr) instead of batch parameters.
5. Keeping a single calendar year-round. Running the standard calendar (66 hr/week) during the spring flush ignores the extra Saturday shift and extended hours available from March to May. The schedule shows jobs extending beyond available hours and flags capacity violations that the high-season calendar would resolve. Fix: Create the High-Season calendar and assign it as a schedule calendar period for the March–May window.
What a good schedule looks like
A well-optimised schedule for a cheese facility running three product classes across six vats, four presses, four brine tanks, and two packaging lines shows visible improvement over a manually sequenced plan. The scheduler can see the difference at a glance in the Gantt view.
Before (whiteboard heuristic):
- Inconsistent cleaning times: changeovers are applied uniformly regardless of transition, adding 30 min per switch even when a shorter rinse would suffice
- Uneven vat utilisation: some vats run back-to-back while others sit idle, because the assignment follows the planner's mental map rather than balancing load
- Pressing starts late: without partial transfer enabled, curd from each vat batch finishes draining before pressing begins, pushing the handoff past the no-wait window for tighter classes
- Surprise capacity violations during spring: the schedule uses standard working hours through March to May, and jobs spill past the 22:00 boundary without a high-season calendar in place
After (Schantt Auto mode):
- Cleaning time reduced by 60–90 min per day: the algorithm sequences jobs to favour same-class and low-cleaning transitions, reserving intensive cleans where unavoidable
- Balanced vat load: jobs are distributed across all six vats, with semi-hard batches (longer cycles) interleaved with shorter fresh batches so no machine idles while others queue
- Pressing begins sooner: partial transfer starts the first mould as curd drains, keeping the handoff within the per-class window and avoiding downstream delays
- Calendar-aware scheduling: the High-Season calendar activates for March through May, expanding available hours automatically and eliminating false capacity violations
Ready to schedule your own facility?
Try Schantt free — no credit card required. Go from spreadsheet to optimized Gantt chart in 60 minutes.
Try Schantt Free