在simulink仿真中连续执行多次优化?

问题描述 投票:0回答:1

我正在尝试在 simulink 中实现某种修改后的 for 循环/while 。让我解释一下: 我有一个执行在线优化(=实时)的模型。根据我使用的参数,这最多可能需要 2 分钟。无需输入详细信息,我要寻找的最大值取决于输入的幅度,将其称为输入 1。到目前为止,当我达到此最大值时,我的值会从 0 变为 1。 现在,我想更进一步,将增加输入 1 的值的过程自动化。基本上我想执行此类操作:

Input 1 = A; 
while input 1 < MaxValue
    Perform optimization using my simulink model
            If Convergence (= I am at the maximum and flag==1)
                    Stop Optimization
                    Input 1 = A+ dA; 
            end 
end 

换句话说,我想重新启动对输入 1 的新值的优化,该值可能有一个新的最大值。 每个优化都将被视为这个更大的 for 循环的一部分,每个优化的持续时间可能不同。不过我不需要重新启动时钟或任何东西。出于实验原因,我希望所有这些都在 simulink 中(因为我当然可以从脚本多次调用我的 simulink 模型......)

谢谢!

我尝试使用 for 迭代器块,但我觉得它在每个 tiome 步骤之间执行 for 例程。

simulink
1个回答
0
投票

最简单的方法是在 Simulink 中使用 MATLAB 函数块。例如,您可以使用对 Simulink Function 的函数调用来调用优化例程 - 如果这都是 Simulink。当仿真时间与您的优化相关时,请在 Stateflow 图中对循环进行建模。也更优雅。

第三个选项是使用 For 和 While 迭代器子系统(端口和子系统库)。当你和他们一起玩时,你可能不想走这条路。

© www.soinside.com 2019 - 2024. All rights reserved.