title: opl cannot extract expression error in CPLEX
body: <p>I get this error,"opl cannot extract expression", for some expression in my objective function when I am running the code in CPLEX. My code is as follow: </p>
  
  <pre><code> /*********************************************
   * OPL 6.3 Model
   * Author: hp
   * Creation Date: Dec 14, 2016 at 6:16:18 PM
   *********************************************/
  
  //Distribution Centers
  int J=...;
  range DC=1..J;
  //Customers
  int I=...;
  range Customers=J+1..I;
  //Vehicles
  int V=...;
  range Vehicle=1..V;
  //Time Periods
  int T=...;
  range TP=1..T;
  //Nodes
  range Nodes=1..I;
  //Operating Cost
  int FCj[DC]=...;
  //Vehicle_Cap
  int VehicleCap[Vehicle]=...;
  //Depot_Cap
  int DepotCap=...;
  //Transportation_Cost
  float Cij[Nodes][Nodes]=...;
  //TransCost_to_factory
  float Cj[DC]=...;
  //OrderCost
  float OrderC[DC]=...;
  //Demand
  int Demand[Customers][TP]=...;
  
  //HoldingCost
  int HoldingC[DC]=...;
  //return rate
  float r=...;
  //probability of quality problem
  float w=...;
  //repairing cost
  float repairC=...;
  //Manufacturing Cost
  float m=...;
  //repackaging cost
  float repackagingC=...;
  float Hivalue=...;
  
  // optimal order
  dvar int+ Qjt[DC][TP];
  
  //DC
  dvar boolean Xj[DC];
  //DC allocation to customers
  dvar boolean Yij[DC][Customers];
  //Vehicle route
  dvar boolean Xijvt[Nodes][Nodes][Vehicle][TP];
  //sub-tour elimination
  dvar int+    M[Customers][Vehicle][TP];
  
  //Final Inventory
  dvar int+   Sjt[DC][0..T];
  
  //order decision variable
  //dvar boolean Zjt[DC][TP];
  
  
  //Varaible
  // Total Costs
  
   dexpr float TotalHoldingandOrderingCosts=sum (j in DC, t in TP) HoldingC[j]*Sjt[j][t]+sum (j in DC,t in TP) OrderC [j]* Qjt[j][t];
   dexpr float TotalDepotOperatingCost= sum (j in DC) Xj[j]*FCj[j];
   dexpr float TotalTransCostFactorytoDC= sum (j in DC, t in TP) Cj[j]*Qjt[j][t];
   dexpr float TotalTransCostDCtoCustomer= sum (i in Nodes, j in Nodes, v in Vehicle, t in TP) Cij[i][j]*Xijvt[i][j][v][t];
   dexpr float TotalTransCostDCToFactory= sum (j in DC, t in TP) w*r*Qjt[j][t]*Cj[j];
   dexpr float TotalManufacturingCost= sum (i in Customers, t in TP) Demand[i][t]*m;
   dexpr float TotalReworkingCost= sum (j in DC, t in TP) w*r*repairC*sum(i in Customers)Demand[i][t]*Yij[j][i];
   dexpr float TotalRepackagingCost= sum (j in DC, t in TP) r*(1-w)*repackagingC*sum(i in Customers)Demand[i][t]*Yij[j][i];
  
   //Objective Function
  
   minimize TotalHoldingandOrderingCosts+TotalDepotOperatingCost+TotalTransCostFactorytoDC+
            TotalTransCostDCtoCustomer+TotalTransCostDCToFactory+TotalManufacturingCost+
            TotalReworkingCost+TotalRepackagingCost;
  
   subject to{
  
  const1: forall (i in Customers){
    sum (j in DC)Yij[j][i]==1;}
  
  
  Const2: forall (j in DC){
    sum (i in Customers)Yij[j][i]&lt;=Xj[j]*Hivalue;}
  
  
  Const3: forall (i in Customers) {
    sum (j in Nodes, v in Vehicle, t in TP) Xijvt [i][j][v][t]==1;}
  
  
  Const4: forall (i in Nodes, v in Vehicle, t in TP) {
    sum (j in Nodes) Xijvt[i][j][v][t]-sum (j in Nodes) Xijvt[i][j][v][t]==0;}
  
  
  Const5: forall (v in Vehicle, t in TP) {
    sum (i in Customers, j in DC)Xijvt[j][i][v][t]&lt;=1; }
  
  
  Const6: forall (v in Vehicle, t in TP) {
    sum (j in Nodes, i in Customers) Demand[i][t]*Xijvt[i][j][v][t]&lt;=VehicleCap[v];}
  
  
  Const7: forall (j in DC, t in TP) {
    sum (i in Customers) Demand[i][t]*Yij[j][i]&lt;=Xj[j]*DepotCap;}
  
  
  Const8: forall (i in Customers, j in DC, v in Vehicle, t in TP){
    sum (g in Nodes) Xijvt[i][g][v][t]+sum (g in Nodes)Xijvt[g][j][v][t]-Yij[j][i]&gt;=1;}
  
  
  Const9: forall (i in Customers, h in Customers, v in Vehicle, t in TP){
    M[i][v][t]-M[h][v][t]+I*Xijvt[i][h][v][t]&lt;=I-1;}
  
  
  //Const10: forall (j in DC, t in TP){
   // sum (i in Customers) Demand[i][t]*Yij[j][i]&lt;=Qjt[j][t];}
  
  
  //Const11: forall (j in DC, t in TP){
    //Zjt[j][t]&lt;=Xj[j]*Hivalue;}
  
  
  Const10: forall (j in DC){
    Sjt[j][0]==0;}
  
  
  Const11: forall (j in DC){  
    Sjt[j][1]==Sjt[j][0]+Qjt[j][1]-sum(i in Customers)Demand[i][1]*Yij[j][i];}
  
  
  Const13: forall (j in DC, t in 2..T){
    Sjt[j][t]==Sjt[j][t-1]+Qjt[j][t]-sum(i in Customers)Demand[i][t]*Yij[j][i]+
    sum(i in Customers)Demand[i][t-1]*Yij[j][i]*r*(1-w);}
  
  
  Const14: forall (j in DC, t in TP){
    Qjt[j][t] &lt;= Hivalue*Xj[j]    ;}
  }
  execute DISPLAY {
        writeln("TotalHoldingandOrderingCosts=", TotalHoldingandOrderingCosts);
        writeln("TotalDepotOperatingCost=",TotalDepotOperatingCost);
        writeln("TotalTransCostFactorytoDC=",TotalTransCostFactorytoDC);
        writeln("TotalTransCostDCtoCustomer=",TotalTransCostDCtoCustomer);
        writeln("TotalTransCostDCToFactory=",TotalTransCostDCToFactory);
        writeln("TotalManufacturingCost=",TotalManufacturingCost);
        writeln("TotalReworkingCost=",TotalReworkingCost); 
        writeln( "TotalRepackagingCost=", TotalRepackagingCost);
          }   
  
      * OPL 6.3 Data
   * Author: hp
   * Creation Date: Dec 14, 2016 at 6:16:18 PM
   *********************************************/
  J=2;
  I=6;
  V=3;
  T=3;
  r=0.2;
  w=0.85;
  
  FCj=[500 700];
  VehicleCap=[600 600 600];
  DepotCap=1000;
  Cij=[[0 100 200 400 500 200]
       [200 0 100 300 100 300]
       [150 200 0 100 200 500]
       [100 200 200 0 100 100]
       [100 100 100 200 0 800]
       [300 350 250 150 100 0]];
  Cj=[1 2];
  OrderC=[0.2 0.1];
  Demand=[[100 73 60]
          [50 40 68]
          [80 95 74]
          [30 68 94]];
  HoldingC=[3 5];
  repairC=0.5;
  repackagingC=0.2;
  m=2;
  Hivalue=100000000;
  </code></pre>
  
  <p>It is confusing; I do not what the problem is. Does anyone know what the problem is?</p>