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

MILP循环任务调度约束构建咨询:A类任务循环执行约束设计

循环任务MILP约束构建方案

问题梳理

针对4个A类任务[A1,A2,A3,A4],需补充MILP约束实现:A4执行完成后必须循环回到A1,直至规划时域结束;同时保留已有的任务顺序约束(X_a=1表示任务A_a在某时刻执行,对a∈{1,2,3},sum_{t∈T} X_{a,t} ≥ sum_{t∈T} X_{a+1,t},T为规划时域)。

核心约束构建

要实现循环衔接,需从任务执行的时间逻辑入手,确保A4执行后必然衔接A1,且循环不中断。

1. 任务时序衔接约束

引入辅助二进制变量Y_{a,t}:

  • 当a∈{1,2,3}时,Y_{a,t}=1表示A_a在时刻t执行,且A_{a+1}在t+1执行
  • 当a=4时,Y_{4,t}=1表示A4在时刻t执行,且A1在t+1执行

通过以下线性约束定义Y_{a,t}的逻辑:

# 针对A1-A3与后续任务的衔接
∀a∈{1,2,3}, ∀t∈T\last(T):
X_{a,t} + X_{a+1,t+1} - 1 ≤ Y_{a,t} ≤ X_{a,t}
Y_{a,t} ≤ X_{a+1,t+1}

# 针对A4与A1的循环衔接
∀t∈T\last(T):
X_{4,t} + X_{1,t+1} - 1 ≤ Y_{4,t} ≤ X_{4,t}
Y_{4,t} ≤ X_{1,t+1}

2. 循环完整性约束

为避免循环中断,需保证除首个执行的任务外,每个任务的执行都由前序任务(或A4对A1)衔接而来:
引入二进制变量Z_a,Z_a=1表示A_a是规划时域内第一个执行的任务,添加约束:

# 每个后续任务的执行次数不超过前序衔接次数,或作为首个任务启动
∀a∈{1,2,3}:
sum_{t∈T} X_{a+1,t} ≤ sum_{t∈T\last(T)} Y_{a,t} + Z_{a+1}

# A1的执行次数不超过A4的衔接次数,或作为首个任务启动
sum_{t∈T} X_{1,t} ≤ sum_{t∈T\last(T)} Y_{4,t} + Z_1

# 确保仅有一个首个任务
sum_{a=1}^4 Z_a = 1

3. 循环次数一致性约束

结合你已有的顺序约束,可添加以下约束保证循环次数的合理性:

# A1的执行次数最多比A4多1(时域结束于A1执行的情况)
sum_{t∈T} X_1 ≤ sum_{t∈T} X_4 + 1
# A4的执行次数不超过A1(循环不会在A4处中断)
sum_{t∈T} X_4 ≤ sum_{t∈T} X_1

约束集整合

最终完整约束包含:

  • 原有的任务顺序约束
  • 上述任务时序衔接约束
  • 循环完整性约束
  • 循环次数一致性约束

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:54:15