thank you very much, I reversed the indices and I managed to find an optimal solution, but I have negative numbers, since my decision variables are integer "the number of trips".
le code
//INDEX
{int} ptcharg ={1,2,3};
{int} ptdecharg= {1,2};
{int} typecamion= {1,2};
//DATA
int demand[ptdecharg]= [3240,3550];
int supply[ptcharg]= [4077,4000,4050];
float distance[ptdecharg][ptcharg] =[[6.6,5.3,5.9],[3.7,6.7,5.7]];
int tcostp[typecamion]= [11480,25160];
int tcostv[typecamion]= [11000,25000];
float capacamion[typecamion]=[136,190];
int nombrecamion[typecamion]=[9,3];
float vitesmoy[ptcharg]= [30,36,28];
float vitesmoyvide[typecamion]= [32,33];
float vitesmoycharg[typecamion]= [22,20];
float vitesmoydecharg[typecamion]= [12,16];
int tmt[typecamion]= [5,6];
int tms[typecamion]= [5,6];
//DECISION VARIBALES
dvar int nbvoyagecharg[ptdecharg][ptcharg][typecamion];
dvar int nbvoyagevide[ptdecharg][ptcharg][typecamion];
//OBJ.F
dexpr float transpcostc= sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagecharg[i][j][k]*distance[i][j]*tcostp[k];
dexpr float transpcostv= sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagevide[i][j][k]*distance[i][j]*tcostv[k];
dexpr float transpcosttotal=transpcostc+transpcostv;
//MODEL
minimize transpcosttotal;
subject to{
//ct1
forall(j in ptcharg)
sum(i in ptdecharg,k in typecamion) capacamion[k]*nbvoyagecharg[i][j][k]<=supply[j];
//ct2
forall( i in ptdecharg)
sum(j in ptcharg,k in typecamion) capacamion[k]*nbvoyagecharg[i][j][k]<= demand[i];
//ct3
forall( j in ptcharg, k in typecamion)
sum(i in ptdecharg) nbvoyagevide[i][j][k]==sum(i in ptdecharg)nbvoyagecharg[i][j][k];
//ct4
(sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagecharg[i][j][k]*((distance[i][j]/vitesmoycharg[k])+(capacamion[k]/vitesmoy[j])+tms[k]))+ (sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagevide[i][j][k]*((distance[i][j]/vitesmoyvide[k])+(capacamion[k]/vitesmoydecharg[k])+tmt[k]))<=480*2;
//ct5
forall( k in typecamion)
(sum(i in ptdecharg, j in ptcharg) nbvoyagecharg[i][j][k]*((distance[i][j]/vitesmoycharg[k])+(capacamion[k]/vitesmoy[j])+tms[k]))+ (sum(i in ptdecharg, j in ptcharg) nbvoyagevide[i][j][k]*((distance[i][j]/vitesmoyvide[k])+(capacamion[k]/vitesmoydecharg[k])+tmt[k]))<=480*nombrecamion[k];
}
------------------------------
Hajar Bnouachir
------------------------------
Original Message:
Sent: Fri June 24, 2022 05:34 PM
From: Paul Rubin
Subject: Error , CPLEX can't extract the expression
In line 29, the domains of i and j are reversed.
------------------------------
Paul Rubin
Professor Emeritus
Michigan State University
Original Message:
Sent: Fri June 24, 2022 12:17 PM
From: Hajar Bnouachir
Subject: Error , CPLEX can't extract the expression
HI, This is my code I can't find a solution for this error
//INDEX
{int} ptcharg ={1,2,3};
{int} ptdecharg= {1,2};
{int} typecamion= {1,2};
//DATA
float demand[ptdecharg]= [100,90];
float supply[ptcharg]= [35,50,80];
float distance[ptcharg][ptdecharg]= [[6.6,3.7],[5.3,6.7],[5.9,5.7]];
float tcostp[typecamion]= [30,26];
float tcostv[typecamion]= [20,15];
float capacamion[typecamion]=[136,190];
float vitesmoy[ptcharg]= [10,15,18];
float vitesmoyvide[typecamion]= [45,40];
float vitesmoycharg[typecamion]= [32,30];
float vitesmoydecharg[typecamion]= [12,16];
float tmt[typecamion]= [5,6];
float tms[typecamion]= [5,6];
//DECISION VARIBALES
dvar int nbvoyagecharg[ptcharg][ptdecharg][typecamion];
dvar int nbvoyagevide[ptcharg][ptdecharg][typecamion];
//OBJ.F
dexpr float transpcostc= sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagecharg[i][j][k]*distance[i][j]*tcostp[k];
dexpr float transpcostv= sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagevide[i][j][k]*distance[i][j]*tcostv[k];
dexpr float transpcosttotal=transpcostc+transpcostv;
//MODEL
minimize transpcosttotal;
subject to{
SUPPLYCONS:
forall(j in ptcharg)
sum(i in ptdecharg,k in typecamion) capacamion[k]*nbvoyagecharg[i][j][k]<=supply[j];
DEMANDCONS:
forall( i in ptdecharg)
sum(j in ptcharg,k in typecamion) capacamion[k]*nbvoyagecharg[i][j][k]<= demand[i];
continu:
forall( j in ptcharg, k in typecamion)
sum(i in ptdecharg) nbvoyagevide[i][j][k]==sum(i in ptdecharg)nbvoyagecharg[i][j][k];
Time:
(sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagecharg[i][j][k]*((distance[i][j]/vitesmoycharg[k])+(capacamion[k]/vitesmoy[j])+tms[k]))+ (sum(i in ptdecharg, j in ptcharg,k in typecamion) nbvoyagevide[i][j][k]*((distance[i][j]/vitesmoyvide[k])+(capacamion[k]/vitesmoydecharg[k])+tmt[k]))<=480*2;
}
I really need your help
Many thanks
------------------------------
Hajar Bnouachir
------------------------------
#DecisionOptimization