Athmane Benarous
All work

Russet House (food processing) · Software Developer, part-time · Jun 2026 – present

A self-learning line-speed advisory for a potato processing line

1 recommendationfor the one input speed operators control; they accept, modify or refuse it

Internal company system, described in general terms. No names, numbers, screenshots, data or code.

Problem

Operators set the speed of the potato processing line during each shift. The goal was a speed proposal that adapts as conditions change, built only from data the SCADA system already records.

Constraints

  • Inside the existing SCADA. The advisory runs in Ignition SCADA on live data logged to SQL Server. Ignition scripts run on Jython, which has no NumPy, so the estimator is written in plain Python.
  • Operators decide. The system proposes; the operator sets the speed.
  • Conditions change, so a model fitted once would go stale. It learns online instead.

What I built

  • Online learning. Recursive least squares updates the model with every new reading.
  • Operating bands. EWMA percentile bands track what recent normal operation looks like.
  • Operator feedback through a chat interface: operators accept, modify or refuse each proposal, and that feedback flows back into the system.
  • One aggregated recommendation for the one input speed operators can control.
  1. Live SCADA datalogged to SQL Server
  2. Online modelrecursive least squares, EWMA percentile bands
  3. One speed proposalfor the one input speed operators control
  4. Operator decidesaccept, modify or refuse, through a chat interface

Operator feedback flows back into the system.

The system proposes; the operator decides. Every response feeds back into the system.

Results

Operators use it during shifts. I don’t publish operating numbers for internal systems.

What went wrong and how I fixed it

The first design recommended several input speeds. Once we found that only one of them was controllable, I rebuilt the system around one aggregated recommendation for that speed.

What I’d do next

  • Log each proposal next to the operator’s response and the outcome, to measure whether following the advice helps.
  • Alert when the online model’s error drifts, before operators notice worse proposals.

Stack

  • Ignition SCADA (Jython)
  • SQL Server
  • Recursive least squares
  • EWMA

Related

esc