Cplex:如何为指定字符串编写约束
Cplex: How to write constraints for designated string
请帮我在Cplex中写约束。
我正在解决人员调度问题。
我有以下几组:
{字符串} 我=...; // 所有医生的集合
{字符串} E=...; // 一组经验水平
{字符串} K=...; //轮班类型
{string} A=...;//作品类型
int D=...;
范围日=1..D; //调度范围是从第1天到第30天
数据:
我={"A","B","C","D","E","F","G", "H","I","J","K","L","M","N","O","P","Q","R","S","T"};
E={"Senior","Rookie"};
K={"o","t"};
A={"Day","Evening","Night","Night1","Night2"};
决策变量:
dvar int x[I][E][Day][K][A] in 0..1; //1,如果经验级别为e的医师i被分配到d天,班次类型为k,工作类型为a
约束:
evening+night constraint
我的主要问题是,因为我只需要关注集合A中的"Evening"和"Day",我不知道如何在Cplex中表达。
forall(i in I, e in E, d in D, k in K, Evening in A, Day in A)
{
x [i, e, (d-1), k, Evening]+ x[i, e, d, k, Day]<=1;
}
以上是我尝试但失败了。
感谢您的帮助!
.mod
{string} I=...; // set of all physicians
{string} E=...; // set of experience levels
{string} K=...; //type of shifts
{string} A=...;//work type
int D=...;
range Day=1..D; //scheduling horizon is from day 1 to day 30
dvar int x[I][E][Day][K][A] in 0..1; //1, if physician i with experience level e is assigned to day d with shift type k with work type a
subject to
{
forall(i in I, e in E, d in Day, k in K, Evening in A:(d-1) in Day)
{
x [i, e, (d-1), k,"Evening"]+ x[i, e, d, k, "Day"]<=1;
}
}
.dat
I={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"};
E={"Senior","Rookie"};
K={"o","t"};
A={"Day","Evening","Night","Night1","Night2"};
D=7;
工作正常
请帮我在Cplex中写约束。 我正在解决人员调度问题。
我有以下几组:
{字符串} 我=...; // 所有医生的集合
{字符串} E=...; // 一组经验水平
{字符串} K=...; //轮班类型
{string} A=...;//作品类型
int D=...;
范围日=1..D; //调度范围是从第1天到第30天
数据:
我={"A","B","C","D","E","F","G", "H","I","J","K","L","M","N","O","P","Q","R","S","T"};
E={"Senior","Rookie"};
K={"o","t"};
A={"Day","Evening","Night","Night1","Night2"};
决策变量:
dvar int x[I][E][Day][K][A] in 0..1; //1,如果经验级别为e的医师i被分配到d天,班次类型为k,工作类型为a
约束: evening+night constraint
我的主要问题是,因为我只需要关注集合A中的"Evening"和"Day",我不知道如何在Cplex中表达。
forall(i in I, e in E, d in D, k in K, Evening in A, Day in A)
{
x [i, e, (d-1), k, Evening]+ x[i, e, d, k, Day]<=1;
}
以上是我尝试但失败了。
感谢您的帮助!
.mod
{string} I=...; // set of all physicians
{string} E=...; // set of experience levels
{string} K=...; //type of shifts
{string} A=...;//work type
int D=...;
range Day=1..D; //scheduling horizon is from day 1 to day 30
dvar int x[I][E][Day][K][A] in 0..1; //1, if physician i with experience level e is assigned to day d with shift type k with work type a
subject to
{
forall(i in I, e in E, d in Day, k in K, Evening in A:(d-1) in Day)
{
x [i, e, (d-1), k,"Evening"]+ x[i, e, d, k, "Day"]<=1;
}
}
.dat
I={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"};
E={"Senior","Rookie"};
K={"o","t"};
A={"Day","Evening","Night","Night1","Night2"};
D=7;
工作正常