有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

两个决策变量的Java Cplex乘积

有没有办法在cplex java中获得两个不同决策变量的乘积并将其添加到目标函数中

决策变量->;x[i]

决策变量->;y[j]

->;x[i]*y[j]

这样一种多重模式应该是可能的,因为它仍然是线性的,对吗


共 (1) 个答案

  1. # 1 楼答案

    多亏了

    @TimChippingtonDerrick(https://stackoverflow.com/users/2108433/timchippingtonderrick

    @rkersh(https://stackoverflow.com/users/1718477/rkersh

    我已经找到了问题的答案

    起初,这样的目标函数不是线性的。例如,这就是为什么

    IloLinearNumExpr expressionName = cplex.linearNumExpr(); expressionName.addTerm(x[i],y[j]);

    不会起作用,因为线性模型不支持这种乘法。只有具有系数的变量才能添加到此类线性表达式中

    对于第二部分,通过Cplex提供的示例QPex1.java

    我可以写出两个决策变量的乘积,并将它们添加到目标函数中,如下例所示:

    IloNumExpr objective = cplex.numExpr();
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            objective = cplex.sum(objective,cplex.prod(y[i], z[j][i]));
        }
    }
    cplex.addMinimize(objective);