以下是SAS代码,麻烦谁能够帮忙修改一下,万分感谢了!!
data ijdata;
input i $ j$ ijcost;
datalines;
a a 20
a b 110
a c 150
b a 100
b b 20
b c 20
c a 150
c b 20
c c 20
;
data ipdata;
input i $ p $ ipcost;
datalines;
a a 25
a b 120
b a 120
b b 20
c a 150
c b 20
;
data pqdata;
input p $ q $ pqcost;
datalines;
a b 80
b a 80
;
data qjdata;
input q $ j $ qjcost;
datalines;
a a 15
a b 120
a c 150
b a 120
b b 20
b c 20
;
data flow;
input i $ j$ flow 3. t;
datalines;
a b 120 1
a c 100 1
b a 120 1
c a 150 1
a b 100 2
a c 90 2
b a 110 2
c a 130 2
a b 140 3
a c 120 3
b a 110 3
c a 115 3
;
proc optmodel;
/*SET*/
set <str,str> IJ;
set <str,str> IP;
set <str,str> PQ;
set <str,str> QJ;
set <num> T;
set <str,str,num> IJT={IJ,T};
set <str,str,num> PQT={PQ,T};
set <str,str,num,str,str> F={IJ,T,PQ};
/*PARAMETERS*/
num ijcost {IJ};
num ipcost {IP};
num pqcost {PQ};
num qjcost {QJ};
num flow {IJT};
num maxroutes=2;
read data ijdata into IJ=[i j] ijcost;
read data ipdata into IP=[i p] ipcost;
read data pqdata into PQ=[p q] pqcost;
read data qjdata into QJ=[q j] qjcost;
read data flow into IJT=[i j t] flow;
/*DECISION VARIABLES*/
var x {PQ} binary ;
var y {F} >=0 integer;
var z {IJT}>=0 integer;
var w {PQ} >=0 integer;
var u {PQT}>=0 integer;
/*CONSTRAINTS*/
con Booking_capacity_con {<p,q> in PQ, t in T}:
sum{<i,j> in IJ} y[i,j,t,p,q]+u[p,q,t]=w[p,q];
con All_finished_con {<i,j,t> in IJT}:
sum{<p,q> in PQ} y[i,j,t,p,q]+z[i,j,t]=flow[i,j,t];
con Maxi_num_routes:
sum{<p,q> in PQ} x[p,q] = 2;
con YES_NO_con {<i,j,t,p,q> in F}:
y[i,j,t,p,q]<=x[p,q]*w[p,q];
/*MODEL FORMULATION*/
min TotalCost = sum{<i,j,t> in IJT} ijcost[i,j]*z[i,j,t] + sum{<i,j,t,p,q> in F}(ipcost[i,p]+pqcost[p,q]+qjcost[q,j])*y[i,j,t,p,q]
+ sum{<p,q,t> in PQT} u[p,q,t]*pqcost[p,q] ;
solve with MILP;
以下是数学原始模型: