Pyscipopt中的部门目标功能

时间:2018-11-24 12:12:30

标签: python division nonlinear-optimization scip

我正在尝试在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

如何绕过此错误?既然我希望优化决策变量的划分!以及使此目标函数声明更有效?

Edit2

是否可以将ProdExpr转换为Expr?

0 个答案:

没有答案