Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cplexjavaapi中变量的生成_Java_Variables_Nullpointerexception_Mathematical Optimization_Cplex - Fatal编程技术网

cplexjavaapi中变量的生成

cplexjavaapi中变量的生成,java,variables,nullpointerexception,mathematical-optimization,cplex,Java,Variables,Nullpointerexception,Mathematical Optimization,Cplex,我第一次使用cplexjavaapi,通常我只使用GAMS。我试图生成x[I]变量和一个目标函数,它是x[k]和参数rl[k]的乘积,参数rl[k]是double类型。我总是犯我不理解的错误。代码如下: public void variable() throws IloException{ int i=0; this.rl = new double [(int)Data.Count+1]; IloCplex cplex = new IloCplex();

我第一次使用cplexjavaapi,通常我只使用GAMS。我试图生成x[I]变量和一个目标函数,它是x[k]和参数rl[k]的乘积,参数rl[k]是double类型。我总是犯我不理解的错误。代码如下:

public void variable() throws IloException{
    int i=0; 
    this.rl = new double [(int)Data.Count+1];  

    IloCplex cplex = new IloCplex();

    IloNumVar[] x = new IloNumVar[Data.Count+1];

        for(int Pnr = 0; Pnr <= Data.PCount; Pnr++)
        {
            if(Data.X[Pnr]==1)
            {
                i++;

              x[i] = cplex.boolVar(); 
              rl[i]=Data.RL[Pnr];

            }
        }

     // Optimization problem
        IloLinearNumExpr obj = cplex.linearNumExpr();

        for(int k=0; k<=i; k++){
            obj.addTerm(x[k], rl[k]); 
        }

        cplex.addMaximize(obj);

    }
public void变量()引发异常{
int i=0;
this.rl=新的双精度[(int)Data.Count+1];
IloCplex cplex=新的IloCplex();
IloNumVar[]x=新的IloNumVar[Data.Count+1];

对于(int Pnr=0;Pnr您将离开x[0]由于a而未初始化。在第一个for循环中,i的起始值为0,但在将其用作索引之前,您将对其进行递增,因此x是x的第一个非空元素。您无需再次查看,只需在第一个循环中构建obj表达式即可。此外,for循环习惯使用strict<(或)作为延续标准,而不是'
Exception in thread "main" java.lang.NullPointerException
at ilog.cplex.CpxLinearExpr.unmarkVars(CpxLinearExpr.java:402)
at ilog.cplex.CpxLinearExpr.removeDuplicates(CpxLinearExpr.java:515)
at ilog.cplex.CpxLinearExpr.removeDuplicates(CpxLinearExpr.java:489)
at ilog.cplex.CpxObjective.setExpr(CpxObjective.java:115)
at ilog.cplex.CpxObjective.<init>(CpxObjective.java:369)
at ilog.cplex.IloCplexModeler.objective(IloCplexModeler.java:706)
at ilog.cplex.IloCplexModeler.addObjective(IloCplexModeler.java:768)
at ilog.cplex.IloCplexModeler.addMaximize(IloCplexModeler.java:810)
at ObjCplex.report1(ObjCplex.java:52)
at ObjCplex.<init>(ObjCplex.java:20)
at Main104.main(Main104.java:11)
IloCplex cplex = new IloCplex();
int i = 0;
this.rl = new double [(int)Data.Count+1];  
IloLinearNumExpr obj = cplex.linearNumExpr();
for(int Pnr = 0; Pnr <= Data.PCount; Pnr++)
    {
     if(Data.X[Pnr]==1)
      {
          IloNumVar x = cplex.boolVar(); 
          obj.addTerm(Data.RL[Pnr], x);
          this.rl[i++] = Data.RL[Pnr]; 
        }
    }
cplex.addMaximize(obj);