Cplex:使用约束定义变量

时间:2018-05-30 15:27:38

标签: variables schedule cplex opl

我是编程方面的新手,但我正在研究Cplex优化中的护士分配模型。第一项任务应提供初步可行的解决方案。

为此,我已经定义了护士,病例和角色的变量。

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

如何制定/定义这些参数以从CPLEX获取结果? 或者我必须在数据文件中写入结果吗?

实际上我没有任何关于这个问题的数据。所有数据都是虚构的。 我想,我必须写出开始和结束时间的数据,但我不知道如何处理P10,P11。

我的想法是(而且我知道它不起作用):

boolean P10 [nurses][roles][cases] ;            // Amount of suitable nurses
int ST [cases] = ... ;
int ET [cases] = ... ;
boolean P11 [cases][overlapcases] ;

这里有谁可以帮助我?非常感谢你提前。问候。

1 个答案:

答案 0 :(得分:0)

从.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产品中有很多例子,甚至还有一个护士例子