Cplex:定义带有约束的变量
Cplex: Define variables with constrains
我是编程新手,但我正在研究 Cplex Optimization 中的护士分配模型。第一个任务应该提供一个初始可行的解决方案。
为此,我已经定义了护士、病例和角色的变量。
int i = ... ;
range nurses = 1..n ; // Set of available nurses
{string} roles = ... ; // Set of roles that are required for each surgery
int c = ... ;
range cases = 1..c ; // Set of cases scheduled for surgery n the current day
int cc = ... ;
range overlapcases = 1..cc ; // Overlapping cases
现在我要定义参数(E 等于 epsilon):
P10 [i][c][k] : 1 如果护士 iEI 可以为病例 cEC 扮演角色 kEK,否则 O
ST [c] : 案例cEC的开始时间
ET [c] : 案例cEC的结束时间
P11 [c][cc] : 如果案例 cEC 和案例 ccEC 重叠则为 1,否则为 0
如何 formulate/define 这些参数从 CPLEX 获取结果?
还是必须将结果写入数据文件?
其实我没有这个问题的任何数据。所有数据都是虚构的。
我想,我必须写开始和结束时间的数据,但我不知道如何处理 P10,P11。
我的想法是(我知道它行不通):
boolean P10 [nurses][roles][cases] ; // Amount of suitable nurses
int ST [cases] = ... ;
int ET [cases] = ... ;
boolean P11 [cases][overlapcases] ;
这里有人可以帮助我吗?非常感谢你提前。问候。
要从 .dat 中读取,让我举个小例子。
.mod
{string} nurses=...;
{string} roles=...;
{string} cases=...;
{string} overlapcases=...;
int P10 [nurses][roles][cases]=... ; // Amount of suitable nurses
int ST [cases] = ... ;
int ET [cases] = ... ;
int P11 [cases][overlapcases] =...;
.dat
nurses={"Ann","Mary"};
roles={"A","B"};
cases={"C1","C2"};
overlapcases={"D1"};
P10= [[[1 0][0 1]][[1 0][0 1]]];
ST =[1,10] ;
ET = [4,12];
P11 =[[1]];
PS: 你在CPLEX产品中有很多例子,甚至还有一个护士例子。
我是编程新手,但我正在研究 Cplex Optimization 中的护士分配模型。第一个任务应该提供一个初始可行的解决方案。
为此,我已经定义了护士、病例和角色的变量。
int i = ... ;
range nurses = 1..n ; // Set of available nurses
{string} roles = ... ; // Set of roles that are required for each surgery
int c = ... ;
range cases = 1..c ; // Set of cases scheduled for surgery n the current day
int cc = ... ;
range overlapcases = 1..cc ; // Overlapping cases
现在我要定义参数(E 等于 epsilon):
P10 [i][c][k] : 1 如果护士 iEI 可以为病例 cEC 扮演角色 kEK,否则 O
ST [c] : 案例cEC的开始时间
ET [c] : 案例cEC的结束时间
P11 [c][cc] : 如果案例 cEC 和案例 ccEC 重叠则为 1,否则为 0
如何 formulate/define 这些参数从 CPLEX 获取结果? 还是必须将结果写入数据文件?
其实我没有这个问题的任何数据。所有数据都是虚构的。 我想,我必须写开始和结束时间的数据,但我不知道如何处理 P10,P11。
我的想法是(我知道它行不通):
boolean P10 [nurses][roles][cases] ; // Amount of suitable nurses
int ST [cases] = ... ;
int ET [cases] = ... ;
boolean P11 [cases][overlapcases] ;
这里有人可以帮助我吗?非常感谢你提前。问候。
要从 .dat 中读取,让我举个小例子。
.mod
{string} nurses=...;
{string} roles=...;
{string} cases=...;
{string} overlapcases=...;
int P10 [nurses][roles][cases]=... ; // Amount of suitable nurses
int ST [cases] = ... ;
int ET [cases] = ... ;
int P11 [cases][overlapcases] =...;
.dat
nurses={"Ann","Mary"};
roles={"A","B"};
cases={"C1","C2"};
overlapcases={"D1"};
P10= [[[1 0][0 1]][[1 0][0 1]]];
ST =[1,10] ;
ET = [4,12];
P11 =[[1]];
PS: 你在CPLEX产品中有很多例子,甚至还有一个护士例子。