Chapter 7: Advanced MPC Techniques

Nonlinear MPC (NMPC)

For nonlinear systems: xk+1=f(xk,uk)x_{k+1} = f(x_k, u_k)

Uses nonlinear optimization (slower but more accurate).

from scipy.optimize import minimize

def nmpc_step(x0, f, N, Q, R, u_bounds):
    def cost(u_flat):
        u = u_flat.reshape(N, -1)
        x = x0
        J = 0
        for k in range(N):
            J += x.T @ Q @ x + u[k].T @ R @ u[k]
            x = f(x, u[k])
        return J
    
    u0 = np.zeros(N * m)
    bounds = [u_bounds] * N
    result = minimize(cost, u0, bounds=bounds)
    return result.x[:m]

Robust MPC

Handles uncertainty by considering worst-case scenarios.

Adaptive MPC

Updates model parameters online based on measurements.

Next: Chapter 8 - Real-World Applications!