我是java和CPLEX的新手。挣扎于汇总和数组

时间:2017-05-13 19:59:55

标签: java arrays cplex

我试图用CPLEX用Java编写代码,但是我遇到了问题。我也是CPLEX和Java的新手。

我已经研究了几天,我可以理解非常简单的CPLEX示例,但我现在必须处理更困难的事情。

我试图编写像1000*(k-Sigma y^k(k from 1))这样的表达式,但我无法使其工作,所以我搜索了这个主题,但我无法找到解决这个问题的方法。

到目前为止我所理解的是我需要一个像这样的数组

IloNumVar[] y = cplex.numVarArray(?, ?, Double.MAX_VALUE?);

我从IBM网站上阅读了该手册,但我仍然不明白我应该在括号内放置哪些变量。

我需要一个for循环来进行求和,所以我写了

for(int k = 1; k <= bus; k++) {
    objective.addTerm(1000, k-y[k]);
}

当然它没有用。我猜想&#39; k&#39;但不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

请查看以下页面:

CPLEX Java API

您可以看到以下方法标题:

IloNumVar[] numVarArray(int n, double lb, double ub) 

其中params是:

n - number of variables
lb - lower bound
ub - upper bound

如果你这样使用它:

IloNumVar[] y = cplex.numVarArray(5, 0, Double.MAX_VALUE);

您将创建一个包含5个元素(变量)的数组。每个都必须是非负数。

请更清楚地说明问题的第二部分。