Production Scheduling for Animal Feed

Learn how to model an animal feed mill in Schantt — from grinding and mixing through pelleting, cooling, crumbling, screening, and bagging — with per-class routing, sequence-dependent changeovers, and mixed batch/flow stages.

Animal feed mills face a scheduling challenge that combines divergent product routings, parallel machines with different throughputs, and medication-driven changeover rules that can consume hours of productive time each week. This guide shows how Schantt models a feed mill's full production line — from raw-material grinding through mixing, pelleting, cooling, crumbling, screening, and bagging — and how the scheduling algorithm handles per-class routing, sequence-dependent cleanouts, and mixed batch-and-flow stages.

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

Industry context

Animal feed production is a continuous-flow process with batch mixing at its centre. Raw grains and protein meals are ground to a target particle size on hammer mills, blended with micronutrients and additives in a batch mixer, then conditioned with steam at 80 to 85 degrees Celsius for around 90 seconds to soften the starch, pressed through a die into pellets, cooled by forced air, and optionally passed through a crumbler to break pellets into smaller particles before final screening and bagging. The variety of finished products — mash (unpelleted meal), pelleted feeds, and crumbles — introduces routing divergence that any scheduling system must respect, because a mash product skips five of the eight production stages while a crumble product uses every one.

Medication is a defining factor in feed scheduling. Around 40 percent of batches contain active pharmaceutical ingredients, and a medicated-to-non-medicated transition requires a thorough cleanout lasting 20 to 60 minutes across the mixing, conditioning, pelleting, and screening stages — the entire line where residues can accumulate. The reverse direction, non-medicated to medicated, requires only a short 5- to 10-minute flush because cross-contamination risk goes from lower to higher standard, not the other way. These asymmetric changeovers make order-dependent scheduling essential: clustering medicated runs reduces lost time, while alternating medicated and non-medicated batches multiplies it. The pelleting stage adds a further complication: switching between product classes usually requires a die change on the pellet mill, which adds 20 to 60 minutes regardless of medication status.

Green Valley Nutrition runs around 45 people at a 120-tonne-per-day facility, making 3 product classes across 8 production stages, scheduled by a single planning team. The mill produces approximately 80 SKUs across 7 product classes, with three representative routings — mash, pelleted, and crumble — modelled in this guide. Typical run lengths range from 1.5 to 6 hours, and the minimum economical run is about 2 tonnes. The standard shift runs Monday through Friday, 08:00 to 17:00.

Process overview

flowchart LR
    G["Grinding"] --> M["Mixing"]
    M --> C["Conditioning"]
    C --> P["Pelleting"]
    P --> K["Cooling"]
    K --> R["Crumbling"]
    R --> S["Screening"]
    S["Screening"] --> B["Bagging & Load-out"]
    M -->|Mash skips Conditioning, Pelleting, Cooling, Crumbling| S
    K -->|Pelleted skips Crumbling| S

Green Valley's eight-stage production line, showing the three divergent product routings — mash (skip to screening), pelleted (skip crumbling), and crumble (full route).

Mash products skip conditioning, pelleting, cooling, and crumbling, routing directly from mixing to screening. Pelleted products skip crumbling. Crumble products use all eight stages.

Scheduling challenges and how Schantt handles them

This guide assumes a weekly demand input of around 15 to 18 production runs, delivered as a rolling order book. If your feed mill is driven by make-to-stock inventory targets or a daily ship schedule, the same model applies — you supply the run list and Schantt sequences it against available capacity.

Schantt's scheduling algorithm minimises total production time, scheduling forward from a start date. For this scenario the practical planning horizon is one week. In Auto mode, the algorithm explores both job sequence and machine assignments simultaneously to find the shortest overall plan. In Semi-Auto mode, the planner locks the job order and the algorithm optimises machine assignment only, ideal when customer-order sequence is fixed.

What Schantt handles well

  • Multi-stage hybrid flowshop with divergent per-class routings — each product class follows its own path through shared stages, skipping the ones it does not need
  • Parallel-machine stages with assignment optimisation — the algorithm chooses which machine each job runs on at every stage to minimise total production time
  • Sequence-dependent directional changeover matrix — cleanout and setup times differ by direction and are applied automatically between consecutive jobs on the same machine
  • Mixed batch-and-flow pipeline with material starvation visibility — batch mixers and continuous-flow stages coexist in a single routing, with wait-material pauses shown where downstream stages outrun upstream supply
  • Calendar-aware working windows with exceptions and downtimes — shift patterns, holidays, overtime days, and planned maintenance are respected in timing and visible on the schedule
  • Post-pelleting cooling as a dedicated flow stage — cooling throughput is modelled as a separate stage matched to pellet mill capacity, so the schedule reflects the real bottleneck behaviour

