Package eas.simulation.spatial.sim2D.marbSimulation

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


    @Override
    public void runDuringSimulation(
            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;
View Full Code Here


     */
    @Override
    public void runBeforeSimulation(
            final EnvironmentEA env,
            final ParCollection params) {
        EnvironmentEA umg = env;
        JPanel pan = new JPanel();
        pan.add(this.links);
        pan.add(this.rechts);
        this.links.setText("000000000");
        this.rechts.setText("000000000");
        this.f.add(pan);
        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

    @Override
    public void runDuringSimulation(
            final EnvironmentEA env,
            final Wink simZyk,
            final ParCollection params) {
        EnvironmentEA umg = env;

        RobEA[] nachbarschaft;
        LinkedList<RobEA> nahe;
        boolean versetzen;
        double grenze = ((Double )params.getParValue(this.selRadPar))
                        * params.getParValueDouble(eas.statistics.ConstantsStatistics.VERZERR_ATTR);
        ArrayList<RobEA> akteure
            = new ArrayList<RobEA>(umg.getRobAgents().size());
       
        while (akteure.size() != umg.getRobAgents().size()) {
            int i = this.random.nextInt(umg.getRobAgents().size());
            if (!akteure.contains(umg.getRobAgents().get(i))) {
                akteure.add(umg.getRobAgents().get(i));
            }
        }

        for (RobEA r1 : akteure) {
            nachbarschaft = umg.holeNahe(
                    r1.getPosition().x,
                    r1.getPosition().y,
                    umg.getRobAgents().size());
           
            nahe = new LinkedList<RobEA>();
            for (RobEA r2 : nachbarschaft) {
                if (r1.getPosition().distance(r2.getPosition()) < grenze) {
                    nahe.add(r2);
                } else {
                    break;
                }
            }

            if (nahe.size() > 1) {
                versetzen = true;
            } else {
                versetzen = false;
            }
           
            for (RobEA r : nahe) {
//                if (this.random.nextDouble() < 1 / nahe.size()) {
                    LinkedList<Integer>[] liste = new LinkedList[1];
                    liste[0] = new LinkedList<Integer>(r1.getVerhCodes()[0]);
                    r.setVerhCodes(liste);
//                }  else {
//                    LinkedList<Integer>[] liste = new LinkedList[1];
//                    liste[0] = new LinkedList<Integer>(r.getVerhCodes()[0]);
//                    r1.setVerhCodes(liste);
//                }
            }

            if (versetzen) {
                umg.setzeRobotRand(r1);
            }
        }
    }
View Full Code Here

    @Override
    public void runDuringSimulation(
            final EnvironmentEA env,
            final Wink simZyk,
            final ParCollection params) {
        EnvironmentEA umg = env;

        // Umschalten Evolution ==> Simulation?
        if (simZyk.getLastTick() <= params.getParValueDouble("TimeToTermination") - 25000) {
            RobEA[] nachbarschaft;
            LinkedList<RobEA> nahe;
            boolean versetzen = false;
            double grenze = ((Double) params.getParValue(this.selRadPar))
                    * params.getParValueDouble(eas.statistics.ConstantsStatistics.VERZERR_ATTR);
            ArrayList<RobEA> akteure = new ArrayList<RobEA>(umg.getRobAgents()
                    .size());

            while (akteure.size() != umg.getRobAgents().size()) {
                int i = this.random.nextInt(umg.getRobAgents().size());
                if (!akteure.contains(umg.getRobAgents().get(i))) {
                    akteure.add(umg.getRobAgents().get(i));
                }
            }

            if (this.singlePars == null) {
                this.singlePars = new LinkedList<String>();
            }

            for (RobEA r1 : akteure) {
                r1.setVersetzt(false);
                nachbarschaft = umg.holeNahe(r1.getPosition().x, r1
                        .getPosition().y, umg.getRobAgents().size());

                nahe = new LinkedList<RobEA>();
                for (RobEA r2 : nachbarschaft) {
                    if (r1.getPosition().distance(r2.getPosition()) < grenze) {
                        nahe.add(r2);
                    } else {
                        break;
                    }
                }

                if (nahe.size() > 1) {
                    versetzen = true;
                } else {
                    versetzen = false;
                }

                if (versetzen) {
                    this.versetzte++;

                    for (RobEA r : nahe) {
                        LinkedList<Integer>[] listeV = new LinkedList[1];
                        LinkedList<Integer>[] listeVStd = new LinkedList[1];
                        listeV[0] = new LinkedList<Integer>(
                                r1.getVerhCodes()[0]);
                        listeVStd[0] = new LinkedList<Integer>(r1
                                .erzeugeSequenz(0));
                        r.erzeugeAusSequenz(0, new EndlicherAutomat()
                                .bereinige(StaticMethods
                                        .stringAusListSeq(listeVStd[0])), null,
                                false);
                        r.setVerhCodes(listeV);
                        r.setTransCode(0, StaticMethods
                                .listSeqAusString(new EndlicherAutomat()
                                        .bereinige(ConstantsTranslator.STD_TRANS_STR)));
                    }
                    umg.setzeRobotRand(r1);
                    r1.setVersetzt(true);

                    String gs = "g"
                            + this.anzahlGute(umg, params)
                            + " / s"
                            + (umg.getRobAgents().size() - this.anzahlGute(umg,
                                    params));

                    this.singlePars.add(this.versetzte + " - " + gs);
                }
            }

            String gs = "g" + this.anzahlGute(umg, params) + " / s"
                    + (umg.getRobAgents().size() - this.anzahlGute(umg, params));
            //
            // this.singlePars.add(this.versetzte + " - " + gs);

            BufferedImage img = new BufferedImage(100, 40,
                    BufferedImage.TYPE_INT_RGB);
            Graphics2D g = img.createGraphics();
            g.setBackground(Color.black);
            g.setColor(Color.yellow);
            g.drawString("" + this.versetzte, 10, 20);
            g.drawString(gs, 15, 30);

            AllroundVideoPlugin video = (AllroundVideoPlugin) umg
                    .getPluginObject(new AllroundVideoPlugin().id());
            if (video != null) {
                video.setDarBild(img);
            }

            if (this.anzahlGute(umg, params) == 0
                    || this.anzahlGute(umg, params) == umg.getRobAgents().size()) {
                this.anz++;
            }

            if (this.anz > 100) {
                String zus = "";
                if (this.anzahlGute(umg, params) == 0) {
                    zus = "_alleschlecht";
                }
                if (this.anzahlGute(umg, params) == umg.getRobAgents().size()) {
                    zus = "_allegut";
                }
                StaticMethods.speichereTextAusArray(params.getStdDirectory(), params
                        .getParValue("avifile")
                        + zus + ".txt", this.singlePars, params);
                this.gespeichert = true;
                umg.beendeSimulation();
            }

            if (simZyk.isTick() && simZyk.getLastTick() % 100 == 0) {
                StaticMethods.log(StaticMethods.LOG_INFO, this.id() + " - " + gs,
                        params);
View Full Code Here

     */
    @Override
    public void runBeforeSimulation(
            final EnvironmentEA env,
            final ParCollection params) {
        EnvironmentEA umg = env;

        this.random = new Random(params.getSeed());
        ArrayList<RobEA> akteure = new ArrayList<RobEA>(umg.getRobAgents());
        int anzGute = (Integer) params.getParValue("anzahlgute");
        int anzSchlechte = (Integer) params.getParValue("anzahlschlechte");
        ArrayListInt gut = (ArrayListInt) params.getParValue("guterautomat");
        ArrayListInt schlecht
            = (ArrayListInt) params.getParValue("schlechterautomat");
        String[] seqGut = new String[1];
        seqGut[0] = EndlicherAutomat.bereinigeStatic(gut.toString());
        String[] seqSchlecht = new String[1];
        seqSchlecht[0] = EndlicherAutomat.bereinigeStatic(schlecht.toString());
       
        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);
            }
        }
       
        for (RobEA r : umg.getRobAgents()) {
            r.setUnfallSimDrehung((Double) params
                    .getParValue(this.unfallSimDrehung));
        }

        params.setParValue(AllroundVideoPlugin.ZUSATZ_BILD_PAR, "extern");
View Full Code Here

     */
    @Override
    public void runAfterSimulation(
            final EnvironmentEA env,
            final ParCollection params) {
        EnvironmentEA umg = env;

        if (!this.gespeichert) {
            String zus = "";
            if (this.anzahlGute(umg, params) == 0) {
                zus = "_alleschlecht";
            }
            if (this.anzahlGute(umg, params) == umg.getRobAgents().size()) {
                zus = "_allegut";
            }
           
            StaticMethods.speichereTextAusArray(
                    params.getStdDirectory(),
View Full Code Here

    }
   
    @Override
    public EnvironmentEA[] generateRunnables(ParCollection params) {
        EnvironmentEA[] envs = new EnvironmentEA[1];
        envs[0] = new EnvironmentEA(new Random(params.getSeed()),0 , params, null, "TrajectoryArena");
        return envs;
    }
View Full Code Here

     * @param params
     *            der Parametersatz.
     */
    @Override
    public void runBeforeSimulation(final EnvironmentEA env, final ParCollection params) {
        EnvironmentEA umg = env;

        this.pars = params;
        this.rand = new Random(params.getSeed());
        this.trailFeld = new double[umg.getFeld().length]
                                   [umg.getFeld()[0].length];
        this.paramKorrigieren();

        ArrayList<RobEA> zuloeschen = new ArrayList<RobEA>(umg.getRobAgents()
                .size());
        int schleimanz;

        // Roboter löschen.
        zuloeschen.addAll(umg.getRobAgents());
        for (RobEA r : zuloeschen) {
            umg.removeAgent(r);
        }

        // Schleim hinzufügen.
        schleimanz = (int) (umg.getFeld().length
                * umg.getFeld()[0].length
                * (Double) this.pars
                        .getParValue(Schleim.SLIME_PROZ_P_ATT) / 100);

        for (int i = 0; i < schleimanz; i++) {
            RobEA r = new RobEA(i, umg, this.pars, this.rand);
            umg.hinzuRobotRand(r);
        }

        XMLAufnahmePlugin aufnahmePlug = (XMLAufnahmePlugin) umg
                .getPluginObject(new XMLAufnahmePlugin().id());

        if (aufnahmePlug != null) {
            aufnahmePlug.setAufnahme(
                    new XMLAufnSpeichern(this.pars, schleimanz, umg),
View Full Code Here

    @Override
    public void runDuringSimulation(
            final EnvironmentEA env,
            final Wink simZyk,
            final ParCollection params) {
        EnvironmentEA umg = env;

        // Aktuatorik:
        for (RobEA r : umg.getRobAgents()) {
            if (this.vorwaerts(r)) {
                this.depositTrail(r.getPosition());
            } else {
                r.setAngle(this.rand.nextDouble() * 360);
            }
        }

        // Sensorik:
        for (RobEA r : umg.getRobAgents()) {
            double sensF = this.sensWert(r, "F");
            double sensFL = this.sensWert(r, "FL");
            double sensFR = this.sensWert(r, "FR");

            if (sensF > sensFL && sensF > sensFR) {

            } else if (sensF < sensFL && sensF < sensFR) {
                boolean left = this.rand.nextBoolean();
                if (left) {
                    r.setAngle(r.getAngle()
                            + (Double) this.pars
                                    .getParValue(Schleim.SLIME_RA_ATT));
                } else {
                    r.setAngle(r.getAngle()
                            - (Double) this.pars
                                    .getParValue(Schleim.SLIME_RA_ATT));
                }
            } else if (sensFL < sensFR) {
                r.setAngle(r.getAngle()
                        - (Double) this.pars
                                .getParValue(Schleim.SLIME_RA_ATT));
            } else if (sensFL > sensFR) {
                r.setAngle(r.getAngle()
                        + (Double) this.pars
                                .getParValue(Schleim.SLIME_RA_ATT));
            }
        }

        // Diffuse trail / store picture:
        this.diffuseTrail();
       
        AllroundVideoPlugin video
            = (AllroundVideoPlugin) umg.getPluginObject(new AllroundVideoPlugin().id());
        if (video != null) {
            video.setDarBild(this.erzeugeFeldBild());
        }
    }
View Full Code Here

    }
   
    @Override
    public EnvironmentEA[] generateRunnables(ParCollection params) {
        EnvironmentEA[] envs = new EnvironmentEA[1];
        envs[0] = new EnvironmentEA(new Random(params.getSeed()), 0, params, null, "TrajectoryArena");
        return envs;
    }
View Full Code Here

TOP

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

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.