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

如何在JModelica输出文件中仅保存相关变量?

解决JModelica仅保存指定仿真变量的问题

好问题!JModelica确实支持只保存你需要的变量输出,这个设置其实就在仿真配置里,只是可能没在手册里特别显眼。下面给你几种实用的实现方法:

方法1:调用simulate()时直接指定output参数

这是最直接的方式,在调用仿真函数时,通过output参数传入你想要保存的变量列表就行。比如你的模型变量是[a,b,c,d,e,f,g,time],只保留a,b,time的话,代码示例如下:

from pymodelica import compile_fmu
from pyfmi import load_fmu

# 编译你的模型为FMU
my_fmu = compile_fmu("YourModelName", "your_model_file.mo")
model = load_fmu(my_fmu)

# 仿真时指定要保存的变量
simulation_result = model.simulate(
    start_time=0,
    final_time=3600,  # 假设是1小时的长时间仿真
    output=['a', 'b', 'time']
)

这样生成的输出文件(或者内存里的仿真结果对象)就只会包含你指定的三个变量,能大幅减少文件体积。

方法2:通过SimulationOptions配置输出变量

如果需要复用相同的输出配置,你可以创建SimulationOptions对象,设置output_variables属性,再传给仿真函数:

from pymodelica import SimulationOptions, simulate

# 创建仿真配置对象
sim_opts = SimulationOptions()
# 指定要保存的变量列表
sim_opts['output_variables'] = ['a', 'b', 'time']

# 传入配置进行仿真
simulation_result = simulate(
    "YourModelName",
    "your_model_file.mo",
    options=sim_opts,
    start_time=0,
    final_time=3600
)

注意事项

  • 变量名必须和模型中定义的完全一致,包括大小写、嵌套路径(比如模型里的子模块变量要写SubModel.a)。
  • time变量默认通常会被包含,但为了保险起见,建议显式加入列表,避免遗漏。
  • 如果是已经编译好的FMU,也可以在加载后通过model.set_output_variable(['a', 'b', 'time'])来指定输出变量,再执行仿真。

这些方法都能有效解决复杂模型长时间仿真输出文件过大的问题,根据你的工作流选合适的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:14