************************************************************************
**PROGRAMA DE AUTOPROGRAMACIÓN DE LOS PRODUCTORES DE ENERGÍA ELÉCTRICA**
************************************************************************

SETS

t número de periodos /1*6/
g número de generadores /1*2/
w scenarios /1*2/;

SCALAR Alfa /0/;

PARAMETER Qmax(g)
/1       4
2        4/;

PARAMETER Vmax(g)
/1       10
2        10/;

PARAMETER Vmin(g)
/1       2
2        2/;

PARAMETER Vini(g)
/1       2
2        3/;

PARAMETER rho(g)
/1       5
2        8/;

TABLE Inflow(g,t)
         1       2       3       4       5       6
1        1       1       1       1       1       1
2        2       2       2       2       2       2 ;

TABLE Price(w,t)
         1       2       3       4       5       6
1        15      20      25      30      25      20
2        20      15      10      10      15      20;

PARAMETER Prob(w)
/1       0.5
2        0.5/;

VARIABLES
CVaR                     Beneficio total obtenido
Profit(w)                Beneficio total obtenido
Pgen(g,t)                Potencia generada en cada periodo t por cada central g
Q(g,t)                   Caudal turbinado en cada central g y en cada periodo t
V(g,t)                   Volumen de cada embalse en el periodo t
etta(w)
VaR;

EQUATIONS

FO                       Funcion objetivo
ProfitEq                 Definicion profit
ConvPQ                   Conversion potencia-caudal
MaxFlujo                 Máximo flujo de la central
MinFlujo                 Mínimo flujo de la central
MaxVolumen               Máximo volumen de la central
MinVolumen               Mínimo volumen de la central
BalanceAgua1_1           Balance de agua para cada periodo y central 1
BalanceAgua1_2           Balance de agua para cada periodo y central 1
BalanceAgua2_1           Balance de agua para cada periodo y central 2
BalanceAgua2_2           Balance de agua para cada periodo y central 1
Risk1
Risk2
;

FO..                     CVaR =e= VaR - sum(w,(1/(1-Alfa))*Prob(w)*etta(w));

ProfitEq(w)..            Profit(w) =e= SUM((t,g),Price(w,t)*Pgen(g,t));

ConvPQ(g,t)..            Pgen(g,t) =e= rho(g)*Q(g,t);

MaxFlujo(g,t)..          Q(g,t) =l= Qmax(g);

MinFlujo(g,t)..          Q(g,t) =g= 0;

MaxVolumen(g,t)..        V(g,t) =l= Vmax(g);

MinVolumen(g,t)..        V(g,t) =g= Vmin(g);

BalanceAgua1_1..         V('1','1') =e= Vini('1') - Q('1','1') + Inflow('1','1');

BalanceAgua1_2(t)$(ord(t) gt 1)..
                         V('1',t) =e= V('1',t-1) - Q('1',t) + Inflow('1',t);

BalanceAgua2_1..         V('2','1') =e= Vini('2') - Q('2','1') + Q('1','1') + Inflow('2','1');

BalanceAgua2_2(t)$(ord(t) gt 1)..
                         V('2',t) =e= V('2',t-1) - Q('2',t) + Q('1',t) + Inflow('2',t);

Risk1(w)..       -Profit(w) + VaR - etta(w) =l= 0;

Risk2(w)..       etta(w) =g= 0;

MODEL hidro /ALL/;

SOLVE hidro USING lp maximizing CVaR;