How Schantt handles each challenge

1. Medication changeovers consuming productive capacity.

  • The mill runs around 7 medicated production runs per week, with 4 to 6 transitions from medicated to non-medicated products. Each medicated-to-non-medicated cleanout takes 20 to 60 minutes, consuming 1.5 to 4 hours of weekly capacity on Mixer 1 and the downstream stages that carry medication residues. The heat-and-moisture conditioning process traps residues more stubbornly than dry mixing, so a medicated-to-non-medicated transition on the conditioners also requires a 25-minute cleanout.
  • Schantt models changeover times as a directional matrix per machine. A medicated-to-non-medicated transition on Mixer 1 is set to 30 minutes, while the reverse non-medicated-to-medicated flush is only 8 minutes — the algorithm uses the correct duration depending on job order. In Auto mode, the scheduler clusters medicated runs to reduce the number of heavy cleanouts, grouping them so a single 30-minute transition serves several consecutive medicated batches rather than cleaning after every one. The planner also configures Mixer 1 as the only machine capable of handling medicated products on the mixing stage, ensuring medication integrity is enforced regardless of the schedule the algorithm produces.

2. Parallel pellet mills with different throughputs and die-change times.

  • Three pellet mills serve the pelleting stage: Pellet Mill 1 and Pellet Mill 2 each run at 6 tonnes per hour for pelleted products and 5.5 tonnes per hour for crumble, while Pellet Mill 3 (the utility mill) runs at 4 and 3.5 tonnes per hour respectively. Switching between product classes on a pellet mill requires a die change lasting 20 to 60 minutes depending on the machines and classes involved. Suboptimal machine assignment — putting a high-volume run on the utility mill, for example — can lose 10 to 15 percent of effective pelleting capacity.
  • Schantt assigns each production run to a specific pellet mill, respecting per-class throughput rates so a pelleted product scheduled on Pellet Mill 3 uses the correct 4-tonne-per-hour rate rather than a blanket figure. The changeover matrix captures the directional die-change time between product classes on each machine. In Auto mode, the algorithm explores machine assignments across all three pellet mills simultaneously, matching runs to the fastest capable machine and sequencing changeovers to minimise total production time. The planner sees the chosen assignment on each operation's tooltip and can group the Gantt by machine to review each pellet mill's load. Pellet mill throughput is set per product class as a fixed rate; real throughput varies with die specification, formulation moisture, and conditioning temperature, so the per-class rate is a planning baseline.

3. Seasonal demand shifts and cooling variability.

  • The mill faces a roughly 25 percent demand increase from September through November, driven by livestock feed requirements ahead of winter. During summer and high-humidity periods, the cooling stage needs 20 to 30 percent longer dwell time to bring pellet temperature down to bagging specification. The standard single-shift calendar provides 45 working hours per week, which may not be sufficient during peak season.
  • Schantt models cooling as a dedicated flow stage with its own throughput rate, set slightly above pellet mill capacity (6 to 6.5 tonnes per hour for the two coolers) so the schedule shows cooling as a realistic downstream step rather than an invisible gap. Seasonal capacity adjustments are handled through calendar exceptions: one planned exception extends working hours to 08:00 to 19:00 on a peak-season day, and the planner can create additional overtime or Saturday exceptions as needed. The decision of when and by how much to adjust capacity stays with the planner — Schantt applies the new calendar to timing automatically once the exception is configured. Cooling throughput is modelled as a fixed rate; in high-humidity environments, actual cooling time may extend beyond this rate, potentially shifting the bottleneck — validate the rate against local conditions.

What to model in Schantt

The table below lists the first-class entities that define the feed mill scenario in Schantt. Each entity is created as a top-level object; sub-configuration such as routings, changeovers, and transfer times is set on the entity's detail page.

Entity Count Notes
Stage 8 Grinding, Mixing, Conditioning, Pelleting, Cooling, Crumbling, Screening, Bagging & Load-out
Machine 15 2 hammermills, 2 mixers, 2 conditioners, 3 pellet mills, 2 coolers, 1 crumbler, 1 rotary sifter, 2 bagging lines
Product Class 3 Layer Mash, Broiler Starter Pelleted — Medicated, Swine Grower Crumble — Non-medicated
Product 3 One representative product per class
Calendar 1 Standard day shift: Monday to Friday 08:00 to 17:00

