使用Objects IloModel和IloObjective :: setLinearCoefs的指针时未处理的异常错误c ++?

时间:2015-10-07 17:53:45

标签: pointers visual-c++ cplex decomposition rational-team-concert

我正在编写一个包含场景子问题的分解算法。我使用模型指针来创建子问题优化模型。然后,随着算法的进行,需要修改每个子问题的目标函数系数。我使用指针避免每次从头开始创建子问题模型。代码部分显示如下;生成子问题模型指针(用于2个场景),然后使用IloObjective :: setLinearCoefficients改变一个场景子问题的目标函数系数。必须再次解决修改后的子问题:

int main (int argc, char **argv)
{
   int ScenearioNum=2;//Number of scenarios in small example 
   IloEnv env;
   try {

       //Generate the subproblem model pointers:

      IloModel* MaxProblemPtr= new(env) IloModel[ScenearioNum];
      IloObjective* MaxObjPtr= new(env) IloObjective[ScenearioNum];
      for (int s=0;s<ScenearioNum;s++){

         IloModel MaxProblem(env);
         *(MaxProblemPtr+s)=MaxProblem;

          IloObjective MaxObj= IloAdd(MaxProblem, IloMaximize(env));

         *(MaxObjPtr+s)=MaxObj;

          IloRangeArray ConstMax;

          if (s==0){
              ConstMax=IloAdd(MaxProblem,
                               IloRangeArray(env, - IloInfinity,RHS_sub1));
          }else{
              ConstMax=IloAdd(MaxProblem,
                               IloRangeArray(env, - IloInfinity,RHS_sub2));
          }

          for (int j=0;j<2;j++){
               X.add(IloNumVar(MaxObj(1)+ConstMax[0](1)));
               Y.add(IloNumVar(MaxObj(2)+ConstMax[1](1)));
          }

           IloCplex maxcplex(MaxProblem);

           maxcplex.solve();

        if (maxcplex.solve()) {
            double currentObj=maxcplex.getObjValue();
            cout<<"**max Objective function for s"<<s+1<<" :"<<                                                   currentObj<<endl;
        }
      }

   //CHANGING OBJECTIVE FUNCTION OF FIRST SCENARIO

    IloNumArray XCoeff(env);
     IloObjective tempMaxObj=*MaxObjPtr;
     tempMaxObj.setLinearCoefs(X,XCoeff);
     IloModel Maxproblem=*MaxProblemPtr;    
     IloCplex maxcplex(Maxproblem);


  }
}

  catch (IloException& ex) {
     cerr << "Error: " << ex << endl;
  }
  catch (...) {
   cerr << "Error" << endl;
  }

   env.end();

 return 0;
}

但是我在&#34; tempMaxObj.setLinearCoefs&#34;中得到了Unhandled异常错误。我不知道如何解决这个问题,因为模型指针似乎正常工作。如果有人帮助我,我将不胜感激。感谢。

0 个答案:

没有答案