如何声明IloNumArray类型的动态数组?

问题描述 投票:0回答:1

在Cplex Concert C ++中,函数的参数之一具有IloNumArray类型,它必须是一个空的动态数组。直到解决方案结束,才知道数组的大小。我这样声明数组:

    const IloNumVarArray var(env);
    IloNumArray down;
    IloNumArray up;
    IloInt64 iteration1 = var.getSize();
    IloCplex::getStrongBranch(down, up, var, iteration1);  

但是我收到此错误:no instance of overloaded function matches the argument list

链接为here。上下数组必须是动态数组。

cplex
1个回答
0
投票

CPLEX附带的示例说明了如何执行此操作。例如,此代码段来自ilolpex4.cpp

  IloNumArray vals(env);
  cplex.getValues(vals, var);

您可以在<COSDIR>/cplex/examples/src/cpp下找到示例,其中<COSDIR>是您安装ILOG CPLEX Optimization Studio的位置。可以在here中找到示例的描述。

编辑:

在您的代码段中,您尚未初始化downup

ilolpex2.cpp示例的以下修改在我的x86-64 Linux计算机上可以正常工作:

  cplex.extract(model);
  if ( !cplex.solve() ) {
     env.error() << "Failed to optimize LP" << endl;
     throw(-1);
  }
  else {
     IloNumArray down(env);
     IloNumArray up(env);
     IloInt64 itmax = cplex.getParam(IloCplex::Param::Simplex::Limits::Iterations);
     cplex.getStrongBranch(down, up, var, itmax);

     for (int i = 0; i < var.getSize(); ++i) {
        env.out() << var[i].getName()
                  << "(" << down[i] << ", " << up[i]
                  << ")" << endl;
     }
  }

基础CPXstrongbranch函数的文档是here

© www.soinside.com 2019 - 2024. All rights reserved.