主要内容

fxpOptimizationOptions 类

指定数据类型优化的选项

描述

fxpOptimizationOptions 对象使您能够使用 fxpopt 指定在数据类型优化过程中使用的选项和约束。

创建对象

options = fxpOptimizationOptions() 创建具有默认值的 fxpOptimizationOptions 对象。

options = fxpOptimizationOptions('PropertyName',PropertyValue) 创建具有指定属性名称-值对组的 fxpOptimizationOptions 对象。

属性

全部展开

要执行的最大迭代次数,指定为非负整数标量。优化过程会遍历不同解,直到找到理想解、达到最大迭代次数或满足其他停止条件。

示例: options.MaxIterations = 75;

示例: options = fxpOptimizationOptions('MaxIterations',75);

数据类型: double

优化运行的最长时间(秒),指定为非负标量。优化运行,直到达到指定时间、找到理想解或满足其他停止条件。

示例: options.MaxTime = 1000;

示例: options = fxpOptimizationOptions('MaxTime',1000);

数据类型: double

在未找到新最优解的情况下允许的最大迭代次数,指定为整数标量。只要算法继续找到新最优解,优化就会继续。

示例: options.Patience = 15;

示例: options = fxpOptimizationOptions('Patience',15);

数据类型: double

优化过程中在命令行显示的信息级别,指定为以下值之一:

  • 'High' - 在优化过程的每次迭代时在命令行中显示信息,包括是否找到新最优解以及找到该解的成本。

  • 'Moderate' - 在优化过程的每个主要步骤显示信息,包括过程处于预处理、建模和优化阶段时。

  • 'Silent' - 在优化过程完成之前不在命令行中显示任何内容。

示例: options.Verbosity = 'Moderate';

示例: options = fxpOptimizationOptions('Verbosity','Moderate');

数据类型: char | string

指定可以在优化的在设系统中使用的字长。使用此属性定位优化过程的邻域搜索。优化的最终结果使用的字长是 AllowableWordLengths 与在模型的硬件实现窗格中指定的硬件约束兼容字长的交集。

示例: options.AllowableWordLengths = [8:11,16,32];

数据类型: double

优化搜索期间使用的目标函数,指定为以下值之一:

  • 'BitWidthSum' - 最小化位宽总和。

  • 'OperatorCount' - 最小化生成的 C 代码中运算符的估计计数。

    此选项可能会减少从 Simulink® 模型生成的 C 代码的程序内存大小。'OperatorCount' 目标函数不适用于 FPGA 或 ASIC 目标。

    注意

    要在优化期间使用 'OperatorCount' 作为目标函数,模型必须准备好进行代码生成。有关确定代码生成就绪的详细信息,请参阅Check Model and Configuration for Code Generation (Embedded Coder)

  • 'CustomCostFunction' - 通过为设计中的模块指定代价函数来自定义目标函数。

示例: options.ObjectiveFunction = 'OperatorCount';

数据类型: char | string

是否并行运行优化迭代,指定为逻辑值 0 (false) 或 1 (true)。并行运行迭代需要 Parallel Computing Toolbox™ 许可证。如果您没有 Parallel Computing Toolbox 许可证,或指定 0 (false),则迭代将串行运行。

示例: options.UseParallel = 1;

数据类型: logical

优化的其他高级选项。AdvancedFxpOptimizationOptions 是包含可影响优化的其他属性的对象。

属性描述
PerformNeighborhoodSearch
  • 1(默认值)- 对优化的解执行邻域搜索。

  • 0 - 不执行邻域搜索。选择此选项可以提高优化过程的速度,但也会增大找到不太理想的解的可能性。

EnforceLooseCoupling

一些 Simulink 模块包含的参数会强制要求各个输入具有相同的数据类型,或输出与输入具有相同的数据类型。

  • 1(默认值)- 允许优化器放宽对在设系统中所有模块的此限制。放宽此限制可以使优化器提供更合适的数据类型。

  • 0 - 不允许优化器放宽对在设系统中模块的此限制。

UseDerivedRangeAnalysis
  • 0(默认值)- 优化器在评估解时不考虑从模型设计范围推导的范围。

  • 1 - 优化器在评估解时会同时考虑观测到的仿真范围和从模型设计范围推导的范围。

根据模型配置,推导范围分析可能比模型仿真需要更长的时间。

SimulationScenarios使用 Simulink.SimulationInput 对象定义在优化期间要考虑的其他仿真场景。有关示例,请参阅Optimize Data Types Using Multiple Simulation Scenarios
SafetyMargin

输入安全裕度,指定为非负标量值,指示收集范围边界增加的百分比。安全裕度应用于所有收集范围(包括仿真范围、推导范围和设计范围)的并集。

DataTypeOverride

在优化的范围收集阶段进行仿真时覆盖在模型中指定的数据类型。

  • 'Off'(默认值)- 不覆盖数据类型。

  • 'Single' - 用单精度值覆盖数据类型。

  • 'Double' - 用双精度值覆盖数据类型。

  • 'ScaledDouble' - 用定标双精度值覆盖数据类型。

HandleUnsupported

定点转换不支持某些模块。请指定优化器如何处理不支持的模块。

  • 'Isolate'(默认值)- 用 Data Type Conversion 模块隔离不支持的模块。优化器会忽略隔离的模块。

  • 'Error' - 当系统包含定点转换不支持的模块时,停止优化并报告错误。

  • 'Warn' - 当系统包含定点转换不支持的模块时发出警告。忽略不支持的模块并继续优化。此选项允许您在优化完成后手动将不支持的构造替换为其他解,例如查找表。

  • 在 R2024b 中: 'ReplaceLUT' - 自动将不支持的模块替换为优化的查找表逼近。您必须在不支持的模块上游指定设计最小值和最大值。

有关详细信息,请参阅Blocks That Do Not Support Fixed-Point Data Types

PerformSlopeBiasCancellation
  • 0(默认值)- 不传播斜率偏置数据类型。

  • 1 - 从在设系统外部传播斜率偏置数据类型。选择斜率和偏置以降低生成代码的复杂度。

InstrumentationContext[model '/Subsystem'] - 将优化的范围收集步骤的最小值、最大值和溢出记录的插桩限制到子系统。该子系统必须位于顶层模型下并包含在设系统。

示例: options.AdvancedOptions.PerformNeighborhoodSearch = 0;

方法

全部展开

示例

全部折叠

创建一个具有默认属性值的 fxpOptimizationObject

options = fxpOptimizationOptions();

创建对象后使用圆点语法编辑属性。

options.Patience = 15;
options.AllowableWordLengths = [8,16,32];
options.AdvancedOptions.UseDerivedRangeAnalysis = true
options = 
  fxpOptimizationOptions with properties:

           MaxIterations: 50
                 MaxTime: 600
                Patience: 15
               Verbosity: High
    AllowableWordLengths: [8 16 32]
       ObjectiveFunction: BitWidthSum
             UseParallel: 0

   Advanced Options
         AdvancedOptions: [1×1 DataTypeOptimization.AdvancedFxpOptimizationOptions]

在创建对象时使用属性名称-值对组设置属性。

options = fxpOptimizationOptions('Patience',15,'AllowableWordLengths',[8,16,32])
options = 
  fxpOptimizationOptions with properties:

           MaxIterations: 50
                 MaxTime: 600
                Patience: 15
               Verbosity: High
    AllowableWordLengths: [8 16 32]
       ObjectiveFunction: BitWidthSum
             UseParallel: 0

   Advanced Options
         AdvancedOptions: [1×1 DataTypeOptimization.AdvancedFxpOptimizationOptions]

指定高级选项。

options.AdvancedOptions.UseDerivedRangeAnalysis = 1
options = 
  fxpOptimizationOptions with properties:

           MaxIterations: 50
                 MaxTime: 600
                Patience: 15
               Verbosity: High
    AllowableWordLengths: [8 16 32]
       ObjectiveFunction: BitWidthSum
             UseParallel: 0

   Advanced Options
         AdvancedOptions: [1×1 DataTypeOptimization.AdvancedFxpOptimizationOptions]

您可以将 fxpOptimizationOptions 对象导入定点工具以在 App 中执行数据类型优化。通过导入 fxpOptimizationOptions 对象而不是在 App 中手动指定设置,您可以轻松保存和还原设置。

打开模型。

model = 'ex_controllerHarness';
open_system(model);

要指定优化选项,例如允许的字长和迭代次数,请使用 fxpOptimizationOptions 对象。

options = fxpOptimizationOptions('AllowableWordLengths',[2:32],...
    'MaxIterations',3e2,...
    'Patience',50);

打开定点工具并选择 Controller 子系统。

fxptdlg('ex_controllerHarness/Controller')

在定点工具中,选择新建 > 优化的定点转换以启动数据类型优化工作流。

设置窗格的高级选项下,从下拉菜单中选择要导入的优化选项对象。点击导入

FPT_advancedOptionsOptimization4.png

展开工具条中的优化选项菜单以确认应用了优化选项。

版本历史记录

在 R2018a 中推出

全部展开