我正在使用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批,并且我将它们串联运行时,模拟时间的总和远小于我一次运行整个模拟的时间。
答案 0 :(得分:1)
由于似乎在没有提问者反馈的情况下可以做的事情有限,我只会将我的评论作为答案发布:
我的赌注是内存问题,如果你想消除这个问题,看看如果你没有将结果存储在第一位,问题是否仍然存在,只需删除这一行:
results{ii, 1} = numberOfMC;
同时确认您没有其他增长变量或您不小心让输入变得更加复杂。它可能不相关,如果你按相反顺序进行所有模拟,时间是否也会增加?或者,如果您进行了全部迭代,但每次都使用完全相同的输入?