Package eas.simulation.spatial.sim2D.marbSimulation

Examples of eas.simulation.spatial.sim2D.marbSimulation.RobEA


            final EnvironmentEA env,
            final Wink simZyk,
            final ParCollection params) {
        EnvironmentEA umg = env;
       
        RobEA r = umg.getAgents().get(0);
        double links = this.linksD;
        double rechts = this.rechtsD;
        if (this.linksD == 0 && this.rechtsD == 0 && !this.geleert) {
            umg.leereFeld();
            this.geleert = true;
        }
        if (simZyk.getLastTick() % 100 == 0) {
            this.linksD = new Random().nextDouble() * 10 - 1;
            this.rechtsD = new Random().nextDouble() * 10 - 1;
        }
        r.setGeschRadLinks(links);
        r.setGeschRadRechts(rechts);
        if (!r.vorwaerts()) {
            r.unfallSimulation(360);
        }
    }
View Full Code Here


        this.links.addKeyListener(this);
        this.rechts.addKeyListener(this);
        this.f.setVisible(true);
        this.f.setBounds(700, 10, 200, 100);
       
        RobEA r = umg.getAgents().get(0);
        r.setAktVCode(new LinkedList<Integer>());
        r.setPos(umg.getFeld().length / 2, umg.getFeld()[0].length / 2, false);
    }
View Full Code Here

        Condition zCond;
        int aktion;
        int param;      
        int alt;
        boolean istStart;
        RobEA aktRob;
        Condition[] condListe = new Condition[rob.length];
        int j = -1;
       
        /*
         * 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 kein erwünschter Fall), dann wird er
         * im Array belassen.
         */
        for (int i = 0; i < rob.length; i++) {
            if (rob[i] == null) {
                if (j < 0) {
                    j = i;
                }
                rob[i] = rob[i % j];
            }
        }
       
        for (int i = 0; i < rob.length; i++) {
            if (rob[i].getFitness()[0] > 0) {
                vert.add(new Long(rob[i].getFitness()[0]));
            } else {
                vert.add(new Long(0));
            }
        }

        aktRob = (RobEA) MiscMath.randVerteilung(rob, vert, this.rand);
        zustaende = aktRob.vAuts()[0].getKnList();
        fitness = aktRob.getFitness()[0];
       
        vorhandenAll = true;
       
        it = zustaende.iterator();
        while (it.hasNext()) {
            aktName = it.next();
            for (int i = 0; i < rob.length; i++) {
                zwischKnoten = rob[i].vAuts()[0].holeKnoten(aktName);
                if (zwischKnoten != null) {
                    knotenListe[i] = zwischKnoten;
                } else {
                    vorhandenAll = false;
                    break;
                }
            }
           
            if (vorhandenAll) {
                zKnoten = (Knoten) MiscMath.randVerteilung(knotenListe,
                                                           vert,
                                                           this.rand);
            } else {
                zKnoten = aktRob.vAuts()[0].holeKnoten(aktName);
            }
           
            aktion = (zKnoten.getInfo()).getAktion();
            param = (zKnoten.getInfo()).getParam();
            alt = (zKnoten.getInfo()).getAlter();
            istStart = (zKnoten.getInfo()).istStartZ();
           
            kind.einfuegenKnoten(aktName, aktion, param, alt);
            if (istStart) {
                kind.setStart(kind.holeKnoten(aktName));
            }
        }
       
        it1 = zustaende.iterator();
        while (it1.hasNext()) {
            kn1 = it1.next();
            it2 = zustaende.iterator();
            while (it2.hasNext()) {
                kn2 = it2.next();
               
                vorhandenAll = true;
                if (aktRob.vAuts()[0].kanteExistiert(kn1, kn2)) {
                    for (int i = 0; i < rob.length; i++) {
                        if (rob[i].vAuts()[0].kanteExistiert(kn1, kn2)) {
                            condListe[i] = rob[i].vAuts()[0].getCondZuTrans(kn1,
                                                                           kn2);
                        } else {
                            vorhandenAll = false;
                            break;
                        }
                    }
                   
                    if (vorhandenAll) {
                        zCond = (Condition) MiscMath.randVerteilung(condListe,
                                                                    vert,
                                                                    this.rand);
                    } else {
                        zCond = aktRob.vAuts()[0].getCondZuTrans(kn1, kn2);
                    }
                   
                    kind.einfuegKante(kn1, kn2, zCond, 1);
                }
            }
        }

        /*
         * TODO: Alter der Knoten UND Kanten.
         */
       
        int[] fits = new int[1];
        String[] codes = new String[1];
        fits[0] = (int) fitness;
        codes[0] = kind.erzeugeStringSeq();
       
        robC[0] = new RobCode(
                id,
                fits,
                codes,
                aktRob.getConds(),
                aktRob.getTransStdCodes(),
                StaticMethods.stringAusListSeqs(aktRob.getTransCodes()),
                StaticMethods.stringAusListSeqs(aktRob.getVerhCodes()));
       
        return robC;
    }
