Как получить количество ограничений из Cplex

У меня есть длинная программа, которую я написал на C ++, и я использую ILOG Cplex12.5 Solver решить это.
Как я могу получить общее количество ограничений? Есть ли функция для этого?

3

Решение

После того, как вы извлекли модель (IloModel) в IloCplex объект (вы должны сделать это в какой-то момент в вашей программе, чтобы решить модель), вы можете вызвать IloCplex::getNrows чтобы получить общее количество строк (ограничений) вашей задачи.

3

Другие решения

Существует класс IloModel :: Iterator, который позволяет вам посещать объекты IloExtractable в объекте IloModel. IloExtractable имеет метод asConstraint, который будет возвращать пустой дескриптор, если извлекаемый не является ограничением. Метод getImpl () для любого дескриптора концерта ILOG вернет 0. Таким образом, вы можете выполнить итерацию по всем извлекаемым объектам и подсчитать, кто из функции asConstraint не возвращает пустой дескриптор.

#include <ilconcert/ilomodel.h>

unsigned getNumConstraints(IloModel m)
{
unsigned count = 0;
IloModel::Iterator iter(m);
while (iter.ok()) {
if ((*iter).asConstraint().getImpl()) {
++count;
}
++iter;
}
return count;
}
2