处理 CPLEX Python 中 objective 函数的分母中的变量
Handling variables in the denominator of an objective function in CPLEX Python
我想用 objective 函数求解线性规划:
这里x[i][j]是决策变量,y[i][j]已经预先计算好了。
我在 CPLEX python (DOcplex) 中为此编写代码,但收到分母只能是数字的错误。有没有办法正确地做到这一点?
这是我的代码:
l_model.minimize(l_model.sum(l_model.sum(x[i,j]*y[(i,j)] for j in A)/l_model.sum(x[i,j] for j in A) for i in B))
在上面的代码中,我在分母中看到 x
个变量,这解释了错误消息; Docplex(和 CPLEX 也是)期望线性 objective,具有浮点系数。
此外,如果y
也是一个决策变量字典,那么分子表达式被解释为二次表达式,无论变量是否在y
是固定的。这反过来导致 CPLEX 选择 QP 算法,这可能不是您想要的。
总而言之:您需要提供 objective 一个完全由变量和 Python 数字构成的线性表达式。
我想用 objective 函数求解线性规划:
这里x[i][j]是决策变量,y[i][j]已经预先计算好了。
我在 CPLEX python (DOcplex) 中为此编写代码,但收到分母只能是数字的错误。有没有办法正确地做到这一点?
这是我的代码:
l_model.minimize(l_model.sum(l_model.sum(x[i,j]*y[(i,j)] for j in A)/l_model.sum(x[i,j] for j in A) for i in B))
在上面的代码中,我在分母中看到 x
个变量,这解释了错误消息; Docplex(和 CPLEX 也是)期望线性 objective,具有浮点系数。
此外,如果y
也是一个决策变量字典,那么分子表达式被解释为二次表达式,无论变量是否在y
是固定的。这反过来导致 CPLEX 选择 QP 算法,这可能不是您想要的。
总而言之:您需要提供 objective 一个完全由变量和 Python 数字构成的线性表达式。