Filter löschen
Filter löschen

Running Simulink model in a loop causes Windows memory issues

15 Ansichten (letzte 30 Tage)
Igor
Igor am 22 Apr. 2020
Hi,
I am running Simulink model in a loop to test various cases, i.e. do a sweep across range of parameters. My code is:
for i = 1:numColsVin
for j = 1:numColsRload
for k = 1:numColsfout
model = 'SimulinkModelv001';
load_system(model);
sim(model);
% Some code
end
end
end
After 10 or so iterations I have noticed that my disk memory increases, i.e. I get Windows warning that hard drive is running out of space and MATLAB closes. I have been running the same code on version 2012b, 2014b and 2015a never had similar issues. I am logging data, doing post-processing and printing after each iteration.
And when I say memory increase, it is more than 200 GB for 10 iterations!! I don't know where the data is located and I keep getting Windows warnings to remove some data from my hard drive. Only MATLAB was running when this happened. What is all that data? How to delete? How to disable from appearing? Is there any settings in the Simulink to prevent this?
Kind regards
  3 Kommentare
Igor
Igor am 22 Apr. 2020
No. I use signal logging in the Simulink model.
I was investigating a bit further the issue and it seems Temp file is the one causing the memory increase. In the last case it was 180 GB big. I have modified the code as shown below and for now I don’t see memory increase...
for i = 1:numColsVin
for j = 1:numColsRload
for k = 1:numColsfout
model = 'SimulinkModelv001';
load_system(model);
sim(model);
% Some code
close_system(model);
% tempdir
% Simulink.sdi.getSource
Simulink.sdi.clear % clear temp data
end
end
end
Helder Magalhães
Helder Magalhães am 21 Okt. 2021
As stated, a fix is only available in R2021b; the proposed workaround is the one in the accepted answer (Simulink.sdi.clear).

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Igor
Igor am 23 Apr. 2020
Adding close_system(model) and Simulink.sdi.clear after the code in each loop solved the problem.
for i = 1:numColsVin
for j = 1:numColsRload
for k = 1:numColsfout
model = 'SimulinkModelv001';
load_system(model);
sim(model);
% Some code
close_system(model);
% tempdir
% Simulink.sdi.getSource % location of stored temp data
Simulink.sdi.clear % clear temp data
end
end
end

Weitere Antworten (0)

Kategorien

Mehr zu Programmatic Model Editing finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by