Untersuchung des Berechnungsaufwands bei Antwortmengenprogrammierung
--------------------------------------------------------------------

Diese Datei enthlt Informationen die zur Nutzung der Daten auf dieser DVD ntzlich sind.


Benutzerhinweise
----------------

Alle Daten auf dieser DVD, bis auf die im Verzeichnis "Texte" und seinen Unterverzeichnissen, unterliegen der GNU GENERAL PUBLIC LICENSE Version 2, Juni 1991. Nheres zu GNU GENERAL PUBLIC LICENSE im Verzeichnis "gpl". Die Rechte der Daten im Verzeichnis "Texte", entsprechen den Rechten so wie sie von den Autoren der einzelnen Dokumente vergeben werden.

Die Dateien "diplom_main.ps" und "diplom_main.pdf" im DVD Stammverzeichnis enthalten den Diplomtext.


Verzeichnisse
-------------

Texte: Das Verzeichnis "Texte" enthlt untergliedert nach Bereichen, Dokumente die fr diese Arbeit relevant sind. Im Unterverzeichnis "Sonstiges" sind Texte zu finden, die nicht aus dem KI-Bereich kommen.

gpl: Dieses Verzeichnis enthlt die GNU GENERAL PUBLIC LICENSE in verschiednen Textformversionen.

BMTool: Dieses Verzeichnis enthlt die Dateien zu dem BMTool Tool von Wolfgang Faber. BMTool dient zum Abspeichern und Auswerten von Daten, die von Smodels oder hnlichen Programmen ausgegeben werden.

diplomtext: Dieses Verzeichnis enthlt den Quelltext zur Dokumentation fr die vorliegende Arbeit.

graphen: Enthlt einige Diagramme in Schnform. Es diente als Recurce fr die Dokumentation.


Folgende Verzeichnisse sind Testreihenverzeichnisse von Testreihen die nher in der Dokumentation beschrieben sind: cases; cases1; casesAll (wie cases nur wurde die richtige Anzahl der Antwortmengen abgespeichert); casesN; casesMix; casesCon; casesConR; graph1

Daneben gibt es noch weitere Testreihenverzeichnisse auf die nicht weiter eingegangen wurde:
casesMixNLA: Wie caseMix jedoch wurde bei smodels der lookahead ausgeschaltet. Die Daten sind wenig aussagekrftig, da keine Zeit war, aussagekrftige Bereiche zu erreichen.

casesNN1: Wie die Testreihe cases1 nur wird der Nomore++ 1.2 Solver verwendet.

racingR: Ist eine Testreihe fr das racing robots Problem. Nheres dazu in der Datei "racingR.ps", die sich in diesem Verzeichnis befindet. In dieser Testreihe konnten nicht gengend Daten erhoben werden.

smod1Point: Dieses Verzeichnis enthlt einige Unterverzeichnisse fr die Verschiedenen Testreihen, fr die in den Unterverzeichnissen fr einen Testreihenpunkt mehrere Probleme generiert und dann, nur fr diese Testpunkte, ausgewertet wurden. In ihm befinden sich also Untersuchungen fr einzelne Testreihenpunkte.



Daten in den Testreihenverzeichnissen
-------------------------------------

Dateien:

Im nachfolgenden sind die Dateien, die in den Testreihenstammverzeichnissen zu finden sind, kurz beschrieben.
Das "*" Zeichen steht dabei fr ein Namenszusatz der unterschiedliche Versionen der Datei voneinander abgrenzt, z.B. den Testreihengenerator fr Smodels ("generator.cpp") von dem fr Nomore++ ("generatorN.cpp").

generator*.cpp: Diese Datei enthlt den Generator fr die Testreihe. Namenszustze sind: "Fak" fr konstanten R/A Faktor; "A" fr alle; "M" fr gemischte Krperlnge; "C" fr gemischte Krperlnge mit verbundenen Programmen; "N" fr Nomore++ 
Die Generatordatei fr die Testreihe graph1 heit graph.cpp und fr die Testreihe racing robots "genRR.cpp".
mersenne.cpp mersenne.h: Diese Dateien beinhalten eine Zufallsgenerator der fr den Generator bentigt wird.

