python-3.x - Pyomo 使用二进制变量优化最小成本
问题描述
我有一个优化问题,我想最小化系统的总成本,所以我写了一个目标函数,它是我不同成本的总和。问题包括在不同的使用阈值下使用三台机器中的一台,每台机器具有不同的成本。我将每台机器(model.Machine#)定义为二进制变量,并声明每台机器成本模型的参数(model.Cost#)。我试图让成本能够最小化它但是当我写约束时:
model.Cost1*model.Machine1 + model.Cost2*model.Machine2 + model.Cost3*model.Machine3 == model.MachineCost
我还写的地方:
model.Machine1 + model.Machine2 + model.Machine3 == 1
Gurobi 告诉我,它无法处理涉及上述第一个约束的二次函数。然而,它是参数乘以二进制变量,没有任何二次方。
我知道这个问题很模糊,是一个更大问题的一部分,但我希望你能理解我的意思并帮助我!
非常感谢您的帮助!
解决方案
是什么model.MachineCost
?它是一个表达式组件,其中存储了某种二次表达式吗?
如果没有,您是否可以开始注释模型中的内容,直到找到一个最小的工作示例(导致此错误)并发布?否则,我们无法确定没有您未展示的模型的其他二次部分。
推荐阅读
- c - printf %p 返回值
- pine-script - 无法在 strategy.exit 中调用“when”条件
- hash - 如何在 F# 中为 ShipHash 的键创建一个 16 字节的数组?
- java - 飞镖到 java 转换。或将 java 代码与飞镖颤振结合起来
- tensorflow - 在谷歌云上使用 tensorflow 2 进行训练
- sql-server - SQL Server BCP 命令给我带来了困难
- vba - 使用 powershell 模拟 Excel 用户窗体的“ENTER”键
- excel - Excel 表 - 将基于范围的公式转换为基于字段的公式
- powershell - 在 Powershell 中删除旧 .msi 时如何绕过某个产品代码/补丁代码?
- azure - 如何使用 azure webjobs SDK 添加有关异常处理的自定义数据?