如何避免在 GEKKO 中创建许多二进制切换变量

2024-01-04

我通过最小化数千个方程来求解 14 个变量IMODE = 3 in GEKKO.

每个方程都是真实响应与 P 样条模型预测之间的平方误差 (i.e.,惩罚 B 样条):

eq[i] = m.Minimize((y_true[i] - spline(coeffs, knots, vars)[i]) ** 2).

样条模型由系数和节点(之前计算)以及 14 个要优化的变量组成。

构建 P 样条模型时GEKKO,我需要检查变量值位于哪个结之间。我尝试同时使用m.if2 and m.if3为了达成这个;然而,这两个逻辑函数都会创建许多额外的二进制切换变量,特别是对于具有许多块的样条线。最后,我得到了数以万计的二进制切换变量。这些数量超过了方程,导致自由度数小于 0。

Question: 我怎样才能避免使用m.if2 or m.if3构建我的样条曲线?

Note: 我知道GEKKO有预先构建的对象m.bspline;但是,它似乎只能执行具有两个自变量的 2D B 样条曲线,而我的样条曲线可以具有十多个自变量。


The m.if2()函数使用 MPCC 而不是二进制变量。当创建额外的松弛变量和方程时m.if2()使用函数。这m.if2()函数在数值上可能不可靠。这m.if3()函数通常更可靠,但它需要额外的二进制变量和 MINLP 求解器 (APOPT) 来找到解决方案。Negative degrees of freedom是一个警告,但仍可能求解,因为求解时不平等约束可能不活跃。

另外需要考虑的一件事是spline(coeffs, knots, vars)[i]在解决方案期间不会重新评估。 Gekko 模型被编译为字节码,并且没有回调到原始函数。由于样条线在模型初始化期间评估一次,因此可以在求解之前或之后确定位置吗?

最后的建议是使用机器学习模型 https://apmonitor.com/pds/index.php/Main/RegressionOverview例如神经网络、高斯过程、支持向量回归器或可以导入到 Gekko 中的类似形式机器学习功能 https://gekko.readthedocs.io/en/latest/ml.html在使用 sklearn 或 tensorflow / keras 进行训练之后。

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

如何避免在 GEKKO 中创建许多二进制切换变量 的相关文章

  • 如何打印前面有一定数量空格的整数?

    C has printf Xd Y 它只打印整数 X 并使其在控制台窗口上占据 Y 空格 例如 printf 3d 10 console 10 printf 5d 5 console 5 我如何在 python 3 中使用它 This pr
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • Discord.py 斜线命令在 cogs 中不起作用

    我正在构建一个不和谐的机器人 并且想要在 cogs 内使用斜杠命令 但这些命令不显示或工作 这是代码 cog guild ids 858573429787066368 861507832934563851 class Slash comma
  • pandas 数据框的最大大小

    我正在尝试使用读取一个有点大的数据集pandas read csv or read stata功能 但我不断遇到Memory Errors 数据帧的最大大小是多少 我的理解是 只要数据适合内存 数据帧就应该没问题 这对我来说不应该是问题 还
  • 无法使用Python请求会话模块登录网站

    我刚刚开始进行网络抓取 对于我的第一个项目 我尝试使用 requests Session 登录 artofproblemsolving com 并访问另一个用户的帐户 这是我的代码 import requests LOGIN URL htt
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • 快速排序优化

    我正在学习排序算法 下一步 我试图让我的实现接近std sort 到目前为止我还很远 我有 3 个快速排序的实现 标准快速排序 使用临时数组 quicksort with following optimizations median3 用于
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • 在字节数组上进行右位旋转/循环移位的最快方法是什么

    如果我有数组 01101111 11110000 00001111 111 240 15 移位 1 位的结果是 10110111 11111000 00000111 183 248 7 数组大小不固定 移位范围为 1 到 7 含 目前我有以
  • matplotlib:渲染到缓冲区/访问像素数据

    我想使用 matplotlib 生成的图作为 OpenGL 中的纹理 到目前为止 我遇到的 matplotlib 的 OpenGL 后端要么不成熟 要么已经停止使用 所以我想避免使用它们 我当前的方法是将图形保存到临时 png 文件中 并从
  • matplotlib vlines 图中未应用 y 轴的最小值

    我正在 matplotlib 中绘制 vlines 图 数据集中的所有 y 值如下 gt 0 我希望 y 轴最底部的刻度能够读取0 但相反 我得到 500 这是代码 usr bin env python import numpy as np
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • Kivy TextInput 水平和垂直对齐(文本居中)

    如何在 Kivy 的 TextInput 中水平居中文本 I have the following screen But I want to centralize my text like this 这是我的 kv 语言的一部分 BoxLa
  • “KMeans”对象没有属性“k”

    我使用 Yellowbrick 包绘制数据集的肘部曲线 以使用 KMeans 作为模型找到数据集的最佳簇数 我正在使用 Scikit learn KMeans 和 Yellowbrick kelbowvisualizer 函数 生成了肘部曲
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 在Python中随机交错2个数组

    假设我有两个数组 a 1 2 3 4 b 5 6 7 8 9 我想将这两个数组交错为变量 c 注意 a 和 b 不一定具有相同的长度 但我不希望它们以确定性的方式交错 简而言之 仅仅压缩这两个数组是不够的 我不想要 c 1 5 2 6 3
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 将二进制数据视为文件对象?

    在此代码片段 由另一个人编写 中 self archive是一个大文件的路径并且raw file是以二进制数据形式读取的文件内容 with open self archive rb as f f seek offset raw file s
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe

