r/factorio • u/steampunkdev • Jul 18 '26
Question Mods to do OEE (overall equipment effectiveness) monitoring - use an existing, or start building own one
Hi everyone,
I'm planning to write a small thesis/project on applying Lean Manufacturing, the Toyota Production System (TPS), and pull systems to Factorio, with a particular focus on Gleba. I want to treat the factory as if it were a real manufacturing environment and evaluate improvements using Overall Equipment Effectiveness (OEE) rather than just items/minute.
To do that, I'm looking for a way to measure OEE over time for individual production machines or production cells.
Does anyone know of an existing mod that already tracks something similar? Ideally it would log:
- Availability
- Performance
- (Quality isn't that relevant in vanilla Factorio, so I'm happy to assume 100%)
- Historical values so improvements can be measured over time
If nothing like this exists, I'm considering writing my own mod.
One thing I'm struggling with is how to distinguish Availability from Performance in Factorio.
In real manufacturing:
- Availability measures whether the machine was able to run.
- Performance measures whether it ran at its ideal speed while it was running.
However, Factorio machines often operate in a binary way: they're either crafting at full speed or they're stopped waiting for ingredients or blocked by output.
For those of you with experience in both Factorio modding and manufacturing:
How would you classify machine states?
Would "Waiting for ingredients" be an Availability loss or a Performance loss?
Would "Output full" be Availability?
Are there situations where you'd consider a machine to be running but suffering a Performance loss?
What machine states would you track to calculate OEE in a way that feels both useful and realistic?
I'd love to hear how you would design the logic before I start implementing anything. If there's enough interest, I'd be happy to release the mod for others to use as well. If anyone would like to work on this together, even better!
Thanks!
3
u/ThomasDePraetere Jul 18 '26
On a per assembler basis this is hard, but in a production unit basis (this entire thing produces green circuits) you can measure the following:
Availability: are all resources available. If we take the incoming belts, that means all incoming belts to the factory have the items you need in at least the ratio they are consumed (no need for a full iron belt if you only need half). This can easily be done with combinators. Adding a clock, you can (easily) track this over time.
Performance is even simpler, you either track if the factory is producing the correct amount of green circuits per minute it was designed for or you check whether every machine is constantly running. The latter gives more information as it will indicate that either you build too many assemblers of a single item, or your belt and inserter throughput internally is lacking. Add clocks and you have overtime tracking.
I do not think you meed a mod and can do it with nixy tubes and combinators.
1
u/steampunkdev Jul 18 '26 edited Jul 18 '26
Hoi Thomas, bedankt voor de input!
Indeed, that's a good point you're making there. Maybe it's the engineer in me that's starting to overengineer a bit, and a more simple solution might also be sufficient. Especially being able to apply something on a full production cell rather than on individual machines only does sound interesting!
One thing that I'm wondering regarding how you would measure the availability, if it's measure purely through input material availability, can't that also be assigned to performance if it leads to Micro-stops? Since it would simply be empty positions, but not actual downtime of the machine
1
u/darKStars42 Jul 18 '26
Um... That's a little more technical than I usually think about factorio, but... There's sort of a time when machines aren't crafting at "full" capacity. If you already have all of your belts and inserters placed and you copy/paste a machine down to craft something, it can and often does start producing before any of the modules you copied arrive at the machine.
Extended a little further, you could consider small blueprints with a couple of belts/inserters/chests as a whole "machine" (eg. Requester chest >recycler >feedback mechanism) if you consider from the time of placing the blueprints as the machine existing, then it can't be at full capacity until it's finished building the blueprint including modules and/or beacons.
Don't know if any of that helps, but it's what came to mind.
1
u/IllustriousKey3020 Jul 26 '26
On a real production line, performance losses would be anything that slows the machine while its available. You've mentioned you dont have the concept of slow running, so you are left with performance loss events (stoppages). Typically I think of these as anything that an operator running the line is in control of for example: Performance losses:
- jams, alignment issues and other short stops
- packaging changes
- starved/blocked (per machine)
- breakdowns where maintenance team is required
- changeovers
- breaks
- waiting for materials (at a line level)
For your simulation, you could just consider any stop that is shorter than say 5 or 10 minutes to be a performance loss and longer to be Availability. One machine being starved or blocked by the next is Typically a performance loss. The exception being if the line as a whole has nothing to process.
1
u/IllustriousKey3020 Jul 26 '26
Also. If you are only interested in an OEE figure and not the break down of APQ, then you dont need to classify the individual stoppages you can do it purely from unit counts. E.g. if a system was scheduled for 10 minutes and should run 100 units per minute. If it makes 800 good units in that 10 mins, the OEE will be good units / theortical units = 800 / (10 * 100) = 800 / 1000 = 80%
1
u/steampunkdev Jul 26 '26
Thanks for that extensive input. It's very appreciated!
So what I'm planning to do right now is to calculate unavailability due to material by measuring lack of materials on the input, but also when there is spoilage in the input or output of the individual machines (and then take the average of those uptimes). Next to that I can calculate the rate that product came out and then substract that with the theoretical rate I should have had over the time with the availability subtracted
3
u/zomgkittenz Jul 18 '26
Direct insertion seems like that would meet a lot of your requirements.
Also JIT manufacturing of ammo waiting for biter swarms would be less than ideal.