Production Scheduling for Dry Pet Food

Dry pet food production is a hybrid flowshop: batch mixing, flow extrusion, batch coating, and flow packaging across parallel machines. This guide shows how to model a 7-stage kibble line with 11 machines, 3 product classes, and sequence-dependent changeovers in Schantt.

This guide is written for production planners and operations managers at dry pet food facilities who already know their lines and want to set up those lines in Schantt — modelling every stage, machine, product class, and changeover to produce realistic, optimisable schedules. You will learn how to configure a complete dry pet food production line, what the scheduling algorithm can and cannot do for you, and how to avoid the most common configuration pitfalls.

This guide follows a fictional composite company built from industry research on dry pet food; all names, parameters, and figures are illustrative.

Industry context

Dry pet food is produced through a continuous thermal-mechanical process known as extrusion cooking, where dry and wet ingredients are mixed, cooked under heat and pressure, shaped through a die, dried, and coated with liquid fats or flavours before packaging. The production line is a classic hybrid flowshop — some stages run discrete batches, others run continuous flow — and most stages operate several machines in parallel, which makes scheduling a combinatorial problem: the planner must decide not only which product to run in which sequence, but also which machine at each stage should handle each job.

A typical mid-size dry pet food facility produces several dozen SKUs drawn from a smaller number of product classes, where each class shares a common recipe framework and production route. The most common source of routing divergence is the coating stage: some products receive a liquid fat or flavour coating after drying, while uncoated products bypass the coating drums entirely. This single difference creates two distinct material flows through the plant, and the schedule must handle both simultaneously without wasting capacity on the shared upstream and downstream stages.

NutriPaw Pet Foods runs 120 people at an 8,000 m² facility, producing 3 product classes — Chicken Adult Coated, Chicken Adult Uncoated, and Salmon Adult Coated — across 7 production stages with 11 machines, managed by a planning team of 3.

Process overview

flowchart LR
    M["Mixing<br/>(batch, 1 machine)"]
    PC["Pre-conditioning<br/>(flow, 1 machine)"]
    E["Extrusion<br/>(flow, 2 machines)"]
    D["Drying<br/>(flow, 2 machines, 20-30 min dwell)"]
    C["Coating<br/>(batch, 2 machines)"]
    CL["Cooling<br/>(flow, 1 machine)"]
    P["Packaging<br/>(flow, 2 machines)"]
    M --> PC --> E --> D --> C --> CL --> P

Dry pet food follows a linear hybrid flowshop from mixing through packaging, with parallel machines at the extrusion, drying, coating, and packaging stages.

Skip-routing note: The Chicken Adult Uncoated product class skips the coating stage — material transfers via a bridge conveyor directly from drying to cooling (3-minute transfer time).

Scheduling challenges and how Schantt handles them

The schedules in this guide are driven by a demand plan — a list of production orders, each specifying a product, a quantity in kilograms, and a requested date. (If your plant is driven by inventory targets rather than customer orders, you can still use the same approach: convert your target fill quantities into production orders.) Schantt's scheduling algorithm schedules forward from a start date and minimises total production time — the wall-clock interval from the first operation's start to the last operation's finish — by finding good sequences and machine assignments. For a typical weekly horizon of 5 to 7 days, you have two optimisation modes: Auto mode (the algorithm reorders jobs and assigns machines simultaneously to minimise total production time) and Semi-Auto mode (you fix the job sequence and the algorithm optimises machine assignments within that order). Auto mode is the right starting point for new setups; Semi-Auto is useful when you have a preferred sequence — for example, grouping products by protein type — and want the algorithm to handle the rest.

