任务含有时间窗与资源含有上下班时间的时间冲突约束构建思路
任务信息
符号 | 含义 |
---|---|
i, \forall i\in N | 任务编号 |
ST_i | 任务i最早开始时刻 |
ET_i | 任务i最晚结束时刻 |
W_i | 任务i工作时长 |
资源信息
符号 | 含义 |
---|---|
j, \forall j\in R | 资源编号 |
U_j | 资源j的上班开始时间 |
D_j | 资源j的开始下班时间 |
变量:
x_{ij}:01变量。1表示资源j被指派给任务i,0表示其他;
t_i:整数变量。任务i的实际开始时刻。
约束描述
当任务i的实际开始时刻小于资源j的上班开始时间时,任务i不能被分配给资源j
当任务i的实际开始时刻大于资源j的上班开始时间时,任务i不能被分配给资源j
也就是
怎么用数学表达式构建这个约束呢?
联想到一条比较常用的约束:
其中M是一个极大值,这条约束表示当x_{ij}对i求和大于0时y_i=1,当x_{ij}对i求和等于0时y_i={0,1}。可以看到这条约束与我们的需求十分相似。不同的是这条约束满足条件时y_i=1,我们的是等于0,既然这样我们只需要引入一个辅助变量使得我们满足条件时也为0就好啦。
约束构建
变量:
x_{ij}:01变量。1表示资源j被指派给任务i,0表示其他;
y_{ij}:01变量。1表示资源j不被指派给任务i,0表示其他;
t_i:整数变量。任务i的实际开始时刻。
约束:
以上就是最终的约束表达式,希望这篇文章对你有帮助。