You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FMPy配置FMU-CS模拟将结果存至RAM并了解存储方式?

使用FMPy实现模拟结果内存存储(替代PyFMI的result_handling='memory')

1. 实现仅在RAM中存储模拟结果

在FMPy中,默认模拟行为就是将结果直接保存在内存中。如果要明确禁用硬盘写入,只需在调用simulate()函数时设置result_file=None(这也是默认值),彻底避免生成硬盘结果文件,所有数据仅通过RAM存储。

对应你PyFMI的实现代码,FMPy的写法如下:

from fmpy import read_model_description, extract, simulate

# 加载FMU并准备模拟环境
model_description = read_model_description('your_model.fmu')
unzipdir = extract('your_model.fmu')

# 执行模拟,结果仅存于内存
sim_res = simulate(
    unzipdir,
    final_time=1.0,
    result_file=None  # 关键参数:禁止写入硬盘,结果直接返回内存
)

sim_res会直接返回包含时间序列和变量结果的字典(或结构化数组),所有数据都在内存中,完全消除硬盘IO开销,非常适合你这种需要多次重复模拟的优化场景。

2. 确认FMU-CS模式下的结果存储方式

使用FMU-CS(协同仿真)模式时,FMPy同样通过result_file=None控制结果存储逻辑:

  • 设置该参数后,FMPy不会让FMU-CS进程写入硬盘结果文件,而是通过进程间通信将结果直接传回主进程内存;
  • 验证方式:
    • 模拟结束后检查工作目录,不会生成.csv/.mat等结果文件;
    • 直接查看sim_res内容,所有模拟数据已加载在内存中,可直接用于后续计算。

如果需要进一步优化内存占用,还可以通过output参数指定仅记录需要的变量:

sim_res = simulate(
    unzipdir,
    final_time=1.0,
    result_file=None,
    output=['time', 'target_var_1', 'target_var_2']  # 仅保留必要变量
)

内容的提问来源于stack exchange,提问作者janpeter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:55:10