主要内容

优化数据类型使用多个仿真场景

这个例子显示了如何创建多个模拟场景,和使用场景来优化系统的定点数据类型。

打开模型。在本例中,您优化控制器子系统的数据类型。模型设置为使用一个斜坡输入,或一个随机输入。模型使用断言块而不是使用信号公差来验证数值定点实现的行为。有关更多信息,请参见指定行为的约束

模型=“ex_controllerHarness”;open_system(模型);

创建仿真场景

创建一个金宝appSimulink.SimulationInput对象包含不同的场景。同时使用斜坡输入和随机输入的四种不同的种子。

如果= S金宝appimulink.SimulationInput。空(5,0);%为随机输入扫描4种不同的种子rng (1);种子=兰迪(1)e6, [1 - 4]);sIndex = 1:长度(种子)si (sIndex) = Simulin金宝appk.SimulationInput(模型);si (sIndex) = si (sIndex) .setVariable (“源”2);% = = 2对应的随机输入来源si (sIndex) = si (sIndex) .setBlockParameter([模型“随机/ uniformRandom”),“种子”num2str(种子(sIndex)));%扫描通过种子si (sIndex) = si (sIndex .setUserString (sprintf ()“random_ %我”、种子(sIndex)));结束%设置= = 1对应于斜坡输入来源如果(5)= S金宝appimulink.SimulationInput(模型);如果(5)= si (5) .setVariable (“源”1);如果(5)= si (5) .setUserString (“斜坡”);

指定定点优化选项

指定优化选项,如收集范围和方法的迭代次数,使用fxpOptimizationOptions对象。这个示例使用派生分析收集范围的系统范围。

选择= fxpOptimizationOptions (“MaxIterations”、3 e2、“耐心”,50);options.AdvancedOptions。PerformNeighborhoodSearch = false;%使用派生的范围分析范围集合options.AdvancedOptions。UseDerivedRangeAnalysis = true
选择= fxpOptimizationOptions属性:MaxIterations: 300 MaxTime: 600耐心:50冗长:高AllowableWordLengths: [2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19…]ObjectiveFunction: BitWidthSum UseParallel: 0高级选项AdvancedOptions: [1 x1 DataTypeOptimization.AdvancedFxpOptimizationOptions]

模拟输入对象指定为模拟场景的高级选项。

options.AdvancedOptions。SimulationScenarios =如果;

运行优化和探索结果

在优化过程中,软件获取范围所有仿真场景在高级选项中指定。软件验证解决方案对每个模拟输入场景。金宝搏官方网站

结果= fxpopt(模型,模型“/控制器”)选项)
+数据类型优化开始…+检查不支持的结构。金宝app+预处理+建模优化问题,构造决策变量+运行优化解算器-评估新解决方案:496年成本,不符合行为约束。——评估新的解决方案:976年成本,不符合行为约束。——评估新的解决方案:1936年成本,满足行为约束。——更新最好找到解决方案,费用:1936 +优化完成。发现+定点实现满足行为约束。发现最好的解决方案是应用于模型。-总成本:1936 -使用的研究方法探索实现结果。结果= OptimizationResult属性:模型:“ex_controllerHarness”SystemUnderDesign:“ex_controllerHarness /控制器”结果:“定点实现满足行为约束。 The best found solution is applied on the model.' OptimizationOptions: [1x1 fxpOptimizationOptions] Solutions: [1x1 DataTypeOptimization.OptimizationSolution]

您可以探索每个解决方案,因为它比较每个仿真场景定义。探索发现的最佳解决方案,并把它与坡道模拟输入。五个斜坡输入仿真场景。

solutionIndex = 1;%得到最好的找到解决方案scenarioIndex = 5;%得到第五场景(增加)解决方案=探索(因此,solutionIndex scenarioIndex);

另请参阅

功能

相关的话题