View Full Code Here

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

        while (it.hasNext()) {
            aktRob = it.next();
            eltern = aktRob.getEnvironmentEA().holeNahe(
                    aktRob.getPosition().x,
                    aktRob.getPosition().y,
                    this.pars.getParValueInt(EvolutionPluginCompletelyEvolvable.REK_ELT));
           
            for (int i = 0; i < 1; i++) { // Konstant 1 Kind.
                kindPop.add(this.rekombEinz(eltern)[0]);
            }
View Full Code Here

        Knoten zwischKnoten;
        boolean vorhandenAll;
        Iterator<Integer> it;
        Iterator<Integer> it1;
        Iterator<Integer> it2;
        RobEA 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) {
            StaticMethods.log(StaticMethods.LOG_ERROR,
                          "Kein Roboter zum Rekombinieren übergeben ("
                          + this + ")",
                          this.pars);
        }
       
        id = rob[0].id();
        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 = (RobEA) MiscMath.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) MiscMath.randVerteilung(knotList,
                                                                    vert,
                                                                    this.rand);
                } else {
                    zwischKnoten = aktRob.vAuts()[i].holeKnoten(aktName);
                }
               
                aktion = (zwischKnoten.getInfo()).getAktion();
                param = (zwischKnoten.getInfo()).getParam();
                alt = (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 = it1.next();
                it2 = zustaende.iterator();
                while (it2.hasNext()) {
                    kn2 = 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) MiscMath.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 = (RobEA) MiscMath.randVerteilung(rob, vert, this.rand);
       
        robC[0] = new RobCode(
                id,
                fitness,
                codes,
                aktRob.getConds(),
                aktRob.getTransStdCodes(),
                StaticMethods.stringAusListSeqs(aktRob.getTransCodes()),
                StaticMethods.stringAusListSeqs(aktRob.getVerhCodes()));
       
        return robC;
    }
View Full Code Here

        if (params.getParValueBoolean("UseTranslatorWITHCompletingTransitions")) {
            transs[0] = eas.simulation.spatial.sim2D.marbSimulation.translator.ConstantsTranslator.getStdTranslatorBE(params);
        } else {
            transs[0] = ConstantsTranslatorWOC.getStdTranslatorBE(params);
        }
        RobEA rob = new RobEA(
                robcode.getVStdCodes(),
                null,
                umg,
                robcode.getId(),
                params,
View Full Code Here

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

        while (it.hasNext()) {
            aktRob = it.next();
            eltern = aktRob.getEnvironmentEA().holeNahe(
                    aktRob.getPosition().x,
                    aktRob.getPosition().y,
                    this.pars.getParValueInt(EvolutionPluginCompletelyEvolvable.REK_ELT));
           
            for (int i = 0; i < 1; i++) { // Konstant 1 Kind.
                kindPop.add(this.rekombEinz(eltern)[0]);
            }
View Full Code Here

        if (anzGute >= 0 && anzSchlechte >= 0) {
            for (RobEA r : akteure) {
                umg.removeAgent(r);
            }
            for (int i = 0; i < anzGute; i++) {
                RobEA rGut = new RobEA(i, umg, params, this.random);
                rGut.erzeugeAusSequenz(0, seqGut[0], null, false);
                rGut.setVerhCodes(StaticMethods.listSeqAusStrings(seqGut));

                umg.hinzuRobotRand(rGut);
            }
            for (int i = anzGute; i < anzGute + anzSchlechte; i++) {
                RobEA rSchlecht = new RobEA(i, umg, params, this.random);
                rSchlecht.erzeugeAusSequenz(0, seqSchlecht[0], null, false);
                rSchlecht.setVerhCodes(StaticMethods.listSeqAusStrings(seqSchlecht));
               
                umg.hinzuRobotRand(rSchlecht);
            }
        }
       
View Full Code Here

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

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

     */
    @Override
    public ArrayList<RobCode> rekombiniere(
            final ArrayList<RobEA> elternPop) {
        Iterator<RobEA> it;
        RobEA rob1;
        RobEA rob2;
        RobEA[] eltern = new RobEA[this.anzElt];
        RobCode[] kinder;
        ArrayList<RobCode> kindPop = new ArrayList<RobCode>();
        HashSet<RobEA> nicht = new HashSet<RobEA>(this.anzElt);
       
View Full Code Here

TOP

Related Classes of eas.simulation.spatial.sim2D.marbSimulation.RobEA

Copyright © 2018 www.massapicom. 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.