# Les ensembles set N 'number of appliances':= {1..4};#Nombre de Non-TCA set n 'number of uninterruptible energy phases' {i in N}; # Il existe 4 appareils, ayant chacun n[i] phases, i allant donc de 1 à 4. set M 'number of 5min time slots in 24H':= {1..288}; # Nombre de time slots de 5min)dans 24h (60/12*24 = 288) # Déclaration des variables var p 'Average power used during one time slot' {i in N, j in n[i], k in M}; #Unité = kWh (car Puissance moyenne utilisé pendant un time slot var x{i in N, j in n[i], k in M}, binary; # x = variable auxiliaire utilisée pour dire si la phase j de l'appareil i tourne pendant le time slot k (x=1) var s{i in N, j in n[i], k in M}, binary; # s = variable auxiliaire utilisée pour la transition d'une phase j-1 à j d'un apareil i (pour que les phases se déroulent dans le bon ordre) var t{i in N, j in n[i], k in M }, binary; # t = variable auxiliaire pour compter le temps (en time slot) pendant lequel l'appareil i reste en stand-by entre deux phases j-1 et j mais s'applique que de 2..n[i] # Paramètres param c 'Day-ahead cost of kwh/time slot k' {k in M} ; param E 'Energy phase' {i in N, j in n[i]} ; #Energie consommée par la phase j de l'appareil i param Pmax 'Power max of phase' {i in N,j in n[i]} ; #Le pic de puissance max de la phase j de l'appareil i (Peak-to-average ratio) param Pmin 'Power min of phase' {i in N,j in n[i]} ; #Le pic de puissance min de la phase j de l'appareil i param peak 'Power peak safety'; # Pic de puissance total admis en Watts (sécurité) param Tmin 'Lower limit' {i in N,j in n[i]} ; # Limite inf et sup en nombre de time slots pendant lesquels une phase non interruptible doit se dérouler param Tmax 'Upper limit' {i in N,j in n[i]} ; # permet, par exemple, à l'unique phase d'un PHEV de s'étaler sur le minimum (3h30) ou max (min + TP) param TP 'Time preference' {i in N, k in M}, binary := if i=1 then (if (k<=96 or k>=216) then 1 else 0) else (if i=2 then (if (k>=96 and k<=216) then 1 else 0) else (if i=3 then (if (k<=96 or k>=252) then 1 else 0) else (if i=4 then (if (k<=96 or k>=216) then 1 else 0) ) ) ) ;# la liberté que donne l'utilisateur pour l'appareil # Contraintes subject to eper 'Energy phase energy requirement' {i in N, j in n[i]} : sum{k in M}p[i,j,k] = E[i,j]; subject to ieppab_max 'Instantaneous energy phase power assignment bound Max' {i in N,j in n[i], k in M} : p[i,j,k] <= x[i,j,k]*Pmax[i,j]; subject to ieppab_min 'Instantaneous energy phase power assignment bound Min' {i in N,j in n[i], k in M} : p[i,j,k] >= x[i,j,k]*Pmin[i,j]; subject to ps 'Power safety' {k in M} : sum{i in N, j in n[i]} p[i,j,k] <= peak; subject to epptm_start 'Energy phase process time limits start' {i in N, j in n[i]} : sum{k in M}x[i,j,k] >= Tmin[i,j]; subject to epptm_stop 'Energy phase process time limits stop' {i in N, j in n[i]} : sum{k in M}x[i,j,k] <= Tmax[i,j]; subject to uo_a 'Uninterruptible operation (a)' {i in N, j in n[i], k in M} : x[i,j,k] <= 1 - s[i,j,k]; subject to uo_b 'Uninterruptible operation (b)' {i in N, j in n[i], k in M : k >= 2} : x[i,j,k-1] - x[i,j,k] <= s[i,j,k]; subject to uo_c 'Uninterruptible operation (c)' {i in N, j in n[i], k in M : k >= 2} : s[i,j,k-1] <= s[i,j,k]; subject to sp_p 'Sequential Processing phases' {i in N, j in n[i], k in M : j >= 2} : x[i,j,k] <= s[i,j-1,k]; subject to sp_a 'Sequential Processing appliances' {k in M} : x[4,1,k] <= s[3,8,k]; #Le séchoir ne peut démarrer qu'après la fin de la machine à laver subject to bpd 'Between-phase delay' {i in N, j in n[i], k in M : j >= 2} : t[i,j,k] = s[i,j-1,k] - (x[i,j,k] + s[i,j,k]); subject to utp 'User time preference' {i in N, j in n[i], k in M} : x[i,j,k] <= TP[i,k]; # Définition de la fonction objective minimize obj : sum{k in M} c[k]*( sum{i in N, j in n[i]} p[i,j,k] ) ; solve; display {k in M} : sum{i in N, j in n[i]} p[i,j,k] ; data; set n[1] := 1; #PHEV set n[2] := 1 2 3 4 5 6; #Dishwasher set n[3] := 1 2 3 4 5 6 7 8; #Washing machine set n[4] := 1; #Dryer param E : 1 2 3 4 5 6 7 8 := 1 20000 . . . . . . . 2 16 751.2 17.3 1.6 572.3 1.7 . . 3 118 5.5 2054.9 36.6 18 18 17 78 4 2426.3 . . . . . . . ; param c := 1 2.714,2 2.714,3 2.714,4 2.714,5 2.714,6 2.714,7 2.714,8 2.714,9 2.714,10 2.714,11 2.714,12 2.714, 13 2.424,14 2.424,15,3.424,16,3.424,17 2.424,18 4.424,19 4.424,20 2.424,21,5.424,22,5.424,23 2.424,24 6.424, 25 2.248,26 2.248,27 2.248,28 2.248,29 2.248,30 2.248,31 2.248,32 2.248,33 2.248,34 2.248,35 2.248,36 2.248, 37 2.144,38 2.144,39 2.144,40 2.144,41,2.144,42 2.144,43 2.144,44,2.144,45 2.144,46 2.144,47,2.144,48 2.144, 49 2.005,50 2.005,51 2.005,52 2.005,53 2.005,54 2.005,55 2.005,56 2.005,57 2.005,58 2.005,59 2.005,60 2.005, 61 2.509,62 2.509,63 2.509,64 2.509,65 2.509,66 2.509,67 2.509,68 2.509,69 2.509,70 2.509,71 2.509,72 2.509, 73 3.076,74 3.076,75 3.076,76 3.076,77 3.076,78 3.076,79 3.076,80 3.076,81 3.076,82 3.076,83 3.076,84 3.076, 85 3.800,86 3.800,87 3.800,88 3.800,89,3.800,90 3.800,91 3.800,92,3.800,93 3.800,94 3.800,95,3.800,96 3.800, 97 4.420,98 4.420,99 4.421,100 4.421,101 4.420,102 4.422,103 4.422,104 4.420,105 4.423,106 4.423,107 4.420,108 4.424, 109 5.045,110,5.045,111 5.045,112 5.045,113,5.045,114 5.045,115 5.045,116,5.045,117 5.045,118 5.045,119,5.045,120 5.045, 121 5.033,122,5.033,123 5.033,124 5.033,125,5.033,126 5.033,127 5.033,128,5.033,129 5.033,130 5.033,131,5.033,132 5.033, 133 4.823,134,4.823,135 4.823,136 4.823,137,4.823,138 4.823,139 4.823,140,4.823,141 4.823,142 4.823,143,4.823,144 4.823, 145 4.913,146,4.913,147 4.913,148 4.913,149,4.913,150 4.913,151 4.913,152,4.913,153 4.913,154 4.913,155,4.913,156 4.913, 157 4.419,158,4.419,159 4.419,160 4.419,161,4.419,162 4.419,163 4.419,164,4.419,165 4.419,166 4.419,167,4.419,168 4.419, 169 4.042,170,4.042,171 4.042,172 4.042,173,4.042,174 4.042,175 4.042,176,4.042,177 4.042,178 4.042,179,4.042,180 4.042, 181 3.683,182,3.683,183 3.683,184 3.683,185,3.683,186 3.683,187 3.683,188,3.683,189 3.683,190 3.683,191,3.683,192 3.683, 193 3.221,194,3.221,195 3.221,196 3.221,197,3.221,198 3.221,199 3.221,200,3.221,201 3.221,202 3.221,203,3.221,204 3.221, 205 3.486,206,3.486,207 3.486,208 3.486,209,3.486,210 3.486,211 3.486,212,3.486,213 3.486,214 3.486,215,3.486,216 3.486, 217 4.299,218,4.299,219 4.299,220 4.299,221,4.299,222 4.299,223 4.299,224,4.299,225 4.299,226 4.299,227,4.299,228 4.299, 229 4.728,230,4.728,231 4.728,232 4.728,233,4.728,234 4.728,235 4.728,236,4.728,237 4.728,238 4.728,239,4.728,240 4.728, 241 4.826,242,4.826,243 4.826,244 4.826,245,4.826,246 4.826,247 4.826,248,4.826,249 4.826,250 4.826,251,4.826,252 4.826, 253 4.935,254,4.935,255 4.935,256 4.935,257,4.935,258 4.935,259 4.935,260,4.935,261 4.935,262 4.935,263,4.935,264 4.935, 265 4.625,266,4.625,267 4.625,268 4.625,269,4.625,270 4.625,271 4.625,272,4.625,273 4.625,274 4.625,275,4.625,276 4.625, 277 4.108,278,4.108,279 4.108,280 4.108,281,4.108,282 4.108,283 4.108,284,4.108,285 4.108,286 4.108,287,4.108,288 4.108; param Pmax : 1 2 3 4 5 6 7 8 := 1 479.2 . . . . . . . 2 11.7 176.5 11 11.4 178.6 0.4 . . 3 175 25 183 16.7 41.7 58.3 58.3 97.5 4 121.2 . . . . . . . ; param Pmin : 1 2 3 4 5 6 7 8 := 1 8.3 . . . . . . . 2 0.5 11.7 0.9 0.2 15.6 0 . . 3 2.3 0.4 17.2 0.9 0.9 0.9 0.8 2 4 10 . . . . . . . ; param peak := 840; param Tmin : 1 2 3 4 5 6 7 8 := 1 42 . . . . . . . 2 2 5 2 1 3 8 . . 3 4 1 10 3 2 2 2 3 4 19 . . . . . . . ; param Tmax : 1 2 3 4 5 6 7 8 := 1 180 . . . . . . . 2 4 8 2 1 4 13 . . 3 6 2 14 5 2 2 2 5 4 29 . . . . . . .; end;