使用Intervals进行调度时如何获得CP中的当前时间

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

我正在尝试在不同的机器上安排任务。这些机器具有动态可用资源,例如:

机器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功能是可用资源的一个步骤功能。

非常感谢你的帮助。

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

你可以做的是在你的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名工人

问候

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