- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Dymola(基于 modelica 的商业软件)中运行系统模型。模型是关于强制对流下多孔物质的传热和传质。我提出这个问题的问题是关于模型模拟过程中产生的错误。
使用模型的当前设置,可以在给定的模拟时间(7200 秒)内成功运行。但它会在日志文件中生成以下提示(在整个运行过程中间歇性地生成):
ERROR: Failed to solve non-linear system using Newton solver.
To get more information: Turn on Simulation/Setup/Debug/Nonlinear solver diagnostics/Details
Solution to systems of equations not found at time = 882.457
Nonlinear system of equations number = 4
Infinity-norm of residue = 154.849
Iteration is not making good progress.
Accumulated number of residue calculations: 25279
Last values of solution vector:
drum.T_e = 306.346
drum.X_e = 0.0413446
Last values of residual vector:
{ -0.000157014, 154.849 }
我想我最重要的问题是,当我看到这个时,我应该对我的模型有什么大致的了解。这是否意味着我定义方程组或事件系统的方式存在特定错误?当我通过在一定范围内更改一些关键参数来对模型进行稳健性研究时,这个问题变得显而易见。由于此错误,模型会在参数值的随机组合下在结束时间之前失败。正如错误消息中所建议的,我确实运行了模型并检查了诊断详细信息,并且它提供了大型 Amat 数组,并具有以下说明:
Failed to evaluate model for ODE-Jacobian
Too many slow iterations with no progress
Line search: DX-norm scaled-residua-norm residual (unscaled)
Search direction{ -0.000634251, 6.52346E-006 }
To investigate the properties of the function, you can plot the
function in the search direction by pasting the following
commands in the Dymola command window:
Amat={<...>};
plotArray(Amat[:,1],Amat[:,2],-1);
If the graph has discontinuities, local minima above zero,
and/or knees this explains the problem.
如您所见,它为绘制 Amat 提供了方向(以便查看是否存在不连续性和局部最小值)。同样,如果我确实发现这些不规则之处,那么我应该对模型(方程)进行哪些更改?
我知道所提供的详细信息可能不足以回答,但是在整个运行过程中存在大量日志,并且出现相同的重复失败。因此,如果有人对此有一些想法,也请建议我可以添加有关我的模型或模拟的相关细节,以便回答可能很容易。
最佳答案
该错误消息表明求解器无法找到模型中非线性方程组的解。这可能意味着系统没有解决方案,或者只是求解器无法找到它。如果存在解但求解器无法找到它,则可能是由于起始条件所致,即非线性求解器的起始条件,而不是 ODE 求解器的起始条件。显然,对于非线性系统,解可能对初始条件非常敏感,特别是当存在多个解时。有时您会发现,通过降低求解器容差(例如,将其从 1e-4 更改为 1e-6)实际上可以提高鲁棒性,因为软件找到的数值解将更接近真实解。另一种可能性是此时没有解决方案。这就是 Dymola 在第二个片段中使用“Amat”数组报告的内容。如果运行这些命令,您可能会发现存在一个不跨越零的局部最小值,如下图所示。
其中“x”代表求解器尝试过的点。在这种情况下,求解器尝试通过改变 x 的值并检查 f(x) 的值来找到方程 0 = f(x) 的解。它试图找到过零的地方。它尝试的点之间仍然可能存在交叉点,但这通常意味着没有解决方案。
现在的问题是如果发生这种情况该怎么办。系统可能正在接近不存在解决方案的点,因此您可能能够防范该区域(就像您可能防范除以零或负数的平方根一样)。显然这取决于您的具体情况。不过,最好的选择是完全避免非线性系统。这也取决于您的型号和情况。根据用于创建模型的库,您可以通过从模拟设置的“翻译”选项卡生成扁平化 Modelica 代码文件 (.mof) 来研究系统结构。然后,您可以研究生成的非线性系统,这可能会为您提供一些关于如何重新构建模型以避免非线性系统的线索。
您可以做的另一件事是从仿真设置的“调试”选项卡中启用非线性系统解决方案的更多调试信息。在这里,您可以获得有关求解器找到的解决方案的更多详细信息(例如找到的解决方案和每个步骤的残差值)。我不确定它是否会为您提供比上图更多的信息,因为没有找到解决方案,但在其他情况下它可能很有用。
关于iteration - Modelica模型稳健性问题: Failed to evaluate model for ODE-Jacobian,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539537/
我被卡住了,请重新审视这个问题。 我正在与其他人的意大利面条式代码一起工作,这些代码不再存在,并且有很多时间弄清楚他们正在评估什么。 在查询转储中,我看到
真实世界Haskell的第8章 globToRegex' (c:cs) = escape c ++ globToRegex' cs 这个函数不是尾递归的,它说答案依赖于 Haskell 非严格(惰性)
来自 Haskell,我正在阅读 Idris 关于懒惰(非严格)的故事。我翻了翻最近的发行说明,还有 found code类似于以下 myIf : (b : Bool) -> (t : Lazy a)
我正在读这个帖子 A custom find function并指出了这一点 有趣的结果。请注意,Evaluate 与 Application.Evaluate 相同,并且所需时间大约是 Active
R包裹mice带有以下示例: library("mice") imp <- mice(nhanes) fit <- with(data=imp,exp=lm(bmi~hyp+chl)) 我想要一个灵活
我正在尝试使用 PHPUnit 3.6.4 对我的 Zend Framework 应用程序进行单元测试。当我在命令提示符中尝试此命令时,出现以下错误。 C:\xampp\htdocs\testsamp
我希望函数的结果是: 所有值的计算结果均为 False(无、0、空字符串)-> True 所有值的计算结果为 True -> True 所有其他情况 -> 错误 这是我的尝试: >>> def con
我可以使用 puppeteer 导航到一个页面但后来page.evaluate没有返回任何响应。此外,我无法在 page.evaluate 内部进行调试。任何一个。我在 Debug模式下运行脚本( n
from surprise import Reader, Dataset, SVD from surprise import evaluate ----------------------------
使用 PhantomJS 考虑以下代码片段: var reloadAfterLogin = false; function(user, pass, debug){ // step 3 submit L
我知道流是惰性的,直到在流上调用终端方法。我所知道的是,在调用终端方法之后,所有中间方法都按调用顺序执行。 但是对于下面的程序,我无法理解流是如何工作的。这是代码,我试过了。 import java.
最近我开始研究 VS2012。 当我调试代码(这是 SharePoint 2013 应用程序)并尝试获取变量的值时 - 我一次又一次收到消息: Function evaluation disabled
我正在阅读 David Flanagan 的《JavaScript:权威指南》,这可能是世界上最厚的 JavaScript 书。在简要描述数组初始值设定项时,弗拉纳根说“每次数组初始值设定项时都会评估
在 puppeteer 截取屏幕截图之前,我试图让代码执行等待所有图像加载完毕。当调用 initData() 函数时,我的 DOM 被填充,该函数在客户端 js 文件中定义。延迟或超时是一种选择,但我
对国际通用标准有一些批评,如 [Under-attack]。 1 您认为使用 CC 开发 IT 产品的利弊是什么? 最佳答案 我是 BSI(德国)和 NIAPP(美国)计划的通用标准评估员。我有一些经
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 11 年前关闭。 Improve this
在非严格求值语言中,使用按名称调用与通过宏扩展调用有何区别和优点/缺点? 您能否提供一个示例来解释这两种评估策略? 谢谢! 最佳答案 按姓名调用: 按名称调用是一种求值策略,其中函数的参数在调用函数之
我真的无法在 Modelica 规范中找到任何答案,所以我想问问你们。规范指出如果表达式的值不影响结果(例如, bool 表达式的短路评估),工具可以自由地求解方程、重新排序表达式和不计算表达式。 I
我想尝试惰性表达式评估,但我现在不想深入研究 Haskel。拜托,你能帮忙找出其他语言有这个功能吗? 最佳答案 你可以用多种语言模拟它。 this例如,是 C++ 的通用惰性求值器。正如文章所说,它也
关注,据说foldl'是 foldl 的严格版本. 但是我很难理解,strict 是什么意思?意思是?? foldl f z0 xs0 = lgo z0 xs0 where
我是一名优秀的程序员,十分优秀!