我正在尝试在不同的机器上安排任务。这些机器具有动态可用资源,例如:
机器1:最大容量4核心。
在T = t1 =>可用CPU = 2核心;
在T = t2 =>可用CPU = 1核心;
每个间隔都有一个固定的时间(例如:1分钟)。
所以在CPLEX中,我有一个cumul函数来对机器中使用的资源求和:
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:可用的res功能是可用资源的一个步骤功能。
非常感谢你的帮助。
你可以做的是在你的cumul函数中添加一组脉冲。
例如,在sched_cumul函数中,您可以更改
cumulFunction workersUsage = sum(h in Houses,t in TaskNames)pulse(itvs [h] [t],1);
成
cumulFunction workersUsage = sum(h in Houses,t in TaskNames)pulse(itvs [h] [t],1)+ pulse(1,40,3);
如果你想提及在1到40之间可以减少3名工人
问候