变量清洗时间的约束构建——MILP优化技术问询
混合整数线性规划(MILP)多时长清洗约束解决方案
核心思路
要实现不同产品切换时的多段连续清洗,关键是追踪生产切换事件,并基于切换前后的产品类型,强制对应时长的连续清洗时段。需新增辅助变量捕捉切换行为,再关联清洗时长矩阵C。
1. 新增切换追踪辅助变量
引入二元变量 z_{p,q,d,h}:若在d日h时结束产品p的生产,且下一个生产的产品是q(p≠q),则取1,否则取0。
该变量用于精准定位产品切换的时间节点,为后续触发对应时长的清洗提供依据。
2. 关联切换变量与生产变量
添加约束确保切换变量仅在生产切换时激活:
# 切换变量仅在p于h时生产、h+1时不生产时可能为1 z_{p,q,d,h} ≤ x_{p,d,h} ∀p,q∈P, p≠q, d,h z_{p,q,d,h} ≤ 1 - x_{p,d,h+1} ∀p,q∈P, p≠q, d,h # 切换后,q需在清洗完成后的时段开始生产(处理跨日情况:若h+C[p][q]+1超过当日时段,对应次日) z_{p,q,d,h} ≤ x_{q,d',h'} ∀p,q∈P, p≠q, d,h # 其中d'=d 若h+C[p][q]+1 ≤ H;否则d'=d+1,h'=(h+C[p][q]+1)-H(H为每日时段总数) # 确保生产切换时必然对应一个目标产品q Σ_{q∈P, q≠p} z_{p,q,d,h} = x_{p,d,h} - x_{p,d,h+1} ∀p∈P, d,h
3. 强制连续清洗时段
对于每个切换事件z_{p,q,d,h}=1,需在h+1到h+C[p][q]的时段内强制清洗,同时这些时段不能安排生产或闲置:
# 清洗时段强制为1 c_{d'',h''} ≥ z_{p,q,d,h} ∀p,q∈P, p≠q, d,h, k=1到C[p][q] # 其中d''=d 若h+k ≤ H;否则d''=d+1,h''=(h+k)-H # 清洗时段禁止生产 x_{p',d'',h''} ≤ 1 - z_{p,q,d,h} ∀p'∈P, p,q∈P, p≠q, d,h, k=1到C[p][q] # 清洗时段禁止闲置 y_{d'',h''} ≤ 1 - z_{p,q,d,h} ∀p,q∈P, p≠q, d,h, k=1到C[p][q]
4. 保留基础状态约束
保留原有生产线状态互斥约束,确保每个时段只能是生产、清洗或闲置中的一种:
x_{p,d,h} + c_{d,h} + y_{d,h} = 1 ∀p∈P, d,h
注:原有单段清洗触发约束c_{d,h} >= x_{p,d,h-1} - x_{p,d,h}可替换为上述切换触发约束,避免逻辑冲突。
内容的提问来源于stack exchange,提问作者Ignacio Aristimuño
相关产品推荐
相关产品推荐

