Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

2024-04-14

背景

我正在尝试在 Pyomo 中使用代理模型。给定一组标记为 x、y 和 z 的数据,我想将 z 写为 x 和 y 的廉价函数。

Issue

Pyomo 具有用于多元分段线性函数的工具。看here https://pyomo.readthedocs.io/en/stable/library_reference/kernel/piecewise/piecewise_nd.html#pyomo.core.kernel.piecewise_library.transforms_nd.TransformedPiecewiseLinearFunctionND。我设置了一个简单的示例,并且我的函数正在正确评估。但似乎没有为 Z 添加任何约束。我希望模型值等于下面的插值。我猜我在设置 TransformedPiecewiseLinearFunctionND 时做了一些事情,但我在文档中找不到任何示例。任何见解将不胜感激。

Code

from pyomo.core import ConcreteModel, Var, Constraint
import pyomo.environ as pe
from pyomo.core.kernel.piecewise_library.transforms_nd import (
    PiecewiseLinearFunctionND,
    TransformedPiecewiseLinearFunctionND
)
from pyomo.core.kernel.variable import (
    variable,
    variable_list
)
import pyomo.core.kernel.piecewise_library.util as util
import numpy as np
from scipy.spatial import Delaunay

npts = 100

vlist = variable_list([variable(lb=-1, ub=1),
                       variable(lb=-1, ub=1)])

tri = util.generate_delaunay(vlist, num=npts)
x, y = tri.points.T
z = np.cos(x) * np.sin(y)

model = ConcreteModel()
model.X = Var(initialize=0)
model.Y = Var(initialize=0)
model.Z = Var(initialize=999)

f = PiecewiseLinearFunctionND(tri, z)
model.g = TransformedPiecewiseLinearFunctionND(
    f=f,
    input=(model.X, model.Y),
    output=model.Z
)

def x_rule(model):
    return model.X == 0.5

def y_rule(model):
    return model.Y == 0.5

model.x_const = Constraint(rule=x_rule)
model.y_const = Constraint(rule=y_rule)

solver = pe.SolverFactory('ipopt')
solver.solve(model)

z_exact = np.cos(0.5) * np.sin(0.5)
z_interp = f([0.5, 0.5])

x_model = pe.value(model.X)
y_model = pe.value(model.Y)
z_model = pe.value(model.Z)

print(f'Z Exact: {z_exact}')
print(f'Z Interpolated: {z_interp}')
print(f'Model values (X, Y, Z): {x_model}, {y_model}, {z_model}')

Output

Z Exact: 0.42073549240394825
Z Interpolated: 0.42067082611089646
Model values (X, Y, Z): 0.5, 0.5, 999

我还尝试过手动添加 Z 约束。这会产生一个错误:

def z_rule(model):
    return model.Z == f([model.X, model.Y])

model.z_const = Constraint(rule=z_rule)