随机推荐

  • 如何确保在数据加载之前我不会访问数据?

    我是编程新手 我的代码收到错误 致命错误 在展开可选值时意外发现 nil 2017 10 27 16 06 16 755817 0200 Inspireme1 0 836 85307 致命错误 在展开可选值时意外发现 nil LLDB 新错
  • 卷曲 ssl 证书

    我总是在curl中关闭CURLOPT SSL VERIFYPEER 但我真的想在我的php centos curl检查其证书的地方进行升级 我有 CENTOS 4 7 i686 PHP 5 2 16 我从 stripe com 得到了一个不
  • 如何在 Apache CXF 中引发 403 错误 - Java

    我基于拦截器使用以下代码 当 check 返回 true 时 我想抛出 403 错误 Override public void handleMessage Message arg0 throws Fault HttpServletReque
  • 将 bg 和 fg 与给定 PID 一起使用

    我正在使用Ubuntu 如果给我一个作业的 PID 我怎样才能将暂停的作业转到后台 前台和运行状态 I know bg fg但他们要求job id not PID 另外 我暂停工作 kill STOP
  • Boost::Spirit 表达式解析器

    我的 boost spirit 解析器还有另一个问题 template
  • 在方法开始和结束时进行错误处理的优缺点是什么

    根据我的程序员的经验 我混合了所有可能的错误处理方式 我创建了我的个人风格 不过 我想听听您认为的优点和缺点方法开始时与方法结束时的错误处理 一开始的处理 public String GenerateSomeStringData Strin
  • ReactJS - 如何使用 javascript 访问组件的 displayName?

    我正在构建一些 React 组件 有时想将正在渲染的组件类型记录到控制台 方法是displayName JSX 在显示组件名称时使用它 从组件的上下文中 我如何访问displayName财产 例如我怎样才能使console log本例中的语
  • IE 11 于 22 年 6 月终止生命后,VBA 互联网控制功能还会起作用吗?

    正如标题所问 我使用的某些工具依赖于带有 Internet Control 的 VBA 代码来进行网页抓取和控制 IE 页面 随着 IE11 明年即将终止 有谁知道这将如何影响 VBA 中的 Internet 控制或者它是否仍然有效 试图弄
  • PHP - 具有相对路径的 include() 或 require() 在 Windows 上不起作用,即使附加 __DIR__ 也是如此

    我在这里阅读有关 PHP 使用 include 或 required 与相对路径时出现的问题 我看到的所有解决方案都是附加DIR 我目前正在 Windows 上工作 即使错误消息显示了当前值DIR 那么相对路径似乎是作为字符串添加的 而不是
  • 使用 Twig 使两个数组相交

    我有两个想要相交的数组 我得到了这两个数组 转储 数组1 array 6 0 gt array 2 id gt int 121 text gt string 3 uno 1 gt array 2 id gt int 122 text gt
  • 如何测量 SQL 填充因子值

    通常 当我在表上创建索引时 我通常会猜测Fill Factor应基于对表的使用方式 多次读取或多次写入 的有根据的猜测 有没有更科学的方法来判断更准确Fill Factor value 您可以尝试运行大量实际操作并查看 IO 队列以了解不同
  • Visual Studio 2008 中的 .NET 2.0 安装项目

    我开发了一个针对 net 2 0 的 win forms 应用程序 所有这些都在 Visual Studio 2008 sp1 中 我这样做是因为我并不真正需要应用程序中的 3 0 功能 我不希望客户在可以安装半大型框架的情况下必须安装一个
  • Kotlin:Kotlin 脚本 (.kts) 无法使用常规代码?

    在我的库的代码库中 我有这个包函数 fun sayHello println Hello there 该函数在包中定义org jire pomade 我想在一个 kts像这样的文件 sayHello 不幸的是 我似乎无法让除了 Kotlin
  • 在从 VSTS 进行新部署之前删除 Azure 上的文件和文件夹

    作为 VSTS 中构建过程的一部分 我想在新部署之前从我的 Azure 站点中删除所有文件和文件夹 除了少数几个 我的猜测是 使用 Azure Powershell 脚本将是一个好主意 我更喜欢制作内联脚本 我使用 Azure 资源管理器作
  • 如何使用 useEffect() 更改 React-Hook-Form defaultValue?

    我正在创建一个页面 供用户使用 React Hook Form 更新个人数据 加载分页后 我使用useEffect获取用户当前的个人数据并将其设置为表单的默认值 我将获取的值放入defaultValue of
  • libvlc_new 始终返回 NULL

    我尝试做教程示例 https wiki videolan org LibVLC Tutorial libvlc 的工作 我通过安装了vlc SDKsudo apt install libvlc dev并链接到它 lvlc 编译和链接完成时没
  • 在移动 Safari 中忽略 Overflow-x 值

    我们将body和可滚动元素上的overflow x值设置为隐藏 但移动Safari会忽略这些值 在桌面上 溢出值工作正常 相关代码 body overflow x hidden width 320px height 100 min heig
  • 如何修复状态为“已拒绝”的 dig 命令?

    我需要帮助修复被拒绝的状态 我看了一下named conf一切看起来都很好 我什至改变了allow query to any 它曾经是localhost dig xxx com ns1 xxx com lt lt gt gt DiG 9 8
  • C++中的时差

    有谁知道如何计算 C 中的时间差 以毫秒为单位 我用了difftime http linux die net man 3 difftime但它对于我想要测量的东西来说没有足够的精度 我知道这是一个老问题 但 C 0x 有一个更新的答案 有一
  • 如何避免在 GEKKO 中创建许多二进制切换变量

    我通过最小化数千个方程来求解 14 个变量IMODE 3 in GEKKO 每个方程都是真实响应与 P 样条模型预测之间的平方误差 i e 惩罚 B 样条 eq i m Minimize y true i spline coeffs kno