bereiche.txt: In dieser Datei sind die jeweiligen Bereiche angegeben fr die die Testreihe erhoben wurde.

spoint*.txt: Hier werden die Parameter fr den nchsten Starttestreihenpunkt gespeichert, bei ihm wird die Testreihen bei einem Neustart des Generators wieder aufgenommen. Die Werte werden in der Form: "Literale;Regeln;Atome;" gespeichert oder bei dem Namenszusatz "f" "Litaerale;Faktor;Atome".

todo*.cpp todo*.txt: Mit der Datei "todo*.cpp" wird die Datei "todo*.txt" generiert. Diese enthlt eine Liste von Parametern fr die Testpunkte der Testreihe, welche noch generiert werden sollen. Fr jeden Testpunkt gibt es eine Zeile der Form: "Literale;Regeln;Atome;" abgeschlossen wird die Datei mit der Zeile "0.". 
Es wird entweder die Methode fr "spoint*.txt" oder "todo*.txt" zum Durchlaufen der Testpunkte verwendet. Wenn "todo*.txt" verwendet wird, fngt der Generator bei dem Testpunkt der ersten Zeile in ihr an. Der Generator lscht keine Zeilen aus der "todo*.txt" Datei.

Der Generator kann mit "strg + c" jederzeit abgebrochen werden. Dann sollte eine eventuelle Testpunktergebnisdatei im Verzeichnis "ergebnisse" die unvollstndig ist (die Datei des letzten generierten Testpunktes kann unvollstndig sein) gelscht werden. Wenn die Datei "todo*.txt" verwendet wird, sollten manuell die Eintrge gelscht werden, von denen die Testpunkte nicht mehr generiert werden sollen (weil dies schon geschehen ist).

evalueAll*.cpp: Dieses Programm dient zum Auswerten der Testreihe. Dabei werden von den vorhandenen Daten Untertestreihen gebildet und fr diese Tabellen und Diagramme in einem eigenen Unterverzeichnissen im Verzeichnis "tabellen" erzeugt.
Fr dreidimensionalen Diagrammen werden nur groflchig erhobene Bereiche benutzt, allerdings knnen auch in diesem Bereiche ohne Daten vorhanden sein, so das solche Diagramme Teilweise irrefhrend sein knnen.
evalueAllIO*.cpp: Ist eine Hilfsdatei zu "evalueAll*.cpp". In ihr sind die Methoden zur Ein- und Ausgabe der Daten, fr die Auswertung, zu finden.

info.txt: Enthlt einige allgemeine Informationen. 


Verzeichnisse:

ergebnisse: In diesem Verzeichnis sind die Daten der erhobenen Testreihe des Testreihenverzeichnisses zu finden, nheres dazu im Abschnitt "Ergebnisformat".

tabellen: Hier sind die Auswertungen der Untertestreihen, meist in eigenen Unterverzeichnissen, zu finden, nheres dazu im Abschnitt "Diagramme". Diese Verzeichniss kann auch in komprimierter Form als zip-File vorliegen.


Allgemeine Abkrzungen
----------------------

A = Atome (atoms)
C;R = Regeln (rules)
L = (durchschnittliche) Krperliterale ((average) literals per body), wenn durchschnittlichen Literale angegeben sind (z.B. bei casesMix), sind sie mit 10 multipliziert, L12 bedeutet also durchschnittlich 1.2 Literale pro Krper
V = Knoten (vertices) oder dass der zugehrige Wert variabel ist
E = Kanten (edges)
F = Faktor mit dem etwas multipliziert wurde
D3 = dreidimensional

Die Kurznotation die meist verwendet wird, besteht jeweils aus der Abkrzung des entsprechenden Parameters gefolgt von dem Wert den er einnimmt oder einem "V" wenn er variabel ist, "A10RV" bedeutet bei 10 Atomen mit variabler Regelzahl.


Ergebnisformat
---------------

In den Testreihenverzeichnissen befindet sich jeweils ein Unterverzeichnis "ergebnisse", in diesem befinden sich die Ergebnisse der einzelnen Testlufe. Jeder Testpunkt besitzt dabei eine eigene "*.txt" Datei, in der meist (bis auf bei smod1Point) die Daten fr 1000 Problem gespeichert sind. Im Dateinamen sind die Generierungsparameter gespeichert. Der Name der Testpunktdateien beginnen alle mit "atw" worauf die Generierungsparameter in der Kurznotation folgen.

Die Testpunktdatei beginnt immer mit einem Einleitungsteil, in der zuerst der verwendete Solver mit Versionsnummer steht und dann kommt der Tabellenanfang, danach kommt Zeilenweise die Testparameter (Problemparameter und Testergebnisse) fr die einzelnen Probleme bzw. Programme, beendet wird die Datei mit dem Tabellenabschluss (der Form:"----+-----------+").

Die Testparameter fr ein Problem (in einer Zeile) sind bei den Testreihen in der folgenden Reihenfolge gespeichert, dabei sind die Zeichen "|" und ";" die Trennzeichen fr die Parameter in der Datei.
Bei der Anzahl der Antwortmenge steht "NV", wenn keine Antwortmengen gefunden wurden.

Bei den Testreihen cases haben die Testparameter fr ein Problem die Form:
Problemname | Berechnungszeit; choice points; wrong choices; Anzahl der Antwortmenge; truth assignments; Anzahl der Atome; Anzahl der Regeln |

Bei den Testreihen cases ist die Anzahl der Atome und Regeln nicht fr alle Testpunkten abgespeichert und bei der Anzahl der Antwortmenge steht immer "1", wenn Antwortmengen gefunden wurden (also nicht wie viele gefunden wurden).


Bei den Testreihen cases1, casesAll,  casesMix, casesMixNLA, casesCon, casesConR, graph1, racingR und smod1Point haben die Testparameter fr ein Problem die Form:
Problemname | Berechnungszeit; choice points; wrong choices; Anzahl der Antwortmenge; truth assignments; Anzahl der Atome; Anzahl der Regeln; Suchraum (search space) |

Bei der Testreihe graph1 gibt es noch ein zustzliches Verzeichnis "ergebnisseL" indem fr die Testpunkte Dateien stehen, in denen ein Parameter fr die durchschnittlichen Literalanzahl pro Regelkrper angegeben ist. Da es bei Smodels noch zustzliche Konstrukte zu den normalen Regeln gibt (z.B. choice rules) ist der ermittelte Wert fr die durchschnittlichen Literalanzahl pro Regelkrper, nur ein Schtzwert.
Bei der vorliegenden Version des Generators fr graph1 und racingR wird hinter dem Wert fr den Suchraum noch der Wert fr die durchschnittlichen Literalanzahl pro Regelkrper ausgegeben (getrennt durch ein ";").


Bei casesN haben die Testparameter fr ein Problem die Form:
Problemname | Berechnungszeit; choice points; Anzahl der Antwortmenge; Anzahl der Atome; Anzahl der Regeln |

Bei den Testreihen casesN ist die Anzahl der Atome und Regeln nicht fr alle Testpunkten abgespeichert und bei der Anzahl der Antwortmenge steht immer "1", wenn Antwortmengen gefunden wurden (also nicht wie viele gefunden wurden).


Bei casesNN1 haben die Testparameter fr ein Problem die Form:
Problemname | Berechnungszeit; choice points; choices; Anzahl der Antwortmenge |


Untertestreihen Namen
---------------------

