Как адаптировать и OPL-код к Java API с помощью Eclipse IDE - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь адаптировать формулировку OPL с помощью API Java в Eclipse IDE. Извлечение исходного кода 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.

Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 30 апреля 2020

Ваш код на первый взгляд выглядит правильно.

Для создания переменных взгляните на справочную документацию IloIntervalVar и IloIntervalSequenceVar , а также функции IloCP.intervalVar() и IloCP.intervalSequenceVar() здесь .

Более того, в вашем дистрибутиве есть папка cpoptimizer/examples/src/java, в которой вы можете найти примеры Sched*.java. Они используют интервальные переменные, и вы можете узнать из них, как выполнять планирование с интервальными переменными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...