我刚开始使用CPLEX,所以这是我的问题:
我确实有一个问题,我有一个带有三个参数(患者白天)的变量决策Y(如果是,则将患者分配为= 1,如果是,则为day),我想在表格上显示这些结果。一个带有data
及其参数的表。
如果Y==1
(如果是否从医生m咨询过患者p则由Zpm变量决定),则最好在小时h的第一天在患者p上注册以咨询医生m。
我的问题是我无法为循环的每个实例显示其范围的参数。
那么如何在Ypih == Zpm= 1
时跨池解决方案获取pih的值并显示它们
答案 0 :(得分:0)
您可以按照以下说明解决问题(假设您正在使用ILOG CPLEX Optimization Studio C ++库)。
// solve your model
cplex.solve();
// now, we will verify all variables that are equal to 1
// first, we will loop through variables Y
for (int p_ = 0; p_ < maxP; p_++) {
for (int i_ = 0; i_ < maxI; i_++) {
for (int h_ = 0; h_ < maxH; h_++) {
// if Y_{pih} == 1
if (cplex.getValue(cplex.varY[p_][i_][h_]) == 1) {
// we will look if there is a variable Z == 1
for (int m_ = 0; m_ < maxM; m_++) {
if (cplex.getValue(cplex.varZ[p_][m_] == 1) {
// print or store your variables
}
}
}
}
}
}
求解模型后,您将需要验证哪些变量等于1。因此,您可以使用getValue
CPLEX函数遍历所有模型变量并验证它们是否为一个。
有关CPLEX功能的说明,请参见this link。