python - 如何使用 PyFMI 定义依赖于模拟 FMU 输出的输入函数?
问题描述
我有一个 FMU 可以使用 PyFMI 进行模拟。如何创建依赖于模拟 FMU 输出的输入函数?该文档仅提供了依赖于外部变量的输入函数的示例,例如:
# Generate input
t = N.linspace(0.,10.,100)
u = N.cos(t)
u_traj = N.transpose(N.vstack((t,u)))
# Create input object
input_object = ('u', u_traj)
# Simulate
res = model.simulate(final_time=30, input=input_object, options={'ncp':3000})
如果我希望我的输入函数 u_traj 依赖于模型的输出 'y' 而不是 t,我该怎么办?
解决方案
有可能的。在 PyFMI 中,允许将输入指定为函数而不是数据矩阵。
model = load_fmu(...)
def input_function(t):
global model
#Get values from the model using e.g. "model.get("my_parameter")"
p = model.get("my_paramater")
return t*p
input_object = ("u", input_function)
res = model.simulate(final_time=30, input=input_object, options={'ncp':3000})
但正如我在评论中所说,这必须小心完成,因为可能会创建循环并使问题无法解决。也可能是因为模型可能尚未初始化,因此您可能需要保护(在 input_function 中)第一次调用它,因此您需要检索的值可能不可用。
推荐阅读
- maven - Dspace 安装问题
- android - Android AlertDialog 按钮:文本颜色错误
- python - 我的 python 代码(二次方程求解器)不工作,任何原因/
- mysql - Perl - MySQL - 基于触发器的多列索引上的 insertid 不起作用
- swiftui - 如何禁用父视图的“onAppear”方法?
- python - 在 python 中连接“sqlite3”时遇到问题
- concurrency - Spike/Newlib 中的并发性
- webpack - Webpack 5 生产模式导致应用程序损坏
- javascript - 从 img src 属性上传修改后的图像
- c# - “颜色”类型的输入标签未在 IOS 中呈现