非线性代数方程的初步猜测

2023-12-04

我有一个非线性代数方程组需要求解。如何使用计算值(具有连续时间变化)作为解变量的初始猜测,而不是使用参数作为起始值?初始方程部分可以用于此目的吗?

我创建了一个测试模型来解释这个问题:

model Teststartvalue
  Real value1=1000;//calculated by some model
  Real value2=-1000;//calculated by some model
  parameter Real InputValue = 100;//Input to model
  Real StartValue=if InputValue < value2 then 1.8 elseif InputValue > value1 then 2.8 else 0.5;
  Real x(start=0.5);
//Desired code
//  Real x(start=StartValue);
equation
  (x-1)*(x-2)*(x-3)=0;
//  x^3-(6*x^2)+(11*x)-6=0;
end Teststartvalue;

目的是根据一些计算提供“x”的初始猜测。我怎样才能在 openmodelica 中实现这一点?


据我所知,start 属性只能采用常量或参数可变性的表达式(请参阅 Modelica 规范 3.4 第 3.8 节)。因此,我想到的唯一真正的解决方案是一点破解:

  • 设置用于起始值的参数的固定属性(StartValue在你的例子中)false and
  • 计算初始方程中的值

这将导致:

model TestStartValue
  Real value1=1000;//calculated by some model
  Real value2=-1000;//calculated by some model
  parameter Real InputValue = 100;//Input to model
  final parameter Real StartValue(fixed=false);
  Real x(start=StartValue);

initial equation 
  StartValue=if InputValue < value2 then 1.8 elseif InputValue > value1 then 2.8 else 0.5;

equation 
  (x-1)*(x-2)*(x-3)=0;
end TestStartValue;

不确定这是否适用于所有工具及其未来版本!我实际上不认为这是打算以这种方式使用的。此外,这可能会在以后引起问题,因为通常假定参数是在模拟开始之前设置的,而不是在初始化期间设置的......

另一种选择是使用初始方程,它应该给出如下结果:

model TestStartValueInitEq
  Real value1=1000;//calculated by some model
  Real value2=2000;//calculated by some model
  parameter Real InputValue = 100;//Input to model
  Real x;

initial equation 
  if InputValue < value2 then
    pre(x)-2=0;
  elseif InputValue > value1 then
    pre(x)-3=0;
  else
    pre(x)-1=0;
  end if;

equation 
  (x-1)*(x-2)*(x-3)=0;
end TestStartValueInitEq;

该解决方案的缺点是,初始方程实际上旨在设置状态变量的值。对于这些,可以自由选择初始值(或多或少),因为在初始化时没有方程确定它。这里的情况并非如此,它将给出多个方程x在初始化期间这将制动模型。为了避免 Dymola 中出现这种情况pre()有帮助(不确定在其他工具中是否有效)。这将导致“冗余一致的初始条件”。 Dymola 可以处理。为了使方程冗余,它们需要给出相同的结果。因此,您不能像原始代码中那样使用结果估计值,这就是我在第二个示例中更改它们的原因。

不过,这两种解决方案对我来说似乎都不完美。如果还有其他解决方案请补充...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

