How to programmatically stop simulation when output converges

15 views (last 30 days)
I am running a model to do somthing like Monta Carlo simulation.
The output will get to a stable value after enough time, sometimes it takes longer, sometimes it takes less time.
To save the simulation time (there are several thousands of simulations to do), how can I programmatically set dynamic simulation time or stop simulation when output gets stable?
If there is even a solution for parallel computing, that would be even better.
Thanks and BR
Yunyu Hu
Yunyu Hu on 26 Feb 2020
the model is in Simulink.
to run the model with varying parameters I use some thing like this:
k = Simulink.Parameter
k.CoderInfo.StorageClass = 'SimulinkGlobal';
k.Value = -0.9;
mdl = 'sldemo_bounce';
rtp = Simulink.BlockDiagram.buildRapidAcceleratorTarget(mdl);
k_values = [-0.9:0.1:-0.1];
for i = 1:length(k_values)
paramSet(i) =
Simulink.BlockDiagram.modifyTunableParameters(rtp, ...
'k', k_values(i));
for i = 1:length(k_values)
simout(i) = sim(mdl,'SimulationMode','rapid',...
'RapidAcceleratorUpToDateCheck','off', ...
But as I said, in my model the simulation output will reach a stable value after certain time, and this time is varying. Because the simulation amount is huge, therefore I think if I can dynamically stop the simulation when the value stablizes, thus I can save some time?
Thanks and BR

Sign in to comment.

Accepted Answer

Vimal Rathod
Vimal Rathod on 27 Feb 2020
You could use a Stop Simuation Block to stop the simulation by defining a condition which you want to satisfy before stopping the simulation.
You need to construct some logic which gives a boolean input to the stop simulation block.

More Answers (0)


Find more on Debug Simulations in the Simulink Editor in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!