Step-by-step setup

1. Create the eight stages in order. Add Grinding (flow), Mixing (batch), Conditioning (flow), Pelleting (flow), Cooling (flow), Crumbling (flow), Screening (flow), and Bagging & Load-out (flow) in sequence. On each stage's detail page, set the transfer time to the next stage in the production line:

  • Grinding to Mixing: 2 minutes (pneumatic conveying)
  • Mixing to Conditioning: 3 minutes (drag conveyor)
  • Conditioning to Pelleting: 1 minute (gravity feed)
  • Pelleting to Cooling: 2 minutes (gravity chute)
  • Cooling to Crumbling: 3 minutes (drag conveyor)
  • Crumbling to Screening: 2 minutes (gravity chute)
  • Screening to Bagging: 2 minutes (drag conveyor)

Two skip-bridge transfer times are also needed for divergent routings:

  • Mixing to Screening: 5 minutes (for mash products skipping conditioning through crumbling)
  • Cooling to Screening: 4 minutes (for pelleted products skipping crumbling)

2. Add the 15 machines to their stages. Assign each machine to its stage:

  • Grinding: Hammermill A, Hammermill B
  • Mixing: Mixer 1 (medicated-capable), Mixer 2 (non-medicated only)
  • Conditioning: Conditioner 1, Conditioner 2
  • Pelleting: Pellet Mill 1, Pellet Mill 2, Pellet Mill 3 (utility)
  • Cooling: Cooler 1, Cooler 2
  • Crumbling: Crumbler
  • Screening: Rotary Sifter
  • Bagging: Bagging Line 1, Bagging Line 2

3. Create the three product classes and define their routings. For each class, select the stages it uses in order and mark stages it skips:

  • Layer Mash: Grinding, Mixing, Screening, Bagging — skips Conditioning, Pelleting, Cooling, and Crumbling
  • Broiler Starter Pelleted — Medicated: Grinding, Mixing, Conditioning, Pelleting, Cooling, Screening, Bagging — skips Crumbling
  • Swine Grower Crumble — Non-medicated: All eight stages — full route

4. Add one product per product class. Create a single representative product for each class. The products inherit their parent class's routing, so no per-product routing setup is needed.

  • Layer Mash — Non-medicated
  • Broiler Starter Pelleted — Medicated
  • Swine Grower Crumble — Non-medicated

5. Set machine capacity parameters and changeovers. On each machine's detail page, configure the parameters for every product class the machine handles:

  • Mixing (batch stages): Both mixers use a batch cycle of 4 minutes and a batch capacity of 2,000 kg per cycle. Mixer 1 is configured as the only capable machine for the medicated product class (Broiler Starter Pelleted); Mixer 2 is restricted to non-medicated classes only. This medication constraint is enforced through machine-specific routing — the medicated class's routing on the mixing stage lists only Mixer 1 as available.

  • Flow-stage throughputs: Configure each machine's line speed per product class. Key values include:

  • Hammer mills: 4.5 tonnes/hour for mash, 3.5 for pelleted, 4.0 for crumble
  • Pellet mills: 6.0 tonnes/hour for pelleted (PM-1, PM-2), 4.0 (PM-3); 5.5 for crumble (PM-1, PM-2), 3.5 (PM-3)
  • Coolers: 6.5 tonnes/hour for pelleted, 6.0 for crumble
  • Conditioners: 6.0 tonnes/hour for pelleted, 5.5 for crumble
  • Rotary sifter: 12.0 tonnes/hour for mash, 7.0 for pelleted, 6.0 for crumble
  • Bagging lines: 15.0 tonnes/hour for mash, 12.0 for pelleted and crumble
  • Crumbler: 5.0 tonnes/hour for crumble

  • Changeovers: Enter directional changeover times for each machine shared by two or more product classes. The asymmetric cleanouts are captured as separate entries — for example, medicated-to-non-medicated on Mixer 1 is 30 minutes, while non-medicated-to-medicated is 8 minutes. Include all changeover pairs on the hammer mills (screen changes, 10 to 20 minutes), conditioning (25 minutes for medicated-to-non-medicated), pelleting (die changes, 20 to 35 minutes), cooling (10 minutes), screening (5 to 25 minutes), and bagging (5 to 10 minutes).

