0% encontró este documento útil (0 votos)
34 vistas95 páginas

Lenguajes de Modelado Algebraico en Optimización

Manual GAMS

Cargado por

adderlyhuerta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas95 páginas

Lenguajes de Modelado Algebraico en Optimización

Manual GAMS

Cargado por

adderlyhuerta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Lenguajes de modelado algebraico

Andrés Ramos
Universidad Pontificia Comillas
[Link]
[Link]@[Link]
Alternativas desarrollo modelos optimización
• Lenguajes de programación de propósito general (C, C++, Java, Visual
Basic, FORTRAN 90)
– C (CPLEX de ILOG, Gurobi from Gurobi Optimization, Xpress-Optimizer
from FICO)
– C++ (ILOG Concert de IBM, LINDO API de LINDO Systems, OptiMax
2000 de Maximal Software, FLOPC++ de Universidade de Aveiro)
– Dominio público [GNU Linear Programming Toolkit GLPK
([Link]/software/glpk), Computational Infrastructure for Operations
Research COIN-OR ([Link]), LP solver SoPlex
([Link] and MIP framework SCIP ([Link]
• Lenguajes o entornos de cálculo numérico o simbólico (hojas de cálculo,
Matlab, Mathematica)
• Lenguajes de modelado algebraico [GAMS, OPL Studio, AMPL,
AIMMS, XPRESS-MP, MPL, Zimpl ([Link] (el último de
dominio público)]
• En OR/MS Today ([Link]) una vez al año hay artículos de
resumen de los diferentes entornos de optimización y sus características
Lenguajes de modelado algebraico. GAMS - 2
Optimizadores en hojas de cálculo

• Ventajas
– Fáciles de usar
– Integración total con la hoja de cálculo
– Familiaridad con el entorno que facilita la explicación del modelo y
de sus resultados
– Facilidad de presentación de resultados en gráficos

• Inconvenientes
– No inducen una buena práctica de programación
– Presentan dificultades para verificación, validación, actualización y
documentación de los modelos
– No permiten modelar problemas complejos o de gran tamaño

Lenguajes de modelado algebraico. GAMS - 3


Biblioteca de optimización en C, C++

• Ventajas
– Tiempo de solución es crítico
– Permiten el uso de algoritmos de optimización específicos
– Posibilidad de implantación del modelo en un entorno software o
hardware especial

• Inconvenientes
– Mayor dificultad y consumo de recursos para el mantenimiento del
modelo

Lenguajes de modelado algebraico. GAMS - 4


Ventajas lenguajes algebraicos (i)

• Lenguajes de alto nivel para formulación compacta de


modelos grandes y complejos
• Facilitan desarrollo de prototipos
• Mejorar productividad de modeladores
• Estructuran buenos hábitos de modelado
• Separación entre interfaz, datos, modelo matemático y
optimizador
• Formulación independiente del tamaño
• Modelo independiente de optimizadores

Lenguajes de modelado algebraico. GAMS - 5


Ventajas lenguajes algebraicos (ii)

• Facilitan reformulación continua


• Documentación simultánea al modelo
• Permiten construir grandes modelos “mantenibles” que se
pueden adaptar rápidamente a situaciones nuevas
• Permiten implantación de algoritmos avanzados
• Implantación fácil de problemas NLP, MIP, MCP
• Arquitectura abierta con interfaces a otros sistemas
• Independencia de la plataforma y portabilidad entre
plataformas y sistemas operativos (MS Windows, Linux, Sun
Solaris, HP UX, Digital True64Unix, IBM AIX, SGI IRIX,
Mac OS X)

Lenguajes de modelado algebraico. GAMS - 6


Desventajas lenguajes algebraicos

• No son adecuados para usos esporádicos con problemas de


pequeño tamaño
• No son adecuados para resolución directa problemas de
tamaño gigantesco (1.000.000 x 1.000.000)

Lenguajes de modelado algebraico. GAMS - 7


Tendencias futuras

• Interfaz visual en formulación


• Interfaz más estrecha con hojas de cálculo y bases de datos
• Interfaz con funciones externas escritas en lenguajes de
propósito general
• Resolución directa de problemas optimización estocástica
(OSLSE, DECIS)
• Selección automática de método de optimización y del
optimizador

Lenguajes de modelado algebraico. GAMS - 8


Aplicaciones reales

• En IIT se pasó de utilizar FORTRAN a utilizar GAMS


exclusivamente
• Problemas de hasta 500000 restricciones, 500000 variables y
2000000 elementos no nulos resueltos con facilidad en un PC
con 1 GB de memoria RAM
• Incorporación de algoritmos avanzados (descomposición
anidada estocástica de Benders) en modelos

Lenguajes de modelado algebraico. GAMS - 9


Modelo de transporte

Sean i fábricas de envasado y j mercados de consumo. Cada


planta de producción tiene una capacidad máxima de ai cajas y
cada mercado demanda una cantidad bj de cajas (se supone que
la capacidad de producción total de las fábricas es superior a la
demanda total para que el problema sea factible). El coste de
transporte entre cada fábrica i y cada mercado j por cada caja
es cij. Se desea satisfacer la demanda de cada mercado al
mínimo coste. Las variables de decisión del problema serán las
cajas transportadas entre cada fábrica i y cada mercado j, xij.

Lenguajes de modelado algebraico. GAMS - 10


Formulación matemática

• Función objetivo
min ∑∑ cij xij
i j

• Límite de producción de cada


fábrica i ∑x j
ij ≤ ai ∀i

• Consumo de cada mercado j ∑xi


ij ≥ b j ∀j

• Cantidad a enviar desde cada


fábrica i a cada mercado j
xij ≥ 0 ∀i → j
Lenguajes de modelado algebraico. GAMS - 11
Modelo de transporte en GAMS (i)
SETS
I fábricas de envasado / VIGO, ALGECIRAS /
J mercados de consumo / MADRID, BARCELONA, VALENCIA /

PARAMETERS
A(i) capacidad de producción de la fábrica i [cajas]
/ VIGO 350
ALGECIRAS 700 /

B(j) demanda del mercado j [cajas]


/ MADRID 400
BARCELONA 450
VALENCIA 150 /

TABLE C(i,j) coste transporte entre i y j [€ por caja]


MADRID BARCELONA VALENCIA
VIGO 0.06 0.12 0.09
ALGECIRAS 0.05 0.15 0.11

Lenguajes de modelado algebraico. GAMS - 12


Modelo de transporte en GAMS (ii)
VARIABLES
X(i,j) cajas transportadas entre fábrica i y mercado j [cajas]
CT coste de transporte [€]

POSITIVE VARIABLE X

EQUATIONS
COSTE coste total de transporte [€]
CAPACIDAD(i) capacidad máxima de cada fábrica i [cajas]
DEMANDA(j) satisfacción demanda de cada mercado j [cajas] ;

COSTE .. CT =E= SUM((i,j),


SUM C(i,j) * X(i,j)) ;

SUM(j, X(i,j)) =L= A(i) ;


CAPACIDAD(i) .. SUM

DEMANDA(j) .. SUM(i,
SUM X(i,j)) =G= B(j) ;

MODEL TRANSPORTE / COSTE, CAPACIDAD, DEMANDA /

SOLVE TRANSPORTE USING LP MINIMIZING CT

Lenguajes de modelado algebraico. GAMS - 13


Biblioteca de problemas (+ 250 modelos)
• Gestión de la producción
• Economía agraria
• Ingeniería química
• Ingeniería de montes
• Comercio internacional
• Desarrollo económico
• Micro y macroeconomía
• Modelos de equilibrio generalizado
• Economía de la energía
• Finanzas
• Estadística, econometría
• Investigación operativa
Lenguajes de modelado algebraico. GAMS - 14
GAMS (General Algebraic Modeling System)

• Creado en 1987. Más de 10000 usuarios en 100 países

• Entorno de desarrollo GAMSIDE

• Manual de usuario Help > GAMS Users Guide


• Manuales de optimizadores Help > docs > solvers

• Modelo: nombre_fichero.gms
• Resultados: nombre_fichero.lst
• Registro del proceso: nombre_fichero.log

Lenguajes de modelado algebraico. GAMS - 15


Depuración de modelos

• Se hace viendo las restricciones realmente formuladas por el


lenguaje (LimRow=300)
• Los errores se depuran de uno en uno ya que suele haber
muchos concatenados entre sí
• Se pincha en el primer error del fichero nombre_fichero.log
y te redirige a la posición del error
• El código del error explica su causa

Lenguajes de modelado algebraico. GAMS - 16


Formato general de las instrucciones GAMS

• Líneas con * en primera columna son de comentario


• No se distingue entre mayúsculas y minúsculas
• El paréntesis (), el corchete [] o la llave {} se pueden utilizar
para separar niveles entre sí con igual funcionamiento
• Palabras reservadas del lenguaje aparecen resaltadas
• Instrucciones acaban en un ; (que puede eliminarse cuando la
siguiente palabra sea reservada)

Lenguajes de modelado algebraico. GAMS - 17


Estructura general de un modelo

• Declaración de conjuntos. Asignación de valores.


• Inclusión y manipulación de datos de entrada y parámetros
auxiliares.
• Variables
• Ecuaciones
• Modelo
• Acotamiento e inicialización de variables
• Resolución del problema de optimización
• Presentación de resultados

Lenguajes de modelado algebraico. GAMS - 18


Bloques de un modelo en GAMS

• Obligatorios
VARIABLES
EQUATIONS
MODEL
SOLVE

• Opcionales
SETS: (ALIAS) ALIAS (i,j) i y j se pueden utilizar
indistintamente
DATA: SCALARS, PARAMETERS, TABLE

• Los valores de INF, EPS son válidos como datos

Lenguajes de modelado algebraico. GAMS - 19


VARIABLES
• Siempre debe haber una variable libre para representar el valor de la función
objetivo. Los valores de las variables son guardados siempre.
• Tipos:
FREE (por omisión) -∞ a + ∞
POSITIVE 0a+∞
NEGATIVE -∞a0
BINARY 0ó1
INTEGER 0 a 100 (se cambia poniendo cota superior diferente)
• Sufijos
– nombre_var.LO cota inferior
– nombre_var.UP cota superior
– nombre_var.L valor inicial antes y valor óptimo después
– nombre_var.M valor marginal (coste reducido)
– nombre_var.FX fija una variable a un valor

Lenguajes de modelado algebraico. GAMS - 20


EQUATIONS

• Bloques:
– Declaración con comentario explicativo
– Expresiones matemáticas

• Tipos: =E= =, =L= ≤, =G= ≥

• Sufijos:
– nombre_ec.LO cota inferior
– nombre_ec.UP cota superior
– nombre_ec.L valor inicial antes y valor óptimo después
– nombre_ec.M valor marginal (variable dual o precio sombra o precio
justo)

Lenguajes de modelado algebraico. GAMS - 21


MODEL y SOLVE

• MODEL nombre_modelo / nombre_ecuaciones /


MODEL nombre_modelo / ALL /

• SOLVE nombre_modelo USING tipo_problema


MINIMIZING (MAXIMIZING) variable_f.o.

Lenguajes de modelado algebraico. GAMS - 22


Tipos de problemas y optimizadores
• LP, RMIP (programación lineal): BDMLP, CLP
• MILP (programación lineal entera mixta): CPLEX, CBC, Gurobi,
XPRESS
• NLP (programación no lineal): CONOPT, MINOS, SNOPT,
PATHNLP, LGO, MOSEK
• DNLP (programación no lineal con derivadas no continuas): CONOPT,
MINOS, SNOPT, BARON, LGO, OQNLP, MOSEK
• MINLP (programación no lineal entera mixta): DICOPT, SBB,
BARON, OQNLP
• SP (programación estocástica): DECIS, OSLSE
• MCP (problema mixto complementario): MILES, PATH, NLPEC
• MPEC (programación matemática con restricciones de equilibrio):
• CNS (sistemas no lineales restringidos): CONOPT, PATH
• MPSGE (análisis de equilibrio generalizado)
• GAMS Solvers ([Link]

Lenguajes de modelado algebraico. GAMS - 23


Operador $ en asignaciones, sumatorios,
restricciones
• Establece una condición
$(VALOR > 0) $(NUMERO1 <> NUMERO2)
• A la izquierda de una asignación: Realiza la asignación
SÓLO cuando se cumple la condición
IF (condición,
REALIZA LA ASIGNACIÓN
);
• A la derecha de una asignación: Realiza SIEMPRE la
asignación tomando ésta el valor 0 si no se cumple la
condición
IF (condición,
REALIZA LA ASIGNACIÓN
ELSE
ASIGNA VALOR 0
);
Lenguajes de modelado algebraico. GAMS - 24
Operaciones relacionales

• LT <, GT >, EQ =, NE <>, LE <=, GE >=

• NOT, AND, OR, XOR

• DIAG(elemento_conjunto,elemento_conjunto)={1,0}
• SAMEAS(elemento_conjunto,elemento_conjunto)={V,F}

Lenguajes de modelado algebraico. GAMS - 25


Funciones
• Elementales: +, -, *, /, ** ó POWER(x,n)

• ORD, CARD ordinal y cardinal de un conjunto

• Con índices: SUM, PROD, SMAX, SMIN

• Otras funciones: ABS, ARCTAN, SIN, COS, CEIL,


FLOOR, EXP, LOG, LOG10, MAX, MIN, MOD,
ROUND, SIGN, SQR, SQRT, TRUNC, NORMAL,
UNIFORM
• Funciones de tiempo: GYEAR, GMONTH, GDAY,
GHOUR, GMINUTE, GSECOND, GDOW, GLEAP,
JDATE, JNOW, JSTART, JTIME
Lenguajes de modelado algebraico. GAMS - 26
Conjuntos dinámicos
• Subconjuntos de conjuntos estáticos cuyo contenido puede cambiar
mediante asignaciones
SETS M meses / 1 * 12 /
MP(m) meses pares ;
display m ;
* Selección de subconjunto mediante una condición
MP(m) $[MOD(ord(m),2) = 0] = YES ;
display mp ;
* Selección de un elemento del conjunto
MP('3') = yes ;
display mp ;
MP(m) $(ord(m) = 3) = NO ;
display mp ;
• Elementos fundamentales en el desarrollo de modelos en GAMS
• Deben utilizarse sistemáticamente para evitar formular ecuaciones o
variables o asignaciones innecesarias.

Lenguajes de modelado algebraico. GAMS - 27


Operaciones con conjuntos

• Intersección
D(a) = B(a) * C(a)
• Unión
D(a) = B(a) + C(a)
• Complementario
D(a) = NOT C(a)
• Diferencia
D(a) = B(a) - C(a)

Lenguajes de modelado algebraico. GAMS - 28


Modelo de transbordo

• Sea un conjunto de nodos conectados mediante arcos. Un


nodo no tiene que estar conectado con todos los demás
nodos. Un nodo puede ser de generación, de demanda o de
transbordo según produzca, consuma o trasvase el producto.
La oferta total es mayor o igual que la demanda total. Se
supone conocida la capacidad máxima de oferta y la
demanda de cada nodo. También se conoce el coste unitario
de transporte de producto para cada arco. Se trata de
minimizar el coste de transporte satisfaciendo la demanda.

• Extensión del problema anterior añadiendo arcos no


dirigidos.

Lenguajes de modelado algebraico. GAMS - 29


Desplazamientos de índices. Adelantos y retrasos
• t=E,F,M,A,MY,J,JL,AG,S,O,N,D
RVA(t) + APOR(t) - GASTO(t) =E= RVA(t+1)

• Valores de vectores fuera del dominio son 0


RVA(’D’) + APOR(’D’) - GASTO(’D’) =E= 0

• Recorrido circular de un índice


t=1,...,12
RVA(t) + APOR(t) - GASTO(t) = RVA(t++1)
RVA(’12’) + APOR(’12’) - GASTO(’12’) = RVA(’1’)

• Recorrido en orden inverso del índice de PP aun cuando i se


recorre en sentido creciente
PP(t+[card(t)-2*ord(t)+1])
Lenguajes de modelado algebraico. GAMS - 30
Contratación de vendedores
La sección de venta de billetes de una estación de metro necesita las
siguientes personas durante las 24 horas del día
Intervalo Vendedores
00 – 06 2
06 – 10 8
10 – 12 4
12 – 16 3
16 – 18 6
18 – 22 5
22 – 24 3
Cada vendedor trabaja ocho horas en dos bloques de cuatro con una hora
de descanso al cabo del primer bloque. El turno puede empezar en
cualquier hora del día. Determinar el número mínimo de vendedores a
contratar.

Lenguajes de modelado algebraico. GAMS - 31


Ejercicios de adelantos y retrasos

• Distancias entre cruces


– Suponer una ciudad completamente reticulada con una longitud
unitaria de cada lado de la retícula. Calcular analíticamente la
distancia entre dos cruces cualesquiera de la ciudad.
• Máximo número de caballos (reinas, torres)
– Determinar mediante un problema de optimización el máximo
número de caballos (reinas, torres) que pueden estar en un tablero de
ajedrez sin comerse entre sí

Lenguajes de modelado algebraico. GAMS - 32


Repeticiones
• LOOP (conjunto,
) ;
• WHILE (condición,
) ;
• REPEAT
UNTIL condición;
• IF (condición,
ELSE
) ;
• FOR (i=inicio TO/DOWNTO final BY incremento,
) ;

Lenguajes de modelado algebraico. GAMS - 33


Entrada/salida de datos
• Entrada de datos por fichero
$include nombre_del_fichero

• DISPLAY nombre_identificador (muestra su valor o contenido)

• Salida de datos por fichero


file nombre_interno / nombre_externo /
put nombre_interno
put nombre_identificador
putclose nombre_interno
• Existen opciones específicas de control de formato de la
salida

Lenguajes de modelado algebraico. GAMS - 34


TABLE (i)

• Continuación de tablas con múltiples columnas


SETS i / MAD, BCN /
j / A1, A2, A3, A4, A5, A6 /

TABLE CAPACIDAD(i,j) capacidad máxima


A1 A2 A3
MAD 1 0 3
BCN 2 1 2
+
A4 A5 A6
MAD 2 1 3
BCN 3 2 2

Lenguajes de modelado algebraico. GAMS - 35


TABLE (ii)
• Tablas con más de dos dimensiones
SETS i / MAD, BCN /
j / A1, A2, A3, A4, A5, A6 /
K / A, B, C /
TABLE CAPACIDAD(i,j,k) capacidad máxima
A B C
MAD.A1 1 0 3
MAD.A2 2 1 2

TABLE CAPACIDAD(i,j,k) capacidad máxima


A1.A A1.B A1.C A2.A A2.B
MAD 1 0 3 6 8
BCN 2 1 2 2 4

Lenguajes de modelado algebraico. GAMS - 36


Estructura general de un modelo “comercial”

• Declaración de conjuntos y parámetros. Asignación de


valores por omisión.
• Variables
• Ecuaciones
• Modelo

• Inclusión y manipulación de datos de entrada. Parámetros


auxiliares
• Acotamiento e inicialización de variables
• Resolución del problema de optimización
• Presentación de resultados

Lenguajes de modelado algebraico. GAMS - 37


Modelo de transporte en GAMS (i)

SETS
I fábricas de envasado
J mercados de consumo

PARAMETERS
A(i) capacidad de producción de la fábrica i [cajas]
B(j) demanda del mercado j [cajas]
C(i,j) coste transporte entre i y j [€ por caja]

VARIABLES
X(i,j) cajas transportadas entre fábrica i y mercado j [cajas]
CT coste de transporte [€] ;

POSITIVE VARIABLE X ;

Lenguajes de modelado algebraico. GAMS - 38


Modelo de transporte en GAMS (ii)
EQUATIONS
COSTE coste total de transporte [€]
CAPACIDAD(i) capacidad máxima de cada fábrica i [cajas]
DEMANDA(j) satisfacción demanda de cada mercado j [cajas] ;

COSTE .. CT =E= SUM


SUM((i,j), C(i,j) * X(i,j)) ;

CAPACIDAD(i) .. SUM(j,
SUM X(i,j)) =L= A(i) ;

DEMANDA(j) .. SUM(i,
SUM X(i,j)) =G= B(j) ;

MODEL TRANSPORTE / COSTE, CAPACIDAD, DEMANDA / ;

$include [Link]

SOLVE TRANSPORTE USING LP MINIMIZING CT ;

Lenguajes de modelado algebraico. GAMS - 39


Modelo de transporte en GAMS (iii)

* introducción de datos de entrada


SETS
I fábricas de envasado / VIGO, ALGECIRAS /
J mercados de consumo / MADRID, BARCELONA, VALENCIA / ;

PARAMETERS
A(i) capacidad de producción de la fábrica i [cajas]
/ VIGO 350
ALGECIRAS 700 /
B(j) demanda del mercado j [cajas]
/ MADRID 400
BARCELONA 450
VALENCIA 150 / ;
TABLE C(i,j) coste transporte entre i y j [€ por caja]
MADRID BARCELONA VALENCIA
VIGO 0.06 0.12 0.09
ALGECIRAS 0.05 0.15 0.11 ;

Lenguajes de modelado algebraico. GAMS - 40


Modularidad y ocultación de código

• Separar formulación de un problema de sus datos. Proteger la


confidencialidad de la formulación

• Versión RUNTIME de un modelo


SAVE y RESTART

• Secure Work Files


Permiten controlar el acceso a símbolos en particular y crear ficheros
de rearranque (restart) seguros asociados a licencias GAMS
particulares

• Funciones dentro de un código

Lenguajes de modelado algebraico. GAMS - 41


Cualificadores de ejecución

• SUPPRESS 1
suprime el eco del listado del código
• PW 94 PS 999999
especifica la anchura y longitud de la página
• CHARSET 1
admite caracteres internacionales en las definiciones

Lenguajes de modelado algebraico. GAMS - 42


Directivas $, opciones OPTIONS, cualificadores de
modelo (i)
• $nombre_directiva
• OPTION nombre_opción
• nombre_modelo.cualificador

• OPTION LIMROW=número_filas_vistas
• OPTION LIMCOL=número_columnas_vistas
• OPTION SOLPRINT=ON(OFF) permite o suprime la
información sobre la solución óptima
• nombre_modelo.SOLPRINT= 0,1,2
• OPTION DECIMALS=número_decimales en DISPLAY
• OPTION ITERLIM=número_máx_iteraciones
• OPTION RESLIM=tiempo_ejecución_máx

Lenguajes de modelado algebraico. GAMS - 43


Directivas $, opciones OPTIONS, cualificadores de
modelo (ii)

• OPTION SOLVEOPT=REPLACE reemplaza los valores de


la solución
• $CLEAR=nombre_parámetro

• nombre_modelo.SOLSLACK presenta las variables de


holgura de las restricciones
• nombre_modelo.HOLDFIXED elimina del problema las
variables con valores fijos
• nombre_modelo. MODELSTAT código de control devuelto
por el optimizador
• OPTION SEED=número permite fijar la semilla del
generador de números aleatorios
Lenguajes de modelado algebraico. GAMS - 44
Interfaces

• GAMS Convert
– Transforma un modelo GAMS en un formato utilizable por otros
sistemas de modelado u optimizadores

• GDX (GAMS Data Exchange)


– Permite el intercambio de datos con una hoja de cálculo o base de
datos

• Matlab

Lenguajes de modelado algebraico. GAMS - 45


Estilo de programación

Andrés Ramos
Uso avanzado de GAMS

• minimización del tiempo de ejecución y/o de la memoria


• importante cuando se trata de problemas de muy gran tamaño
(> 100.000 x 100.000) o resolución iterativa de numerosos
problemas (más de 100)
• aparece al usar simulación de Monte Carlo o técnicas de
descomposición

Lenguajes de modelado algebraico. GAMS - 47


Tiempo de ejecución de modelos escritos en GAMS

• tiempo de creación
– formulación del problema específico
• tiempo de interfaz
– comunicación de entrada/salida entre lenguaje GAMS y optimizador
• tiempo de optimización
– resolución del problema por el optimizador

Lenguajes de modelado algebraico. GAMS - 48


Análisis de consumos de tiempo/memoria

• dependiente del tamaño y estructura de la matriz de


restricciones
• número de resoluciones (iteraciones)
• variación entre soluciones sucesivas de los parámetros
estocásticos

Lenguajes de modelado algebraico. GAMS - 49


Direcciones de mejora

• informáticas (asociadas al lenguaje GAMS)


• matemáticas (reformulación del problema)

• afectan conjuntamente al tiempo de ejecución


• criterios dependientes del problema, indican direcciones a
explorar

Lenguajes de modelado algebraico. GAMS - 50


Control del tiempo y del espacio

• OPTION PROFILE, PROFILETOL


• Uso de disco virtual en memoria RAM (RAMDRIVE)
• Cualificador STEPSUM da tiempo de reloj
• ABORT condición
• La supresión de la información de salida (lista y tabla de referencias entre
los símbolos del código) en el nombre_fichero.lst se consigue con las
siguientes opciones.
$OFFSYMLIST, OFFSYMXREF, OFFUELLIST, OFFUELXREF
OPTION LIMROW=0, LIMCOL=0, SOLPRINT=OFF, SYSOUT=OFF
nombre_modelo.SOLPRINT=2 ;
y escribiendo en la invocación de GAMS
gams nombre_modelo.gms suppress 1
Además, también se puede suprimir la información en pantalla que produce el
optimizador con los consiguientes parámetros (por ejemplo, para CPLEX
simdisplay 0 bardisplay 0 mipdisplay 0).
gams nombre_modelo.gms ll 0 lo 0
Lenguajes de modelado algebraico. GAMS - 51
Orden de índices en instrucciones de asignación o
en restricciones

• orden de los índices consistente en todos los elementos del


modelo
PP(i,j,k) = QQ(k,j,i) * 1.1 ; NO
PP(i,j,k) = QQ(i,j,k) * 1.1 ; SI

• orden de barrido en instrucciones reiterativas coherente


• hacer uso extensivo de condiciones de exclusión mediante el
uso de conjuntos dinámicos

Lenguajes de modelado algebraico. GAMS - 52


Direcciones a explorar

1. selección de optimizador y algoritmo de optimización y uso


de últimas versiones
2. detección de infactibilidades (parámetro iis de CPLEX)
3. análisis de sensibilidad (disponible en CPLEX y OSL)
4. ajuste de parámetros del optimizador
5. uso de bases previas (parámetro BRATIO=0)
6. mejoras en el barrido de las numerosas optimizaciones
7. resolución de problemas MIPº

Lenguajes de modelado algebraico. GAMS - 53


Comparación entre optimizadores y método de
optimización
Tiempo p.u. Iter Tiempo p.u. Iter
CPLEX 6.0
Punto interior 41.8 1.0 32 237.3 1.0 35
Simplex dual 99.8 1.4 12692 1812.6 6.6 48695
Simplex primal 156.2 3.7 21622 1217.5 5.1 50280
MINOS 5.3
Simplex primal 1863.6 44.6 23927 --- --- ---
OSL 2.1
Punto interior 163.9 3.9 10798 774.4 3.3 19524
Simplex primal 530.9 12.7 12685 7426.6 31.3 62019

Tiempo para un ordenador Pentium II con 128 MB a 233 MHz

Lenguajes de modelado algebraico. GAMS - 54


Selección de optimizador y método de optimización
en LP
•No existe una regla clara
•No hay regla para determinar qué algoritmo simplex es más
eficiente. Muy sensible a la estructura del problema
•Probar y observar

Método simplex Hasta 10.000 x 10.000

Método simplex Análisis de sensibilidad, problemas MIP

Método de punto interior Desde 10.000 x 10.000


hasta 100.000 x 100.000
Métodos de descomposición Más de 100.000 x 100.000

Lenguajes de modelado algebraico. GAMS - 55


Uso de parámetros del optimizador

• nombre_modelo.OPTFILE= 1,2,...
Parámetros en ficheros [Link], cplex.op2, ...
• OPTION SYSOUT=ON(OFF) escribe fichero de opciones
del optimizador

Lenguajes de modelado algebraico. GAMS - 56


Detección de infactibilidades

• Parámetros de CPLEX
– Anular el preproceso
preind 0
– Detección del conjunto mínimo de infactibilidades
iis yes

Lenguajes de modelado algebraico. GAMS - 57


Análisis de sensibilidad

• Parámetros de CPLEX
– En coeficientes de función objetivo
objrng all
– En cotas de restricciones
rhsrng all

Lenguajes de modelado algebraico. GAMS - 58


Resolución de problemas MIP

• OPTCA=criterio_abs_optimalidad en MIP
• OPTCR=criterio_rel_optimalidad en MIP (poner siempre =0)
• nombre_modelo.PRIOROPT = 1
• nombre_var.PRIOR = número
• Las variables más importantes deben ser las primeras en
ramificar (mayor prioridad, i.e., número más bajo)
• SOS1 (como mucho una variable es diferente de 0 en un
conjunto), SOS2 (como mucho dos variables son diferentes
de 0 en un conjunto y deben ser adyacentes)

Lenguajes de modelado algebraico. GAMS - 59


Mejoras en la formulación

• reformulación manual del problema (especialmente indicado


en problemas MIP)
• no crear variables ni ecuaciones superfluas
• reducción de número de restricciones y/o elementos
• escalado alrededor de 1 (especialmente indicado en
problemas NLP)
• partir de un punto inicial (especialmente indicado en
problemas NLP)
• acotamiento de variables

Lenguajes de modelado algebraico. GAMS - 60


Cálculo analítico del número de restricciones y
variables

• Permite conocer a priori tamaños de problemas en función de


parámetros del sistema
• Indica dónde se puede mejorar el modelado sin gran
incremento de tamaño
• Permite comprobar la formulación matemática del problema

RESTRICCIONES 2T + P(2 B + C + H + 1) + SP (3T + 1) + NSP ( D + KL + T )


VARIABLES −C − H + P (C + H + 2T ) + SP (T − 1) + NSP (2 B + 3D + 2 H + KL + T − 1)

Lenguajes de modelado algebraico. GAMS - 61


Preproceso

• La reducción conseguida por el preproceso nos indica


aproximadamente las posibilidades de mejora manual
• Reducción de los tamaños de dos problemas con la opción de
preproceso de CPLEX 6.0
R V E R V E
Sin preproceso 19047 27262 81215 48971 63935 187059
Con preproceso 15744 21982 51079 40794 56133 135361
Decremento 17,3% 19,4% 37,1% 16,7% 12,2% 27,6%

• Comparación entre preprocesos


R V E R V E
Sin preproc 19047 27847 82295 49715 64679 189477
Preproc CPLEX -14,8% -19,3% -36,2% -17,9% -13,2% -28,6%
Preproc OSL -4,9% 0,0% -2,4% -15,6% 0,0% -9,1%

Lenguajes de modelado algebraico. GAMS - 62


Estructura de la matriz de restricciones y escalado
• Parámetros de GAMSCHK
advisory identifica posibles variables y ecuaciones no acotadas o infactibles
analysis analiza la estructura de la matriz de restricciones
blockpic dibuja la matriz de restricciones por bloques
blocklist dibuja el tamaño y características de cada bloque
• Parámetros de CPLEX
– Calidad numérica de la solución
quality yes
– Escalado
scaind 0
• Opciones de escalado en GAMS
– nombre_modelo.SCALEOPT = 1 ;
– nombre_var.SCALE=número ;
– nombre_ec.SCALE=número ;

Lenguajes de modelado algebraico. GAMS - 63


Estructura de la matriz de restricciones
• Ciertos algoritmos aprovechan la estructura del problema,
i.e., técnicas de descomposición

Lenguajes de modelado algebraico. GAMS - 64


Récords actuales en LP

• problema lineal estocástico de 1.100.000 x 1.600.000 x


4.400.000 resuelto en 20 min
• problema lineal de 150.000 x 227.000 x 566.000 resuelto en
5 min o problema lineal de 216.000 x 749.000 x 2.137.000
resuelto en 15 min
• problema de 20.000 x 25.000 x 80.000 resuelto numerosas
veces en un tiempo medio de menos de 1 s
• problema de 50.000 x 65.000 x 200.000 resuelto numerosas
veces en un tiempo medio de 2 s

Tiempos para procesador Pentium III a 1.1 GHz

Lenguajes de modelado algebraico. GAMS - 65


Modelado en GAMS
Ejemplo de sistemas de energía eléctrica
Flujo óptimo de cargas en continua
DC-OPF

Andrés Ramos
Álvaro Baíllo
Índice

• El problema del flujo de cargas.


• El problema del flujo de cargas óptimo (OPF).
• Formulación en lenguaje GAMS.
• Resolución del problema.
• Análisis de resultados.

Lenguajes de modelado algebraico. GAMS - 67


El problema del flujo de cargas (I)1

• Un sistema eléctrico interconectado está constituido por:


– Una red de transporte de energía, formada por:
• Ramas: Líneas y transformadores.
• Nudos: Barras de subestaciones (buses).
– Centrales de generación de energía, situadas en ciertos nudos
(subestaciones de generación).
– Centros de consumo de energía, situados en otros nudos
(subestaciones de distribución).
• Cuestión fundamental: La energía eléctrica debe producirse
en el mismo instante en que es consumida (no es almacenable
de forma económica a gran escala).

1Elgerd,O.E. “Electric Energy Systems Theory: An Introduction.” Mc-Graw Hill Series in Electrical Engineering, 1983, pp.
219-273

Lenguajes de modelado algebraico. GAMS - 68


El problema del flujo de cargas (II)

• Ejemplo de red de transporte2

2Red Eléctrica de España. Operación del Sistema Eléctrico. Informe 1999. Disponible en [Link]

Lenguajes de modelado algebraico. GAMS - 69


El problema del flujo de cargas (III)

• Situación de las centrales de generación2

2Red Eléctrica de España. Operación del Sistema Eléctrico. Informe 1999. Disponible en [Link]

Lenguajes de modelado algebraico. GAMS - 70


El problema del flujo de cargas (IV)

• Entre esos los centros de generación y los de consumo, la


energía fluye por las líneas y centros de transformación de
acuerdo con las leyes de Kirchoff.
• Es necesario vigilar esos flujos de potencia en tiempo real:
– Los elementos de la red tienen unos límites de funcionamiento que no
deben ser rebasados:
• Límites térmicos de las líneas.
• Límites de tensiones de los nudos.
– El sistema de transporte de estudio puede estar interconectado con
otros y existir un contrato de intercambio de potencia que hay que
mantener (e.g. España con Francia o con Marruecos).
– Un adecuado control del flujo de potencias permite evitar que el fallo
de algún elemento tenga consecuencias desastrosas.

Lenguajes de modelado algebraico. GAMS - 71


El problema del flujo de cargas (V)

• El análisis del flujo de cargas también se usa en


planificación:
– La empresa operadora de la red puede:
• Planificar el mantenimiento de la red de transporte.
• Planificar la expansión del sistema de transporte.
– Las empresas de generación pueden:
• Decidir el emplazamiento de nuevas instalaciones de generación
(influyen otros factores como el fácil acceso al suministro de
combustible).
• La configuración de la red de transporte provoca diferencias
en el precio de la energía eléctrica entre los distintos nudos
de la red debido a las pérdidas o las congestiones.

Lenguajes de modelado algebraico. GAMS - 72


El problema del flujo de cargas (VI)

• Ecuaciones del flujo de cargas:


Viejθi Viejθj
i Iij Rij+jXij j
jθ i *
Sij = Vi e I = ij

Vi ( cos θ i − j sin θ i ) − V j ( cosθ j − j sin θ j )


= Vi ( cos θ i + j sin θ i )
Rij − jX ij

• Operando se llega a:
Pij = 2
1
Rij + X ij 2
X (
VV
ij i j sin (θ i − θ j ) + Rij V (
i j cos (θ i − θ j )
i − VV
2
))
Qij =
1
Rij + X ij
2 2
X( (
ij Vi
2
− VV )
i j cos (θ i − θ j ) − RijVV
i j sin (θ i − θ j ) )
Lenguajes de modelado algebraico. GAMS - 73
El problema del flujo de cargas (VII)

• Las pérdidas en la línea vienen dadas por la suma de la


potencia que sale de i hacia j y la potencia que sale de j hacia
i:

(V i j cos (θ i − θ j ) )
Rij
Pij + Pji = 2
+ Vi 2 − 2VV
Rij + X ij
2 2 i

• El flujo de cargas consiste en un sistema de ecuaciones no


lineal.
• La resolución del problema del flujo de cargas se lleva a
cabo mediante sofisticadas herramientas informáticas (e.g.
PSS/E).

Lenguajes de modelado algebraico. GAMS - 74


El problema del flujo de cargas (VII)

• Variables incontroladas: escapan al control de la empresa


operadora de red:
– Potencias activa y reactiva en los nudos de consumo.
• Variables de control: pueden ser controladas:
– Potencias activa y reactiva en los nudos de generación
• Variables de estado: describen el sistema:
– Módulos y argumentos de las tensiones de nudo.
• Cuatro tipos de nudo: |V| θ P Q
– Nudo de generación: * *
– Nudo de consumo: * *
– Nudo de referencia: * * (*)
– Nudo balance: *
*: Conocido

Lenguajes de modelado algebraico. GAMS - 75


El problema del flujo de cargas (VIII)

• Simplificaciones (flujo de cargas DC):


– Vi = Vj = V
– Xij >> Rij
 cos (θ i − θ j ) ≃ 1
– θi ≃ θ j ⇒ 
sin (θ i − θ j ) ≃ θ i − θ j

V 2 (θ i − θ j ) θi − θ j
• Flujo de activa: Pij = = SB
X ij xij

(
1 − cos (θ i − θ j ) )
2 Rij
• Pérdidas: Pij + Pji = V 2

Rij 2 + X ij 2

(1 − cos (θ − θ ) )
2rij
= SB
rij + xij
2 2 i j

Lenguajes de modelado algebraico. GAMS - 76


El problema del flujo de cargas óptimo (I)

• El problema del flujo de cargas considera como dato la


potencia activa producida en los nudos de generación.
• Sin embargo, en la planificación de la generación para el
corto plazo, puede ser interesante decidir la producción de
cada generador teniendo en cuenta:
– Costes variables de producción de los generadores.
– Límites físicos de los elementos de la red de transporte.
– Pérdidas.
• El problema de decidir la explotación de la generación a
corto plazo considerando la red de transporte se denomina
flujo de cargas óptimo (Optimal Power Flow)
• Vamos a plantear un OPF que represente la red de transporte
mediante la simplificación DC.
Lenguajes de modelado algebraico. GAMS - 77
El problema del flujo de cargas óptimo (II)

• Se trata de minimizar los costes variables de operación en


un intervalo horario:
– costes variables de los grupos térmicos
– costes de oportunidad de los grupos hidráulicos cuando producen por
encima de su potencia programada.
– coste variable de la potencia no suministrada.
T H N

∑ v GTR + ∑ v GHE + ∑ v PNS


t =1
t t
h =1
h h
n =1
n n

– Datos: vt: coste variable de generación del grupo térmico t.


vh: coste de oportunidad de la hidráulica de emergencia.
vh: coste variable de la potencia no suministrada.
– Variables: GTRt potencia producida por el grupo térmico t.
GHEh potencia hidráulica de emergencia del grupo h.
PNSn potencia no suministrada en el nudo n.

Lenguajes de modelado algebraico. GAMS - 78


El problema del flujo de cargas óptimo (III)

• Cotas de las variables del equipo generador:


– Potencia térmica máxima y mínima del grupo t:

GTRt ≤ GTRt ≤ GTRt

– La potencia hidráulica programada máxima del grupo h:

0 ≤ GHPh ≤ GHPh

– La potencia hidráulica de emergencia máxima del grupo h:


(
0 ≤ GHEh ≤ GHM h − GHPh )
– La potencia no suministrada como mucho será la demanda del nudo.

0 ≤ PNSn ≤ Dn

Lenguajes de modelado algebraico. GAMS - 79


El problema del flujo de cargas óptimo (IV)

• Modelado de la red de transporte:


– 1ª Ley Kirchoff: Balance entre generación y demanda de nudo:
I J

∑ GTR + ∑ (GHP + GHE ) + PNS + ∑ F


t∈n
t
h∈n
h h n
i =1
i→n − ∑ Fn→ j = Dn
j =1

– 2ª Ley Kirchoff: Flujo de potencia activa por las líneas:


X i→ j
Fi→ j = θ i − θ j
SB

– Cotas de los flujos: − Fi → j ≤ Fi→ j ≤ Fi → j

Lenguajes de modelado algebraico. GAMS - 80


El problema del flujo de cargas óptimo (V)

• Modelado de la red de transporte:


– Formulación alternativa de la 1ª Ley Kirchoff:
∑ GTR + ∑ (GHP + GHE ) + PNS
t∈n
t
h∈n
h h n +
I J

∑ (θ
i =1
i − θ n ) S B / X i→n − ∑ (θ n − θ j ) S B / X n→ j = Dn
j =1

– Límites térmicos de las líneas como restricciones:


X i→ j
θi − θ j ≤ Fi→ j
SB
X i→ j
θi − θ j ≥ − Fi→ j
SB
– Esta formulación tiene menos variables, pero más restricciones.

Lenguajes de modelado algebraico. GAMS - 81


El problema del flujo de cargas óptimo (VI)

• Si se consideran las pérdidas:


– Las pérdidas óhmicas de una línea se modelan con una expresión no
lineal:
ri→ j
Li→ j = 2 S B 2 2 
1 − cos(θ i − θ j ) 
ri → j + X i → j

– Las pérdidas se incluyen como dos cargas adicionales iguales en los


extremos de la línea.
– 1ª Ley Kirchhoff:
I J

∑ GTR + ∑ (GHP + GHE ) + PNS + ∑ F


t∈n
t
h∈n
h h n
i =1
i →n − ∑ Fn→ j = Dn + Ln
j =1

 I J

– siendo las pérdidas en el nudo n: Ln =  ∑ Li→n + ∑ Ln→ j  / 2
 i =1 j =1 

Lenguajes de modelado algebraico. GAMS - 82


Formulación del DC-OPF en GAMS (I)
$TITLE Flujo de cargas en corriente continua con y sin pérdidas

SETS
ND nudos
GR generadores
TR(gr) generadores térmicos
HD(gr) generadores hidráulicos
NDGR(nd,gr) localización de generadores en nudos
LN(nd,nd) líneas

CN características nudos / dem, cpns /


CG características generadores / coste, pmin, pmax, cshd, hdrpro, hdrmax /
CL características líneas / r, x, flmax /

ALIAS (nd, ni, nf) ;

SCALARS
SBASE potencia base [GW] / 0.1 /
OPCPRD opción de modelado de las pérdidas (no 0 si 1) / 0 /

* definición de la estructura de datos sin incluir explícitamente éstos

PARAMETERS
DATNUD(nd,cn) datos de los nudos
DATGEN(gr,cg) datos de los generadores
DATLIN(nd,nd,cl) datos de las líneas

Lenguajes de modelado algebraico. GAMS - 83


Formulación del DC-OPF en GAMS (II)

* planteamiento matemático del problema

VARIABLES
COSTE función objetivo [k€]
TT(nd) ángulo de tensión en el nudo [rad]
FL(ni,nf) flujo de potencia [GW]

POSITIVE VARIABLES
GTR(gr) generación térmica [GW]
GHP(gr) generación hidráulica programada [GW]
GHE(gr) generación hidráulica de emergencia [GW]
PNS(nd) potencia no suministrada [GW]
PRDAS(nd) pérdidas de las líneas conectadas al nudo [GW]

EQUATIONS
FO costes de generación y de indisponibilidad [k€]
KR1F(nd) primera ley de Kirchhoff para cada nudo en función de flujos
KR1A(nd) primera ley de Kirchhoff para cada nudo en función de ángulos
FLJ(ni,nf) flujo en función de ángulos de tensión
FLJP(ni,nf) diferencia angular máxima en cada línea en un sentido
FLJN(ni,nf) diferencia angular máxima en cada línea en otro sentido
EPRDAS(nd) pérdidas de las líneas conectadas al nudo ;

Lenguajes de modelado algebraico. GAMS - 84


Formulación del DC-OPF en GAMS (III)
FO .. COSTE =E= SUM
SUM[tr, DATGEN(tr,'coste') * GTR(tr)]
SUM[hd, DATGEN(hd,'cshd') * GHE(hd)]
+ SUM
+ SUM
SUM[nd, DATNUD(nd,'cpns') * PNS(nd)] ;

KR1F(nd) .. SUM
SUM[NDGR(nd,tr), GTR(tr)] + SUM[NDGR(nd,hd),
SUM GHP(hd) + GHE(hd)]
+ SUM
SUM[LN(ni,nd), FL(ni,nd)] - SUM[LN(nd,nf),
SUM FL(nd,nf)]
+ PNS(nd) =E= DATNUD(nd,'dem') + PRDAS(nd) $OPCPRD ;

KR1A(nd) .. SUM[NDGR(nd,tr), GTR(tr)]


SUM
+ SUM[NDGR(nd,hd),
SUM GHP(hd) + GHE(hd)]
+ SUM[LN(ni,nd),
SUM (TT(ni) - TT(nd)) / DATLIN(ni,nd,'x')] * SBASE
- SUM[LN(nd,nf), (TT(nd) - TT(nf)) / DATLIN(nd,nf,'x')] * SBASE
SUM
+ PNS(nd) =E= DATNUD(nd,'dem') + PRDAS(nd) $OPCPRD ;

FLJ(LN(ni,nf)) .. FL(ni,nf) * DATLIN(ni,nf,'x') / SBASE =E= TT(ni) - TT(nf) ;

FLJP(LN(ni,nf)) ..
TT(ni) - TT(nf) =L= DATLIN(ni,nf,'flmax') * DATLIN(ni,nf,'x') / SBASE ;

FLJN(LN(ni,nf)) ..
TT(ni) - TT(nf) =G= - DATLIN(ni,nf,'flmax') * DATLIN(ni,nf,'x') / SBASE ;

EPRDAS(nd) .. PRDAS(nd) =E= SBASE * SUM


SUM[LN(ni,nd), (1-cos(TT(ni) - TT(nd)))*
DATLIN(ni,nd,'r')/(DATLIN(ni,nd,'r')**2+DATLIN(ni,nd,'x')**2)]
+ SBASE * SUM
SUM[LN(nd,nf), (1-cos(TT(nd) - TT(nf)))*
DATLIN(nd,nf,'r')/(DATLIN(nd,nf,'r')**2+DATLIN(nd,nf,'x')**2)] ;

Lenguajes de modelado algebraico. GAMS - 85


Formulación del DC-OPF en GAMS (IV)
MODEL FC / FO, KR1F, FLJ / ;
MODEL FCA / FO, KR1A, FLJP, FLJN / ;
MODEL FCP / FO, KR1F, FLJ, EPRDAS / ;

Lenguajes de modelado algebraico. GAMS - 86


Formulación del DC-OPF en GAMS (V)

1 2

3
8

4 5
6

7 9

Lenguajes de modelado algebraico. GAMS - 87


Formulación del DC-OPF en GAMS (VI)
* caso de estudio
*** esta parte iría en ficheros independientes y se introduciría con $include

SETS
ND nudos / nudo-1 * nudo-9 /
GR generadores / genr-1 * genr-9, genh-1 * genh-4 /
NDGR(nd,gr) localización de generadores en nudos
/
nudo-1 . genr-1
nudo-1 . genr-2
nudo-1 . genr-3
nudo-2 . genr-4
nudo-2 . genr-5
nudo-2 . genr-6
nudo-3 . genr-7
nudo-3 . genr-8
nudo-3 . genr-9
nudo-1 . genh-1
nudo-3 . genh-2
nudo-6 . genh-3
nudo-8 . genh-4
/ ;

Lenguajes de modelado algebraico. GAMS - 88


Formulación del DC-OPF en GAMS (VII)

TABLE DATNUD(nd,cn) datos de los nudos


dem cpns
* MW €/MWh
nudo-1 1 150
nudo-2 240 150
nudo-3 40 150
nudo-4 160 150
nudo-5 240 150
nudo-6 80 150
nudo-7 100 150
nudo-8 15 150
nudo-9 100 150 ;

Lenguajes de modelado algebraico. GAMS - 89


Formulación del DC-OPF en GAMS (VIII)

TABLE DATGEN(gr,cg) datos de los generadores


coste pmin pmax cshd hdrpro hdrmax
* €/MWh MW MW €/kWh MW MW
genr-1 65 0 75
genr-2 70 0 125
genr-3 75 0 100
genr-4 59 0 100
genr-5 67 0 50
genr-6 74 0 50
genr-7 61 0 100
genr-8 76 0 50
genr-9 80 0 50
genh-1 10 300 300
genh-2 10 160 160
genh-3 10 150 150
genh-4 10 100 100 ;

Lenguajes de modelado algebraico. GAMS - 90


Formulación del DC-OPF en GAMS (IX)

TABLE DATLIN(ni,nf,cl) datos de las líneas


r x flmax
* p.u. p.u. MW
nudo-1 . nudo-2 0.0777 0.2913 500
nudo-1 . nudo-4 0.0544 0.2041 500
nudo-2 . nudo-3 0.0424 0.1695 500
nudo-2 . nudo-4 0.1 0.4 500
nudo-2 . nudo-5 0.05 0.2 500
nudo-2 . nudo-6 0.1 0.4 500
nudo-3 . nudo-5 0.0248 0.099 500
nudo-3 . nudo-8 0.1 0.4 500
nudo-4 . nudo-6 0.15 0.6 500
nudo-5 . nudo-6 0.05 0.2 500
nudo-5 . nudo-8 0.1 0.4 500
nudo-6 . nudo-7 0.15 0.6 500
nudo-6 . nudo-9 0.05 0.2 500
nudo-7 . nudo-9 0.05 0.2 500 ;

*** hasta aquí son ficheros independientes

Lenguajes de modelado algebraico. GAMS - 91


Formulación del DC-OPF en GAMS (X)

* activación de generadores térmicos hidráulicos y líneas

TR(gr) $DATGEN(gr,'pmax') = YES ;


HD(gr) $DATGEN(gr,'hdrpro') = YES ;
LN(ni,nf) $DATLIN(ni,nf,'x') = YES ;

* escalación de datos de potencia a GW

DATNUD(nd,'dem') = DATNUD(nd,'dem') / 1e3 ;


DATGEN(tr,'pmin') = DATGEN(tr,'pmin') / 1e3 ;
DATGEN(tr,'pmax') = DATGEN(tr,'pmax') / 1e3 ;
DATGEN(hd,'hdrpro') = DATGEN(hd,'hdrpro') / 1e3 ;
DATGEN(hd,'hdrmax') = DATGEN(hd,'hdrmax') / 1e3 ;
DATLIN(ln,'flmax') = DATLIN(ln,'flmax') / 1e3 ;

Lenguajes de modelado algebraico. GAMS - 92


Formulación del DC-OPF en GAMS (XI)

* acotamiento de las variables (cotas físicas)

[Link](tr) = DATGEN(tr,'pmin') ;
[Link](tr) = DATGEN(tr,'pmax') ;

[Link](hd) = DATGEN(hd,'hdrpro') ;
[Link](hd) = DATGEN(hd,'hdrmax') - DATGEN(hd,'hdrpro') ;

[Link](nd) = DATNUD(nd,'dem') ;

[Link](ln) = - DATLIN(ln,'flmax') ;
[Link](ln) = DATLIN(ln,'flmax') ;

* cotas algorítmicas de los ángulos

[Link](nd) = - 1.5 ;
[Link](nd) = 1.5 ;

* nudo de referencia

[Link](nd) $(ORD
ORD(nd)
ORD EQ 1) = 0 ;

Lenguajes de modelado algebraico. GAMS - 93


Formulación del DC-OPF en GAMS (XII)

* opción sin pérdidas

OPCPRD = 0 ;

* flujo de cargas con variables de flujo

SOLVE FC USING LP MINIMIZING COSTE ;

* control sobre aprovechamiento de base previa

OPTION BRATIO = 1 ;

* flujo de cargas con variables de ángulos de tensión

SOLVE FCA USING LP MINIMIZING COSTE ;

* opción con pérdidas

OPCPRD = 1 ;

* flujo de cargas con variables de flujo

SOLVE FCP USING NLP MINIMIZING COSTE ;

Lenguajes de modelado algebraico. GAMS - 94


Andrés Ramos
[Link]
[Link]@[Link]

Lenguajes de modelado algebraico. GAMS - 95

También podría gustarte