为什么 Dymola/Modelica 中的属性最小值、最大值不起作用?
Why Attributes min, max in Dymola/Modelica doesn't work?
我正在尝试使用 'min'、'max' 属性来限制值,如下所示。
SI.Angle thetta_out(start=0, min=0, max=31.4)
但是 min 和 max 属性不起作用。该值不受限制地变化,只有起始值按照我设置的方式工作。
有人能找出问题所在吗?
我不想像 if- 语句那样编写逻辑来处理这个问题,因为这会使系统变慢和扭曲。
您需要在
中手动激活检查
Simulation Setup -> Debug
看起来像这样:
如果我没记错的话,默认情况下该设置处于非活动状态的原因与激活它时性能下降有关,再加上通常不需要它。
如需更准确的描述,您可以查看 Dymola 手册 1,第 5.6.8 节 "Bound checking for variables",其中提供了更详细的解释。这也是上面截图的来源。
最小值和最大值仅用作提示,不作为硬性限制。在 Dymola 中,您可以设置标志以将其强制执行为硬限制,转到“编辑”、“选项”、“标志”,然后搜索 "min":
设置Advanced.AssertNonLinearInsideMinMax = true;
大概就够了。
作为标志编辑器 GUI 的替代方案,您还可以从命令 window.
设置标志
我正在尝试使用 'min'、'max' 属性来限制值,如下所示。
SI.Angle thetta_out(start=0, min=0, max=31.4)
但是 min 和 max 属性不起作用。该值不受限制地变化,只有起始值按照我设置的方式工作。
有人能找出问题所在吗?
我不想像 if- 语句那样编写逻辑来处理这个问题,因为这会使系统变慢和扭曲。
您需要在
中手动激活检查Simulation Setup -> Debug
看起来像这样:
如果我没记错的话,默认情况下该设置处于非活动状态的原因与激活它时性能下降有关,再加上通常不需要它。
如需更准确的描述,您可以查看 Dymola 手册 1,第 5.6.8 节 "Bound checking for variables",其中提供了更详细的解释。这也是上面截图的来源。
最小值和最大值仅用作提示,不作为硬性限制。在 Dymola 中,您可以设置标志以将其强制执行为硬限制,转到“编辑”、“选项”、“标志”,然后搜索 "min":
设置Advanced.AssertNonLinearInsideMinMax = true;
大概就够了。
作为标志编辑器 GUI 的替代方案,您还可以从命令 window.