Im Verzeichniss "tabellen" befinden sich fr die Untertestreihen jeweils ein Verzeichnis beginnend mit "erg" gefolgt von der Beschreibung der Untertestreihe in der Notation der allgemeinen Abkrzungen.
"erL2A100CV" bedeutet beispielsweise: Die Diagramme beziehen sich auf die Untertestreihen mit 2 Literalen pro Krper und bei den Programmen waren 100 Atome mglich, die Regelanzahl ist variabel (oder frei) und damit auf der x-Achse aufgetragen.


Diagramme
---------

Die Namen von Verzeichnissen fr Untertestreihen beginnen mit "erg" fr Ergebnisse, gefolgt von einen Namenskrzel fr die Bezeichnung der Untertestreiche. Dieser Namenskrzel ist in allgemeiner Notation, Parameter, die fr die Testreihe frei sind, werden von einem "V" gefolgt. Das Krzel "D3" am Anfang des Namenskrzels bedeutet, dass die Testreihe in 3 dimensionale Diagrammen dargestellt wird.

In den Untertestreihenverzeichnisse befindet sich noch zwei "*.txt" Datei. Die Datei "HS*.txt" enthlt eine Tabelle mit Tabellenkopf, deren Spalten mit dem Zeichen ";" voneinander getrennt sind (die Datei kann z.B. als Excel-Import verwendet werden).
Die Datei "HSGr*.txt" enthlt eine Tabelle mit den gleichen Daten ohne Kopf und mit Leerzeichen als Spaltentrennzeichen (sie kann z.B. als Gnuplot Eingabe dienen). Die Reihenfolge der Werte kann in der Methode "writeResultBl()" der Datei "evalueAllIO*.cpp" der Testreihe nachgeschlagen werden.

Es gibt zwei Arten von Diagrammen und Untertestreihen, zweidimensionale und dreidimensionale.
Der Name von Diagrammen besteht aus mehreren Komponenten.

Dreidimensionale Diagramme und Untertestreihen sind in zwei Generierungsparametern variabel, diese sind im Verzeichnissnamen mit einem dahinterstehenden "V" gekennzeichnet, die variablen Parameter besitzen sie als x-Achse und als y-Achse.

Zweidimensionale Diagramme und Untertestreihen sind in einen Generierungsparameter variabel, dieser ist im Verzeichnissnamen mit einem dahinterstehenden "V" gekennzeichnet, den variabel Parameter besitzen sie als x-Achse.

Da die Diagramme auf dieser DVD grtenteils automatisch generiert wurden, sind sie teilweise kritisch zu betrachten. Gerade die dreidimensionalen Diagramme sehen teilweise seltsam aus, weil Gnuplot Schwierigkeiten hatte die Kurvenoberflche aus den gegebenen Daten zu berechnen, da Gnuplot wohl einige Zwischenwerte fehlten.


Abkrzungen von Namen bei Ergebnisdiagrammen
---------------------------------------------

Alle Diagrammdateien sind "*.ps" Dateien die mit Gnuplot generiert wurden. 

Bei der Beschriftung der zweidimensionalen Diagrammen kommt zuerst der Parameter fr die x-Achse, dann "_", gefolgt von dem Krzel fr den Parameter der y-Achse, dann "_" gefolgt von der Beschreibung der Untertestreihe in der Notation der allgemeinen Abkrzungen.
"R_maxc_L2A100CV.ps" bedeutet beispielsweise: Auf der x-Achse sind die Regeln aufgetragen, auf der y-Achse die maximalen choice points, die Diagramme beziehen sich auf die Untertestreihen mit 2 Literalen pro Krper und bei den Programmen waren 100 Atome mglich, die Regelanzahl ist variabel und damit auf der x-Achse aufgetragen.

