繁体   English   中英

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] : 如果 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] ;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM