Package fmg.fmg8.endlAutomat.mutation

Source Code of fmg.fmg8.endlAutomat.mutation.MutationSEQ

/*
* Datei:            MutationSEQ.java
* Autor(en):        Lukas K�nig
* Java-Version:     6.0
* Erstellt (vor):   12.03.2009
*
* (c) Lukas K�nig, die Datei unterliegt der LGPL
* -> http://www.gnu.de/lgpl-ger.html
*/

package fmg.fmg8.endlAutomat.mutation;

import java.util.LinkedList;

import fmg.fmg8.endlAutomat.conditions.Condition;
import fmg.fmg8.endlAutomat.conditions.mutation.CondMutVerfahren;
import fmg.fmg8.endlAutomat.mutation.mutSeq.MutSeqVerf;
import fmg.fmg8.umgebung2D.Roboter;

/**
* Implementiert eine Mutation, die Code-Sequenzen aus Integer-Zahlern
* mutiert. Welche Mutation dabei zugrundegelegt wird, h�ngt von der
* �bergebenen Implementierung des Interfaces mutationSeq.MutationsVerfahren
* ab.
*
* @author Lukas K�nig
*/
public class MutationSEQ implements CondMutVerfahren {

    /**
     * Das Mutationsverfahren.
     */
    private MutSeqVerf mut;
   
    /**
     * Ob das Verhalten mutiert werden soll.
     */
    private boolean mutVerh;
   
    /**
     * Ob der Translator mutiert werden soll.
     */
    private boolean mutTrans;
   
    /**
     * @param mutSeq  Das Mutationsverfahren f�r Sequenzen.
     * @param verh    Ob das Verhalten durch diese Mutation mutiert werden
     *                soll.
     * @param trans   Ob der �bersetzer durch diese Mutation mutiert werden
     *                soll.
     */
    public MutationSEQ(
            final MutSeqVerf mutSeq,
            final boolean verh,
            final boolean trans) {
        super();
        this.mut = mutSeq;
        this.mutVerh = verh;
        this.mutTrans = trans;
    }

    /**
     * Mutiert, je nach gesetztem Flag, den aktiven Automaten des �bergebenen
     * Roboters und / oder seinen aktiven Translator.
     *
     * @param rob  Der zu mutierende Roboter.
     *
     * @return  Der mutierte Roboter.
     */
    @Override
    public boolean mutiere(final Roboter rob) {
        Roboter rob2;
        LinkedList<Integer> verhSeq;
        LinkedList<Integer> tranSeq;
       
        if (!rob.getClass().equals(Roboter.class)) {
            throw new RuntimeException(
                    "F�r 'MutationSEQ' ist eine Instanz der Klasse Roboter"
                    + " erforderlich. Gefunden wurde: " + rob.getClass());
        }
       
        rob2 = (Roboter) rob;
       
        if (this.mutVerh && rob2.isMutV()) {
            verhSeq = this.mut.mutiere(
                        rob2.getVerhCodes()[rob2.getAktAutNum()]);
            rob2.setAktVCode(verhSeq);
        }
        if (this.mutTrans && rob2.isMutT()) {
            tranSeq = this.mut.mutiere(
                        rob2.getTransCodes()[rob2.getAktAutNum()]);
            rob2.setAktTCode(tranSeq);
        }
       
        return (rob2.isMutV() || rob2.isMutT());
    }

    /**
     * Mutiert eine Bedingung. Zurzeit NICHT implementiert.
     *
     * @param cond  Die zu mutierende Bedingung.
     *
     * @return  Die mutierte Bedingung.
     */
    @Override
    public Condition mutiere(final Condition cond) {
        return cond;
    }
}
TOP

Related Classes of fmg.fmg8.endlAutomat.mutation.MutationSEQ

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.