如何使用Java接口在ilog中创建多维变量?

时间:2012-11-26 16:56:05

标签: cplex ilog

我想用变量x [i] [j] [k]建模问题。

参考手册中没有提及如何创建大小超过1维的变量。

http://pic.dhe.ibm.com/infocenter/cosinfoc/v12r4/index.jsp?topic=%2Filog.odms.cplex.help%2Frefjavacplex%2Fhtml%2Filog%2Fcplex%2FIloCplex.html

2 个答案:

答案 0 :(得分:4)

此片段显示了在[0,1]中创建三个索引连续变量x,x [i] [j] [t]的示例:

  IloNumVar[][][] x = new IloNumVar[numNodes][numNodes][numDays];
  for(int i = 0; i < numNodes; i++) 
  {
    for(int j = 0; j < numNodes; j++)
    {
      //cplex is an instance of class IloCplex
      x[i][j] = cplex.numVarArray(numDays, 0, 1); 
    }
  }

答案 1 :(得分:1)

多维建模非常常规。

Here's an example, provided by IBM.

此外,IBM的"Modeling with IBM ILOG CPLEX CP Optimizer – Practical Scheduling Examples"实际上是一个非常好的起点。它有许多多维的例子,尽管大多数都是在OPL中,你不必使用它们。

And, Here's a full example that uses 2 dimensions. 具体来说,变量nutrPerFood具有i和j两个维度。

 // nutrPerFood[i][j]   nutrition amount of nutrient i in food j

 double[][] nutrPerFood; 

并在调用IloMPModeler

时使用它

This tutorial对于熟悉各种Ilog调用也很有帮助。

希望有所帮助。