我有一个优化问题,我想使系统的总成本最小化,所以我写了一个目标函数,它是我的总成本之和。问题包括使用三台机器中的一台,每台机器的成本不同,使用阈值也不同。我将每台机器(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告诉我,它不能处理参照上述第一个约束的二次函数。但是它是参数乘以二进制变量,没有任何二次方。
我知道这个问题含糊不清,是一个较大问题的一部分,但希望您能理解我的意思并为我提供帮助!
非常感谢您的协助!
答案 0 :(得分:1)
什么是model.MachineCost
?它是一个Expression组件,其中存储了某种二次表达式吗?
如果没有,您是否可以开始注释掉模型中的内容,直到找到一个最小的工作示例(导致此错误)并将其发布?否则,我们无法确定您没有显示模型的其他二次部分。