gpt4 book ai didi

java - 具有 2 个变量的 CPLEX 项

转载 作者:行者123 更新时间:2023-12-01 11:09:10 24 4
gpt4 key购买 nike

我想使用 java 将这个约束添加到 cplex 中的 ILP 中。

u_jk >= (u_ik + d_i + t_ij)x_ijk

    IloLinearNumExpr right = cplex.linearNumExpr();
right.addTerm(serviceDuration , x[i][j][k]);
right.addTerm(time[i][j], x[i][j][k]);
right.addTerm(u[i][k], x[i][j][k]);
cplex.addGe(u[j][k], right);

在第四行我遇到了问题,因为 u[i][k] 和 x[i][j][k] 是 IloNumVar。任何想法,如何让它发挥作用?

最佳答案

这是因为如果 u 和 x 都是变量,则 u*x 不是线性的。要使用 Ilog Concert 创建二次表达式,您需要使用 IloQuadNumExpr 。然而,一旦解决了这个问题,您就会遇到这样的问题:没有平方项(对角线上为零)的二次表达式既不是凸的也不是凹的,因此无法用 cplex 求解。如果 u 或 x 是二进制的,则可以使用前面 question 中描述的转换。 .

关于java - 具有 2 个变量的 CPLEX 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32569523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com