我的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崩溃后,有没有办法从控制台读出“stoptime”值(例如50)?你知道吗
我假设dymola是第三方实体,你不能改变。你知道吗
一种可能性是使用
subprocess
模块启动dymola并从您的程序中读取它的输出,或者在它运行时逐行读取,或者在创建的进程退出后全部读取。您还可以访问dymola的退出状态。你知道吗如果它是一个Windows-y的东西,它不做流输出,但操纵一个windowgui样式,如果它不生成有用的退出状态代码,那么最好的办法可能是查看它在退出时或之后创建了哪些文件。
sorted( glob.glob("somepath/*.out"))
可能有用吗?你知道吗我假设您正在使用dymola接口来模拟您的模型。如果是这样,为什么不使用动态模拟()函数并检查错误。 例如:
由于有时很难在您的机器上安装DymolaInterface,这里有一个有用的link。 从那里取材:
要安装:
如果不起作用,请在实例化接口之前附加以下代码:
相关问题 更多 >
编程相关推荐