What Schantt handles well

  • Multi-stage routing — configure a fixed forward sequence of stages (mixing, pre-conditioning, extrusion, drying, coating, cooling, packaging) with per-class routing so each recipe passes through exactly the stages its production path requires, plus transfer times that chain each downstream stage to begin only after material arrives.

  • Parallel machines — model stages with multiple interchangeable machines (2 extruders, 2 dryers, 2 coaters, 2 packaging lines) and let Auto or Semi-Auto mode explore the machine assignment that minimises total production time.

  • Mixed batch-and-flow pipelines — type each stage as batch (mixing, coating) or flow (extrusion, drying, cooling, packaging) and run both kinds back-to-back in the same route, with the simulation feeding downstream stages from upstream completions.

  • Changeover optimisation — capture directional, per-pair changeover durations on the extruder (35 minutes same-protein, 60–90 minutes cross-protein) and coating drum (15 minutes), and let the algorithm reorder jobs to find a lower-changeover sequence in Auto mode, or optimise machine assignments within your fixed sequence in Semi-Auto mode.

  • Shift-aware calendars — define separate weekly work patterns for the extrusion train (24 hours a day, 5 days a week, three shifts) and packaging lines (6 days a week, two shifts), with machine-level calendar overrides so the schedule respects that not all stages are available at all times.

  • Calendar exceptions and downtimes — model planned shutdowns (New Year's Day, International Workers' Day, year-end closure), weekly extruder sanitation, quarterly screw changes, and dryer belt servicing as machine downtimes that the scheduling algorithm routes work around.

How Schantt handles each challenge

1. Extrusion changeovers drive sequence-dependent time penalties.

  • Every extruder that switches product classes incurs a cleaning and purge period. A same-protein changeover between Chicken Adult Coated and Chicken Adult Uncoated takes 35 minutes, while a cross-protein switch from Chicken Adult Coated to Salmon Adult Coated takes 60 minutes and the reverse direction (salmon to chicken) takes 90 minutes — the salmon oil residue is more persistent and requires a longer cleanout. On two extruders running multiple class changes per week, these asymmetrical durations compound quickly.

  • Schantt captures each directional per-pair changeover on the Machine detail page as a matrix of from-class to to-class durations. In Auto mode the scheduling algorithm reorders the job list to cluster similar product classes on each extruder, reducing the number of long cross-protein changeovers. The changeover segment appears as its own labelled bar on the Gantt ahead of the processing bar, so the planner sees the time penalty for every switch at a glance. Semi-Auto mode keeps the planned sequence fixed but still moves jobs between the two extruders to minimise changeover time within that order.

2. Drying dwell creates a multi-hour pipeline that decouples extrusion from downstream stages.

  • Belt dryers hold kibble for 20 to 30 minutes at temperature, which means material entering the dryer does not reach the coating or cooling stage for half an hour or more. This pipeline delay is real and varies by product: the salmon-based product runs at a lower throughput (3,000 kg/h per dryer versus 3,400 kg/h for chicken) because the higher fat content inhibits moisture evaporation, extending the effective residence time.

  • Schantt models the dryer as a flow stage with a per-class throughput rate. The throughput captures the effective capacity of the belt dryer for each product class — the scheduling algorithm schedules the next downstream stage (coating or cooling) to begin only after the dryer has had time to advance the material through its belt at the configured rate. While this models the capacity effect rather than the explicit residence clock, the resulting timing is realistic at schedule level because the flow-stage duration equals the volume divided by the throughput, which approximates the combined effect of belt speed, bed depth, and dwell.

3. Coating transitions between fat-based and oil-based recipes require a cleaning cycle.

  • Switching the vacuum coater from a chicken-fat coating to a salmon-oil coating (or back) requires a 15-minute clean-in-place flush between batches to avoid flavour carryover. The coating stage runs as a batch process — 3,000 kg per batch, 6-minute cycle time — so the planner must account for both the batch cycles and the transition times between them.

  • Schantt models the coating drum as a batch stage with a cycle duration and batch size. The changeover times between product classes that use the coating stage (Chicken Adult Coated and Salmon Adult Coated) are set to 15 minutes in both directions, and the scheduling algorithm inserts these transitions between batches on the same machine automatically. The Gantt shows each coating operation as a batch bar preceded by its changeover segment, and the total production time reflects the sum of batch cycles and transitions.

