我在Java中使用Cplex并希望最小化两个矩阵(具有相同索引的元素的产品)的元素乘积之和。
x [n] [n]包含decisionvariables [0,1]
cost [n] [n]包含从i到j的成本
我希望尽量减少所有i..n的费用总和x [i] [j] * j [i] [j]; j..n。
我创建了这样的变量:
[...]
static double lb = 0.0;
static double ub = 1.0;
static double cost[][] = new double[n][n];
IloNumVar[][] x = new IloNumVar[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
x[i][j] = cplex.numVar(lb, ub);
}
}
我的问题是我不知道如何创建最小化部分。
我发现了一些似乎与我的问题(Cplex c++ multidimensional decision variable)非常相似的东西,但由于我对c ++不熟悉,我没有得到任何解决方案。
答案 0 :(得分:2)
这应该这样做:
IloLinearNumExpr obj = cplex.linearNumExpr();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
obj.addTerm(cost[i][j], x[i][j]);
}
}
cplex.addMinimize(OBJ);