【问题标题】:Cplex: Define variables with constrainsCplex:定义带有约束的变量
【发布时间】:2018-05-30 15:27:37
【问题描述】:

我是编程新手,但我正在研究 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] : 如果 case cEC 和 case 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] ;

这里有人可以帮助我吗?非常感谢您提前。问候。

【问题讨论】:

    标签: variables schedule cplex opl


    【解决方案1】:

    要从 .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 产品中有很多示例,甚至还有护士示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多