Professional Documents
Culture Documents
El problema del compromiso puede ser muy difícil. Como ejercicio teórico,
postulemos la siguiente situación.
• Debemos establecer un patrón de carga para m periodos.
• Tenemos N unidades para comprometer y despachar.
• Los niveles de carga M y los límites de funcionamiento en las N unidades son
tales que cualquier unidad puede suministrar las cargas individuales y que
cualquier combinación de unidades también puede suministrar las cargas.
A continuación, supongamos que vamos a establecer el compromiso por
enumeración (fuerza bruta). El número total de combinaciones que debemos
probar cada hora es,
C (N, 1) + C (N, 2) + ... + C (N, N - 1) + C (N, N) = 2N - 1
donde C (N, j) es la combinación de N elementos tomados j a la vez. Es decir,
Estos números muy grandes son los límites superiores para el número de
enumeraciones requeridas. Afortunadamente, las restricciones en las unidades
y las relaciones de capacidad de carga de los sistemas de servicios públicos
típicos son tales que no nos acercamos a estos grandes números. Sin
embargo, la barrera práctica real en el problema de compromiso de unidad
optimizada es la alta dimensionalidad del espacio de solución posible.
Ejemplo 5D
Construya una lista de prioridades para las unidades del Ejemplo 5A. (Use los
mismos costos de combustible que en el Ejemplo 5A). Primero, se calculará el
costo de producción promedio de carga completa:
Unidad Coste medio de producción
a plena carga ($/MWh)
1 9.79
2 9.48
3 11.188
5.2.2.1 Introducción
La programación dinámica tiene muchas ventajas sobre el esquema de
enumeración, la principal ventaja es una reducción en la dimensionalidad del
problema. Supongamos que hemos encontrado unidades en un sistema y
cualquier combinación de ellas podría servir para la carga (única). Habría un
máximo de 24 - 1 = 15 combinaciones para probar. Sin embargo, si se impone
un orden de prioridad estricto, solo hay cuatro combinaciones para probar:
Unidad de prioridad 1
Unidad de prioridad 1 + unidad de prioridad 2
Unidad de prioridad 1 + unidad de prioridad 2 + unidad de prioridad 3
Unidad de prioridad 1 + unidad de prioridad 2 + unidad de prioridad 3 + unidad
de prioridad 4
La imposición de una lista de prioridad organizada en orden de la tasa de costo
promedio de carga total resultaría en un envío y compromiso teóricamente
correctos solo si:
Donde:
Fcost(K, I) = menor costo total para llegar al estado (K, I)
Pcost(K, I) = costo de producción por estado (K, I)
Scost (K - 1, L: K, L) = costo de transición del estado (K - 1, L) al estado (K, I)
Fig. 5.4. Compromiso de la unidad a través de la programación dinámica hacia adelante.
Estas variables permiten el control del esfuerzo computacional (ver Figura 5.5).
Para una enumeración completa, el número máximo del valor de X o N es 2"- 1.
Por ejemplo, con un orden de lista de prioridad simple, el límite superior en X
es n, el número de unidades. Reducir el número N significa que estamos
descartando los programas de mayor costo en cada intervalo de tiempo y
guardando solo las N rutas o estrategias más bajas. No hay garantía de que el
programa teórico óptimo se encuentre utilizando un número reducido de
estrategias y rango de búsqueda (el valor X); solo la experimentación con un
programa en particular indicará el error potencial asociado con la limitación de
los valores de X y N por debajo de sus límites superiores.
EJEMPLO 5E
Patrón de carga
Hora Carga (MW)
1 450
2 530
3 600
4 540
5 400
6 280
7 290
8 500
Con el fin de hacer los cálculos requeridos de manera más eficiente, se utiliza
un modelo simplificado de las características de la unidad. En aplicaciones
prácticas, se pueden usar curvas incrementales escalonadas de dos o tres
secciones, como se muestra en la Figura 5.6. En nuestro ejemplo, solo se
utiliza un paso entre el mínimo y el máximo de puntos de potencia. Las
unidades en este ejemplo tienen funciones lineales F (P):
FIG. 5.6 (a) Curva de costo incremental en un solo paso y (b) Curva de costo
incremental en un solo paso.
Tenga en cuenta, sin embargo, que la unidad debe operar dentro de sus
límites. Los costos de inicio de los dos primeros casos se toman como costos
de inicio en frío. El orden de prioridad para las cuatro unidades en el ejemplo
es: unidad 3, unidad 2, unidad 1, unidad 4. En los dos primeros casos, los
tiempos mínimos de subida y bajada se toman como 1 h para todas las
unidades.
En los tres casos nos referiremos al orden de capacidad de las unidades. Esto
se muestra en la Tabla 5.5, donde las combinaciones de unidades o estados
están ordenadas por la máxima capacidad neta para cada combinación.
Caso 1
En el caso 1, las unidades se programan de acuerdo con un orden de prioridad
estricto. Es decir, las unidades se comprometen en orden hasta que se
satisfaga la carga. El costo total para el intervalo es la suma de los ocho costos
de envío más los costos de transición para iniciar cualquier unidad. En este
primer caso, debe considerarse un máximo de 24 despachos.
TABLA 5.5 Capacidad de ordenamiento de las unidades
Para el caso 1, los únicos estados examinados cada hora consisten en:
J = 1: 1ra hora
k
Fcost (1, 15) = Pcost (1,15) + Scost (0, 12: 1, 15)
15
= 9861 + 350 = 10211
14 Fcost (1, 14) = 9493 + 350 = 9843
12 Fcost (1, 12) = 9208 + 0 = 9208
J = 2: 2da hora
Los estados factibles son {12, 14, 15} = {K}, entonces X = 3. Supongamos que
se guardan dos estrategias en cada etapa, entonces N = 2 y {L} = {12, 14}
y así.
CASO 2
CASO 3
En el caso 3, los datos de la unidad original se utilizan para que se respeten los
tiempos mínimos de apagado y funcionamiento. El algoritmo de programación
dinámica hacia adelante se repitió para el mismo período de 8 h. Se usó una
enumeración completa. Es decir, el límite superior en X que se muestra en el
diagrama de flujo fue 15. Tres valores diferentes para N, el número de
estrategias guardadas en cada etapa, se tomaron como 4, 8 y 10. Se encontró
la misma trayectoria para los valores de 8 y 10. Esta trayectoria se muestra en
la figura 5.9. Sin embargo, cuando solo se guardaron cuatro estrategias, el
procedimiento fracasa (es decir, no encuentra un camino viable) en
8 horas, porque las estrategias de menor costo en la hora 7 han cerrado las
unidades que no se pueden reiniciar en la hora 8 debido a las reglas mínimas
de tiempo de inactividad de la unidad.
1. restricciones de carga
𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 - ∑𝑁 𝑡 𝑡
𝑖=1 𝑃𝑖 𝑈𝑖 = 0 ; para t = 1……T (5.2)
2. Límites de unidad
𝑡 𝑡
∑𝑇𝑡=1 ∑𝑁
𝑖=1[ 𝐹𝑖 (𝑃𝑖 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖 = 𝐹(𝑃𝑖𝑡 , 𝑈𝑖𝑡 ) (5.4)
Nota:
PASO 1: Encuentre un valor para cada 𝜆𝑡 que mueva 𝑞(𝜆) hacia un valor mayor
ℒ = ∑𝑇𝑡=1 ∑𝑁 𝑡 𝑡 𝑇 𝑇 𝑡 𝑁 𝑡 𝑡
𝑖=1[ 𝐹𝑖 (𝑃𝑖 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖 + ∑𝑡=1 𝜆 (𝑃𝑐𝑎𝑟𝑔𝑎 − ∑𝑖=1 𝑃𝑖 𝑈𝑖 ) (5.8)
ℒ = ∑𝑇𝑡=1 ∑𝑁 𝑡 𝑡 𝑇 𝑇 𝑡 𝑇 𝑇 𝑡 𝑡
𝑖=1[𝐹𝑖 (𝑃𝑖 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖 + ∑𝑡=1 𝜆 𝑃𝑐𝑎𝑟𝑔𝑎 − ∑𝑡=1 𝜆 𝑃𝑖 𝑈𝑖 (5.9)
El segundo término anterior es constante y se puede eliminar (ya que las Q son
fijas). Finalmente, escribimos la función de lagrange como:
ℒ = ∑𝑁 𝑇 𝑡 𝑡 𝑇 𝑡 𝑡
𝑖=1(∑𝑡=1([ 𝐹𝑖 (𝑃𝑖 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖 − 𝜆 𝑃𝑖 𝑈𝑖 )) (5.10)
Aquí, hemos logrado nuestro objetivo de separar las unidades entre sí. El
término dentro de los soportes externos; es decir:
𝑇
∑ ([ 𝐹𝑖 (𝑃𝑖𝑡 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖𝑡 − 𝜆𝑇 𝑃𝑖𝑡 𝑈𝑖𝑡 )
𝑡=1
Se puede resolver por separado para cada unidad de generación, sin tener en
cuenta lo que está sucediendo en las otras unidades de generación.
El mínimo del lagrangiano se encuentra resolviendo el mínimo para cada
unidad generadora en todos los períodos de tiempo; es decir:
𝑚𝑖𝑛𝑞(𝜆) = ∑𝑇𝑡=1 𝑚𝑖𝑛 ∑𝑇𝑡=1([ 𝐹𝑖 (𝑃𝑖𝑡 ) + 𝑐𝑜𝑠𝑡𝑜 𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑖,𝑡 ]𝑈𝑖𝑡 − 𝜆𝑇 𝑃𝑖𝑡 𝑈𝑖𝑡 ) (5.11)
𝑑
𝑑𝑃𝑡𝑖
[𝐹𝑖 (𝑃𝑖 ) − 𝜆𝑇 𝑃𝑖𝑡 ] = 𝑑𝑃𝑑𝑡 𝐹𝑖 (𝑃𝑖 ) − 𝜆𝑇 = 0 (5.13)
𝑖
𝑑 𝑜𝑝𝑡
𝐹 (𝑃 )
𝑑𝑃𝑖𝑡 𝑖 𝑖
= 𝜆𝑇 (5.14)
𝑜𝑝𝑡
Hay tres casos que deben tratarse en función de la relación de 𝑃𝑖 y los
límites unitarios.
La solución del programa dinámico de dos estados para cada unidad procede
de la manera normal, como se hizo para la solución de programación dinámica
directa del problema de compromiso de la unidad. Tenga en cuenta que dado
que buscamos minimizar [𝐹𝑖 (𝑃𝑖 ) − 𝜆𝑇 𝑃𝑖𝑡 ]en cada etapa y que cuando 𝑈𝑖𝑡 = 0
este valor se pone a cero, entonces la única manera de obtener un valor más
bajo es tener
El programa dinámico debe tener en cuenta todos los costos iniciales,S i, para
cada unidad, así como el tiempo mínimo de activación y desactivación del
generador. Ya que estamos resolviendo cada generador de forma
independiente, sin embargo, hemos evitado los problemas de dimensionalidad.
Eso afecta a la solución de programación dinámica.
5.2.3.1 AJUSTANDO (𝝀)
𝑑
𝜆𝑇 = 𝜆𝑇 + [𝑑𝜆 𝑞(𝜆)]𝛼 (5.16)
Donde:
𝑑
𝛼 = 0.01 Cuando 𝑞(𝜆) es positivo
𝑑𝜆
Y
𝑑
𝛼 = 0.02 Cuando 𝑑𝜆 𝑞(𝜆) es negativo
EJEMPLO 5D
CARGA
𝑡
t 𝑃𝑐𝑎𝑟𝑔𝑎 (𝑀𝑊)
1 170
2 520
3 1100
4 330
El programa dinámico para cada unidad con un 𝜆𝑇 = 0 para cada hora siempre
resultará en todas las unidades generadoras fuera de línea.
ITERACIÓN 1
𝑁
hora 𝜆 u u u P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡
𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
1 2 3 𝑖=1
1 0 0 0 0 0 0 0 170 0 0 0
2 0 0 0 0 0 0 0 520 0 0 0
3 0 0 0 0 0 0 0 1100 0 0 0
4 0 0 0 0 0 0 0 330 0 0 0
(𝐽∗ −𝑞∗ )
𝑞(𝜆) = 0.0 , J*=40,000 y = indefinido
𝑞∗
𝑁
hora 𝜆 u 1 u2 u3 P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡 𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
𝑖=1
1 1. 0 0 0 0 0 0 170 0 0 0
7
2 5. 0 0 0 0 0 0 520 0 0 0
2
3 11 0 1 1 0 400 200 500 0 0 0
4 3. 0 0 0 0 0 0 330 0 0 0
3
(𝐽∗ −𝑞∗ )
𝑞(𝜆) = 14,982 ; J*=40,000 y = 1.67
𝑞∗
ITERACIÓN 3
𝑁
hor 𝜆 u1 u2 u3 P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡 𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
a 𝑖=1
1 3.4 0 0 0 0 0 0 170 0 0 0
2 10. 0 1 1 0 400 200 -80 0 32 200
4 0
3 16 1 1 1 60 400 200 -100 50 40 200
0 0 0
4 6.6 0 0 0 0 0 0 330 0 0 0
(𝐽∗ −𝑞 ∗ )
𝑞(𝜆) = 18,344 ; J*=36,024 y = 0.965
𝑞∗
ITERACIÓN 4
𝑁
hora 𝜆 u1 u2 u3 P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡 𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
𝑖=1
1 5.1 0 0 0 0 0 0 170 0 0 0
2 10. 0 1 1 0 400 200 -80 0 32 200
2 0
3 15. 1 1 1 60 400 200 -100 50 40 200
8 0 0 0
4 9.9 0 1 1 0 380 200 -250 0 13 200
0
(𝐽∗ −𝑞 ∗ )
𝑞(𝜆) = 19,214 ; J*=28,906 y = 0.502
𝑞∗
ITERACIÓN 5
𝑁
hora 𝜆 u u2 u3 P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡 𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
1 𝑖=1
1 6.8 0 0 0 0 0 0 170 0 0 0
2 10.0 0 1 1 0 400 200 -80 0 32 200
8 0
3 15.6 1 1 1 60 400 200 -100 50 40 200
0 0 0
4 9.4 0 0 1 0 0 200 130 0 0 0
(𝐽∗ −𝑞 ∗ )
𝑞(𝜆) = 19,532 ; J*=36,024 y = 0.844
𝑞∗
ITERACIÓN 6
𝑁
hora 𝜆 u u2 u3 P1 P2 P3 𝑡
𝑃𝑐𝑎𝑟𝑔𝑎 −∑ 𝑃𝑖𝑡 𝑈𝑖𝑡 𝑃1𝑒𝑑𝑐 𝑃2𝑒𝑑𝑐 𝑃3𝑒𝑑𝑐
1 𝑖=1
(𝐽∗ −𝑞∗ )
𝑞(𝜆) = 19,442 ; J*=20,170 y = 0.037
𝑞∗
Sujeto a
𝜔 = 5 − 𝑥1 𝑢1 − 𝑥2 𝑢2
0 ≤ 𝑥1 ≤ 10 Y 0 ≤ 𝑥2 ≤ 10
𝑢1 = 1 𝑜 0 𝑢2 = 1 𝑜 0
Tenga en cuenta que en este problema tenemos dos funciones, una en 𝑥1 y la
otra en 𝑥2 . Las funciones fueron elegidas para demostrar ciertos fenómenos en
una optimización dual. Tenga en cuenta que las funciones son numéricamente
cercanas y solo se diferencian en una cantidad pequeña y constante. De estas
funciones se multiplica por una variable 1-0 y se combina en la función objetivo
general. También hay una restricción que combina las variables 𝑥1 y 𝑥2 de
nuevo con las variables 1-0. Hay cuatro soluciones posibles.
Paso 1
El último término anterior es fijo y podemos ignorarlo. Los otros términos ahora
se dan de tal manera que la minimización de esta función es relativamente
fácil. Tenga en cuenta que la minimización ahora está sobre dos términos, cada
uno de ellos multiplicado por un 1-0 variable. Dado que estos dos términos se
suman en el lagrangiano, podemos minimizar la función completa minimizando
cada término por separado. Dado que cada término es el producto de una
función en x y 𝜆 (que es fija), y todos estos se multiplican por el 1 - 0 variable u,
entonces el mínimo será cero (es decir, con u = 0) o será negativo, con u = 1 y
el valor de x establecido de modo que el término dentro de los paréntesis sea
negativo. Mirando el primer término, el valor óptimo de 𝑥1 se encuentra en
(ignora 𝑢1 por un momento):
𝑑
(0.25𝑥1 2 + 15 − 𝑥1 𝜆𝑘 ) = 0
𝑑𝑥1
(0.25𝑥1 2 + 15 − 𝑥1 𝜆𝑘 )
Es positivo, podemos minimizar el lagrangiano simplemente estableciendo𝑢1 =
0; de lo contrario 𝑢1 = 1.
𝑑
(0.255𝑥2 2 + 15 − 𝑥2 𝜆𝑘 ) = 0
𝑑𝑥2
(0.255𝑥2 2 + 15 − 𝑥2 𝜆𝑘 )
Paso 2
𝑑𝑞
∇𝑞 =
𝑑𝜆
Que para nuestro problema es
𝑑𝑞
= 5 − 𝑥1 𝑢1 − 𝑥2 𝑢2
𝑑𝜆
Ajustamos 𝜆 de acuerdo a
𝑑𝑞
𝜆𝑘+1 = 𝜆𝑘 + 𝛼
𝑑𝜆
Donde 𝛼 es un multiplicador elegido para mover 𝜆 solo una corta distancia (esto
es simplemente un método de búsqueda de gradiente como se presentó en el
capítulo 3).
Tenga en cuenta también que si tanto 𝑢1 como 𝑢2 son cero, el gradiente será 5,
lo que indica un valor positivo que nos indica que aumentemos 𝜆. Finalmente,
el aumento de 𝜆 dará como resultado un valor negativo para
(0.25𝑥1 2 + 15 − 𝑥1 𝜆𝑘 )
O por
(0.255𝑥2 2 + 15 − 𝑥2 𝜆𝑘 )
𝑑𝑞
Si 𝑑𝜆 es positivo, entonces use 𝛼 = 0.2
𝑑𝑞
Si 𝑑𝜆 es negativo, entonces use 𝛼 = 0.005
También debemos tener en cuenta que, dadas las pocas variables que
tenemos, y dado que dos de ellas son variables 1-0, el valor de 𝜆 no
convergerá con el valor necesario para minimizar el lagrangiano. De hecho,
rara vez es posible para encontrar una 𝜆𝑘 que haga factible el problema con
respecto a la restricción de igualdad.
Utilizando las técnicas del apéndice 3A (dado que ahora se conocen las
variables 𝑢1 y 𝑢2 )
La solución a este mínimo estará en 𝑥1 = ̅̅̅ ̅̅̅2 y 𝜆 = 𝜆̅ .En el caso de que
𝑥1 , 𝑥2 = 𝑥
𝑢1 y 𝑢2 sean ambos cero, estableceremos arbitrariamente este valor en un
valor grande (aquí lo establecemos en 50).
𝐽∗ − 𝑞 ∗
𝑞∗
La presencia de las variables 1-0 hace que el algoritmo oscile alrededor de una
solución con una o más de las variables 1-0 que saltan de 1 a 0 a 1, etc.