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

OMShell中嵌套模型的参数值修改问题求助

关于OMShell中setParameterValue()访问深层嵌套模型参数的解决方案

setParameterValue()并非只能修改顶层仿真模型的参数,你遇到的“找不到类”错误本质是参数的层级路径指定错误,没有正确定位到嵌套模型内部的参数。

正确访问深层参数的方法

要修改嵌套模型的参数,必须指定完整的实例层级路径,用.分隔各级嵌套模型的实例名称:

  • 路径格式:顶层模型名.嵌套模块1名.嵌套模块2名.参数名
  • 注意路径中的所有实例名称必须和模型内部定义的完全一致,严格区分大小写
  • 可以先在OMEdit中打开模型,展开层级结构,直接复制参数的完整路径,避免拼写错误

示例.mos脚本

假设你的自定义包为MyBuildingPackage,顶层仿真模型是MainSimulation,其中嵌套了WeatherModule(气象文件参数)和Building.Zone.Thermostat(温控参数),脚本示例如下:

// 加载自定义包
loadFile("MyBuildingPackage.mo");
// 实例化顶层模型(必须执行这一步,否则无法访问内部参数)
instantiateModel(MyBuildingPackage.MainSimulation);

// 修改气象文件路径
setParameterValue("MyBuildingPackage.MainSimulation.WeatherModule.weatherFile", "new_chicago.epw");
// 修改嵌套温控模块的设定值
setParameterValue("MyBuildingPackage.MainSimulation.Building.Zone.Thermostat.setpointTemp", 23.5);

// 执行仿真
simulate(MyBuildingPackage.MainSimulation);

额外排查要点

  • 必须先执行instantiateModel实例化模型,仅加载文件无法访问内部嵌套参数
  • 确认目标参数是可修改的独立参数,而非模型内的常量或关联变量(这类参数无法通过setParameterValue()修改)
  • 可以用listParameters("顶层模型完整路径")命令列出所有可访问的参数,验证你的路径是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:34