2016-09-26 2 views
-7

Error:(198, 32) java: no suitable method found for addTerm(double,ilog.concert.IloIntVar[]) method ilog.concert.IloLinearIntExpr.addTerm(int,ilog.concert.IloIntVar) is not applicable (argument mismatch; possible lossy conversion from double to int) method ilog.concert.IloLinearIntExpr.addTerm(ilog.concert.IloIntVar,int) is not applicable (argument mismatch; double cannot be converted to ilog.concert.IloIntVar)이 오류에 대한 제안 사항이 있습니까? 그것이 <code>int</code>을 원할 때

//for Virtual link Variable Y i,j m,n,k and flow variable F i,j m,n,k 

IloIntVar[][][][][] ylink=new IloIntVar[VNVert_k][VNVert_k][VNVert_k][VNVert_k][]; 
IloIntVar[][][][][] flink=new IloIntVar[VNVert_k][VNVert_k][VNVert_k][VNVert_k][]; 
for (int i = 0; i < VNVert_k; i++) { 
    for (int j = 0; j < VNVert_k; j++) { 
     for (int k = 0; k < VNVert_k; k++) { 
      for (int l = 0; l < VNVert_k; l++) { 
       ylink[i][j][k][l]=cplex.intVarArray(VNVert_k,0,1); 
       flink[i][j][k][l]=cplex.intVarArray(VNVert_k,0,1); 

      } 
     } 
    } 
} 


//---------------------------- Constraints 
IloLinearNumExpr exp1 = cplex.linearNumExpr(); 
IloLinearNumExpr exp2 = cplex.linearNumExpr(); 
IloLinearNumExpr exp3 = cplex.linearNumExpr(); 
IloLinearIntExpr exp4 = cplex.linearIntExpr(); 

for (int i = 0; i <SubVert ; i++) { 
    for (int j = 0; j < SubVert; j++) { 
     //constraint 
     exp1.addTerm(M,xlink[i][j]); 
     //constraint 5 ∑ Xij=1 
     exp2.addTerm(1,xlink[i][j]); 
     cplex.addLe(exp2,1); 
     // constriant 6 ∑ Xij=1 
     exp3.addTerm(1,xlink[i][j]); 
     cplex.addEq(exp3,1); 
     for (int k = 0; k <SubVert ; k++) { 
      for (int l = 0; l < VNVert_k; l++) { 
       //contraint 1 
       exp4.addTerm(1.0,flink[i][j][k][l]); 
       cplex.addGe(exp1,exp4); 
      } 
     } 
    } 
} 
+4

"addTerm (double, ilog.concert.IloIntVar [])"에 적합한 메소드가 없습니다. 이 오류 메시지는 무엇을 의미한다고 생각하십니까? 어떻게 해석합니까? – Tunaki

+0

변환을 위해 IloIntVar로 정의되었지만 여기에는 제약 조건이 있습니다. // 얽힘 1 exp4.addTerm (1.0, flink [i] [j] [k] [l]); –

+0

그 오류의 해석에 대한 설명이 아닙니다. – Tunaki

답변

0

오류 메시지에 따르면, 당신은 addTermdouble을주고있다.

+0

나는 여전히 같은 오류로 int 시도했습니다 –

+0

@ JJThomson 그건 불가능합니다. – shmosel

+0

다음과 같이 AddTerm을 사용하는 대신 sum을 사용할 수 있습니다. cplex.addGe (exp1, (cplex.sum (flink [i] [j] [k] [l])))); 그러면 오류없이 작동합니다. –