Skip to main content
IoTFlows Logo
IoTFlows Logo
Shopping Cart

Production scheduling on real run rates

Schedule from the rate each machine really runs, not its ideal cycle time. Turn measured OEE factors into job durations, pick a rate and load machines safely.

Ulises Carrasco, Co-founder and COO

9 min read

Updated

You build a schedule that matches what the machines actually do by sizing every job from the rate each machine has measured on that operation, not from its ideal cycle time or the ERP routing standard. Divide the ideal cycle time by the availability, performance and quality you measured, plan with the median of recent runs, load each machine below its planned hours, and correct the rates every week from what was logged.

This guide is for plant managers and planners whose schedule says Tuesday while the floor delivers Thursday. It works one job through by hand, then shows which rate to plan with and how to keep the rates current.

Key takeaways

  • Size each job from the effective cycle time a machine has measured, not from its ideal cycle time.
  • Effective cycle time is the ideal cycle time divided by availability, performance and quality for that operation on that machine.
  • Plan with the median of recent runs, and use a slower percentile when the due date is a customer promise.
  • Load each machine below its planned hours, because queue time climbs steeply as the load approaches 100%.
  • Compare logged run time with planned time every week, and update a rate once it drifts more than 10%.

Why a schedule drifts from the floor#

A schedule drifts because it plans each job at a speed the machine never holds for a whole run. Three different numbers carry the name cycle time, and only one of them includes the stops, slow cycles and scrap that every real run contains.

NumberWhere it comes fromWhat it leaves outUse it for
Ideal cycle timeThe best sustainable cycleEvery stop, slow cycle and scrapOEE performance, never durations
Routing standardA time study or the first quoteDrift since it was writtenQuoting and costing
Effective cycle timeLogged time and good partsNothing those runs went throughDurations and due dates
Measure effective cycle time per machine and operation, from the runs that machine logged.

Definition

Effective cycle time is the planned production time a run took divided by the good parts the run made. Effective cycle time equals the ideal cycle time divided by the product of availability, performance and quality, so every loss the machine had on that operation is inside the figure.

The ideal cycle time is the best cycle the operation sustains in good conditions, the figure you enter on the operation, as setting the ideal cycle time explains. The glossary entry for cycle time separates it from the actual cycle time measured on the machine. For example, a bracket operation on a Haas VF-2 with a 90-second ideal cycle time can still average 135 seconds per good part once stops, short pauses and scrap are counted.

The Lean Enterprise Institute's effective machine cycle time adds load and unload time to the machine cycle, plus the changeover time divided by the pieces between changeovers. A 20-second cycle with 30 seconds of load and unload and a 30-second changeover every 30 pieces is 51 seconds.[3] Effective cycle time extends the same idea to every stop, slow cycle and scrapped part.

Routing standards drift for a different reason. They belong to the business planning layer: ISA-95 describes Level 4 as all the activities of running a business, ERP included, and places manufacturing execution systems at Level 3.[2] A standard written at Level 4 for a quote is rarely revisited when the machine, the fixture or the operator changes.

Turn a measured rate into a job duration#

A job's duration is its setup time plus the good quantity multiplied by the effective cycle time. Measure the three OEE factors for the operation on the machine that will run it, as the OEE factor calculations describe, then divide them out of the ideal cycle time.

Effective cycle time =

(Ideal cycle time)
÷
(Availability × performance × quality)

Job duration =

Setup time + good quantity × effective cycle time

The quality factor turns the order quantity into the quantity you must start. The availability and performance factors stretch the run from ideal to real.

Worked example

1,200 brackets on a Haas VF-2, operation OP20

  • Order: 1,200 good parts. Ideal cycle time: 90 s. Setup: 1.5 h, measured on its own.
  • Measured on this operation over recent runs: availability 80%, performance 85%, quality 98%.
  • Parts to start: 1,200 ÷ 0.98 = 1,224.5, so 1,225.
  • Run time at the ideal rate: 1,225 × 90 s = 110,250 s = 30.625 h.
  • Real run time: 30.625 h ÷ (0.80 × 0.85) = 30.625 ÷ 0.68 = 45.04 h.
  • The naive plan is 1.5 h + 1,200 × 90 s = 1.5 h + 30.0 h = 31.5 h. At 15 planned hours a day from Monday, that finishes early Wednesday; the real job runs into Thursday.