4. Packaging operates on a different calendar and with different throughput rates than extrusion.

  • The two packaging lines — a small-bag VFFS line running at 1,500 kg/h and a large-bag pre-made line at 3,500 kg/h — operate on a 6-day, two-shift schedule (Monday to Saturday, 06:00 to 22:00), while the extrusion train runs 24 hours a day, 5 days a week (three shifts, Monday to Friday). A 15-tonne surge bin between cooling and packaging provides decoupling, but its finite capacity means the schedule must keep packaging from falling too far behind or running too far ahead of the upstream line.

  • Schantt applies the packaging calendar as a machine-level override on each packaging line so that the scheduling algorithm only schedules packaging operations within the 06:00–22:00 working window on each available day. The extruder, dryer, and cooling stages follow the 24/5 default calendar. Because the scheduling algorithm chains downstream operations from upstream completions plus transfer times (5 minutes from cooling to packaging via the surge bin), the packaging lines begin work only when material is available within their working hours. The calendar difference means packaging naturally builds a bank of material during the shared Monday–Friday window and works through that bank on Saturday when extrusion is idle — approximating the decoupling effect of the surge bin without modelling the bin's fill level directly.

5. Two different shift patterns and planned downtime events must be reconciled in a single schedule.

  • The extrusion train runs 3 shifts on a 24/5 calendar, while packaging runs 2 shifts on a 6-day calendar. On top of this, the plant closes for New Year's Day, International Workers' Day (1 May), and a year-end shutdown from 24 to 26 December, plus 31 December and 2 January. Weekly extruder sanitation on both twin-screw machines takes a full 12-hour day, and quarterly screw replacements and annual dryer belt servicing add further downtime.

  • Schantt models every calendar exception as a team-wide date override that makes the affected day non-working for all stages. Machine downtimes — sanitation, screw changes, belt servicing — are modelled as time windows on the specific machine; the scheduling algorithm schedules no work on that machine during the window and shifts affected jobs to the other extruder or dryer if one is available. The resulting schedule respects the overlapping working hours of extrusion and packaging, places weekend and holiday breaks correctly, and routes around planned maintenance without manual blocking.

What to model in Schantt

The following five entities form the top-level structure of your dry pet food model. Every count below is drawn directly from this guide's dataset.

Entity Count Notes
Stage 7 Mixing, Pre-conditioning, Extrusion, Drying, Coating, Cooling, Packaging
Machine 11 1 ribbon mixer, 1 steam pre-conditioner, 2 twin-screw extruders, 2 belt dryers, 2 vacuum coaters, 1 counterflow cooler, 2 packaging lines
Product Class 3 Chicken Adult Coated, Chicken Adult Uncoated, Salmon Adult Coated
Product 3 One representative SKU per class
Calendar 2 Extrusion Train (24/5, 3 shifts) and Packaging Lines (6-day, 2 shifts)

Step-by-step setup

1. Create the seven stages in order. Set up the stages — Mixing, Pre-conditioning, Extrusion, Drying, Coating, Cooling, Packaging — in the position order they appear on the line. On each stage's detail page, configure the transfer time from the previous stage to this one. The transfer times between consecutive stages are as follows:

  • Mixing to Pre-conditioning: 2 minutes (conveyor)
  • Pre-conditioning to Extrusion: 1 minute (direct drop)
  • Extrusion to Drying: 3 minutes (conveyor spread)
  • Drying to Coating: 3 minutes (conveyor); also set the bridge transfer from Drying to Cooling at 3 minutes for the uncoated class that skips coating
  • Coating to Cooling: 2 minutes (conveyor)
  • Cooling to Packaging: 5 minutes (via surge bin)

2. Add the machines to each stage. Place each of the 11 machines under its parent stage. The two extruders (Twin-Screw Extruder A and Twin-Screw Extruder B) belong to Extrusion, the two belt dryers to Drying, the two vacuum coaters to Coating, and the two packaging lines to Packaging — one machine per stage for the others.

