- 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/
我对 mongoosejs 中模型的使用感到有些困惑。 可以通过这些方式使用 mongoose 创建模型 使用 Mongoose var mongoose = require('mongoose');
我正在看 from django.db import models class Publisher(models.Model): name = models.CharField(max_len
我有自己的 html 帮助器扩展,我用这种方式 model.Reason_ID, Register.PurchaseReason) %> 这样声明的。 public static MvcHtmlS
假设模型原本是存储在CPU上的,然后我想把它移到GPU0上,那么我可以这样做: device = torch.device('cuda:0') model = model.to(device) # o
我过去读过一些关于模型的 MVC 建议,指出不应为域和 View 重用相同的模型对象;但我找不到任何人愿意讨论为什么这很糟糕。 我认为创建两个单独的模型 - 一个用于域,一个用于 View - 然后在
我正在使用pytorch构建一个像VGG16这样的简单模型,并且我已经重载了函数forward在我的模型中。 我发现每个人都倾向于使用 model(input)得到输出而不是 model.forwar
tf.keras API 中的 models 是否多余?对于某些情况,即使不使用 models,代码也能正常运行。 keras.models.sequential 和 keras.sequential
当我尝试使用 docker 镜像运行 docker 容器时遇到问题:tensorflow/serving。 我运行命令: docker run --name=tf_serving -it tensor
我有一个模型,我用管道注册了它: register_step = PythonScriptStep(name = "Register Model",
如果 View 需要访问模型中的数据,您是否认为 Controller 应: a)将模型传递给 View b)将模型的数据传递给 View c)都不;这不应该是 Controller 所关心的。让 V
我正在寻找一个可以在模型中定义的字段,该字段本质上是一个列表,因为它将用于存储多个字符串值。显然CharField不能使用。 最佳答案 您正在描述一种多对一的关系。这应该通过一个额外的 Model 进
我最近了解了 Django 中的模型继承。我使用很棒的包 django-model-utils 取得了巨大的成功。我继承自 TimeStampedModel 和 SoftDeletableModel。
我正在使用基于 resnet50 的双输出模型进行项目。一个输出用于回归任务,第二个输出用于分类任务。 我的主要问题是关于模型评估。在训练期间,我在验证集的两个输出上都取得了不错的结果: - 综合损失
我是keras的新手。现在,我将使用我使用 model.fit_generator 训练的模型来预测测试图像组。我可以使用 model.predict 吗?不确定如何使用model.predict_g
在 MVC 应用程序中,我加入了多个表并将其从 Controller 返回到 View,如下所示: | EmployeeID | ControlID | DoorAddress | DoorID |
我在使用 sails-cassandra 连接系统的 Sails 中有一个 Data 模型。数据。 Data.count({...}).exec() 返回 1,但 Data.find({...}).e
我正在使用 PrimeFaces dataTable 开发一个 jsf 页面来显示用户列表。用户存储在 Model.User 类的对象中。
我正在关注https://www.tensorflow.org/tutorials/keras/basic_classification解决 Kaggle 挑战。 但是,我不明白应该将什么样的数据输入
我是这个领域的新手。那么,你们能帮忙如何为 CNN 创建 .config 文件吗? 传递有关如何执行此操作的文档或教程将对我有很大帮助。谢谢大家。 最佳答案 这个问题对我来说没有多大意义,因为 .co
我是“物理系统建模”主题的新手。我阅读了一些基础文献,并在 Modelica 和 Simulink/Simscape 中做了一些教程。我想问你,如果我对以下内容理解正确: 符号操作是将微分代数方程组(
我是一名优秀的程序员,十分优秀!