Main Content


Reduce explicit MPC controller complexity and memory requirements


EMPCreduced = simplify(EMPCobj,'exact') attempts to reduce the number of piecewise affine (PWA) regions in an explicit MPC controller by merging regions that have identical controller gains and whose union is a convex set. Reducing the number of PWA regions reduces memory requirements of the controller. This command returns a reduced controller, EMPCreduced.

EMPCreduced = simplify(EMPCobj,'exact',uniteeps) specifies the tolerance for identifying regions that can be merged.

EMPCreduced = simplify(EMPCobj,'radius',r) retains only regions whose Chebyshev radius (the radius of the largest ball contained in the region) is larger than r.

EMPCreduced = simplify(EMPCobj,'sequence',index) eliminates all regions except those specified in an index vector.

simplify(EMPCobj,___) applies the reduction to the explicit MPC controller EMPCobj, rather than returning a new controller object. You can use this syntax with any of the previous reduction options.

Input Arguments

collapse all

Explicit MPC controller to reduce, specified as an Explicit MPC controller object. Use generateExplicitMPC to create an explicit MPC controller.

Tolerance for joining PWA regions, specified as a positive scalar.

Minimum Chebyshev radius for retaining PWA regions, specified as a nonnegative scalar. When you use the 'radius' option, simplify keeps only the regions whose Chebyshev radius is larger than r. The default value is 0, which causes all regions to be retained.

Indices of PWA regions to retain, specified as a vector. The default value is [1:nr], where nr is the number of PWA regions in EMPCobj. Thus, by default, all regions are retained. You can obtain a sequence of regions to retain by performing simulations using EMPCobj and recording the indices of regions actually encountered.

Output Arguments

collapse all

Reduced MPC controller, returned as an Explicit MPC controller object.

Introduced in R2014b