Originally posted by: ouma
hi ,
i'm using cplex for the first time , and i can't solve my model
int r=2;
range Routelist=1..r;
int t = 2;
range Period = 1..t;
tuple routeinfo {
int route_id;
int facility_id;
int Period;
float cr;
}
{routeinfo}Routedata=...;
{int} facilities = { r.facility_id | r in Routedata };
tuple route {
int route_id;
int facility_id;
}
{route}Route={<k,i>|<k,i,taux,cr>in Routedata };
tuple feasibleRoutes{
int route_ID ;
int facility_id;
int taux;
}
{feasibleRoutes} K ={<k,i,taux> |< k,i,taux,cr> in Routedata};
tuple coverageparametre {
int route_ID;
int customer_id;
}
{coverageparametre } Coveragedata=...;
{int} customers = { c.customer_id | c in Coveragedata };
tuple allocinfo{
int origin;
int destination;
float cost;
}
{allocinfo}allocdata=...;
tuple allocs{ int origin; int destination;}
{allocs }alloc ={<o,d>|<o,d,c>in allocdata};
routeinfo Routes[Routelist]=[r.route_id : r | r in Routedata];
float B[alloc]=[ <c.origin,c.destination> :c.cost | c in allocdata];
float prixu =...;
float Costo [facilities][Period]=... ;
float Costm [facilities][Period]=... ;
float costp [facilities][Period]=... ;
float demandemin [customers][Period]=...;
float demandemax [customers][Period]=...;
float C[facilities][Period]=...;
dvar boolean openf[facilities][Period];
dvar boolean operf[facilities][Period];
dvar boolean Closf[facilities][Period];
dvar boolean Z[facilities][customers][Period];
dvar boolean select [K];
dvar float+ d[customers][Period];
maximize
sum (i in facilities,j in customers,<i,j> in alloc, taux in Period )(prixu* d[j][taux])-sum(t in Period ,i in facilities)(Costo[i][t]*openf[i][t]+Costm[i][t]*operf[i][t]+costp[i][t]*Closf[i][t])-sum (i in facilities,<i,j>in alloc, taux in Period) (B[<i,j>]*Z[i][j][taux])-sum (<k,i,taux> in K) Routes[K].cr * select<[k,i,taux]>;
subject to {
forall (i in facilities)
sum (j in customers, <i,j> in alloc, taux in Period) Z[i][j][taux] <= 1;
forall (j in customers)
sum (i in facilities, <i,j> in alloc, taux in Period) Z[i][j][taux] == 1;
forall (i in facilities , j in customers, <i,j> in alloc , taux in Period , t in Period)
Z[i][j][taux] <= openf[i][t]+operf[i][t];
forall (i in facilities, t in Period)
openf[i][t]+operf[i][t]<=1;
forall( i in facilities , t in Period )
sum (ti in Period ) Closf[i][ti] == 0 => openf[i][t]==1 ;
forall( i in facilities, t in Period )
sum ( ti in Period ) openf[i][ti]==1 ||sum ( ti in Period ) operf[i][ti] ==1 => operf[i][t]==1 ;
forall (i in facilities,j in customers, taux in Period )
sum (<k,i,taux> in K, <k,j> in Coveragedata) select[<k,i,taux>] == Z[i][j][taux];
forall(t in Period , i in facilities, taux in Period)
sum ( j in customers)(demandemin [j][t]*Z[i][j][taux])<= sum ( j in customers) d[j][taux];
forall(i in facilities, t in Period, taux in Period)
sum ( j in customers) d[j][taux]<= sum ( j in customers)(demandemax [j][taux]*Z[i][j][taux]);
forall(i in facilities, t in Period, taux in Period)
sum ( j in customers) d[j][taux]<= C[i][t]*(openf[i][t]+operf[i][t]);
forall (i in facilities,t in Period)
openf[i][t]==0|| openf[i][t]==1;
forall (i in facilities,t in Period)
operf[i][t]==0|| operf[i][t]==1;
forall (i in facilities,t in Period)
Closf[i][t]==0|| Closf[i][t]==1;
forall (i in facilities,j in customers, taux in Period)
Z[i][j][taux]==0|| Z[i][j][taux]==1;
}
have you any idea about this ?
thanks a lot
#DecisionOptimization#OPLusingCPLEXOptimizer