Algoritmos genéticos para el desarrollo de filtro pasivos

ELO-330: Programación de Sistemas
Proyecto Final
2° semestre 2019

¿Que es?

Es un software, creado a base del algoritmo genético expuesto en el paper "GA automated design and synthesis of analog circuits with practical constraints" por C. Goh e Y. Li, que permite obtener la topología, los componentes y valores de filtros pasivos óptimos, mediante algoritmos genéticos.

Para la implementación de este sistema, se desarrolla una lógica con proyecciones a ser implementada de forma distribuida. Esto con el objetivo de mejorar los tiempos de simulación y de esta forma acelerar el proceso de optimización de los algoritmos al ejecutar la evaluación del fitness en paralelo.

Requisitos

Para poder utilizar este sistema, en necesario en primer lugar, tener instalado el simulador ngspice. Los pasos de su instalación pueden variar dependiendo de la distribución que utilice. Puede encontrar las instrucciones para instalarlo en su distribución particular el sitio oficial.

Para ejecutar los programas que componen el sistema que desarrollamos para este proyecto debe acceder a las carpetas particulares para cada parte del sistema, donde se encuentran los archivos .c y .java junto a los correspondientes makefiles.

Detalles de implmentación

El sistema que se desae implementar se muestra a continuación. Es importante mencionar que debido a temas de tiempo no se implemento la parte de interfaz, por lo que queda para una implmentación futura:

Diagrama partes del sistema.
  • Algoritmo génetico:
    • Codificación: Cada componenete se codifica con 4 números. El primero es un número entre 0 y 4, donde 0 es la falta de componente, 1 la resistencia, 2 el capacitor y 3 el inductor; los siguietnes dos número son los nodos donde van conectados esa componente; y el último es un número entre 0 y 1, el cuál se traduce en un valor de la componente dada (valores normalizados).
    • Reparación de individuo: Debido a la fácilidad del algoritmo de generar circuitos no simulables, se debe integrar está función para ir reparando los circuitos.
  • Simulador:
    • El simulador con el programa ngspice funciona de la siguiente forma:
    • Diagrama del simulador.
    • La trama que recibe el simulador es la siguiente (los campos están separados por '\n'):
    • Trama de los pedidos de simulación.

Forma de uso

Una vez descargado el proyecto e installado los requerimientos, para compilar cada programa basta con ejecutar el make que se encuentra en cada carpeta. Para ejecutar el simulador se debe ingresar el sigueinte comando:

username@maquina1 ./simulador

Mientras que para ejecutar el Algoritmo Genético se debe ejecutar lo siguiente:

username@maquina2 make run

Por falta de tiempo no se alcanzo a implementar el ingreso de parámetros por consola, por lo que si se desea modificar uno se debe modificar el archivo AG/main.java (Todas las variables, menos k, son parámetros modificables).

Trabajos futuros

Los trabajos futuros que se tienen considerados son los siguientes:

  • Implementar una Interfaz que permita mostrar gráficamente los resultados (SchemDraw Python).
  • Soportar otros tipos de Filtros.
  • Implementar un log en el servidor.
  • Cambiar la codificación del individuo a una tipo árbol binario con el objetivo de evitar individuos imposibles de codificar.
  • Implementar hilos en el Algoritmo Génetico para hacer múltiples pedidos de fitness a la vez.
  • Implementar archivo de configuración para el Algoritmo Génetico.

Descargas

El código fuente puede obtenerse de aqui.

© 2019 - Francisco Pereira y Sebastián Ubiergo