Job duration = 1.5 h + 45.04 h = 46.5 h, 47.7% longer than the 31.5 h naive plan

The shortcut gives the same answer within rounding. Effective cycle time is 90 ÷ (0.80 × 0.85 × 0.98) = 90 ÷ 0.6664 = 135.05 s, and 1,200 × 135.05 s = 45.02 h of run time.

Which rate should you plan with?#

Plan with the median effective cycle time of recent runs of the same operation on the same machine. One run is noisy, the best run is a target rather than a forecast, and a plant-wide OEE hides the slow machine and part pairs.

For example, the last eight runs of OP20 on the Haas VF-2 took 118, 124, 129, 133, 137, 142, 150 and 171 seconds per good part. The median is (133 + 137) ÷ 2 = 135 s. The 80th percentile, the seventh of the eight, is 150 s.

The same job planned at four rates: only the ideal and the best run beat a Wednesday due date. Sample data.
RateDuration with setupUse it when
Ideal cycle time, 90 s31.5 hNever, for a duration
Best run, 118 s40.8 hSetting an improvement target
Median of recent runs, 135 s46.5 hDefault for every job
80th percentile, 150 s51.5 hThe date is a customer promise

Keep one rate per machine and operation pair. If night shift runs OP20 at 150 s and day shift at 128 s, keep a rate for each shift, or plan with the slower one on any job that spans both.

Load each machine below its planned hours#

Load each machine below its planned hours, even when every duration is right. Run times vary, jobs arrive unevenly, and a machine scheduled to 100% has no room to absorb either, so the queue in front of it grows.

Definition

Schedule load is the planned work on a machine in a period divided by the hours the machine is scheduled to be available in that period, with every job sized at its effective cycle time.

Queueing theory gives the shape of the problem. Kingman's approximation for a single machine estimates the average wait in queue as load ÷ (1 − load), multiplied by a variability term and by the average job time.[1] When the gaps between job arrivals and the job times each have a coefficient of variation of 1, as in a purely random process, the variability term is 1.

Average wait in queue rises slowly up to 85% load, then more than triples by 95%.

Worked example

One machine, 75 planned hours a week, 8-hour average job

  • At 70% load, 52.5 h of work: wait ≈ (0.70 ÷ 0.30) × 8 h = 18.7 h.
  • At 85% load, 63.75 h of work: wait ≈ (0.85 ÷ 0.15) × 8 h = 45.3 h.
  • At 95% load, 71.25 h of work: wait ≈ (0.95 ÷ 0.05) × 8 h = 152.0 h.
Adding 7.5 h of work a week, from 85% to 95% load, adds 106.7 h to the average wait

Load the bottleneck to about 85% of its planned hours and keep other machines lower, then adjust from your own lead times. The ideal-rate trap compounds here. A schedule built on ideal cycle times that looks 85% loaded is really 0.85 × (135 ÷ 90) = 127.5% loaded on the machine in the example above.

Spare hours are not free either. An idle hour still carries the machine's fixed costs, so check what an idle machine costs before you add a shift or a machine to protect the margin.

Check the plan against the floor every week#

A rate is only right until the process changes. A new insert grade, a second fixture or a new operator moves the effective cycle time, so check it every week against what the machine logged.

  1. Collect each finished task

    Take every task that finished last week: its start, its end, its setup time and its good parts. Use machine data where you have it, because a hand log rounds a 7-minute stop to zero and the stop drops out of availability.

  2. Compute each task's effective cycle time

    Divide the planned production time the task took, setup excluded, by the good parts. A task that took 49.5 h for 1,200 good parts ran at 148.5 s per part.

  3. Compare it with the planned rate

    Divide actual by planned for each machine and operation pair. A ratio of 1.10 means the job took 10% longer than the schedule allowed.

  4. Update rates that drift

    When the median of the last five runs sits more than 10% from the planned rate, replace the rate. For example, five runs of OP20 at 148, 152, 139, 155 and 150 s have a median of 150 s, 11.1% above 135 s, so OP20 moves to 150 s.

  5. Track schedule attainment

    Divide the jobs finished by their due date by the jobs due in the week. For example, 34 of 40 jobs on time is 85.0%. Measure in jobs or in hours, and keep the same unit every week.

