scheduling - 使用间隔进行调度时如何在 CP 中获取当前时间
问题描述
我正在尝试在不同的机器上安排任务。这些机器具有动态可用资源,例如:
机器 1:最大容量 4 核。
在 T=t1 => 可用 CPU = 2 核;
在 T=t2 => 可用 CPU = 1 个核心;
每个间隔都有固定的时间(例如:1 分钟)。
所以在 CPLEX 中,我有一个 cumulFunction 来总结机器中使用的资源:
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 是可用资源的 stepFunction。
非常感谢你的帮助。
解决方案
您可以做的是在 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 个。
推荐阅读
- apache-camel - 需要 Apache Camel 在后台每 10 分钟调用一次自定义处理器
- azure - 创建一个没有价值的 azure keyvault 机密?
- angular - 在 ng starrating 模块中,角度、动态值和只读不能一起工作
- spring-boot - 如果我想在启动的 spring boot 程序中添加模块怎么办?
- r - 如何将列设置为R中的索引?
- javascript - 如何将表单和数据一起存储到会话存储中
- react-native - TypeError:null 不是对象(评估'_reactNativeDefaultPreference.default.get')
- postgresql - Postgresql Has-Many 关系插入相同的 id 错误
- jasper-reports - Jasper Sub 报告尺寸问题
- linux - 如何删除 SWupdate 安装中的 gpiod 错误