You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用docplex.cp基于区间变量监控缓冲区并行使用的最大/均值

作业车间模型缓冲区并行使用量KPI实现方案

核心实现步骤

1. 定义缓冲区占用脉冲函数

针对每个需要占用缓冲区的操作(比如mops(j,o,m)对应的缓冲阶段),生成脉冲函数标记其占用时段:

# 若单个操作占用1个缓冲区,可根据实际需求调整脉冲权重
buffer_pulses = [pulse(mops[j,o,m], 1) 
                 for j in jobs 
                 for o in operations 
                 for m in machines 
                 if 该操作需占用缓冲区]

2. 构建实时占用累积函数

将所有脉冲函数求和,得到任意时刻的缓冲区并行占用量:

buffer_usage = sum(buffer_pulses)

3. 提取最大值KPI

使用max_of()函数直接获取累积函数的峰值,作为并行使用缓冲区的最大值:

max_buffer_usage = max_of(buffer_usage)
# 将最大值注册为模型KPI
model.add_kpi(max_buffer_usage, "Maximum Buffer Usage")

4. 计算平均值KPI

平均值通过**总缓冲区占用时长 / 制造周期(Makespan)**计算:

# 统计所有缓冲区操作的总占用时长
total_buffer_time = sum(end_of(mops[j,o,m]) - start_of(mops[j,o,m]) 
                        for j in jobs 
                        for o in operations 
                        for m in machines 
                        if 该操作需占用缓冲区)
# 假设makespan为你已定义的周期变量(如所有操作结束时间的最大值)
average_buffer_usage = total_buffer_time / makespan
# 注册平均值KPI
model.add_kpi(average_buffer_usage, "Average Buffer Usage")

关键注意事项

  • 若不同操作占用缓冲区数量不同,需修改pulse()的第二个参数为对应占用数。
  • 务必筛选出实际占用缓冲区的操作,避免无关操作干扰计算。
  • 求解完成后,可通过model.solution.get_kpi_value("Maximum Buffer Usage")直接读取KPI结果。

内容的提问来源于stack exchange,提问作者Javi Pernas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:11:01