Optimize data types of a system

This example shows how to optimize the data types used by a system based on specified tolerances.

To begin, open the system for which you want to optimize the data types.

model = 'ex_auto_gain_controller'; sud = 'ex_auto_gain_controller/sud'; open_system(model)

Create an `fxpOptimizationOptions`

object to define constraints and tolerances to meet your design goals. Set the `UseParallel`

property of the `fxpOptimizationOptions`

object to `true`

to run iterations of the optimization in parallel. You can also specify word lengths to allow in your design through the `AllowableWordLengths`

property.

opt = fxpOptimizationOptions('AllowableWordLengths', 10:24, 'UseParallel', true)

opt = fxpOptimizationOptions with properties: MaxIterations: 50 MaxTime: 600 Patience: 10 Verbosity: High AllowableWordLengths: [10 11 12 13 14 15 16 17 18 19 20 21 22 23 24] Advanced Options AdvancedOptions: [1×1 struct]

Use the `addTolerance`

method to define tolerances for the differences between the original behavior of the system, and the behavior using the optimized fixed-point data types.

tol = 10e-2; addTolerance(opt, [model '/output_signal'], 1, 'AbsTol', tol);

Use the `fxpopt`

function to run the optimization. The software analyzes ranges of objects in your system under design and the constraints specified in the `fxpOptimizationOptions`

object to apply heterogeneous data types to your system while minimizing total bit width.

result = fxpopt(model, sud, opt);

