在Matlab / Simulink中增加蒙特卡罗模拟的仿真时间

时间:2013-12-04 15:05:41

标签: matlab simulink

我正在使用Matlab脚本运行蒙特卡罗模拟,该脚本看起来或多或少是这样的:

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批,并且我将它们串联运行时,模拟时间的总和远小于我一次运行整个模拟的时间。

1 个答案:

答案 0 :(得分:1)

由于似乎在没有提问者反馈的情况下可以做的事情有限,我只会将我的评论作为答案发布:

我的赌注是内存问题,如果你想消除这个问题,看看如果你没有将结果存储在第一位,问题是否仍然存在,只需删除这一行:

results{ii, 1} = numberOfMC;

同时确认您没有其他增长变量或您不小心让输入变得更加复杂。它可能不相关,如果你按相反顺序进行所有模拟,时间是否也会增加?或者,如果您进行了全部迭代,但每次都使用完全相同的输入?