我的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/

10-16 00:26