** 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;