首页 > 解决方案 > 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 告诉我,它无法处理涉及上述第一个约束的二次函数。然而,它是参数乘以二进制变量,没有任何二次方。

我知道这个问题很模糊,是一个更大问题的一部分,但我希望你能理解我的意思并帮助我!

非常感谢您的帮助!

标签: python-3.xbinarygurobipyomo

解决方案


是什么model.MachineCost?它是一个表达式组件,其中存储了某种二次表达式吗?

如果没有,您是否可以开始注释模型中的内容,直到找到一个最小的工作示例(导致此错误)并发布?否则,我们无法确定没有您未展示的模型的其他二次部分。


推荐阅读