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

如何从dsfinal.txt便捷提取Dymola模型的状态、输入输出终值?

从Dymola的dsfinal.txt批量提取指定变量值的方法

针对模型规模大、手动提取效率低的情况,推荐以下几种便捷方案:

1. 使用Dymola内置Modelica脚本提取

直接用Modelica代码读取并筛选dsfinal.txt内容,无需手动操作:

function extractFinalValues
  input String fileName = "dsfinal.txt";
  input String[] targetVariables = {"model.state1", "model.input1", "model.output1"};
  output Real[] finalValues;
protected
  String fileContent = readFile(fileName);
  String[] lines = split(fileContent, "\n");
  Real[] values;
  Integer idx;
algorithm
  for line in lines loop
    if (line <> "" and not startsWith(line, "#")) then
      idx := findIndex(targetVariables, split(line, "=")[1]);
      if idx > 0 then
        values := cat(1, values, Real(split(line, "=")[2]));
      end if;
    end if;
  end for;
  finalValues := values;
end extractFinalValues;

将targetVariables列表替换为你需要的状态、输入、输出变量名,运行函数即可直接得到对应终值。

2. 借助Python脚本批量处理

如果更熟悉Python,可编写脚本解析dsfinal.txt:

def extract_dsfinal_values(file_path, target_vars):
    final_values = {}
    with open(file_path, 'r') as f:
        for line in f:
            line = line.strip()
            if not line or line.startswith('#'):
                continue
            var_name, var_value = line.split('=', 1)
            var_name = var_name.strip()
            if var_name in target_vars:
                final_values[var_name] = float(var_value.strip())
    return final_values

# 示例调用
targets = ["model.state1", "model.input1", "model.output1"]
results = extract_dsfinal_values("dsfinal.txt", targets)
print(results)

这种方法灵活性更高,还能将结果导出为CSV等格式,方便后续与线性化模型的输入输出对接。

3. Dymola仿真前直接指定导出变量

在Dymola仿真设置中直接配置,让软件自动导出目标变量的终值:

  • 进入Simulation > Setup > Output选项卡
  • 勾选Store final values,并添加需要的状态、输入、输出变量到列表
  • 指定导出文件路径,仿真完成后即可得到仅包含目标变量终值的文件,无需再解析dsfinal.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:37:15