我的python脚本将变化的输入传递给名为“Dymola”的程序,该程序随后执行模拟以生成输出。这些输出存储为numpy数组“out1.npy”。
for i in range(0,100):
#code to initiate simulation
print(startValues, 'ParameterSet:', ParameterSet,'time:', stoptime)
np.save('out1.npy', output_data)
不幸的是,Dymola经常崩溃,这使得有必要从崩溃时从控制台中显示的时间开始重新运行循环(例如:50),并将输出文件的数量增加1。否则,第一组数据将被覆盖。
for i in range(50,100):
#code to initiate simulation
print(startValues, 'ParameterSet:', ParameterSet,'time:', stoptime)
np.save('out2.npy', output_data)
Dymola崩溃后,是否有任何方法可以从控制台中读出“停止时间”值(例如50)?
最佳答案
我假设您使用的是dymola界面来模拟您的模型。如果是这样,为什么不使用dymola.simulate()函数的返回值并检查错误。
例如。:
crash_counter = 1
from dymola.dymola_interface import DymolaInterface
dymola = DymolaInterface()
for i in range(0,100):
res = dymola.simulate("myModel")
if not res:
crash_counter += 1
print(startValues, 'ParameterSet:', ParameterSet,'time:', stoptime)
np.save('out%d.npy'%crash_counter, output_data)
由于有时很难在计算机上安装DymolaInterface,因此这里是一个有用的link。
从那里取:
安装:
如果这样做不起作用,请在实例化接口(interface)之前附加以下代码:
import os
import sys
sys.path.insert(0, os.path.join('PATHTODYMOLA',
'Modelica',
'Library',
'python_interface',
'dymola.egg'))
关于python - 如何从控制台存储最后显示的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53832979/