您正在 pyomo.kernel 和 pyomo.environ 建模层之间混合建模组件。不支持此功能(this https://pyomo.readthedocs.io/en/stable/library_reference/kernel/index.html页面有更多信息)。

多维分段功能目前只能使用 pyomo.kernel 接口使用。可以在此处找到如何使用它的示例:

https://github.com/Pyomo/pyomo/blob/main/examples/kernel/piecewise_nd_functions.py https://github.com/Pyomo/pyomo/blob/main/examples/kernel/piecewise_nd_functions.py

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

Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么? 的相关文章

  • Pyomo:从 Python 代码访问解决方案

    我有一个想要求解的线性整数程序 我安装了求解器 glpk 感谢这个答案 和pyomo 我写了这样的代码 from pyomo environ import from pyomo opt import SolverFactory a 370
  • 如何在 Winpython 中安装 glpk-solver 和 pyomo

    我想在我的学习中使用 pyomo 我通过安装 pyomoeasy install coopr 安装说明 Pyomo 需要一个求解器才能工作 所以我想安装 GNU 线性编程套件 glpk 网页 pyomo 似乎安装得恰到好处 因为我可以将它导
  • 使用 Pyomo 或 cvxpy 预测建筑物的功率(模型预测控制)

    我有室外温度的数据 8 2 10 13 并且我有我的建筑物的热惯性 8h 限制之一是将我的建筑物的内部温度保持在 20 度以内 我们从平衡状态开始 T in 20 T o 20 但一小时内的 T o 18 因此 Delta T o 18 度
  • Scip 与 Pyomo 接口的问题

    我正在尝试使用 Pyomo 解决非线性优化问题 首先 我尝试了 Ipopt 求解器 并且运行起来了 然后我想尝试一下求解器Scip由于 Ipopt 是局部求解器 因此尝试进行全局优化 但是 我在使用它时遇到了我无法理解的错误 让 Scip
  • 如何使用 pip 安装 Pyomo 的“extras”?

    我写这篇文章是因为我在安装时遇到问题Pyomo using pipMac OSX 10 14 上的 Python 3 6 我正在按照安装说明进行操作here 我可以成功执行第一个命令 pip install pyomo 但是当我遇到麻烦时
  • 如何在 pyomo 中将积分定义为目标函数?

    我希望能够定义一个积分pyomo作为目标函数的一部分 我无法弄清楚积分需要什么样的表达式 这是我最好的猜测 model ConcreteModel model t ContinuousSet bounds 0 1 model y Var m
  • 未找到 Pyomo Util 模块

    所以我问了一个question一个月前 我对这个问题有一个非常好的答案 我想测试一下这个答案现在是否有效 但我越来越ModuleNotFoundError 我在测试之前做了以下操作 conda install c conda forge p
  • 优化 pyomo 中的 Fortran 函数

    我希望使用 Pyomo 优化 Fortran 函数 目标函数和约束都是用 Fortran 编写的 根据给出的答案here 我们可以用ExternalFunction表达式对象 但即使是最简单的函数我也无法得到结果 下面给出的是一个可重现的示
  • 使用不连续索引进行 pyomo 优化

    我正在使用 pyomo 在 python 中进行优化 我计划使用 t start t end 范围内的索引 现在 这些 t start 和 t end 值是 EV 的函数 使得 m pyo ConcreteModel m EV pyo Ra
  • 如何设置索引变量的值? - 皮莫

    我正在开发一个与 AC OPF 最佳功率流 相关的项目 我试图使用 pyomo 解决 python 中的问题 有3条母线 母线电压和母线角度受到限制 然而 第 1 条总线的电压必须为 1 角度必须为 0 所以 我尝试了这个 model bu
  • 不使用 for 循环检索 Pyomo 解决方案

    我正在努力寻找一种有效的方法来检索优化问题的解决方案 该解决方案由大约 200K 个变量组成 我希望将这些变量放在 pandas DataFrame 中 在网上搜索后 我发现访问变量的唯一方法是通过 for 循环 如下所示 instance
  • 分析 pyomo 中的解决方案 (.sol) 文件

    我在机器 1 中有一个 pyomo 模型 在机器 2 中有 CPLEX 求解器 我转换 pyomo 模型 ConcreteModel 变成problem lp带有函数的文件model write problem lp 在机器 1 中 然后我
  • 如何设置 Pyomo 求解器超时?

    如何设置 Pyomosolve 方法的超时 更具体地说 告诉 pyomo 在 x 秒后 返回当前找到的最优解 所以我能够通过 pyomo 文档找到答案 我认为分享会有所帮助 设置 Pyomo 的超时时间solve method solver
  • PYOMO:使用集合和参数定义数据集来解决优化问题

    我正在尝试将一些数据制定为 PYOMO 模型以解决优化问题 materials steel alum carbon cheese 每种材料都有 2 个属性 密度和电导率 它们的值定义如下 density steel 1 2 alum 0 8
  • 在 PYOMO 中为 2 个变量定义特定值集

    我正在尝试使用多个变量分配材料属性 例如 密度和电导率是材料 1 材料 2 和材料 3 的两个决策变量 我必须输入以下信息 density of material 1 1000 density of material 2 2000 dens
  • Pyomo:使用 if 语句进行约束

    我目前正在努力解决这个问题 我需要最大化这家公司的利润 这就是我目前拥有的代码 from pyomo environ import from pyomo opt import opt solvers SolverFactory ipopt
  • 求解混合互补模型时出错

    直接使用 PATH 求解器 我无法解决下面提出的问题 最初的问题来源于https prod sandia gov techlib noauth access control cgi 2015 155584 pdf https prod sa
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo
  • 获取线性 pyomo 约束的系数

    我想获得线性约束的系数cpyomo 模型的m 例如 对于 m ConcreteModel m x 1 Var m x 2 Var m x 3 Var within Integers m x 4 Var within Integers m c
  • 创建 Pyomo 约束的性能

    我正在用 pyomo 设置一个更大的能量优化问题 正如其他中提到的 设置花费了不合理的时间问题 https stackoverflow com questions 43413067 performance of pyomo to gener

随机推荐

  • 左移 255 位(作为一个字节)

    谁能解释为什么以下内容无法编译 byte b 255 lt lt 1 错误 常量值 510 无法转换为 字节 我期待二进制的以下内容 1111 1110 类型转换难倒了我 C 中的数字文字是int not byte 编译器将评估位移位 因此
  • 无法解决 SonarQube 错误“使该行从第 3 列开始”

    我在 xml 中有很多行都存在此错误 布局 字符串 可绘制对象 我尝试将每列的空间更改为 3 在出现此错误的行中放置 3 个选项卡 但在 SonarQube 中仍然出现此错误 我该如何解决这个问题 我在这里举了一个我收到此错误的示例
  • 令人困惑的类型错误

    我有一个小型 Python 程序 它应该通过运行适当的方法来对按下向上按钮做出反应 但它没有这样做 而是给了我一个令人困惑的错误 from tkinter import class App def init self master self
  • 检查 Objective-C 中的日期格式

    我收到一个包含日期的字符串 我想检查它是否具有 dd MM yyyy 格式 现在我正在使用在同一页面中找到的代码 NSDate date dateFormatter dateFromString dateString if date nil
  • 为什么 JavaScript 函数调用要用括号括起来? [复制]

    这个问题在这里已经有答案了 这两个 javascript 函数调用有什么区别 function alert foo 与此相比 function alert foo 这样做是为了可读性 您给出的两个示例之间没有真正的功能差异 但它们都非常接近
  • 在react-native中,任务因请求而被孤立——这是什么意思?

    我正在尝试为带有按钮和其他操作的图块构建一个网格系统 我分叉尝试使用 React Native Playground 网格图像源 你可以找到here https rnplay org apps sXriww 添加时会产生以下 堆栈跟踪 和错
  • 在 VARCHAR 字段中使用 MAX()

    我有一个包含以下数据集的表 ID VARCHAR2 field D001 D002 D010 D0012 I use max 在这个领域里 Select max ID from
  • 宏观评估顺序[重复]

    这个问题在这里已经有答案了 可能的重复 宏中的 和 https stackoverflow com questions 4364971 and in macros 为什么第二个 printf 的输出是 f 1 2 宏的计算顺序是什么 inc
  • 下载外部pdf文件到chrome打包应用程序的文件系统

    有没有办法将pdf文件从服务器保存到chrome打包的应用程序 在我的 chrome 打包应用程序中 我有这样的东西 Download 当用户单击此超链接时 我应该能够将该 pdf 文件下载到我的 chrome 打包应用程序文件系统中 下载
  • SQL Server WHERE 条件不考虑空格

    我的名字和姓氏后面带有空格 我有两个 SQL 查询 即使我搜索时没有空格 第一个查询也会返回结果 第一个查询返回不需要的结果 此行为在所有版本的 SQL Server 中是否一致 这是一种已知的行为吗 它是否记录在msdn for SQL
  • char * 变量地址与 char[] 变量地址

    我从以下两个声明和初始化中打印出地址和字符串 char strPtr char This is a string made on the fly char charArray Chars in a char array variable 打
  • 我什么时候应该关闭数据库连接?

    PHP脚本中是否必须关闭连接 根据数据库服务器的配置 同时打开的连接数可能受到限制 所以 如果你的脚本 做一些查询 然后 进行一些长时间的计算 而不再进行任何查询 在完成所有查询后关闭连接并仅在需要时才打开连接可能会很有趣 不过 请注意 无
  • JavaScript 图像 onload 事件绑定

    我有这段代码循环遍历数组并加载图像并在加载图像时发出通知 for var i 0 i lt arr length i var imageObj new Image imageObj src url i imageObj onload fun
  • 如何从 mysqldump 恢复特定表

    我有一个使用以下命令获取的 mysqldump 文件 mysqldump u root password
  • PHPExcel 日期格式

    我从 MS SQL 服务器获取 2012 08 09 00 00 00 不带引号 格式的输出 但是 当我将其写入 Excel 文件时 我无法以日期格式写入它以在 Excel 上进行 dd mmm yyyy 格式 因此 我尝试以 date 2
  • 希腊字符串的长度大于应有的长度

    我正在编写一个程序 我将一串希腊字符作为输入 当我打印它的 len 时 它输出它的双精度 例如 如果 ch 希腊字符 或 ch printf d strlen ch 输出 4 而不是 2 如果 ch ab 则输出 2 这是怎么回事 您可以使
  • Vaadin 与 Bootstrap

    我计划制作一个应用程序 该应用程序在客户端具有复杂表单和逻辑验证的视图 我计划使用 AJAX 进行提交并具有一些视觉吸引力 我想要那些具有 Bootstrap 和 或 CoffeeScript 和 Vaadin 开发经验的人的推荐 我有两个
  • 如果 javascript "(new Date()).getTime()" 从 2 个不同的时区运行

    如果 JavaScript new Date getTime 同时从2个不同的时区运行 你会得到相同的值吗 这个值会受到运行浏览器的机器上设置的系统时间的影响吗 是的 它受系统时间的影响 但是 如果本地时间正确 对于计算机设置的任何时区 则
  • Rails 扩展 ActiveRecord::Base

    我已经阅读了一些有关如何扩展 ActiveRecord Base 类的内容 因此我的模型将具有一些特殊的方法 扩展它的简单方法是什么 分步教程 有几种方法 使用 ActiveSupport Concern 首选 阅读ActiveSuppor
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo