Package fmg.fmg8.statistik

Source Code of fmg.fmg8.statistik.SemStatistik

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

package fmg.fmg8.statistik;

import fmg.fmg8.endlAutomat.ZInfo;
import fmg.fmg8.graphVis.graph.Knoten;
import fmg.fmg8.sonstiges.DateiFilter;
import fmg.fmg8.umgebung2D.Roboter;
import fmg.fmg8.umgebung2D.VisMantel;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;



/**
* Klasse f�r statistische Operationen semantischer Natur auf Roboterautomaten.
*
* @author Lukas K�nig
*/
public final class SemStatistik {

    /**
     * Konstruktor.
     */
    private SemStatistik() {

    }

    /**
     * Gibt die Anzahl der Automaten in der Liste graphen zur�ck, die
     * mindestens einen Zustand mit dem �bergebenen Befehl haben.
     *
     * @param bef      Der zu suchende Befehl.
     * @param positiv     Ob in den Positiven gesucht werden soll (sonst
     *                    negativ).
     * @param erreichbar  Ob nur vom Startzustand aus erreichbare Zust�nde
     *                    ber�cksichtigt werden sollen.
     * @param verzeichnis  Das Verzeichnis, in dem die Graphen gespeichert sind.
     */
    private void anzahlBef(final int     bef,
                           final boolean positiv,
                           final boolean erreichbar,
                           final String  verzeichnis) {
       
        File verz = new File(verzeichnis);
        String endung = fmg.fmg8.graphVis.Konstanten.GRAPH_ENDUNG;
        String[] gespGr = verz.list(new DateiFilter(endung));
        ArrayList<Integer> a;
        Iterator<Integer> it2;
        int anzahl = 0;
        Roboter aktRob;
        Knoten l;
        int gesAnz = 0;
        String[] verzPar = {"verz", verzeichnis};
        Parametersatz params = new Parametersatz(verzPar);
        params.ergaenze();
       
       
        if (positiv) {
            System.out.println("Positive Automaten:");
        } else {
            System.out.println("Negative Automaten:");
        }
       
        for (int i = 0; i < gespGr.length; i++) {
            System.gc();
            if ((!positiv
                && (gespGr[i].contains("-")
                    || gespGr[i].contains("_0")))
                || positiv
                && !(gespGr[i].contains("-")
                     || gespGr[i].contains("_0"))) {
               
                gesAnz++;
               
                aktRob = new VisMantel(
                        gespGr[i].substring(0, gespGr[i].length() - 4),
                        null,
                        null,
                        null,
                        null,
                        -1,
                        params,
                        false,
                        null).getRob();

                a = aktRob.vAuts()[0].getKnList();
               
                it2 = a.iterator();
                while (it2.hasNext()) {
                    l = aktRob.vAuts()[0].holeKnoten(it2.next());
                    if (((ZInfo) ((Knoten) l).getInfo()).getAktion()
                            == bef) {
                        if (!erreichbar
                            || aktRob.vAuts()[0].erreichbar(null,
                                                               l.holeName())) {
                                anzahl++;
                                System.out.println(anzahl
                                                   + "/"
                                                   + gesAnz
                                                   + " "
                                                   + gespGr[i]);
                                break;
                        }
                    }
                }
            }
        }
    }
   
    /**
     * Hauptmethode.
     *
     * @param args  Argumentenliste (0: Verzeichnisname f�r Statistikgraphen).
     */
    public static void main(final String[] args) {
        SemStatistik stats = new SemStatistik();
       
        stats.anzahlBef(3, true, true, args[0]);
        stats.anzahlBef(3, false, true, args[0]);
    }
}
TOP

Related Classes of fmg.fmg8.statistik.SemStatistik

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.