Package fmg.fmg8.statistik

Source Code of fmg.fmg8.statistik.PopSnapshot

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

package fmg.fmg8.statistik;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;

import fmg.fmg8.umgebung2D.Roboter;
import fmg.fmg8.umgebung2D.Vektor2D;



/**
* Serialisierbare Klasse zur Beschreibung eines Populationsschnappschusses.
*
* @author Lukas K�nig
*/
public class PopSnapshot implements Serializable {
   
    /**
     * Die Versions-ID vom 01.04.2008.
     */
    private static final long serialVersionUID = 7723890308243806530L;

    /**
     * Liste von Roboterschnappsch�ssen.
     */
    private RobSnapshot[] robSchnapp;
   
    /**
     * Die Verschiebungen der Gegenst�nde.
     */
    private Vektor2D[] verschiebungen;
   
    /**
     * Identifikationsnummer des Schnappschusses. F�r Schnappsch�sse A, B zu
     * den Zeitpunkten tA, tB MUSS immer gelten:
     *
     * - tA < tB => A.id < B.id und
     * - A != B => A.id != B.id.
     */
    private long id;

    /**
     * Der Konstruktor erzeugt Roboterschnappsch�sse f�r alle Roboter der
     * Liste.
     *
     * @param roboter        Liste von Robotern, von denen ein Schnappschuss
     *                       gespeichert werden soll.
     * @param ggstVerschbgn  Die Verschiebungen der Gegenst�nde.
     * @param ident          Identifikationsnummer des
     *                       Populationsschnappschusses.
     *                       Bitte Kommentar zu Attribut beachten!
     * @param autSp          Ob die Automaten gespeichert werden sollen.
     */
    public PopSnapshot(final List<Roboter> roboter,
                       final List<Vektor2D> ggstVerschbgn,
                       final long ident,
                       final boolean autSp) {
        Roboter aktRob;
        Vektor2D aktVersch;
        Iterator<Roboter> it1 = roboter.iterator();
        Iterator<Vektor2D> it2 = ggstVerschbgn.iterator();
       
        this.verschiebungen = new Vektor2D[ggstVerschbgn.size()];
        this.robSchnapp = new RobSnapshot[roboter.size()];
       
        int i = 0;
        while (it1.hasNext()) {
            aktRob = it1.next();
            this.robSchnapp[i] = new RobSnapshot(aktRob, autSp);
            i++;
        }
       
        i = 0;
        while (it2.hasNext()) {
            aktVersch = it2.next();
            this.verschiebungen[i] = new Vektor2D(aktVersch);
            i++;
        }
       
        this.id = ident;
    }

    /**
     * @return Returns the robSchnapp.
     */
    public RobSnapshot[] getRobSchnapp() {
        return this.robSchnapp;
    }

    /**
     * @return Returns the id.
     */
    public long getId() {
        return this.id;
    }

    /**
     * Die toString-Methode.
     *
     * @return  Ausgabe des Objekts.
     */
    public String toString() {
        String s = "";
       
        s = s + "Populations-Snapshot Nummer: " + this.id + "\n";
        s = s + "============================";
       
        for (int i = 0; i < this.robSchnapp.length; i++) {
            s = s + this.robSchnapp[i] + "\n";
        }
       
        s = s + "\nVerschiebungen:";
       
        if (this.verschiebungen != null) {
            for (int i = 0; i < this.verschiebungen.length; i++) {
                s = s + " " + this.verschiebungen[i];
            }
        }
       
        return s;
    }
   
    /**
     * Gibt die Summe der Fitnesswerte aller Robotersnapshots dieses
     * Populationssnapshots zur�ck.
     *
     * @return  Die Summe der Fitnesswerte.
     */
    public long getFitSum() {
        long sum = 0;
       
        for (int i = 0; i < this.robSchnapp.length; i++) {
            for (int j = 0; j < this.robSchnapp[i].getFitness().length; j++) {
                sum += this.robSchnapp[i].getFitness()[j];
            }
        }
       
        return sum;
    }

    /**
     * @return Returns the verschiebungen.
     */
    public Vektor2D[] getVerschiebungen() {
        return this.verschiebungen;
    }
}
TOP

Related Classes of fmg.fmg8.statistik.PopSnapshot

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.