我正在使用Matlab脚本为Simulink模型运行Monte Carlo仿真,该脚本看起来或多或少像这样:

model = 'modelName';

load_system(model)

for ii = 1 : numberOfMC
    % Some set_param...
    % Some values are set

    sim(model);
    results{ii, 1} = numberOfMC;
    % ect...
end
close_system(model,0);

随着蒙特卡洛试验次数的增加,一次模拟的时间也增加了n ^ 2。

是否对此有一个简单的解释,是否存在使时间线性变化的解决方案?

谢谢!

编辑:

当我将仿真分为6批并连续运行时,仿真时间的总和要比一次进行整个仿真的时间要少得多。

最佳答案

似乎在没有询问者反馈的情况下可以做的事情是有限度的,我将发表我的评论作为答案:

我的赌注是内存问题,如果您想消除这种情况,请看看如果不首先存储结果,是否仍然会出现问题,只需删除此行:

results{ii, 1} = numberOfMC;

还要确认您没有其他不断增长的变量,或者在您进行输入时不小心使输入变得更加复杂。这可能不相关,如果您以相反的顺序进行所有模拟,时间是否也会像这样增加?或者,如果您执行全部迭代,但是每次都使用完全相同的输入呢?

关于matlab - 在Matlab/Simulink中进行Monte Carlo仿真时增加仿真时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20378812/

10-12 23:21