Python 3.x 基于二元变量的最小成本Pyomo优化

Python 3.x 基于二元变量的最小成本Pyomo优化,python-3.x,binary,gurobi,pyomo,Python 3.x,Binary,Gurobi,Pyomo,我有一个优化问题,我想最小化一个系统的总成本,所以我写了一个目标函数,它是我不同成本的总和。问题包括使用三台机器中的一台,每台机器的使用门槛不同,成本也不同。我将每台机器(model.machine#)定义为一个二进制变量,并声明每台机器的参数cost model.cost#)。我试图使成本最小化,但当我编写约束时: model.Cost1*model.Machine1 + model.Cost2*model.Machine2 + model.Cost3*model.Machine3 == mo

我有一个优化问题,我想最小化一个系统的总成本,所以我写了一个目标函数,它是我不同成本的总和。问题包括使用三台机器中的一台,每台机器的使用门槛不同,成本也不同。我将每台机器(model.machine#)定义为一个二进制变量,并声明每台机器的参数cost model.cost#)。我试图使成本最小化,但当我编写约束时:

model.Cost1*model.Machine1 + model.Cost2*model.Machine2 + model.Cost3*model.Machine3 == model.MachineCost
我还写道:

model.Machine1 + model.Machine2 + model.Machine3 == 1
古罗比告诉我,它不能处理涉及上述第一个约束的二次函数。然而,它是参数乘以二进制变量,没有任何二次的

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


非常感谢您的帮助

什么是
model.MachineCost
?它是一个表达式组件,里面存储着某种二次表达式吗

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