我使用Matlab脚本运行蒙特卡罗模拟Simulink模型,该脚本看起来或多或少像这样:
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);
Run Code Online (Sandbox Code Playgroud)
随着蒙特卡罗试验次数的增加,一次模拟的时间也随着n ^ 2的增加而增加.
有没有一个简单的解释,是否有解决方案,以及时间线性?
谢谢!
编辑:
当我将模拟分成6批,并且我将它们串联运行时,模拟时间的总和远小于我在一次运行整个模拟时的总和.
由于如果没有提问者的反馈,人们能做的事情似乎是有限的,我将发表我的评论作为答案:
我敢打赌是内存问题,如果你想消除这个问题,看看如果你不首先存储结果,问题是否仍然发生,只需删除这一行:
results{ii, 1} = numberOfMC;
Run Code Online (Sandbox Code Playgroud)
还要确认您没有其他不断增长的变量,或者您无意中使输入变得更加复杂。这可能不相关,如果您以相反的顺序进行所有模拟,时间也会像这样增加吗?或者,如果您进行了全部迭代,但每次都使用完全相同的输入?