如何使用Eclipse IDE使OPL适应Java API并使用OPL代码

问题描述 投票:0回答:1

我正在尝试使用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中定义的interval和sequence变量的定义。

任何帮助将不胜感激。

java scheduling cplex constraint-programming cp-optimizer
1个回答
1
投票

乍看起来您的代码是正确的。

关于变量的创建,请参阅IloIntervalVarIloIntervalSequenceVar以及功能IloCP.intervalVar()IloCP.intervalSequenceVar() here的参考文档。

此外,在您的发行版中,您有一个文件夹cpoptimizer/examples/src/java,可以在其中找到示例Sched*.java。它们使用间隔变量,您可以从中学习如何使用间隔变量进行调度。

© www.soinside.com 2019 - 2024. All rights reserved.