6. Configure the calendar, exceptions, and downtimes. Use the standard day shift as the sole calendar. Then add:

  • Calendar exceptions (4): New Year's Day (plant closed), International Workers' Day (closed), 24 December (year-end shutdown start, closed), and 15 September (harvest overtime, 08:00 to 19:00)
  • Machine downtimes (3): Annual plant-wide maintenance shutdown (4 to 17 August), bi-annual deep clean (15 March), and bi-annual deep clean (15 September)

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 instead of per-pair directional values. Asymmetric cleanout durations — 30 minutes for a medicated-to-non-medicated transition versus 8 minutes for the reverse — are common in feed mills. A single average changeover time causes the schedule to either overestimate or underestimate every transition, producing a plan that does not match floor reality. Fix: Enter each directional pair separately on the machine's changeover configuration. The algorithm uses the correct duration for the actual transition direction.

2. Defining one product class that covers divergent routings. Mash products skip five stages, while crumble products use all eight. A single class covering both forces the algorithm to plan operations for stages that the product never actually passes through, creating phantom Gantt rows and incorrect timing. Fix: Create separate product classes for mash, pelleted, and crumble, each with its own staged routing that skips only the stages the class actually bypasses.

3. Forgetting to set transfer-time bridges for skip-routings. When a product class skips multiple stages — for example, mash bypasses conditioning through crumbling — the material still moves from mixing to screening with a measurable handoff time. Without a skip-bridge transfer time, the schedule treats the jump as instantaneous. Fix: Add a transfer time from the last stage before the skipped span (mixing) directly to the first stage after it (screening), using the actual drag-conveyor duration of 5 minutes.

4. Not restricting Mixer 1 for medicated products. If both mixers are available for medicated products, the algorithm may assign a medicated batch to Mixer 2, which is not set up for drug-safe operation. Fix: On the medicated product class's routing for the mixing stage, restrict capable machines to Mixer 1 only. Non-medicated classes keep both mixers available.

5. Setting pellet mill throughput without per-class differentiation. Using a single throughput for all product classes on a pellet mill ignores real die and formulation differences — a crumble product runs slower than a pelleted product on the same machine. Fix: Enter the per-class throughput for each pellet mill. Pellet Mill 1 runs pelleted at 6 tonnes/hour and crumble at 5.5 tonnes/hour; this difference affects job duration and bottleneck detection.

What a good schedule looks like

A well-constructed feed mill schedule aligns three competing goals: minimising changeover time, matching runs to the right machines, and respecting medication constraints without manual tracking.

Before (manual scheduling): Planners spend hours each week sequencing orders to reduce cleanout transitions between medicated and non-medicated runs. Despite this effort, 1.5 to 4 hours of weekly capacity are lost to medication-related changeovers, four to six transitions occur per week, and suboptimal pellet mill assignment silently loses 10 to 15 percent of effective pelleting capacity. The schedule is built by hand in a spreadsheet, with changeover estimates averaged across all transitions and machine assignment done by rule of thumb. Cooling dwell time is treated as a rough buffer rather than a timed stage.

After (Schantt Auto mode): The algorithm sequences jobs to cluster medicated runs, reducing the number of heavy cleanout transitions across the week. Instead of alternating medicated and non-medicated batches — which would trigger a 30-minute cleanout on Mixer 1 plus downstream cleanouts on every transition — the schedule groups the week's 7 medicated runs together, sandwiching them between a single entry cleanout and a single exit cleanout. Changeover time is applied automatically per direction: a medicated-to-non-medicated cleanout on Mixer 1 takes 30 minutes in the schedule, not the average, while a non-medicated-to-medicated flush is the correct 8 minutes. Each of the 15 to 18 weekly runs is assigned to the fastest capable machine at every stage — pellet mill assignments reflect per-class throughput so that high-volume pelleted runs land on the 6-tonne-per-hour mills rather than the utility mill, and the algorithm accounts for die-change time when sequencing across the three pellet mills. Cooling appears as a timed flow stage on the Gantt with its own throughput rate, making the post-pelleting bottleneck visible rather than treating dwell time as a rough buffer. Calendar exceptions automatically adjust timing for seasonal overtime or planned shutdowns. The planner reviews the optimised schedule in a single Gantt view, makes manual adjustments as customer priorities require, and publishes with confidence that medication constraints, changeover durations, and machine assignments are enforced by the model — not tracked on a whiteboard or guessed in a spreadsheet.

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