Отображение параметров из переменного решения для каждого раза dvar == 1 - PullRequest
0 голосов
/ 17 октября 2018

Я только начал работать с CPLEX, так что это моя проблема:

У меня есть проблема, у меня есть переменное решение Y (пациент выделен = 1, если да для дня в час h) с тремя параметрами(терпеливое дневное время), и я хочу показать на столе превосходные результаты.одна таблица с Y==1 и их параметрами рядом с этой таблицей.

если Ypih == Zpm= 1 (переменное решение Zpm, если пациент p консультируется с врачом m), тогда напишите в Excel, что пациент p зарегистрирован, чтобы проконсультироваться с врачом m в день I в час h.

моя проблема в том, что я не могу отобразить параметры для их диапазонов для каждого экземпляра цикла.

так как пересечь решение пула, чтобы получить значения pih при Y==1==Z и отобразить их

1 Ответ

0 голосов
/ 18 декабря 2018

вы можете решить вашу проблему, как указано ниже (при условии, что вы используете библиотеку 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
          }
        }
      }
    }
  }
}

После решения вашей модели вам необходимо проверить, какие переменные равныодин.Таким образом, вы можете перебрать все переменные вашей модели и проверить, являются ли они едиными или нет, используя функцию getValue CPLEX.

См. эту ссылку для описания функции CPLEX..

...