跨桶利用率平衡:红蓝球桶容量占比均衡调整技术需求
红蓝球桶均衡装填解决方案
问题描述
现有N个桶B₁、B₂、…、Bₙ,各自对应容量C₁、C₂、…、Cₙ。桶内装有两种尺寸的红球与蓝球,当前装填状态混乱:部分桶混装两种球,部分仅装单一颜色,且各桶容量填充率差异显著(如10%到90%不等)。需调整所有桶的装填,使每个桶中红球占用容量占桶总容量的比例尽可能一致,蓝球占比也需满足相同要求。
实现步骤
1. 统计全局核心数据
- 计算所有桶的总容量:
Total_C = ΣCᵢ(i从1到N) - 统计所有桶内红球占用的总容量:
Total_R = ΣRᵢ(Rᵢ为第i个桶内红球当前占用容量) - 统计所有桶内蓝球占用的总容量:
Total_B = ΣBᵢ(Bᵢ为第i个桶内蓝球当前占用容量)
2. 计算目标占比
- 红球的目标全局占比:
Target_Ratio_R = Total_R / Total_C - 蓝球的目标全局占比:
Target_Ratio_B = Total_B / Total_C
注意:若
Total_R + Total_B > Total_C,需先确认规则:若允许移除多余球,直接按上述占比计算;若仅能调整分配,则需将总占用容量压缩至Total_C,重新计算占比(即Adjusted_Total_R = Total_R * Total_C / (Total_R + Total_B),Adjusted_Total_B = Total_B * Total_C / (Total_R + Total_B),再基于调整后的总容量算占比)。
3. 计算单桶目标装填量
对每个桶Bᵢ:
- 红球目标占用容量:
Target_Rᵢ = Cᵢ * Target_Ratio_R - 蓝球目标占用容量:
Target_Bᵢ = Cᵢ * Target_Ratio_B
4. 执行装填调整
- 针对每个桶,对比当前装填量与目标量,进行球的跨桶转移:
- 若当前
Rᵢ > Target_Rᵢ,将多余红球转移至Rᵢ < Target_Rᵢ的桶中 - 若当前
Bᵢ > Target_Bᵢ,将多余蓝球转移至Bᵢ < Target_Bᵢ的桶中
- 若当前
- 若调整后
Target_Rᵢ + Target_Bᵢ < Cᵢ,可根据需求补充对应颜色球或保留空位;若总占用超容量,则需按比例削减各桶的目标装填量。
示例演示
假设3个桶的初始状态:
- B₁:容量100,当前红球占用80,蓝球占用0
- B₂:容量200,当前红球占用20,蓝球占用100
- B₃:容量100,当前红球占用0,蓝球占用50
计算过程
- 总容量:
Total_C = 100 + 200 + 100 = 400 - 红球总占用:
Total_R = 80 + 20 + 0 = 100→ 红球目标占比:100/400 = 25% - 蓝球总占用:
Total_B = 0 + 100 + 50 = 150→ 蓝球目标占比:150/400 = 37.5%
单桶目标量
- B₁:红球25,蓝球37.5
- B₂:红球50,蓝球75
- B₃:红球25,蓝球37.5
调整操作
- B₁移出55单位红球,补充37.5单位蓝球
- B₂移入30单位红球,移出25单位蓝球
- B₃移入25单位红球,移出12.5单位蓝球
内容的提问来源于stack exchange,提问作者Novice User
相关产品推荐
相关产品推荐

