使用二进制变量对最小成本进行Pyomo优化

时间:2019-01-14 18:17:57

标签: python-3.x binary gurobi pyomo

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

model.Cost1*model.Machine1 + model.Cost2*model.Machine2 + model.Cost3*model.Machine3 == model.MachineCost

我也在哪里写:

model.Machine1 + model.Machine2 + model.Machine3 == 1

Gurobi告诉我,它不能处理参照上述第一个约束的二次函数。但是它是参数乘以二进制变量,没有任何二次方。

我知道这个问题含糊不清,是一个较大问题的一部分,但希望您能理解我的意思并为我提供帮助!

非常感谢您的协助!

1 个答案:

答案 0 :(得分:1)

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

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