cplex出现Q in 'q1' is not positive semi-definite.

软件版本:IBM ILOG Cplex 12.6

代码:

int NbCustomers = ...;
 int NbVehicles = ...;
 
 range Nodes = 0..NbCustomers + 1;
 range Customers = 0..NbCustomers - 1;
 range Vehicles = 0..NbVehicles - 1;

 float Distance[Nodes][Nodes] = ...;
   int Demand[Nodes] = ...;
   int ServiceTime = ...;

int VehicleCapacity[Vehicles] = ...;
   float VehicleSpeed[Vehicles]= ...;
   int TotalTime= ...;

dvar float c[Nodes][Nodes][Vehicles];

dvar boolean x[Nodes][Nodes][Vehicles];

 minimize 
       sum( i in Nodes, j in Nodes, k in Vehicles ) Distance[i][j] * x[i][j][k];
 
   subject to{      
     forall( i in Nodes, j in Customers )
           sum( k in Vehicles : j != NbCustomers +1 && j != NbCustomers && i != j )
           x[i][j][k] * c[i][j][k]== Demand[j];
     
     forall( i in Nodes, j in Customers, k in Vehicles : i != NbCustomers +1 && i != j )
           x[i][j][k] <= c[i][j][k];
     
     forall( i in Nodes, j in Customers, k in Vehicles : i != j )
           c[i][j][k] <= VehicleCapacity[k];
     
     //forall( i in Nodes, j in Customers, k in Vehicles : i != j )
          // x[i][j][k] <= x[i][j][k+1];
         
     forall( m in Nodes, k in Vehicles : m != NbCustomers && m != NbCustomers + 1 )
         sum( i in Nodes : i != NbCustomers + 1 && i != m ) x[i][m][k] ==
         sum( j in Nodes : j != NbCustomers && m != j ) x[m][j][k]; 
     
     forall( k in Vehicles )
         sum( i in Nodes, j in Nodes : i != j ) x[i][j][k] * Distance[i][j]/VehicleSpeed[k] 
         + sum( i in Nodes, j in Nodes : i != j ) c[i][j][k] * ServiceTime <= TotalTime;

参考一下:https://stackoverflow.com/questions/62533440/cplex-java-convex-quadratic-constraint-only-psd-if-x-non-negative

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632