Pyomo:使用 if 语句进行约束

2024-02-29

我目前正在努力解决这个问题。我需要最大化这家公司的利润。

这就是我目前拥有的代码:

from pyomo.environ import *
from pyomo.opt import *
opt = solvers.SolverFactory("ipopt")
model = ConcreteModel()

model.x1 = Var(within=NonNegativeIntegers)
model.x2 = Var(within=NonNegativeIntegers)
model.y1 = Var(within=NonNegativeIntegers)
model.y2 = Var(within=NonNegativeIntegers)
model.b1 = Var(within=Boolean)
model.b2 = Var(within=Boolean)

model.c1 = Constraint(expr = model.x1 + model.x2 + model.y1 + model.y2 <=   7000)
model.c2 = Constraint(expr = 2*model.x1 + 2*model.x2 + model.y1 + model.y2 <= 10000)
model.c3 = Constraint(expr = model.x1  <= 2000)
model.c4 = Constraint(expr = model.x2 <= 1000)
model.c5 = Constraint(expr = model.y1 <= 2000)
model.c6 = Constraint(expr = model.y2 <= 3000)


model.z = Objective(expr= (150*model.x1 + 180*model.x2*model.b1 + 100*model.y1 + 110*model.y2*model.b2), sense=maximize)
results = opt.solve(model)

这是我尝试为约束编写的代码,只要它不超过 2000 个产品,它就只使用第一个斜率:

def ObjRule(model):
 if model.x1 >= 2000:
     return model.b1==1
 if model.x2 >= 2000:
     return model.b2 == 1`

如果有人有提示,我该如何继续那就太好了。

先感谢您, 帕特里克


在 Pyomo 中,规则不是发送到求解器的回调。对每个索引调用一次它们以获得一组静态表达式。这组表达式被发送到求解器。您在规则内部使用的任何 if 逻辑不应涉及变量的值(除非它基于变量的初始值,在这种情况下,无论您在主表达式之外使用变量,您都可以将变量包装在 value() 中返回)。

如果您想对分段函数进行建模,则需要应用某种建模技巧来实现。在某些情况下,这涉及引入离散变量(参见examples https://github.com/Pyomo/pyomo/tree/master/examples/pyomo/piecewise对于分段分量),在其他情况下则不然(例如,当最大化可表示为有限数量仿射函数的最小值的分段函数时)。

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

Pyomo:使用 if 语句进行约束 的相关文章

  • 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 度
  • Pyomo 和条件目标函数

    是否可以 如果可以的话如何 使用具有条件表达式的目标函数 更改文档中的示例 我想要一个如下表达式 def objective function model return model x 0 if model x 1 lt const els
  • Scip 与 Pyomo 接口的问题

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

    我写这篇文章是因为我在安装时遇到问题Pyomo using pipMac OSX 10 14 上的 Python 3 6 我正在按照安装说明进行操作here 我可以成功执行第一个命令 pip install pyomo 但是当我遇到麻烦时
  • 无法在 databricks 上安装 pyomo 求解器 ipopt

    使用以下命令在 databricks 上成功安装 pyomo pip install pyomo optional 输出 成功安装 algopy 0 5 7 casadi 3 5 5 dill 0 3 5 1 et xmlfile 1 1
  • 如何在 pyomo 中将积分定义为目标函数?

    我希望能够定义一个积分pyomo作为目标函数的一部分 我无法弄清楚积分需要什么样的表达式 这是我最好的猜测 model ConcreteModel model t ContinuousSet bounds 0 1 model y Var m
  • 微电网电池调度的约束优化

    给定电力消耗 太阳能电池板发电 价格等输入 全部在给定时间 t 我们有一个电池 我们想要评估它在任何给定时间应该 放电 充电多少 该问题可以表述如下 Pt price of electricity at time t Lt consumpt
  • 未找到 Pyomo Util 模块

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

    我希望使用 Pyomo 优化 Fortran 函数 目标函数和约束都是用 Fortran 编写的 根据给出的答案here 我们可以用ExternalFunction表达式对象 但即使是最简单的函数我也无法得到结果 下面给出的是一个可重现的示
  • Pyomo:使用python脚本时,有没有快速的方法可以在解决ILP后显示目标值?

    我之前完成了ILP并且运行正常 opt SolverFactory glpk model AbstractModel model obj Objective variables constraints instance model crea
  • 使用不连续索引进行 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
  • PYOMO:使用集合和参数定义数据集来解决优化问题

    我正在尝试将一些数据制定为 PYOMO 模型以解决优化问题 materials steel alum carbon cheese 每种材料都有 2 个属性 密度和电导率 它们的值定义如下 density steel 1 2 alum 0 8
  • Pyomo:使用 if 语句进行约束

    我目前正在努力解决这个问题 我需要最大化这家公司的利润 这就是我目前拥有的代码 from pyomo environ import from pyomo opt import opt solvers SolverFactory ipopt
  • 如何使用 Pyomo 制作指标函数?

    我正在寻找在 Pyomo 中创建一个简单的指示变量 假设我有一个变量 x 如果 x gt 0 则该指示函数将取值 1 否则取 0 我尝试这样做的方法如下 model ConcreteModel model A Set initialize
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo
  • 如何让 CBC 在时限内返回最佳解决方案? (皮莫)

    我正在尝试在 Pyomo 上使用 CBC v2 10 3 来解决整数线性问题 执行求解器时 我当前设置的时间限制为 600 秒 opt SolverFactory cbc opt options seconds 600 在这个时间限制内 求
  • 使用 Pyomo 的旅行推销员

    我正在尝试使用 pyomo 来解决 TSP 问题 我已经使用 python 和 Gurobi 成功实现了 但是我的 Gurobi 许可证已过期 所以我现在想使用 pyomo 和 GLPK 来实现 TSP 问题 这是我到目前为止能想到的 它不

随机推荐