如何使用 Eclipse IDE 使 OPL 代码适应 Java API
How to adapt and OPL code to Java API using Eclipse IDE
我正在尝试使用 Eclipse IDE 中的 Java API 调整 OPL 公式。原OPL代码提取如下:
using CP;
int nbJobs = ...;
int nbMchs = ...;
range Jobs = 0..nbJobs-1;
range Mchs = 0..nbMchs-1;
int OpDurations[j in Jobs][m in Mchs] = ...;
dvar interval itvs[j in Jobs][m in Mchs] size OpDurations[j][m];
dvar sequence mchs[m in Mchs] in all(j in Jobs) itvs[j][m] types all(j in Jobs) j;
dvar sequence jobs[j in Jobs] in all(m in Mchs) itvs[j][m];
我想复制上面的内容,但现在使用 Java API。我尝试了以下操作:(文件名是一个文件,其中包含一个实例的值,其中指定了作业数量、机器数量和每台机器中每个作业的处理时间):
IloCP cp = new IloCP();
DataReader data = new DataReader(filename);
int nbJobs = data.next();
int nbMachines = data.next();
int OpDurations = data.next();
IloIntRange Jobs = cp.intRange(0,nbJobs-1);
IloIntRange Mchs = cp.intRange(0,nbMachines-1);
但我不知道这是否正确,也不知道如何在 Java 中复制之前在 OPL 中定义的区间和序列变量的定义。
如有任何帮助,我们将不胜感激。
你的代码乍一看是正确的。
要创建变量,请查看 IloIntervalVar and IloIntervalSequenceVar as well as functions IloCP.intervalVar()
and IloCP.intervalSequenceVar()
here 的参考文档。
此外,在您的发行版中有一个文件夹 cpoptimizer/examples/src/java
,您可以在其中找到示例 Sched*.java
。这些使用区间变量,您可以向他们学习如何使用区间变量进行调度。
我正在尝试使用 Eclipse IDE 中的 Java API 调整 OPL 公式。原OPL代码提取如下:
using CP;
int nbJobs = ...;
int nbMchs = ...;
range Jobs = 0..nbJobs-1;
range Mchs = 0..nbMchs-1;
int OpDurations[j in Jobs][m in Mchs] = ...;
dvar interval itvs[j in Jobs][m in Mchs] size OpDurations[j][m];
dvar sequence mchs[m in Mchs] in all(j in Jobs) itvs[j][m] types all(j in Jobs) j;
dvar sequence jobs[j in Jobs] in all(m in Mchs) itvs[j][m];
我想复制上面的内容,但现在使用 Java API。我尝试了以下操作:(文件名是一个文件,其中包含一个实例的值,其中指定了作业数量、机器数量和每台机器中每个作业的处理时间):
IloCP cp = new IloCP();
DataReader data = new DataReader(filename);
int nbJobs = data.next();
int nbMachines = data.next();
int OpDurations = data.next();
IloIntRange Jobs = cp.intRange(0,nbJobs-1);
IloIntRange Mchs = cp.intRange(0,nbMachines-1);
但我不知道这是否正确,也不知道如何在 Java 中复制之前在 OPL 中定义的区间和序列变量的定义。
如有任何帮助,我们将不胜感激。
你的代码乍一看是正确的。
要创建变量,请查看 IloIntervalVar and IloIntervalSequenceVar as well as functions IloCP.intervalVar()
and IloCP.intervalSequenceVar()
here 的参考文档。
此外,在您的发行版中有一个文件夹 cpoptimizer/examples/src/java
,您可以在其中找到示例 Sched*.java
。这些使用区间变量,您可以向他们学习如何使用区间变量进行调度。