我正在尝试在PySCIPOpt中最大化两个量的除法。 由于它是两个线性指标的除法,因此成为非线性优化。
我的代码有点像这样:
model = Model()
x={}
for i in range(0,len(data)):
x[i] = model.addVar(vtype = 'B',name = 'x(%s)'%i)
data['Index'] = range(0,len(data))
profit = 0
volume = 0
for index in data['Index']:
profit += x[index] * data['Predicted.Profit'][index]
volume += x[index] * data['Predicted.Liters.Sold'][index]
model.setObjective(profit/volume,"maximize")
一旦我按下setObjective
命令,我的内核就会忙20余分钟,然后继续工作。我想知道我的目标函数定义有问题吗?我还能做点别的吗?更有效率吗?
顺便说一下,我的数据集的形状是178848x36
该功能在二十分钟后运行!但是给出了一个错误说法:AssertionError:给定的系数既不是Expr也不是数字,而是ProdExpr
如何绕过此错误?既然我希望优化决策变量的划分!以及使此目标函数声明更有效?
是否可以将ProdExpr转换为Expr?