3. Create the product classes and define their routings. Create three product classes — Chicken Adult Coated, Chicken Adult Uncoated, and Salmon Adult Coated. On each class's routing page, select the stages that class requires. All three classes route through Mixing, Pre-conditioning, Extrusion, Drying, Cooling, and Packaging. The two coated classes also route through Coating; Chicken Adult Uncoated does not — the skip-routing bridge (Drying to Cooling, 3 minutes) is already configured on the Drying stage's transfer times. Leave the partial-transfer toggle off for all legs; this guide's scenario uses full-batch handoffs only.

4. Add one representative product per class. Create three products — Chicken Adult Complete 10 kg (class: Chicken Adult Coated), Chicken Adult Natural 10 kg (class: Chicken Adult Uncoated), and Salmon & Fish Oil Premium 10 kg (class: Salmon Adult Coated). Each product inherits its class routing automatically.

5. Set machine capacity parameters and changeover times. Each machine must be configured with the rates or cycles that define how fast it processes each product class. For batch stages (Mixing, Coating), set the batch size and cycle duration. For flow stages (Pre-conditioning, Extrusion, Drying, Cooling, Packaging), set the throughput rate per hour. Then configure the per-pair changeover durations on each machine that handles multiple product classes.

  • Mixing batch parameters (Ribbon Mixer): 2,000 kg batch, 5-minute cycle — identical for all three classes
  • Coating batch parameters (Vacuum Coater A and B): 3,000 kg batch, 6-minute cycle — for the two coated classes only
  • Extrusion throughput (both extruders): 3,500 kg/h for both chicken classes; 3,000 kg/h for Salmon Adult Coated
  • Drying throughput (both dryers): 3,400 kg/h for both chicken classes; 3,000 kg/h for Salmon Adult Coated
  • Cooling throughput: 3,400 kg/h for both chicken classes; 3,100 kg/h for Salmon Adult Coated
  • Packaging throughput (Line 1, small-bag VFFS): 1,500 kg/h for all classes
  • Packaging throughput (Line 2, large-bag pre-made): 3,500 kg/h for all classes
  • Pre-conditioning throughput: 3,500 kg/h for both chicken classes; 3,000 kg/h for Salmon Adult Coated
  • Extruder changeovers: same-protein (chicken coated to chicken uncoated and reverse) 35 minutes; chicken to salmon 60 minutes; salmon to chicken 90 minutes; same-class 0 minutes; configure these on both extruders
  • Coater changeovers: chicken to salmon and salmon to chicken 15 minutes; same-class 0 minutes; configure on both coaters
  • Packaging changeovers: all cross-class transitions 10 minutes; same-class 0 minutes; configure on both packaging lines

6. Configure calendars, exceptions, and downtimes (optional, last). Create two calendars: the Extrusion Train (default, 24 hours a day, Monday through Friday) and the Packaging Lines override (06:00 to 22:00, Monday through Saturday, assigned to both packaging lines). Add the team-wide calendar exceptions (New Year's Day, International Workers' Day, year-end shutdown) and the machine downtimes (weekly sanitation on both extruders, quarterly screw change on Extruder A, annual dryer belt servicing on Dryer A).

For step-by-step instructions on configuring each of these in Schantt, see the Schantt documentation.

Common mistakes

1. One blanket changeover time for all extruder transitions. Setting a single changeover duration for every product-class pair on the extruder ignores the real difference between same-protein switches (35 minutes) and cross-protein switches (60 to 90 minutes). The scheduling algorithm cannot optimise around what it does not see: with one flat value, every switch looks the same and there is no incentive to cluster runs by protein type. Fix: Enter each directional pair separately on the Machine changeover page — the full 3-by-3 matrix for each extruder, including zero-duration same-class entries — so the algorithm can weigh the true cost of each transition.

