中止 parsim 的执行

Abort execution of parsim

对于能够使用 MATLAB GUI 中止并行仿真的用例,我想在用户按下停止按钮后停止所有计划的仿真。 所有模拟都是使用 parsim 命令一次提交的,因此像回调到我的 GUI 变量 (App Designer) 之类的东西将是最可取的解决方案。

我考虑过但未完全提供理想解决方案的方法:

感谢您的帮助!


更新 1:使用 preSimFcn 将终止时间设置为等于开始时间大大减少了模拟时间。但由于第一步仍然是计算的,因此必须有更好的解决方案。

simin = simin.setModelParameter('StopTime',get_param(mdl,'StartTime'))

更新 2:故意抛出执行 preSimFcn 的错误,例如将其设置为

simin = simin.setModelParameter('SimulationCommand','stop')

为我提供了迄今为止最短的终止时间。但是,它需要捕获并识别 Simulink.SimulationOutput 对象的 ErrorMessage 中的错误。由于这正是我想要避免的 "ugly" 实现,因此问题仍然存在。

如果您使用的是 17b 或更高版本,parsim 会提供 'RunInBackground' 的选项。它 returns 一个 Future 对象数组。

F = parsim(in, 'RunInBackground', 'on')

请注意,仅适用于并行模拟。 Simulink.Simulation.Future 对象 F 提供了一个取消方法,它将终止模拟。您可以使用 fetchOutputs 方法从模拟中获取输出。

F.cancel();