每次dvar == 1时显示变量决策的参数

时间:2018-10-17 19:54:38

标签: excel cplex opl

我刚开始使用CPLEX,所以这是我的问题:

我确实有一个问题,我有一个带有三个参数(患者白天)的变量决策Y(如果是,则将患者分配为= 1,如果是,则为day),我想在表格上显示这些结果。一个带有data及其参数的表。

如果Y==1(如果是否从医生m咨询过患者p则由Zpm变量决定),则最好在小时h的第一天在患者p上注册以咨询医生m。

我的问题是我无法为循环的每个实例显示其范围的参数。

那么如何在Ypih == Zpm= 1时跨池解决方案获取pih的值并显示它们

1 个答案:

答案 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