Como parte de una tarea, tendré que escribir un algoritmo de programación genética que haga predicciones de los niveles de contaminantes atmosféricos. Como no tengo experiencia, ¿alguien puede señalarme sugerencias sobre lenguajes de programación en los que se escribirán programas evolucionados ?
Aclaración: no estoy preguntando cuál será el lenguaje, escribiré el algoritmo genético en sí mismo (ya que podré tomar la decisión yo mismo), estoy preguntando en qué lenguaje de programación deberían crearse los programas desarrollados.
Mi instructor me sugirió Lisp, pero no me gusta esta idea, primero tendría que trabajar en algún tipo de Árbol de sintaxis abstracta, en segundo lugar, hacer cruces de manera confiable en la estructura de un árbol puede ser un desastre.
Yo prefiero usar algo que se dedica a la programación genética como la barra / A . SlashA no requiere trabajar en AST --- los programas en bytecode son solo una matriz de entradas que se pueden cambiar en cualquier momento necesario ya que cada matriz int representa algún programa de barra / A.
Observaciones adicionales:
- ¡Me gustaría evitar manipular los AST!
- Este problema es difícil (quizás no tan difícil como predecir los valores de las acciones). Esto se debe al hecho de que (muy probablemente) no tenemos suficiente información de entrada (hay algunos parámetros ocultos). Crear un modelo que tenga un mejor rendimiento que el modelo que devuelve la media es un desafío (los modelos promedio tienen un 35% de MAPE), la mayoría de los modelos tienen un MAPE de aproximadamente el 25%, mejor tienen un 20%.
- Me gustaría tener un lenguaje que administre conjuntos de datos con muchas características suponiendo que no estoy seguro de cuáles son importantes. (Slash / A tiene una desventaja aquí --- en este idioma, las características de entrada se leen secuencialmente, por lo que algunas características se usarán con mayor probabilidad).
- Me gustaría poder programar esto en Python, por lo que las bibliotecas de Python serían geniales, pero puedo hacer enlaces para C / C ++ (sin Java, sin Matlab, etc.).
Soy consciente de que esta es una pregunta de la encuesta, así que si es demasiado pronto para esa pregunta, ciérrela, pero creo que es lo suficientemente específica.
Si va a desarrollar un programa, es probable que manipule un árbol de sintaxis de todos modos; de esa manera, cualquier programa que desarrolle será automáticamente sintácticamente correcto.
Hay dos cosas que debe tener en cuenta al seleccionar un idioma.
Votaría en contra del lenguaje ensamblador por razones similares, aunque las máquinas virtuales como JVM y CLR deberían proporcionarle una especie de red de seguridad.
Probablemente desee utilizar un idioma de destino con el que ya esté familiarizado. No estoy familiarizado con Python, pero AFAIK cumple con los criterios anteriores, por lo que debería ser una buena opción para su idioma de destino.
fuente