Как получить текущее время в CP при использовании интервалов для планирования - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь планировать задачи на разных машинах.Эти машины имеют динамически доступные ресурсы, например:

машина 1: максимальная емкость 4 ядра.

при T = t1 => доступный процессор = 2 ядра;

при T= t2 => доступный процессор = 1 ядро;

Каждый интервал имеет фиксированное время (например, 1 минута).

Итак, в CPLEX у меня есть функция cumulFunction для суммирования используемого ресурса вmachine:

cumulFunction cumuls[host in Hosts] = 
   sum(job in Jobs) pulse(itvs[task][host], requests[task]);

Теперь проблема в ограничении:

forall(host in Hosts) {
    cumuls[host] <= ftoi(available_res_function[host](**<<Current Period>>**));
}

Я не могу найти способ получить текущий период, чтобы я мог сравнить использованные ресурсы сдоступны в указанный период.

PS: available_res_function является пошаговой функцией доступных ресурсов.

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 февраля 2019

что вы можете сделать, это добавить набор импульсов в свою функцию кумуляции.

Например, в функции sched_cumul вы можете изменить

cumulFunction workerUsage = sum (h в Houses, tв TaskNames) пульс (itvs [h] [t], 1);

в

cumulFunction workingUsage = сумма (ч в домах, т в TaskNames) импульс (itvs [ч] [t], 1) + импульс (1,40,3);

, если вы хотите упомянуть, что в период с 1 по 40 доступно менее 3 рабочих

относительно

...