Examples of Roboter


Examples of fmg.fmg8.umgebung2D.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());
    }
View Full Code Here

Examples of fmg.fmg8.umgebung2D.Roboter

        Knoten zwischKnoten;
        boolean vorhandenAll;
        Iterator<Integer> it;
        Iterator<Integer> it1;
        Iterator<Integer> it2;
        Roboter aktRob = null;
        EndlicherAutomat[] kind;
        ArrayList<Integer> zustaende;
        RobCode[] robC = new RobCode[1];
        Knoten[] knotList = new Knoten[rob.length];
        Condition[] condListe = new Condition[rob.length];
        ArrayList<Long> vert = new ArrayList<Long>(rob.length);
       
        if (rob.length <= 0 || rob[0] == null) {
            SonstMeth.log(SonstMeth.LOG_ERROR,
                          "Kein Roboter zum Rekombinieren �bergeben ("
                          + this + ")",
                          this.pars);
        }
       
        id = rob[0].getId();
        kind = new EndlicherAutomat[rob[0].vAuts().length];
       
        /*
         * Ersetzt alle Vorkommnisse von <code>null</code> im Array rob durch
         * g�ltige im Array weiter vorne stehende Roboter. Dabei wird die
         * Liste der Roboter VOR dem ersten Vorkommnis von <code>null</code>
         * immer wieder �ber das Array gelegt und die null-Werte werden
         * �berschrieben:
         *
         * [1 3 null null null null] => [1 3 1 3 1 3].
         *
         * Wenn nach dem ersten Vorkommnis von <code>null</code> ein g�ltiger
         * Roboter vorkommt (dies ist allerdings kein erw�nschter Fall), dann
         * wird er im Array belassen.
         */
        anzRobs = -1;
        for (int i = 0; i < rob.length; i++) {
            if (rob[i] == null) {
                if (anzRobs < 0) {
                    anzRobs = i;
                }
                rob[i] = rob[i % anzRobs];
            }
        }

        fitness = new int[rob[0].vAuts().length];
       
        for (int i = 0; i < rob[0].vAuts().length; i++) {
            vert.clear();
           
            // Erzeuge Wahrscheinlichkeitsverteilung fitnessproportional.
            for (int j = 0; j < rob.length; j++) {
                if (rob[j].getFitness()[i] > 0) {
                    vert.add(new Long(rob[j].getFitness()[i]));
                } else {
                    vert.add(new Long(0));
                }
            }
           
            aktRob = (Roboter) MathMeth.randVerteilung(rob, vert, this.rand);
            zustaende = aktRob.vAuts()[i].getKnList();
            fitness[i] = aktRob.getFitness()[i];

            kind[i] = new EndlicherAutomat();
            vorhandenAll = true;
           
            // Zust�nde einf�gen.
            it = zustaende.iterator();
            while (it.hasNext()) {
                aktName = it.next();
                for (int j = 0; j < rob.length; j++) {
                    zwischKnoten = rob[j].vAuts()[i].holeKnoten(aktName);
                    if (zwischKnoten != null) {
                        knotList[j] = zwischKnoten;
                    } else {
                        vorhandenAll = false;
                        break;
                    }
                }

                if (vorhandenAll) {
                    zwischKnoten = (Knoten) MathMeth.randVerteilung(knotList,
                                                                    vert,
                                                                    this.rand);
                } else {
                    zwischKnoten = aktRob.vAuts()[i].holeKnoten(aktName);
                }
               
                aktion = ((ZInfo) zwischKnoten.getInfo()).getAktion();
                param = ((ZInfo) zwischKnoten.getInfo()).getParam();
                alt = ((ZInfo) zwischKnoten.getInfo()).getAlter();

                kind[i].einfuegenKnoten(aktName, aktion, param, alt);
            }

            kind[i].setStartBeliebig(); // Setze auf ersten vorh. Knoten.
            if (aktRob.vAuts()[i].holeStartzustand() != null) {
                // Setze auf Startkn, falls vorhanden.
                kind[i].setStart(aktRob.vAuts()[i].holeStartzustand());
            }
           
            // Kanten einf�gen.
            it1 = zustaende.iterator();
            while (it1.hasNext()) {
                kn1 = (Integer) it1.next();
                it2 = zustaende.iterator();
                while (it2.hasNext()) {
                    kn2 = (Integer) it2.next();
                   
                    vorhandenAll = true;
                    if (aktRob.vAuts()[i].kanteExistiert(kn1, kn2)) {
                        for (int j = 0; j < rob.length; j++) {
                            if (rob[j].vAuts()[i].kanteExistiert(kn1, kn2)) {
                                condListe[j] = rob[j].vAuts()[i].getCondZuTrans(
                                                                        kn1,
                                                                        kn2);
                            } else {
                                vorhandenAll = false;
                                break;
                            }
                        }
                       
                        if (vorhandenAll) {
                            zCond = (Condition) MathMeth.randVerteilung(
                                                                    condListe,
                                                                    vert,
                                                                    this.rand);
                        } else {
                            zCond = aktRob.vAuts()[i].getCondZuTrans(kn1, kn2);
                        }
                       
                        kind[i].einfuegKante(kn1, kn2, zCond, 1);
                    }
                }
            }

        }

        String[] codes = new String[rob[0].vAuts().length];
       
        for (int i = 0; i < rob[0].vAuts().length; i++) {
            codes[i] = kind[i].erzeugeStringSeq();
        }
       
       
        // Erzeuge W'keits-Vert. fitprop. f�r Bedingungen.
        vert.clear();
        for (int j = 0; j < rob.length; j++) {
            if (rob[j].getFitSum() > 0) {
                vert.add(new Long(rob[j].getFitSum()));
            } else {
                vert.add(new Long(0));
            }
        }
       
        aktRob = (Roboter) MathMeth.randVerteilung(rob, vert, this.rand);
       
        robC[0] = new RobCode(
                id,
                fitness,
                codes,
                aktRob.getConds(),
                aktRob.getTransStdCodes(),
                SonstMeth.stringAusListSeqs(aktRob.getTransCodes()),
                SonstMeth.stringAusListSeqs(aktRob.getVerhCodes()));
       
        return robC;
    }
