CPLEX: индексирование массива с использованием присвоенного значения dvar - PullRequest
0 голосов
/ 26 мая 2020

Я хочу сослаться на массив, используя значение, присвоенное параметру dvar. Однако вместо этого CPLEX выдал сообщение об ошибке - «CP не может извлечь выражение». Что я могу сделать, чтобы преодолеть ошибку?

Ниже приведены коды моей проблемы - назначение заданий на основе доступного времени сотрудников.

using CP;

{string} Employee = ...;

{string} Jobs = ...;

range EmpIDs = 0..card(Employee)-1;

{int} AvailSlot[EmpIDs] = ...;

range Slots = 1...10

dvar int Time[Jobs] in Slots;

dvar int Emp[Jobs] in EmpIDs;

subject to{

forall (x in Jobs) {
   Time[x] in AvailSlot[Emp[x]];}  //this constraints the assigned time slot for the job x to be one of the available time slots of the employee that is assigned with the same job x. 

}

Заранее спасибо.

1 Ответ

0 голосов
/ 26 мая 2020

с использованием CP;

{string} Employee = {"A","B"};

{string} Jobs = {"K","L"};

range EmpIDs = 0..card(Employee)-1;

{int} AvailSlot[EmpIDs] = [{1,2},{2,3}];


range Slots = 1..10;


dvar int Time[Jobs] in Slots;

dvar int Emp[Jobs] in EmpIDs;

subject to{


forall (x in Jobs) {
   //Time[x] in AvailSlot[Emp[x]];  
   or (j in EmpIDs) (j==Emp[x] && Time[x] in AvailSlot[j]);
}
}

assert forall (x in Jobs) 
   Time[x] in AvailSlot[Emp[x]];

отлично работает

...