2. Routing the uncoated product class through the coating stage with zero processing time. If the uncoated class passes through the coating stage with a zero-duration or zero-quantity operation, the algorithm still schedules a machine reservation at that stage and shifts downstream timing by the transfer time into coating plus the wait for the next available coater. The uncoated product's schedule drifts artificially late. Fix: Remove Coating from the Chicken Adult Uncoated routing entirely and rely on the drying-to-cooling bridge transfer time (3 minutes) to carry the material forward.

3. Modelling the coating stage as flow instead of batch. A continuous coating drum that processes kibble at a steady rate (over 8 t/hr on some industrial lines) is a flow stage, but the vacuum batch coater typical of mid-size plants operates on discrete cycles — 3,000 kg per batch, 6-minute cycle. Setting it as flow gives the wrong duration formula (quantity × unit interval) and produces start times that do not match the actual rhythm of fill, coat, and discharge. Fix: Set the coating stage to batch and enter the batch size and cycle duration on each coater's detail page.

4. Using the same calendar for all stages. The extrusion train runs 24 hours a day, 5 days a week, while the packaging lines run 2 shifts, 6 days a week. Applying a single default calendar to all stages means the algorithm schedules packaging during hours when no packaging crew is on the floor, and the schedule shows unrealistic overnight and early-morning packaging operations. Fix: Create a separate Packaging Lines calendar (06:00–22:00, Monday–Saturday) and assign it as a machine-level override on both packaging lines, leaving the rest of the plant on the 24/5 default.

What a good schedule looks like

A well-configured Schantt schedule shows realistic operation timing, clean product grouping on shared machines, and no conflicts between stages running on different calendars. The schedule and the Gantt tell the same story: each job flows predictably through the line, and the planner can see — at a glance — where the next constraint will hit.

Before (manual or spreadsheet-based planning): The planning team sequences jobs by hand, grouping products loosely by protein type but lacking visibility into how extruder changeovers compound across a multi-day horizon. Coating and packaging slots are scheduled sequentially with long gaps between stages because the true downstream availability is hard to calculate by hand. The schedule is typically conservative — deliberately leaving capacity on the table to avoid surprises.

  • Extruder changeovers are estimated at a flat 60 minutes regardless of direction, making the schedule either optimistic (if the real switch is 90 minutes) or wasteful (if it is 35).
  • The uncoated class is pencilled in as "coating — skip" without adjusting the downstream timing, so cooling and packaging start times drift.
  • The packaging calendar is approximated as a daily reduction in available hours rather than modelled as explicit 06:00–22:00 windows, so the last packaging operation of the day is scheduled into the middle of the night.
  • Planned downtime (sanitation, screw changes) is entered as a note on a paper sheet or spreadsheet row but not reflected in the timing.

After (Schantt Semi-Auto mode): The planner enters the job list in the preferred production order — for example, all chicken products first, then salmon — and runs Semi-Auto optimisation. The algorithm assigns each job to the best machine at each stage while respecting the fixed sequence, the per-class throughput rates, the directional changeover matrix, the two calendars, and the planned downtimes.

  • Extruder changeovers are visible as colour-coded bars on the Gantt: green for 35-minute same-protein switches, amber for 60-minute cross-protein, red for 90-minute reverse-direction. The planner can see at a glance whether the intended sequence avoids long salmon-to-chicken switches.
  • The Chicken Adult Uncoated class flows through extrusion and drying, then skips directly to cooling with no coating operation — the timing is tight, as the bridge transfer preserves the real conveyor delay.
  • Packaging operations are confined to the 06:00–22:00 window, with the last operation of each day ending naturally before the shift ends. The Saturday shift is visible as a compressed day handling the residual material from the extrusion train's Friday run.
  • Weekly sanitation and quarterly maintenance are blocked out on the relevant machines, and the algorithm routes affected jobs to the parallel machine (or schedules around the downtime on single-machine stages) automatically.
  • Total production time is shorter than the manual baseline because the algorithm assigns jobs across parallel machines intelligently — the two extruders, two dryers, two coaters, and two packaging lines are used in parallel where the routing allows, without the planner having to calculate each machine's load by hand.

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