2016-09-26 11 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)Есть предложения по этой ошибке?

//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

для преобразования, что i было определено как IloIntVar, но здесь внутри ограничение igives error // contraint 1 exp4.addTerm (1.0, flink [i] [j] [k] [l]); –

+0

Это не объяснение вашей интерпретации этой ошибки. – Tunaki

ответ

0

Согласно сообщению об ошибке, вы даете addTerm в double, когда он хочет int.

+0

Я пробовал как int еще ту же ошибку –

+0

@JJThomson Это невозможно. – shmosel

+0

Могу ли я использовать сумму вместо AddTerm следующим образом: cplex.addGe (exp1, (cplex.sum (flink [i] [j] [k] [l]))); то он будет работать без ошибок. –