如何从Cplex中获得约束的数量

How to get number of constraints from Cplex

本文关键字:约束 Cplex      更新时间:2023-10-16

我有一个很长的程序,我用c++写的,我用ILOG Cplex12.5 Solver来解决它。我怎样才能得到约束的总数呢?有它的函数吗?

一旦您在IloCplex对象中提取了模型(IloModel)(您应该在程序中的某个时刻这样做以解决模型),您可以调用IloCplex::getNrows以获得问题的行数(约束)。

有一个IloModel::Iterator类,它允许您访问ilomomodel对象中的IloExtractable对象。IloExtractable有一个asConstraint方法,如果可提取对象不是约束,该方法将返回一个空句柄。任何ILOG协调句柄的getImpl()方法都将返回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;
}