Read the two numbers together. Rising attainment with stable rates means the schedule is learning. Falling attainment with rates that keep slowing means the process is losing ground, and that is a job for the downtime and performance losses, not for the schedule.

Schedule on live machine data#

SenseAi reads running and stopped time from the outside of each machine and counts parts from its cycle, so every run carries its own availability, performance and actual cycle time.

The Production Scheduler runs on those same machines, so the schedule uses the real part count. A new task's time estimate starts from the ideal cycle time times the quantity; replace it with the quantity times the effective cycle time.

With Working hours on, durations consume shift time only. The optimizer packs against the same estimates, and a strip under each Gantt bar shows what operators logged. If your schedule still lives in a spreadsheet, when to replace a spreadsheet production schedule helps you decide when to move it.

Hugo Benzing plans coiling, heat treatment and packing in the Production Scheduler, with SenseAi counting coils on its coilers while each run is going. Planning its tubes, racks and boxes as tooling brought a 20% efficiency increase, and its planners save more than 10 hours a week.

Checklist for your next schedule#

Run these checks before you release a week's schedule to the floor.

CheckWhy it matters
Durations use effective cycle timeIdeal times make every job look short
One rate per machine and operationA plant-wide OEE hides the slow pairs
Setup counted onceTwice inflates every changeover job
Start quantity covers scrapGood parts ship, not starts
Durations consume shift hours onlyElse the plan runs through nights
Bottleneck load near 85% or belowQueues grow fast past that point
Rates checked against last weekStale rates drift a little each month
The percentages are starting points from the worked examples. Set your own from the lead times your plant measures.

If a job is late with a correct rate and a sensible load, the schedule is not the problem. Look at the stops on that machine, starting with the downtime reasons that cost the most hours.

Questions#

Should I plan with the ERP routing standard or the measured rate?#

Plan durations and due dates with the measured rate once a part has run on that machine a few times. Keep the routing standard for quoting and costing until your finance team agrees to update it, and review the gap between the two each quarter, because a large gap usually means the standard was written for a different machine or method.

How many runs do I need before I trust a measured rate?#

Five runs of the same operation on the same machine give a usable median, and ten give a usable 80th percentile. With fewer, plan with the routing standard plus the average gap you see on similar parts on that machine, and replace it with the measured median once the fifth run is logged.

What rate do I use for a part that has never run?#

Start from the ideal cycle time and divide it by the availability and performance that machine shows on similar parts. A new bracket on a mill that runs other brackets at 80% availability and 85% performance gets the same factors. Replace the estimate with the measured rate after the first few runs.

Does planning on measured rates hide the losses I should fix?#

No. The schedule uses the measured rate so that dates are honest, and OEE keeps measuring each run against the ideal cycle time so the losses stay visible. When an improvement lifts availability or performance, the measured rate follows within a few runs and the schedule frees the hours.

Written by

Ulises Carrasco, Co-founder and COO

Sources#

  1. The single server queue in heavy traffic, Mathematical Proceedings of the Cambridge Philosophical Society 57(4), 902–904 (1961), Cambridge University Press. Accessed Oct 16, 2026
    cambridge.org/core/journals/mathematical-proceedings-of-the-cambridge-philosophical-society/article/abs/single-server-queue-in-heavy-traffic/81C55BC00A68FE6D5385638AA0B0AF37
  2. ISA-95 Standard: Enterprise-Control System Integration, International Society of Automation. Accessed Oct 16, 2026
    isa.org/standards-and-publications/isa-standards/isa-95-standard
  3. Cycle Time, Lean Enterprise Institute. Accessed Oct 16, 2026
    lean.org/lexicon-terms/cycle-time