Parameter-Adaptive Approximate MPC: Tuning Neural-Network Controllers without Retraining
<|reference_start|>Parameter-Adaptive Approximate MPC: Tuning Neural-Network Controllers without Retraining: Model Predictive Control (MPC) is a method to control nonlinear systems with guaranteed stability and constraint satisfaction but suffers from high computation times. Approximate MPC (AMPC) with neural networks (NNs) has emerged to address this limitation, enabling deployment on resource-constrained embedded systems. However, when tuning AMPCs for real-world systems, large datasets need to be regenerated and the NN needs to be retrained at every tuning step. This work introduces a novel, parameter-adaptive AMPC architecture capable of online tuning without recomputing large datasets and retraining. By incorporating local sensitivities of nonlinear programs, the proposed method not only mimics optimal MPC inputs but also adjusts to known changes in physical parameters of the model using linear predictions while still guaranteeing stability. We showcase the effectiveness of parameter-adaptive AMPC by controlling the swing-ups of two different real cartpole systems with a severely resource-constrained microcontroller (MCU). We use the same NN across both system instances that have different parameters. This work not only represents the first experimental demonstration of AMPC for fast-moving systems on low-cost MCUs to the best of our knowledge, but also showcases generalization across system instances and variations through our parameter-adaptation method. Taken together, these contributions represent a marked step toward the practical application of AMPC in real-world systems.<|reference_end|>
@article{hose2024parameter-adaptive,
    title={Parameter-Adaptive Approximate MPC: Tuning Neural-Network Controllers
  without Retraining},
    author={Henrik Hose and Alexander Gr"afe and Sebastian Trimpe},
    journal={PMLR 242:349-360, 2024},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.05835},
    primaryClass={eess.SY cs.LG cs.SY math.OC}
}