View Full Code Here

Examples of fmg.fmg8.umgebung2D.Roboter

     */
    @Override
    public ArrayList<RobCode> rekombiniere(final ArrayList<Roboter> pop) {
        ArrayList<RobCode> kindPop = new ArrayList<RobCode>();
        Roboter[] eltern;
        Roboter aktRob;
        Iterator<Roboter> it = pop.iterator();

        while (it.hasNext()) {
            aktRob = it.next();
            eltern = aktRob.getEltern().holeNahe(aktRob.getPosition().x,
                                                 aktRob.getPosition().y,
                                                 this.pars.getRekAnzEltern());
           
            for (int i = 0; i < this.pars.getRekAnzKinder().intValue(); i++) {
                kindPop.add(this.rekombEinz(eltern)[0]);
            }
View Full Code Here

Examples of fmg.fmg8.umgebung2D.Roboter

            final ArrayList<Roboter> elternPop) {
       
        final int kindAnz = 1;

        Iterator<Roboter> it;
        Roboter rob1;
        Roboter rob2;
        Roboter[] eltern = new Roboter[this.anzElt];
        RobCode[] kinder;
        ArrayList<RobCode> kindPop = new ArrayList<RobCode>();
        HashSet<Roboter> nicht = new HashSet<Roboter>(this.anzElt);
       
View Full Code Here

Examples of fmg.fmg8.umgebung2D.Roboter

     * @return  Die rekombinierte Population als Tupel (ID, Code).
     */
    public ArrayList<RobCode> rekombiniere(
            final ArrayList<Roboter> elternPop) {
        Iterator<Roboter> it;
        Roboter rob1;
        Roboter rob2;
        Roboter[] eltern = new Roboter[this.anzElt];
        RobCode[] kinder;
        ArrayList<RobCode> kindPop = new ArrayList<RobCode>();
        HashSet<Roboter> nicht = new HashSet<Roboter>(this.anzElt);
       
View Full Code Here
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.