Pregunta

Quiero resolver un sistema de n ecuaciones lineales que contienen n variables usando un algoritmo genético.

Tengo dificultades para definir la operación de cruce ya que la solución puede consistir en valores de punto flotante.¿Cómo procedo?Parece posible, pero este es mi primer encuentro con los algoritmos genéticos.

Supongamos que tenemos que resolver

 x + 2y = 1
2x + 8y = 3

La respuesta sería x = 1/2 e y = 1/4.

¿Cómo modelamos el problema?

Actualizar:A ver si puedes descifrar algo del papel. http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdf.

¿Fue útil?

Solución

Una ruta es de escoger su propia representación de punto flotante, que le libera a mucho con los valores que desee. Por supuesto, eso le hace responsable de la ejecución de las operaciones aritméticas. Tal vez usted podría encontrar una biblioteca bignum se podía alterar.

También puede descomponer puntos flotantes de plataforma nativa utilizando, por ejemplo, frexp durante el paso de cruce, a continuación, se recombinan durante el sacrificio.

Otros consejos

Su cromosoma podría ser los números de punto flotante n (dobles), o se puede reinterpretar como cadenas de bits mediante el uso de una unión:

const int n = 100;

union Chromosome {
  double val[n];
  unsigned char bits[n * sizeof(double)];
};

... entonces puede utilizar los valores dobles para la interpretación del valor de la solución / fitness, y los bits para la reproducción / de cruce / mutación.

Buena suerte!

Simplemente no lo haces.Hay muchos métodos diferentes que puedes aplicar para resolver sistemas lineales.Pero los "algoritmos genéticos" no es algo que me venga a la mente.Usarías algoritmos genéticos para resolver problemas combinatorios (elegir un elemento de un finito colocar).

Habitualmente resuelves sistemas lineales mediante factorizaciones (QR, LU) o algoritmos iterativos (Gauß-Seidel, CG, ...)

Usted tendrá que considerar el uso de un algoritmo genético codificado reales en lugar de la codificación binaria algoritmo genético como se sugiere en el papel que ha hecho referencia. De hecho, si se utiliza una codificación binaria algoritmo genético, entonces no será capaz de encontrar la solución a las ecuaciones si su 'x', 'y' puede tomar valores negativos.

Por lo tanto es necesario utilizar un algoritmo genético codificado verdadera. O se puede codificar todo el algoritmo genético a sí mismo, o puede simplemente usar un buen código RGA existente para resolver su problema. Usted sólo tendrá que personalizar la función de aptitud para su necesidad. Aquí se puede usar el que se sugiere en el documento. Era bastante fácil!

Puede considerar el uso de la aplicación de RGA http://www.iitk.ac .in / kangal / codes.shtml .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top