+ Preprocessing + Modeling the optimization problem - Constructing decision variables - Binding constraints + Running the optimization solver - Evaluating new solution: cost 180, does not meet the tolerances. - Evaluating new solution: cost 198, does not meet the tolerances. - Evaluating new solution: cost 216, does not meet the tolerances. - Evaluating new solution: cost 234, does not meet the tolerances. - Evaluating new solution: cost 252, does not meet the tolerances. - Evaluating new solution: cost 270, does not meet the tolerances. - Evaluating new solution: cost 288, does not meet the tolerances. - Evaluating new solution: cost 306, meets the tolerances. - Updated best found solution, cost: 306 - Evaluating new solution: cost 304, meets the tolerances. - Updated best found solution, cost: 304 - Evaluating new solution: cost 300, meets the tolerances. - Updated best found solution, cost: 300 - Evaluating new solution: cost 299, meets the tolerances. - Updated best found solution, cost: 299 - Evaluating new solution: cost 298, meets the tolerances. - Updated best found solution, cost: 298 - Evaluating new solution: cost 297, meets the tolerances. - Updated best found solution, cost: 297 - Evaluating new solution: cost 296, meets the tolerances. - Updated best found solution, cost: 296 - Evaluating new solution: cost 295, meets the tolerances. - Updated best found solution, cost: 295 - Evaluating new solution: cost 294, does not meet the tolerances. - Evaluating new solution: cost 293, meets the tolerances. - Updated best found solution, cost: 293 - Evaluating new solution: cost 292, meets the tolerances. - Updated best found solution, cost: 292 - Evaluating new solution: cost 291, meets the tolerances. - Updated best found solution, cost: 291 - Evaluating new solution: cost 290, meets the tolerances. - Updated best found solution, cost: 290 - Evaluating new solution: cost 289, meets the tolerances. - Updated best found solution, cost: 289 - Evaluating new solution: cost 287, meets the tolerances. - Updated best found solution, cost: 287 - Evaluating new solution: cost 283, meets the tolerances. - Updated best found solution, cost: 283 - Evaluating new solution: cost 282, meets the tolerances. - Updated best found solution, cost: 282 - Evaluating new solution: cost 281, meets the tolerances. - Updated best found solution, cost: 281 - Evaluating new solution: cost 280, meets the tolerances. - Updated best found solution, cost: 280 - Evaluating new solution: cost 279, meets the tolerances. - Updated best found solution, cost: 279 - Evaluating new solution: cost 278, meets the tolerances. - Updated best found solution, cost: 278 - Evaluating new solution: cost 277, does not meet the tolerances. - Evaluating new solution: cost 276, meets the tolerances. - Updated best found solution, cost: 276 - Evaluating new solution: cost 275, meets the tolerances. - Updated best found solution, cost: 275 - Evaluating new solution: cost 274, meets the tolerances. - Updated best found solution, cost: 274 - Evaluating new solution: cost 273, meets the tolerances. - Updated best found solution, cost: 273 - Evaluating new solution: cost 272, meets the tolerances. - Updated best found solution, cost: 272 - Evaluating new solution: cost 270, meets the tolerances. - Updated best found solution, cost: 270 - Evaluating new solution: cost 266, meets the tolerances. - Updated best found solution, cost: 266 - Evaluating new solution: cost 265, meets the tolerances. - Updated best found solution, cost: 265 - Evaluating new solution: cost 264, meets the tolerances. - Updated best found solution, cost: 264 - Evaluating new solution: cost 263, meets the tolerances. - Updated best found solution, cost: 263 - Evaluating new solution: cost 262, meets the tolerances. - Updated best found solution, cost: 262 - Evaluating new solution: cost 261, meets the tolerances. - Updated best found solution, cost: 261 - Evaluating new solution: cost 260, does not meet the tolerances. - Evaluating new solution: cost 259, does not meet the tolerances. - Evaluating new solution: cost 260, meets the tolerances. - Updated best found solution, cost: 260 - Evaluating new solution: cost 259, meets the tolerances. - Updated best found solution, cost: 259 - Evaluating new solution: cost 258, meets the tolerances. - Updated best found solution, cost: 258 - Evaluating new solution: cost 257, meets the tolerances. - Updated best found solution, cost: 257 - Evaluating new solution: cost 255, meets the tolerances. - Updated best found solution, cost: 255 - Evaluating new solution: cost 251, meets the tolerances. - Updated best found solution, cost: 251 - Evaluating new solution: cost 250, meets the tolerances. - Updated best found solution, cost: 250 - Evaluating new solution: cost 249, meets the tolerances. - Updated best found solution, cost: 249 - Evaluating new solution: cost 248, meets the tolerances. - Updated best found solution, cost: 248 - Evaluating new solution: cost 247, meets the tolerances. - Updated best found solution, cost: 247 - Evaluating new solution: cost 246, meets the tolerances. - Updated best found solution, cost: 246 - Evaluating new solution: cost 245, does not meet the tolerances. - Evaluating new solution: cost 244, does not meet the tolerances. - Evaluating new solution: cost 245, meets the tolerances. - Updated best found solution, cost: 245 - Evaluating new solution: cost 244, meets the tolerances. - Updated best found solution, cost: 244 + Optimization has finished. - Neighborhood search complete. - Maximum number of iterations completed. + Fixed-point implementation that met the tolerances found. - Total cost: 244 - Maximum absolute difference: 0.077478 - Use the explore method of the result to explore the implementation.

Use the `explore`

method of the `OptimizationResult`

object, `result`

, to launch Simulation Data Inspector and explore the design containing the smallest total number of bits while maintaining the numeric tolerances specified in the `opt`

object.

explore(result);

`model`

— Model containing system under design, `sud`

character vector

Name of the model containing the system that you want to optimize.

**Data Types: **`char`

`sud`

— Model or subsystem whose data types you want to optimizecharacter vector

Model or subsystem whose data types you want to optimize, specified as a character vector containing the path to the system.

**Data Types: **`char`

`options`

— Additional optimization options`fxpOptimizationOptions`

object`fxpOptimizationOptions`

object specifying additional options to
use during the data type optimization process.

`result`

— Object containing the optimized design`OptimizationResult`

objectResult of the optimization, returned as an `OptimizationResult`

object. Use the `explore`

method of the object to open the Simulation Data Inspector and view the
behavior of the optimized system. You can also explore other solutions found
during the optimization that may or may not meet the constraints specified
in the `fxpOptimizationOptions`

object,
`options`

.

A modified version of this example exists on your system. Do you want to open this version instead?

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)