Paste
Copy
Cut
Options
  • Pregunta: Antecedentes -- Algoritmos genéticos de Wikipedia En informática e investigación de operaciones, un algoritmo genético (GA) es una metaheurística inspirada en el proceso de selección natural que pertenece a la clase más amplia de algoritmos evolutivos (EA). Los algoritmos genéticos se utilizan comúnmente para generar soluciones de alta calidad para problemas

    Antecedentes -- Algoritmos genéticos de Wikipedia En informática e investigación de operaciones, un algoritmo genético (GA) es una metaheurística inspirada en el proceso de selección natural que pertenece a la clase más amplia de algoritmos evolutivos (EA). Los algoritmos genéticos se utilizan comúnmente para generar soluciones de alta calidad para problemas de optimización y búsqueda basándose en operadores inspirados en la biología, como la mutación, el cruce y la selección. [1] Algunos ejemplos de aplicaciones GA incluyen la optimización de árboles de decisión para un mejor rendimiento, resolución automática de sudokus, [2] optimización de hiperparámetros, etc.

    La asignación:

    La creación de un algoritmo genético (GA) para resolver un problema está más allá del alcance de este curso. Sin embargo, una parte importante de un GA es crear la siguiente población (generación) de cromosomas o genomas. Por ejemplo, si un GA tiene una población de, digamos, 100 genomas, la próxima generación creada a partir de la población actual consistirá en 100 genomas, generados por herencia, mutación, inversión y cruce. Para ayudar en la gestión y creación del nuevo Genoma, escribirá un paquete llamado GENE que admita el tipo Genoma como interfaz. En esencia, un Genoma consta de una cadena de elementos definidos por un alfabeto definido como una interfaz separada. Por ejemplo, si un Genoma va a representar "aabdgba", entonces el alfabeto consiste únicamente en los caracteres "abdg".

    Así, una interfaz definida como:

    interfaz pública AlgúnAlfabeto {

    final char[] alfabeto={'a','b','d','g'};

    }

    Define el alfabeto que debe cumplir el Genoma. Al crear la clase de implementación, se implementan la interfaz Genome y la interfaz anterior.

    Para contener el Genoma, utilizará una Cadena, donde el contenido de la cadena debe pertenecer al alfabeto definido. Cada genoma tiene una longitud (cardinalidad) y, por lo general, todos los genomas en un GA determinado tendrán la misma longitud. Para ayudar en el desarrollo del paquete, se proporciona la interfaz:

    paquete GEN;

    interfaz pública Genoma{

    // Devuelve la cardinalidad de este.

    Tarjeta int pública();

    // Crea un objeto clon de este

    Clon del genoma público ();

    // Concatenar esto y g, esto = esto + g;

    público Genoma ConCat(Genoma g);

    // Devuelve verdadero si this y g son iguales

    público booleano Igual (Genoma g);


    // Cada elemento de esto mutará aleatoriamente a otro elemento del alfabeto

    // si una variable aleatoria Pi<p donde 0<=Pi<=1 & 0<=p<=1

    mutación del genoma público (doble p);


    // Los primeros elementos i de this se antepondrán a los elementos de cola de B que

    // contiene los elementos de B menos los primeros i elementos.

    //

    // Por ejemplo, A = aaaaa & B=bbbbb luego A.OnePointCrossOver(B,2) => aaabb

    // Genera UsageException si A y B no tienen la misma longitud o i>A.Card().

    público Genoma OnePointCrossOver (Genoma g, int i);


    // Los elementos de this que se encuentran dentro de i & j se sustituyen con el elemento

    // que se encuentran dentro de i & j de g.

    //

    // Por ejemplo, A=aaaaaa & B=bbbbbb luego A.Dospuntoscruce(B,2,4) => aabbba

    // Genera UsageException si A y B no tienen la misma longitud o i>j>A.Card().


    public Genome TwoPointCrossOver(Genoma g, int i, int j);


    // El Genoma esto esta invertido. Por ejemplo, A=abcde y luego A.Inversion() => edcba

    Inversión del genoma público ();

    }

    Es importante tener en cuenta que los objetos de Genome son inmutables, es decir, las operaciones en esto crearán un nuevo objeto de Genome. Al crear una implementación de Genome, considere crear una clase que describa el alfabeto y restrinja los elementos de Genome a ese alfabeto. P.ej

    clase pública MyGene implementa Genoma, AlphabetInterface {

    implementará la interfaz del Genoma restringiendo los elementos dentro del Genoma al alfabeto definido en la interfaz AlphabetInterface. Una instancia válida de esta implementación sería.

    genoma a;

    a = nuevo MiGen(“aaagada”);

    Dónde

    a = nuevo MiGen(“aaxyz”);

    generaría una UsageException.

    Esta verificación debe ocurrir cuando se crea un nuevo objeto.

    Una UsageException es un error de excepción muy amplio. Mejore UsageException para pasar un mensaje detallado que luego se puede mostrar cuando se detecta UsageException. Ver ejemplo de conferencia. Hay muchos lugares donde es apropiado lanzar una UsageException.


    El paquete de programa que cree debe contener la interfaz, una implementación con una interfaz alfabética apropiada; y una clase UsageException. Para probar su programa, escriba un arnés de prueba que ejerza todos los componentes del programa. Usted es responsable de crear un arnés de prueba integral, que ejerza todos los aspectos de su implementación, incluidos los casos de excepción.

  • Chegg Logo
    Esta pregunta aún no se resolvió!
    ¿No es lo que buscas?
    Envía tu pregunta a un experto en la materia.