2010-03-26 Mejorando el optimizador
Posted By dmmedina
Como ya lo habíamos indicado, estamos optimizando las políticas de Turbinamiento para ambos periodos, usando las medias anuales de las 10.000 muestras de caudales generadas con el ANFIS.
Pero esto ya lleva 4 días ejecutándose (el objetivo era alcanzar el 1'000.000 de generaciones) pero a duras penas vamos por la generación 300.000 en ambos casos.
Para el periodo de Control tiene como costo actual 127'729.381,110
Y en el periodo Futuro esta en el costo de 97'506.263,775
Ambos disminuyendo de apoco.
La metodología actual de nuestro optimizador es: eliminar los infactibles (violan alguna restricción del sistema) y cuando se generan nuevos individuos (aleatóriamente) algún turbinamiento hacer bajar el nivel del Embalse por debajo del Límite permitido a dicha política se le asigna el valor de ( 0 ).
Los cambios que estamos haciendo son:
- Mantener los infactibles y agregar una función de penalización.
- Probamos que al generar nuevos individuos no cambiarles nada si bajan del nivel mínimo del embalse (obtuvimos pésimos resultados porque todos los individuos violaban restricciones)
- Decidí no asignarle ( 0 ) sino ir reduciendo progresivamente a la mitad (Qt/2) la política que viola el mínimo del embalse 10 veces a lo mucho (de esta manera obtuvimos muy buenos resultados desde el principio, ya que los valores en costo fueron muy buenos, pero la variación del costo de operación fue muy lento -casi nada- además alcanzamos 1.000 generaciones en 15 minutos)
- Agregamos a lo anterior, generar nuevamente al peor individuo de cada generación (dio un buen resultado, hubo mejoras del fitness más seguidas)
Dejamos ejecutando el optimizador para el periodo de control durante 10.000 generaciones para observar los resultados. Hasta el momento parase que alcanza 1.000 generaciones cada 1o ó 12 minutos. Lo sabremos con más certeza al terminar la ejecución (estamos tomando el tiempo de ejecución).
Al aplicar estos cambios pudimos observar que la solución (política de turbinamiento) convergió mucho más rápido, por lo que ya no es necesario ejecutar nuestro optimizador con tantas generaciones. Con esto en mente hemos decidido detener las ejecuciones del 1'000.000 de generaciones, para ejecutar como máximo 10.000, aprovechando así los cambios.
Al detenerlos los valores quedaron así: CONTROL $127'729.381,110 y FUTURO 97'341.773,350 en 320.000 generaciones aproximadamente, en algo más de 4 días.
Para probar con las variantes realizadas, ejecutamos la optimización del periodo de CONTROL teniendo como resultado $109'887.267,178 solo en 10.000 generaciones, pero por la generación 2.000 ya había convergido. Y se demoró 2 horas 57 minutos y 48 segundos, aproximadamente 1.06 segundos por generación
La principal razón de esto eran los Qt que estaban siendo asignados ( 0 ). Pero pensamos mejorarlo aún más cambiando el método de ordenamiento de SelectionSort por QuickSort.

