Integral Action Design

Adding integral action to MPC for offset-free tension tracking.

benchflow-ai 5592a91 1.1 KB Updated 6 repo stars

File contents

Integral Action for Offset-Free Control

Why Integral Action?

MPC with model mismatch may have steady-state error. Integral action eliminates offset by accumulating error over time.

Implementation

u_I = gamma * u_I - c_I * dt * (T - T_ref)
u_total = u_mpc + u_I

Where:

  • u_I: Integral control term
  • gamma: Decay factor (0.9-0.99)
  • c_I: Integral gain (0.1-0.5 for web systems)
  • dt: Timestep

Tuning Guidelines

Integral gain c_I:

  • Too low: Slow offset correction
  • Too high: Oscillations, instability
  • Start with 0.1-0.3

Decay factor gamma:

  • gamma = 1.0: Pure integral (may wind up)
  • gamma < 1.0: Leaky integrator (safer)
  • Typical: 0.9-0.99

Anti-Windup

Limit integral term to prevent windup during saturation:

u_I = np.clip(u_I, -max_integral, max_integral)

For R2R Systems

Apply integral action per tension section:

for i in range(num_sections):
    u_I[i] = gamma * u_I[i] - c_I * dt * (T[i] - T_ref[i])

benchflow-ai/benchflow/tree/main/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design commit 5592a91c03

Frequently asked questions

npx skillmds@latest add benchflow-ai/integral-action-design