python - pyfmi.load_fmu 加载 fmu 时出错
问题描述
我想通过 pyfmi.load_fmu 在 Linux 中加载“fmu”,但出现错误。
env1 中的错误 1:
找不到 GLIMDA。回溯(最后一次调用):文件“/home/user/Documents/hdh/paper/ling_min_du.py”,第 12 行,在模型 = pyfmi.load_fmu(fmu_path) 文件“src/pyfmi/fmi.pyx”,行7899,在 pyfmi.fmi.load_fmu 文件“src/pyfmi/fmi.pyx”中,第 2558 行,在 pyfmi.fmi.FMUModelCS1 中。初始化 文件“src/pyfmi/fmi.pyx”,第 1167 行,在 pyfmi.fmi.FMUModelBase 中。init File "src/pyfmi/fmi.pyx", line 45, in pyfmi.fmi.encode TypeError: latin_1_encode() argument 1 must be str, not bytes
env2中的错误:
回溯(最后一次调用):文件“ling_min_du.py”,第 26 行,在 model = pyfmi.load_fmu(fmu_path) 文件“src/pyfmi/fmi.pyx”,第 7898 行,在 pyfmi.fmi.load_fmu 文件“src /pyfmi/fmi.pyx”,第 2553 行,在 pyfmi.fmi.FMUModelCS1 中。初始化 文件“src/pyfmi/fmi.pyx”,第 1225 行,在 pyfmi.fmi.FMUModelBase 中。init pyfmi.fmi.FMUException:FMU 不包含此平台的二进制文件。
env1:我已经安装了 FMILibrary 并成功导入了 pyfmi。点子列表:
Package Version
-------------------- ---------
absl-py 0.7.1
Assimulo 3.0
astor 0.7.1
astroid 2.0.4
certifi 2019.6.16
cycler 0.10.0
Cython 0.29.11
gast 0.2.2
google-pasta 0.1.7
grpcio 1.22.0
h5py 2.9.0
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.0
kiwisolver 1.1.0
lazy-object-proxy 1.4.1
lxml 4.2.3
Markdown 3.1.1
matplotlib 2.2.2
numpy 1.16.4
pandas 0.23.4
Pillow 6.1.0
pip 19.1.1
protobuf 3.8.0
PyFMI 2.5
pyparsing 2.4.0
python-dateutil 2.8.0
pytz 2019.1
scikit-learn 0.20.0
scipy 1.3.0
setuptools 41.0.1
sip 4.19.8
six 1.12.0
tensorboard 1.14.0
tensorflow 1.14.0
tensorflow-estimator 1.14.0rc1
termcolor 1.1.0
tornado 6.0.3
typed-ast 1.4.0
Werkzeug 0.15.4
wheel 0.32.2
wrapt 1.11.2
env2:我尝试通过 conda install 重新安装 pyfmi,得到一个新错误。点子列表:
Package Version
--------------- ---------
Assimulo 3.0
certifi 2019.6.16
cycler 0.10.0
kiwisolver 1.1.0
lxml 4.3.4
matplotlib 3.1.0
numpy 1.16.4
pandas 0.24.2
pip 19.1.1
PyFMI 2.5.3
pyparsing 2.4.0
python-dateutil 2.8.0
pytz 2019.1
scipy 1.3.0
setuptools 41.0.1
six 1.12.0
tornado 6.0.3
wheel 0.33.4
import numpy as np
import pyfmi
import matplotlib.pyplot as plt
fmu_path = './fmu/FeedSystem_Examples_current_2.fmu'
start_time = 0.
final_time = 10.
sample_period = 0.001
simulation_steps = int((final_time - start_time) / sample_period)
model = pyfmi.load_fmu(fmu_path)
opts = model.simulate_options()
opts["ncp"] = simulation_steps
result = model.simulate(start_time=start_time, final_time=final_time, options=opts)
result = np.array(result["massWithStopAndFriction.s"]).reshape(-1, )
plt.figure()
plt.plot(result)
plt.show()
解决方案
env1 中的错误是由于 PyFMI 中的错误导致的,该错误已在更高版本的 PyFMI (>=2.5.1) 中修复
env2 中的问题是您使用的 FMU 不包含您当前所在平台所需的二进制文件。因此,重新生成 FMU(或询问您从哪里获得 FMU 的人)以支持您当前的平台。
推荐阅读
- installation - 如何使用 MajorUpgrade 元素在安装程序中实施升级?
- c - 堆栈的大概地址是多少?
- azure - App Service Managed Identity 和 Key Vault 的正确方式
- java - 如何在 Java 中使用合并方法将元素附加到地图中的列表值
>? - django - 如何从我的网站用户自己的 Web 面板创建对 ssh 终端的访问
- reactjs - useEffect 仅在热重载时运行
- delphi - 通过单击按钮更改 TGridPanel 中的行顺序
- reactjs - 如何将数据从 firebase 显示到 Material 表?
- android - 如何使用 StaggeredGridLayoutManager 在 recyclerview 中实现无限滚动(分页)
- jquery - 如何在 Owl carousel 中显示多个项目?