非线性代数方程的初步猜测 的相关文章

  • 从平面 Modelica 代码中提取类型/类名

    我想知道是否已经存在从平面 Modelica 代码中提取所有变量及其相应类型 分别为类名 的可能性 例如 给定扁平 Modelica 模型的摘录 constant Integer nSurfaces 8 constant Integer c
  • Modelica 类图

    我正在寻找一种可以 自动 从 Modelica 代码创建类图的工具 https trac modelica org Modelica attachment ticket 85 classDiagramModelicaMedia png我需要
  • 如何在 Dymola (Modelica) 中使用 /bigobj 进行编译

    我正在将一个相对较小的有限元 FE 模型集成到 Modelica 中 为此 我创建了一个模型 Modelica 类 它可以读取 Matlab 二进制文件格式的质量 M 和刚度 K 矩阵 我将 FE 模型与 Modelica 标准库 Mode
  • 非线性代数方程的初步猜测

    我有一个非线性代数方程组需要求解 如何使用计算值 具有连续时间变化 作为解变量的初始猜测 而不是使用参数作为起始值 初始方程部分可以用于此目的吗 我创建了一个测试模型来解释这个问题 model Teststartvalue Real val
  • 外部函数:从 C 脚本使用 .dll 的替代方法

    这是一个伴随问题外部函数 在 C 脚本中引用头文件来编译 dll 该堆栈溢出问题是使用 Modelica 外部函数调用 c 脚本 然后 该 c 脚本使用 dll 中包含的 c 函数 以下是我尝试过的最初首选方法和我不喜欢的工作尝试 初步尝试
  • Modelica 仿真和方程初始化总时间计算

    我想测量 DAE 系统的总模拟和初始化时间 我对挂钟时间感兴趣 就像 Matlab 中函数 tic toc 给出的时间 我注意到在 Modelica 中 模拟时间有不同的标志 但实际上 与我按下模拟按钮到模拟结束所经过的时间 大约用手机时钟
  • 使用 python 进行 Modelica 参数研究

    我想使用 python 在不同的 modelica 建筑库 建筑物 IDEAS 中运行参数研究 例如 更改渗透率 我尝试过 simulateModel和simulateExtendedModel zone n50 value 我的问题 为什
  • Modelica - Dymola Python 界面:将输出格式设置为文本

    我通过 Dymola Python 界面使用 Dymola 运行 Modelica 模拟 我的目标是将结果文件写入文本输出 即写入 txt文件 即使我的模型包含注释 Dymola experimentSetupOutput textual
  • 是否可以在 Windows 机器上从 Dymola 编译 Linux 可运行的 fmus?

    我正在尝试使用 Dymola 从 Windows 计算机导出 FMU 以便在 Linux 和 Windows 操作系统上使用 我猜这样的 fmu 将有 linux64 和 linux32 二进制文件以及 win32 和 win64 二进制文
  • 如何在 Dymola 中隐藏模拟变量

    模拟模型后是否可以隐藏对象或输出 我有很多东西 我觉得我在浪费时间筛选它们试图找到我的正确答案 如果没有 有没有办法组织我的输出在模拟选项卡中的显示方式 Thanks Dymola 的主要可能性是 使组件受到保护 默认情况下 受保护的组件不
  • FMU FMI模拟,设置某类参数时不修改结果

    我为该示例开发了一个基于 MSL 流体库的简单 Modelica 模型 我将 MassFlowSource 与管道和 Boundary PT 连接为接收器功能 如下图所示 http www casimages com img php i 1
  • 不同 Modelica 仿真环境之间有什么区别?

    有不同的 Modelica 仿真环境 包括 Dymola Wolfram SystemModeler OpenModelica 和 Jmodelica 所以 我尝试加载热流体库 ThermoSysProhttps github com Dw
  • 在 Modelica 模拟中包含因果关系会导致模型扁平化时出现平移错误

    我想模拟基于能量工作的质量弹簧模型的控制器 model model parameters parameter Real m 1 parameter Real k 1 parameter Real Fmax 3 parameter Real
  • 使用“在模型中保存起始值”选项来帮助 Dymola 中的收敛

    I build a model in dymola Even though there are some errors during the initialization process but the calculation succee
  • 后续问题:Modelica仿真和方程初始化总时间计算

    我正在写这个相关问题this https stackoverflow com questions 61375492 modelica total time calculation of simulation and equation ini
  • 如何在 Modelica 中构建液体平衡连接器?

    帖子状态 200313 得到了代码 DEMO v42 的答案 我接受了赏金 200310 我评论了昨天建议的两篇关键论文 还是不明白如何更新DEMO v41 200309 我想强调的是 关键问题是如何在代码DEMO v41 如果可能的话 中
  • 如何将自定义包添加到 Dymola/Modelica 的启动路径中?

    我有一个自定义包 我发现自己在 Dymola 模型中重复使用该包 并且我想将此包放在一个公共目录中 每当我启动 Dymola 时都会自动加载该目录 我当前的策略是在加载我正在处理的模型时加载自定义包 然后保存总计 这并不优雅 因为自定义包的
  • 使用内部/外部传播包

    我想在我的模拟中放置一个 系统 组件 类似于Modelica Fluid System and Modelica Mechanics MultiBody World 所有其他组件都可以从中访问Medium包 以便在整个流程图中仅设置一次工作
  • 理解 Dymola 错误消息时遇到问题

    谁能告诉我 代数环 的含义 以及我应该如何通过添加 预 运算符来应对这种情况 我真的没看懂 Error Failed to generate code for an algebraic loop involving when equatio
  • 使用 pyFMI 进行模拟时出现 CVodeError

    我尝试在 Anaconda Python 3 6 8 上设置 pyFMI 安装 pyFMI 站点上列出的所有必需软件包 fmu 加载没有问题 但当我尝试模拟 fmu 时 出现错误 Could not find cannot import n

