首页 > 解决方案 > 如何限制modelica中的解决方案域

问题描述

我在 OpenModelica 中有一个非常简单的模型。

model doubleSolution
   Real x ;
equation
   x^2 -4 = 0;
end doubleSolution;

这个问题有两个数学解 x={-2,+2}。Openmodelica Solver 将只提供一个结果。在这种情况下+2。

如果我对其他解决方案感兴趣怎么办?

例如,使用正确的起始值 Real x(Start=-7)可能会有所帮助,但我不确定这是否总是一个可靠的解决方案。如果我可以直接限制解决方案范围,例如通过(x < 0). 这样的边界条件可能吗?

标签: openmodelica

解决方案


正如您已经注意到的那样,使用起始值是一种选择。如果这是一个稳健的解决方案,取决于起始值有多好。对于此示例,使用了 Newton-Raphson 方法,该方法高度依赖于良好的起始值。

您可以使用maxandmin给变量一个有效的范围。例如,查看Modelcia 语言规范的 4.8.1 Real Type以查看类型具有哪些属性Real

加上一个好的起始值,这应该足够健壮,并且至少在x变得更大时给你一个警告0.0

model doubleSolution
   Real x(max=0, start=-7);
equation
   x^2 -4 = 0;
end doubleSolution;

另一种选择是在等式中添加断言:

assert(value >= min and value <= max , "Variable value out of limit");

对于minandmax属性,此断言是自动添加的。


推荐阅读