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

求助:Dymola simulateMultiResultsModel函数随机终止模拟实例

Dymola simulateMultiResultsModel 多核参数化仿真随机崩溃问题

问题详情

我需要对模型中Modelica.Blocks.Logical.LessThreshold块的lesThrTOut.threshold参数执行多核参数化仿真,调用simulateMultiResultsModel函数执行如下命令:

simulateMultiResultsModel(
    "Thesis_Project.Experiments.HHSElecGasUsageCalib",
    stopTime=604800,
    method="Radau",
    tolerance=1e-06,
    numberOfIntervals=500,
    resultFile="HHSElecGasUsageCalib",
    initialNames={"lesThrTOut.threshold"},
    initialValues=[3:1:9]);

执行后Dymola底部提示“Failed”,随机数量的dymosim.exe进程无日志崩溃,剩余实例继续运行(本次需仿真7个参数版本,完成数量在1到5之间波动)。

选择simulateMultiResultsModel的原因:Dymola自带的参数扫描工具不支持多核,而该函数支持多核并行仿真。

已尝试的排查操作

  • 调整初始值的设置方式
  • 更换其他参数进行扰动测试
  • 将阈值参数绑定到自定义参数foo,通过修改foo间接调整阈值

可能的解决方向

1. 检查模型并行安全性

  • 排查模型中是否存在全局变量、共享资源或非线程安全的自定义外部代码,多核仿真时多个dymosim.exe实例可能因资源冲突崩溃。
  • 针对LessThreshold块的离散事件触发场景,给阈值参数添加微小偏移(比如3.001:1:9.001),避免边界条件下的事件触发冲突。

2. 调整并行仿真配置

  • 在Options > Simulation > Multi-core中降低并行实例数量(比如从默认核心数改为4),避免系统资源过载导致随机崩溃。
  • 启用详细日志:在函数调用中添加logLevel="verbose"参数,或在Options > Simulation > Logging中开启dymosim日志记录,尝试捕获崩溃实例的错误信息(部分日志可能写入临时文件)。

3. 优化仿真参数

  • 更换求解器:将method="Radau"改为"CVode"或"DASSL",不同求解器对离散事件和并行仿真的兼容性存在差异。
  • 调整数值参数:适当放宽容差(比如1e-05)或增加区间数,减少仿真过程中的数值不稳定情况。

4. 模型重构优化

  • 将目标阈值参数提升为顶层模型参数,避免直接修改子块参数可能带来的路径解析问题。
  • 尝试用simulateExtendedModel配合脚本循环实现多核仿真,手动控制并行实例的启动和错误捕获。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:18