Vous êtes sur la page 1sur 2

** Se definen los conjuntos G y N.

** Luego se define el conjunto MAP


** como un subconjunto de los conjuntos G y N.
** El subconjunto MAP establece las combinaciones
** validas entre los elementos de G y N.
SETS
G indice de generadores /G1*G2/
N indice de nudos /N1*N3/
MAP(G,N) asocia generadores y nudos /G1.N1,G2.N2/;
**
**
**
**
**

Se asignan los datos de entrada.La primera tabla representa los datos


para cada generador.Los identificadores de las columnas no se han
declarado como elementos que pertenecen a algun conjunto,
por eso se utiliza el simbolo * en la definicion de la tabla.
Igualmente ocurre en los de las dos tablas posteriores.

TABLE GDATA(G,*) datos de entrada de los generadores


PMIN
(W)
G1 0.0
G2 0.0

PMAX
(W)
3.0
3.0

QMIN QMAX COST


(VAr) (VAr) (E/Wh)
-1.0
2.0
6
-1.0
2.0
7;

TABLE LINE(N,N,*) datos de entrada de las lineas


Y
PHI
*
(Ohm) (rad)
N1.N1 22.97 -1.338
N2.N2 21.93 -1.347
N3.N3 20.65 -1.362
N1.N2 12.13 1.816
N1.N3 10.85 1.789
N2.N3 9.81 1.768;
TABLE BUS(N,*)
VMIN
VMAX PL
QL
* (V)
(V)
(W)
(VAr)
N1 0.95 1.13
N2 0.95 1.10
N3 0.95 1.10 4.5
1.5;
** Constante PI util para limitar los angulos de tension.
SCALAR
PI /3.1416/;
** Se declaran las variables de optimizacion.
VARIABLES
z valor de la funcion objetivo
p(G) potencia activa generada por el generador G
q(G) potencia reactiva generada por el generador G
v(N) modulo de la tension en el nudo N
d(N) angulo de la tension en el nudo N;
** Se asignan los limites de las variables.
p.lo(G)=GDATA(G,'PMIN'); p.up(G)=GDATA(G,'PMAX');
q.lo(G)=GDATA(G,'QMIN'); q.up(G)=GDATA(G,'QMAX');
v.lo(N)=BUS(N,'VMIN'); v.up(N)=BUS(N,'VMAX');
d.lo(N)=-PI;
d.up(N)=PI;
** El nudo 3 se toma como nudo de referencia, por
** eso se fija su angulo a cero.
d.fx('N3')=0;
** El conjunto de nudos N se duplica para hacer referencia

** a distintos elementos del mismo dentro de la misma restriccion.


ALIAS(N,NP);
** Las matrices de datos Z y PHI se definen simetricas mediante
** la condicion $(ORD(N) GT ORD(NP)) sobre los conjuntos N y NP.
LINE(N,NP,'Y')$(ORD(N) GT ORD(NP))=LINE(NP,N,'Y');
LINE(N,NP,'PHI')$(ORD(N) GT ORD(NP))=LINE(NP,N,'PHI');
** Se declaran las restricciones.
EQUATIONS
COST funcion objetivo
PBAL(N) restricciones de balance de potencia activa
QBAL(N) restricciones de balance de potencia reactiva;
** En las restricciones se emplea la condicion $MAP(G,N)
** para comprobar si el generador G esta ubicado en el nudo N.
COST..
z =e= SUM(G,GDATA(G,'COST')*p(G));
PBAL(N).. SUM(G$MAP(G,N),p(G))-BUS(N,'PL')=e=v(N)*
SUM(NP,LINE(N,NP,'Y')*v(NP)*COS(d(N)-d(NP)
-LINE(N,NP,'PHI')));
QBAL(N).. SUM(G$MAP(G,N),q(G))-BUS(N,'QL')=e= v(N)*
SUM(NP,LINE(N,NP,'Y')*v(NP)*SIN(d(N)-d(NP)-LINE(N,NP,'PHI')));
** Los comandos siguientes definen el modelo de flujo optimo de cargas,
** y solicitan a GAMS que resuelva el problema mediante un optimizador no lineal
.
MODEL foc /COST,PBAL,QBAL/;
SOLVE foc USING nlp MINIMIZING z;

Vous aimerez peut-être aussi