在 PYOMO 中为 2 个变量定义特定值集

2024-02-26

我正在尝试使用多个变量分配材料属性。例如;密度和电导率是材料_1、材料_2 和材料_3 的两个决策变量。

我必须输入以下信息:

density of material_1 = 1000
density of material_2 = 2000
density of material_3 = 1500

conductivity of material_1 = 250
conductivity of material_2 = 400
conductivity of material_3 = 100

Pyomo 中定义变量的标准格式给出 以下:

model.variable_1 = Var(bounds=(800,2000))

上面的代码意味着variable_1是一个下限= 800,上限= 2000的变量。

但我们怎样才能使用一组特定值而不是界限定义变量?

这个想法是将数据值输入到优化器中,以便当选择密度值时,还应选择同一材料的电导率值.

我们如何将这样的条件强加到 pyomo 框架中?有人可以帮我解决这个问题吗?


因此,如果您只是选择多个选项之一,则可以将其设置为整数线性程序。基本要点是我们让一个二元变量x在下面的例子中代表选择材料的行为i, where i是材料集的成员。

在上面的问题中,您似乎正在努力解决将参数在模型中(价格、密度、电导率等),其值是固定的变量这是您想要建模的决策。

比下面稍微更高级的模型可能是混合模型,您可以在其中在某些约束等范围内采用各种材料的比例,这需要更改域x为非负实数。这只是模拟选择的二元动作。当然,在这样一个微不足道的模型中,您可以使用列表/字典理解或过滤器来解决它,因此使用代数建模确实有点矫枉过正,但它是一个区分您所询问的概念的示例。

# material selection model

import pyomo.environ as pyo

# data
materials = ['steel', 'alum', 'carbon', 'cheese']

density =   {   'steel' : 1.2,
                'alum'  : 0.8,
                'carbon': 1.8,
                'cheese': 0.7}

conductivity = {'steel' : 6.4,
                'alum'  : 3.1,
                'carbon': 4.4,
                'cheese': 0.3}

price =     {   'steel' : 2.3,
                'alum'  : 3.5,
                'carbon': 5.8,
                'cheese': 6.0}

m = pyo.ConcreteModel('material selector')

# SETS (used to index the decision variable and the parameters)
m.matl = pyo.Set(initialize=materials)

# VARIABLES
m.x = pyo.Var(m.matl, domain=pyo.Binary)   # a binary decision variable representing the selection of matl

# PARAMETERS
m.density = pyo.Param(m.matl, initialize=density)
m.conductivity = pyo.Param(m.matl, initialize=conductivity)
m.price = pyo.Param(m.matl, initialize=price)


# OBJ (minimize price)
m.obj = pyo.Objective(expr=sum(m.x[i] * m.price[i] for i in m.matl))

# Constraints
m.c1 = pyo.Constraint(expr=(sum(m.x[i] * m.density[i] for i in m.matl) >= 1.0))     # min density
m.c2 = pyo.Constraint(expr=(sum(m.x[i] * m.conductivity[i] for i in m.matl) <= 5.0)) # max cond.

# solve it
solver = pyo.SolverFactory('glpk')
result = solver.solve(m)
m.display()

Yields:

