У меня есть длинная программа, которую я написал на C ++, и я использую ILOG Cplex12.5 Solver
решить это.
Как я могу получить общее количество ограничений? Есть ли функция для этого?
После того, как вы извлекли модель (IloModel
) в IloCplex
объект (вы должны сделать это в какой-то момент в вашей программе, чтобы решить модель), вы можете вызвать IloCplex::getNrows
чтобы получить общее количество строк (ограничений) вашей задачи.
Существует класс 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;
}