La Programación de Expresión Múltiple (MEP) es un algoritmo evolutivo para generar funciones matemáticas que describen un conjunto dado de datos. MEP es una variante de la Programación Genética que codifica múltiples soluciones en el mismo cromosoma. La representación MEP no es específica (se han probado múltiples representaciones). En la variante más simple, los cromosomas MEP son cadenas lineales de instrucciones. Esta representación se inspiró en el Código de tres direcciones . La fortaleza de MEP consiste en la capacidad de codificar múltiples soluciones de un problema en el mismo cromosoma. De esta manera, se pueden explorar zonas más grandes del espacio de búsqueda. Para la mayoría de los problemas, esta ventaja no conlleva ninguna penalización en el tiempo de ejecución en comparación con las variantes de programación genética que codifican una única solución en un cromosoma. [1] [2] [3]
Los cromosomas MEP son conjuntos de instrucciones representadas en formato de código de tres direcciones .
Cada instrucción contiene una variable, una constante o una función. Si la instrucción es una función, entonces también están presentes los argumentos (dados como direcciones de la instrucción).
Aquí hay un cromosoma MEP simple (las etiquetas en el lado izquierdo no son parte del cromosoma):
1: un2:b3: + 1, 24:c5:d6: + 4, 57: * 3, 5
Cuando se evalúa el cromosoma, no queda claro qué instrucción proporcionará el resultado del programa. En muchos casos, se obtiene un conjunto de programas, algunos de los cuales no tienen ninguna relación entre sí (no tienen instrucciones comunes).
Para el cromosoma anterior, aquí está la lista de posibles programas obtenidos durante la decodificación:
E1 = a,E2 = b,E4 = c,E5 = d,E3 = a + b.E6 = c + d.E7 = (a + b) * d.
Cada instrucción se evalúa como una posible salida del programa.
La aptitud (o el error) se calcula de manera estándar. Por ejemplo, en el caso de la regresión simbólica , la aptitud es la suma de las diferencias (en valor absoluto) entre el resultado esperado (denominado objetivo) y el resultado real.
¿Qué expresión representará el cromosoma? ¿Cuál dará la aptitud del cromosoma?
En la programación genética lineal, el mejor de ellos (el que tiene el menor error) representará el cromosoma. Esto es diferente de otras técnicas de programación genética lineal: en la programación genética lineal, la última instrucción dará el resultado. En la programación genética cartesiana, el gen que proporciona el resultado evoluciona como todos los demás genes.
Cabe señalar que, para muchos problemas, esta evaluación tiene la misma complejidad que en el caso de codificar una única solución en cada cromosoma, por lo que no hay ninguna penalización en el tiempo de ejecución en comparación con otras técnicas.
MEPX es un software libre multiplataforma (Windows, macOS y Linux Ubuntu) para la generación automática de programas informáticos. Puede utilizarse para el análisis de datos, en particular para resolver problemas de regresión simbólica , clasificación estadística y series temporales .
Libmep es una biblioteca gratuita y de código abierto que implementa la técnica de programación multiexpresiva. Está escrita en C++.
hmep es una nueva biblioteca de código abierto que implementa la técnica de programación de múltiples expresiones en el lenguaje de programación Haskell.