Model material selector

  Variables:
    x : Size=4, Index=matl
        Key    : Lower : Value : Upper : Fixed : Stale : Domain
          alum :     0 :   0.0 :     1 : False : False : Binary
        carbon :     0 :   1.0 :     1 : False : False : Binary
        cheese :     0 :   0.0 :     1 : False : False : Binary
         steel :     0 :   0.0 :     1 : False : False : Binary

  Objectives:
    obj : Size=1, Index=None, Active=True
        Key  : Active : Value
        None :   True :   5.8

  Constraints:
    c1 : Size=1
        Key  : Lower : Body : Upper
        None :   1.0 :  1.8 :  None
    c2 : Size=1
        Key  : Lower : Body : Upper
        None :  None :  4.4 :   5.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PYOMO 中为 2 个变量定义特定值集 的相关文章

  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • mac osx 10.8 上的初学者 python

    我正在学习编程 并且一直在使用 Ruby 和 ROR 但我觉得我更喜欢 Python 语言来学习编程 虽然我看到了 Ruby 和 Rails 的优点 但我觉得我需要一种更容易学习编程概念的语言 因此是 Python 但是 我似乎找不到适用于
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • ggplot2,更改标题大小

    我希望我的主标题和轴标题具有与图中注释文本相同的字体大小 我使用 theme get 并发现文本大小为 12 所以我在主题声明中这样做了 这不起作用 我也尝试将相对大小发送为1 但这不起作用 I was hoping someone cou
  • 更改maven Surefire-plugin的输出目录

    我正在尝试更改 Maven 项目中的surefire plugin 生成的XML 文件的输出文件夹 我在report plugin的配置括号内以及maven site plugin中声明了目标输出文件夹 在文档 https maven ap
  • 单击 iOS 证书续订时出错

    当我使用管理器并单击 续订 按钮时 出现以下错误 特别 此团队中没有带有 XP 的 iOS 证书 App Store 没有为参数 deviceids 提供值 我不确定为什么会收到这些错误 并且希望得到任何帮助 指导 我遇到了同样的问题 我什
  • java lambda 可以有超过 1 个参数吗?

    在 Java 中 是否可以让 lambda 接受多种不同类型 IE 单变量工作原理 Function
  • 来自 Facebook Messenger 机器人对话的 API 身份验证

    通过与 facebook Messenger 平台上的机器人对话来使用外部 API 进行身份验证的最佳方法是什么 举一个广泛的例子 我希望我的机器人的用户在外部网站的自己的个人资料上创建项目 有没有办法从用户那里获取登录信息 或者将我的机器
  • Python 警告 - 删除自定义警告消息末尾的原始警告输出的任何方法

    我正在尝试在 Python 脚本中创建自定义警告消息 allfiles glob glob folderpath xlsx if not allfiles warnings warn No xlsx data files are found
  • 当前与 delphi 2007 一起使用的正确 indy 和 openssl 版本是哪个

    我将 indy 组件与 D2007 一起使用 并尝试列出 imap 邮箱中的邮件主题 我下载并安装了当前的 indy 新版本 10 6 0 5039 安装 x100 软件包 并尝试使用各种 openssl dll 版本 xp 机器上的 32
  • 在iOS中,使用Swift,如何获取iPhone的启动时间?

    在核心运动中 数据在继承自的类中返回CMLogItem 其中有一个timestamp财产 这timestamp is a TimeInterval这是设备启动以来的时间 如何获取设备启动时间 从评论中我发现ProcessInfo proce
  • 与错误共享相关的性能计数器事件

    我正在查看 OpenMP 程序的性能 特别是缓存和内存性能 不久前我发现了如何使用 Vtune 分析性能的指南 其中提到了需要注意的计数器 不过现在好像找不到说明书了 如果您知道我有问题的手册或者您知道计数器 事件 请告诉我 另外 如果您有
  • Google Apps 脚本 - 使用 .replace 方法删除空格对我不起作用

    我正在使用 Google Apps 脚本来创建应用程序 当我尝试从电子表格值中删除空格时遇到问题 我也在 stackoverflow 和其他论坛上引用了很多帖子和评论 他们都在谈论使用 replace方法 然而 replace方法对我不起作
  • 动态加载资源文件

    我想动态加载资源文件 如果我静态地执行它 它显然效果很好 System Media SoundPlayer player new System Media SoundPlayer Properties Resources 88 player
  • 如何分离wpf文本框中的背景图像?

    我是 WPF 新手 在我的项目中 我尝试了带有用户图标的用户名文本框 我的 XAML 代码 gt
  • 用一个命令截断 MySQL 数据库中的所有表?

    是否有一个查询 命令 可以在一次操作中截断数据库中的所有表 我想知道是否可以通过一个查询来完成此操作 删除 即删除表 mysql Nse show tables DATABASE NAME while read table do mysql
  • 如何在Java中查找与通配符字符串匹配的文件?

    这应该很简单 如果我有一个像这样的字符串 Test sample txt 那么获取与此模式匹配的文件列表的普遍接受的方法是什么 例如 它应该匹配 Test1 sample22b txt and Test4 sample spiffy txt
  • SQL Server FOR XML - 基本查询

    我已经获得了一个 XML 文档 我想通过 SQL 脚本生成该文档 但我没有做过类似的事情 也无法找到任何可以引导我生成所需的最终 XML 的示例 我不确定哪种可能的方法更适合我的需要 EXPLICIT 或 PATH 或者甚至可能 我希望在从
  • Laravel 以数组形式获取翻译文件的内容

    你能帮我解决以下问题吗 我需要将翻译文件的内容作为数组获取 无论它是否是PHP文件或一个JSON file 假设我的项目中有以下结构 laravel project resources lang en es file1 php file2
  • QueryDSL 与注释处理器的 Gradle 配置

    我搜索了很多关于配置的信息QueryDSL with Gradle 我想配置注释处理器 以使用特定的注释 Generated在生成的类上 但我只能在这里找到这个链接 Gradle 无法生成 QueryDSL 类 https stackove
  • 在 winform C# 中加载 asp.net 网站

    我有一个 n MDI Windows 窗体应用程序 它包含两种形式 一种形式 测量数据 控制引擎 另一种形式 实验室 应显示我的 asp net 网站 该网站有各种任务供用户执行 如何在该实验室表单中显示 asp net 默认页面 我在用着
  • Oracle:是否可以为模式创建同义词?

    Firstly 我是一个oracle新手 并且我没有当地的oracle大师来帮助我 这是我的问题 问题 我有一些 SQL 脚本必须发布到多个 Oracle 实例 这些脚本创建存储过程 创建存储过程的架构与包含存储过程从中读取的表的架构不同
  • 在 PYOMO 中为 2 个变量定义特定值集

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