Die Beschriftung der dreidimensionalen Diagrammen ist analog zu der der zweidimensionalen Diagramme nur fehlt meist der erste Teil fr den x-Achsen Parameter, da diese im allgemeine die Regel- und Atomanzahl ist. 
Bei der Testreihe Graph sind die x-Achse und y-Achse Parameter jeweils die Knoten- und Kantenanzahl, auer wenn die Diagrammdatei mit "AR_" beginnt, dann sind es jeweils die Regel- und Atomanzahlen.

Die x-Achse und y-Achse Krzel sind nachfolgend zu finden.

x-Achse

allgemeine Abkrzungen
Krzel	Bedeutung
R	Regeln
A	Atome
RdA	Regeln/Atome
E	Kanten (edges)
V	Knoten (vertices) oder dass der zugehrige Wert variabel ist
EdV	Kanten/Knoten


y-Achse

positiv bedeutet: fr die erfllbaren Programme
negativ bedeutet: fr die unerfllbaren Programme
log bedeutet: die Achse bzw. der Parameter ist logarithmisch eingeteilt 

Krzel	Bedeutung
t	Durchschnittliche Zeit
e	Generierte Programme fr den Testpunkt 
c	Durchschnittliche choice points
wc	Durchschnittliche wrong choices
dc	Durchschnittliche (choice points)-(wrong choices)
mt	Zeit Median
mc	Median der choice point 
mwc	Median der wrong choices
mint	Minimale Zeit
minc	Minimale choice points
minwc	Minimale wrong choices
maxc	Maximale choice points
maxc	Maximale choice points
at	Durchschnittliche Anzahl von Atome in den Programmen
rl	Durchschnittliche Anzahl von Regeln in den Programmen
ss	Durchschnittlicher Suchraum (search space)
sp_t	Minimale Zeit minus Maximale Zeit
sp_ss	Minimale Suchraum minus Maximale Suchraum
var_t	Zeit Varianz
var_c	Varianz der choice point
var_dc (choice points)-(wrong choices) Varianz
var_ss Suchraum Varianz
CdT	Durchschnittlicher choice point (/) Zeit Quotient ((choice point)/Zeit)
var_CdT choice point (/) Zeit Quotient ((choice point)/Zeit) Varianz
WCdT	Durchschnittliche wrong choices (/) Zeit Quotient ((wrong choices)/Zeit)
var_WCdT wrong choices (/) Zeit Quotient ((wrong choices)/Zeit) Varianz
var_wc wrong choices Varianz
epn	Erfllbare, unerfllbare und alle Programme 
tpn	Durchschnittliche Zeit fr erfllbare, unerfllbare und alle Programme 
cpn	Durchschnittliche choice points fr erfllbare, unerfllbare und alle Programme  
wcpn	Durchschnittliche wrong choices fr erfllbare, unerfllbare und alle Programme  
sspn	Durchschnittliche search space fr erfllbare, unerfllbare und alle Programme  
mtc	Maximal Zeit in 10 Zeitintervallen 
tc	Durchschnittliche Zeit fr 10 Zeitintervalle 
ssmm	Durchschnittliche, minimale Und maximal search space 
m_ntpt Durchschnittliche (negative Zeit) - (positive Zeit) 
d_ntpt Durchschnittliche (negative Zeit)/(positive Zeit) 
d_log_ntpt Durchschnittliche log(negativ Zeit)/log(positive Zeit) 
m_ncpc Durchschnittliche (negative choice points)-(positive choice points) 
d_ncpc Durchschnittliche (negative choice points)/(positive choice points) 
d_log_ncpc Durchschnittliche log(negative choice points)/log(positive choice points) 
m_nwcpwc Durchschnittliche (negative wrong choices)-(positive wrong choices) 
d_nwcpwc Durchschnittliche (negative wrong choices)/(positive wrong choices) 
d_log_nwcpwc Durchschnittliche log(negative wrong choices)/log(positive wrong choices)
cp	Durchschnittliche choice points

Bei der Testreihe casesNN1 bedeutet c durchschnittliche choices und nicht durchschnittliche choice points.
