随机推荐

  • 为什么 XmlDocument Validate 事件处理程序没有被命中?

    我有这个代码 Load the document XmlDocument xmlDocument new XmlDocument use the stream and have it close when it is finished us
  • C++ 可变参数模板和求值顺序

    我有以下代码 lib hxx template
  • Ado.net (2.0+) 连接池是在应用程序域之前还是每个进程

    我试图理解汇集理论 ADO NET 和 SQL Server 之间的交互要好得多 但尚未找到明确的答案 我一直假设每个进程 但我突然想到它可能是每个应用程序域 任何深入的参考文献也将不胜感激 连接池是一个复杂的野兽 因为它们是在几个不同的范
  • 如何使用 Node 中的 Promises 一次并行异步多个请求

    数组和循环 但我希望能够并行运行所有它们 因为我不想一个接一个地运行 我基本上想将所有端点调用状态代码 正文和时间存储为数组 并将它们作为结果返回 无论端点中是否存在错误 我正在使用 Bluebird 如何利用它的功能来解决这个问题 您可以
  • 每个子图的旋转轴文本

    我正在尝试绘制散点矩阵 我正在建立这个线程中给出的示例matplotlib中有制作散点图矩阵的函数吗 在这里 我只是稍微修改了代码 使轴对所有子图都可见 修改后的代码如下 import itertools import numpy as n
  • 如何将 c# 的 byte[] 转换为 java byte[]

    我有这段 C 代码 byte t 6 250 215 但在Java中是 byte t 6 6 41 如何解决这个问题呢 如何解决这个问题呢 第一个是关于java如何表示数据类型 byte 字节数据类型是 8 位有符号二进制补码整数 它的最小
  • 如何使用 redux 存储变量更新 FieldArray 元素

    我将 redux form 与 FieldArray 一起使用 默认情况下 数组中将有 1 个元素 并且它是从 JSON 填充的 我最多可以添加 3 个 FieldArray 组件中的元素 在下面的代码中 elementList 属性来自
  • Android模拟器UDP无法接收;在手机上运行良好

    您好 我正在尝试连接到网络上的盒子 它上面有一个正在运行的 UDP 服务器 使用下面的代码 我可以与盒子通信并从我的手机发送 接收 UDP 数据包 但是 我不知道如何使用 android 模拟器进行设置 我在 StackOverflow 以
  • Firebase 合并 Android 中的类似通知

    我们在 SIP 应用程序中使用 Firebase 以便在应用程序离线时向我们发送未接来电通知和聊天通知 虽然发送和接收工作正常 但我们对 Android 客户端产生了影响 5 个未接来电 obv 会生成 5 个未接来电通知 填满客户端设备上
  • SQL语句证明R(ABCD)中的A->B

    如何编写一个 SQL 语句来证明函数依赖 A B 在已知没有记录具有 NULL 值的情况下与属性 ABCD 存在关系 SELECT from R r1 R r2 where r1 A r2 A and r1 B lt gt r2 B 如果
  • 如何隐藏 Google Blogger 主页上具有特定标签的所有帖子?

    让我们考虑一下 编码 技术 日记 是博客上的一些标签 我不想在主页上显示所有 日记 标签的帖子 以及我其余的标签帖子 那么我想做什么 我希望 XML 代码能够隐藏主页中带有一些标签的帖子 我在 yahoo google yandex 等搜索
  • 使用 python 文件启动 ipython 笔记本

    我对 python ipython 不太熟悉 但有人问我是否可以使用特定的 python 文件启动 ipython 笔记本 然后它可以用于调试 然后 另一个软件会在临时文件夹中创建一个 py 文件 并使用该文件调用 ipython 笔记本
  • 多线程检查队列中的成员资格并停止线程

    我想使用 2 个线程迭代列表 一个来自前导 另一个来自尾随 并将元素放在一个Queue在每次迭代中 但在将值放入之前Queue我需要检查其中的值是否存在Queue 当其中一个线程将该值放入Queue 所以当发生这种情况时 我需要停止线程并返
  • 服务器因 Meteor + 异步结果不匹配而在 HTTP.call 上崩溃

    我尝试使用 Meteor 的 HTTP 库进行一些基本的 GET 调用时得到两个非常奇怪的结果 这些相同的请求可以在 Curl 和 python 中正常工作 因此它不在 API 一侧 1 结果与异步回调结果不一致 我在我的流星方法中使用以下
  • 未选择 HABTM 下拉项目

    我创建了一个网站来学习 CakePHP 但由于某种原因 我无法获得多选下拉框来显示我所选择的项目 在此示例中 1 个视频游戏可以有多种难度 简单 普通 困难 在我的游戏编辑页面上 我有一个多选框来选择困难 它显示了所有三个困难 我可以选择它
  • 计算 Git 分支上的提交次数

    我已经找到了这个答案 git 中分支的提交数量但这假设分支是从 master 创建的 如何计算分支上的提交数量without依赖于这个假设 在 SVN 中这是微不足道的 但由于某种原因在 git 中确实很难弄清楚 要计算您所在分支的提交 g
  • 为文本着色

    如何使用 Bash 显示彩色文本 a 棕色背景上的白色文本 b 黄底黑字 echo e bbb aaa bbb and echo e aaa bbb aaa 我的结果不太好 text black e 0 30m white e 0 37m
  • Stripe webhooks 事件顺序

    我目前正在构建一个使用 Stripe 进行支付的节点应用程序 我已经设置了 webhooks 并正在工作 因为我想在我的应用程序中创建订阅者 但需要来自 stripe webhooks 的响应来存储我的 mongo 数据库中不同集合中不同事
  • 在运行时替换包中的图像

    我可以在运行时替换包中的图像吗 基本上 我的捆绑包中有一些图像 如果图像有任何更改 我也会从服务器获取它们 我可以在运行时将它们放入包中 这样我就不需要更改代码来选择图像吗 您无法更改应用程序包的内容 但是 可以将图像存储在应用程序的文档文
  • 非线性代数方程的初步猜测

    我有一个非线性代数方程组需要求解 如何使用计算值 具有连续时间变化 作为解变量的初始猜测 而不是使用参数作为起始值 初始方程部分可以用于此目的吗 我创建了一个测试模型来解释这个问题 model Teststartvalue Real val