#include "glob_typ.h"
#include "krui_typ.h"
#include <gaul.h>
#include <math.h>
#include "util.h"
#include "testnetex.h"
#include "ga.h"
Funktionen | |
void | setParams (int populationSize_, int maxGenerations_, float crossoverRate_, float mutationRate_, int crossoverMethod_, int selectionMethod_, int eliteMethod_) |
void | setOrderPhrase (char **orderPhrase_, int orderPhraseSize_) |
boolean | struggle_generation_hook (int generation, population *pop) |
void | getSynonym (validPart *validInput, int _validCount, keyword *cb, int cbSize, int tbSize, char **original, int originalSize, char **_smallCB, int _smallCBSize) |
void | printPhraseByChromo (entity *et, population *pop) |
int | equalByBMU (int *compare, float *result, int n, float breakVal) |
float | getFitness (validPart *validInput, int validCount, outputPart *testInput, int testCount, char **inputWords, int inputWordCount) |
int | hasPeak (float threshold, float *vector, int size) |
bool | calcFitness (population *pop, entity *entity) |
int | getIndexOfWord (char **smallCB, int smallCBSize, char *word) |
char * | getWordOfIndex (char **smallCB, int smallCBSize, int index) |
void | getWordsByChromosome (entity *item, int chromoLength, char ***words, int *count) |
float | calcOrderness (char **sortWords, int sortWordsCount, char **compareWords, int compareWordsCount) |
void | setSpecialSeed (int seed, float chance) |
GAULFUNC boolean | mySeed (population *pop, entity *adam) |
Variablen | |
validPart * | globalValidInput |
int | validCount |
keyword * | globalCodebook |
int | codebookSize |
int | typebookSize |
char ** | originalPhrase |
int | originalPhraseSize |
char ** | smallCB |
int | smallCBSize |
char ** | orderPhrase |
int | orderPhraseSize = 0 |
int | populationSize |
int | maxGenerations |
float | crossoverRate |
float | mutationRate |
GAselect_one | selectOne |
GAselect_two | selectTwo |
GAcrossover | crossoverMethod |
ga_elitism_type | eliteMethod |
int | specialSeed = 0 |
float | seedChance = 0 |
bool calcFitness | ( | population * | pop, | |
entity * | entity | |||
) |
Berechnet die Fitness eines Individuums entity innerhalb der Population pop. In dieser Funktion wird die Unterfunktion getFitness(...) aufgerufen, welche weitere Berechnungen anstellt.
pop | Ist die Population in der sich das Individuum befindet. | |
entity | Ist das Individuum, dessen Fitness berechnet werden soll. |
float calcOrderness | ( | char ** | sortWords, | |
int | sortWordsCount, | |||
char ** | compareWords, | |||
int | compareWordsCount | |||
) |
Berechnet einen Faktor € [0,1], der die Reihenfolge von notwendigen Woertern berechnet. Ein Wert von 1 beschreibt die absolut korrekte geforderte Reihenfolge. Ein Wert von 0 sagt aus, dass die Reihenfolge absolut nicht eingehalten wird. Naeheres in der Diplomarbeit (Funktion f_orderness)
sortWords | Ist der Vektor, der die Worte in der geforderten Reihenfolge festlegt. | |
sortWordsCount | Ist die Groesse des Vektors der Worte der geforderten Reihenfolge. | |
compareWords | Ist der Vektor, der die Worte beinhaltet, dessen Reihenfolge bewertet werden soll. | |
compareWordsCount | Ist die Groesse des Vektors compareWords. |
int equalByBMU | ( | int * | compare, | |
float * | result, | |||
int | n, | |||
float | breakVal | |||
) |
Berechnet die Gleichheit zwischen Netzausgabe und geforderter Ausgabe anhand der BMU-Funktion (Best-Matching-Unit)
compare | Ist der Vektor, welcher die geforderten Netzausgaben (Referenzwerte) beinhaltet. | |
result | Ist der Vektor, welche die tatsaechliche Netzausgabe beinhaltet. | |
n | die Groesse jeweils beider Vektoren. | |
breakVal | Ist der Schwellwert der BMU-Funktion. |
float getFitness | ( | validPart * | validInput, | |
int | validCount, | |||
outputPart * | testInput, | |||
int | testCount, | |||
char ** | inputWords, | |||
int | inputWordCount | |||
) |
Ist eine Unterfunktion zur Berechnung des Fitnesswertes.
validInput | Ist ein Vektor, der die Menge der Referenzwerte beinhaltet. | |
validCount | Ist die Groesse des Vektors der Referenzwerte. | |
testInput | Ist ein Vektor, der die Menge der tatsaechlichen Netzausgaben beinhaltet. | |
testCount | Ist die Groesse des Vektors der tatsaechlichen Netzausgaben. | |
inputWords | Ist der tatsaechliche Satz, welcher durch das Individuum beschrieben wird. | |
inputWordCount | Ist die Laenge des Satzes, also die Anzahl der Worte. |
int getIndexOfWord | ( | char ** | smallCB, | |
int | smallCBSize, | |||
char * | word | |||
) |
Liefert den Index fuer in Wort innerhalb des beschraenkten Woerterbuches, oder -1, wenn das Wort nicht gefunden wurde.
smallCB | Ist der Vektor des beschraenkten Woerterbuches. | |
smallCBSize | Ist die Groesse des beschraenkten Woerterbuches. | |
word | Ist das Wort, dessen Index ermittelt werden soll. |
void getSynonym | ( | validPart * | validInput, | |
int | _validCount, | |||
keyword * | cb, | |||
int | cbSize, | |||
int | tbSize, | |||
char ** | original, | |||
int | originalSize, | |||
char ** | _smallCB, | |||
int | _smallCBSize | |||
) |
Diese Funktion startet die Synthese.
validInput | ist ein Vektor der die Menge der Referenz-Wort-Rolle-Zuordnung festlegt. | |
_validCount | Die Anzahl der Referenzwerte im Vektor (Groesse des Vektors). | |
cb | Legt das verwendete Woerterbuch fest. | |
cbSize | Ist die Groesse des verwendeten Woerterbuches. | |
tbSize | Ist die Groesse des verwendeten Rollenbuches. | |
original | entfaellt. | |
originalSize | entfaellt. | |
_smallCB | Legt ein eingeschraenktes Worterbuch fest, welches durch den genetischen Algorithmus verwendet wird. Fuer den Normalfall kann hier das komplette Woerterbuch uebergeben werden. | |
_smallCBSize | Ist die Groesse des eingeschraenkten Woerterbuches. |
char* getWordOfIndex | ( | char ** | smallCB, | |
int | smallCBSize, | |||
int | index | |||
) |
Liefert das Wort an einem Index innerhalb des Woerterbuches, oder ein leerer String, wenn der Index nicht gefunden wurde.
smallCB | Ist der Vektor des beschraenkten Woerterbuches. | |
smallCBSize | Ist die Groesse des beschraenkten Woerterbuches. | |
index | Ist der Index, an w |
void getWordsByChromosome | ( | entity * | item, | |
int | chromoLength, | |||
char *** | words, | |||
int * | count | |||
) |
Diese Funktion liefert die Menge der Worte (also der Satz), welcher durch die Allele eines Chromosomens beschrieben wird. Hierbei wird das Woerterbuch verwendet, um das Chromosomen zu dekodieren.
item | Ist das Individuum, dessen repraesentierter Satz ermittel werden soll. | |
chromoLength | Ist die Laenge des Chromosomens. | |
words | Rueckgabewert. Ist ein Zeiger auf ein Vektor aus Zeichenketten. Hier wird der resultierende Satz geschrieben. | |
count | Rueckgabewert. Ist ein Zeiger auf die Anzahl der Worte (Satzlaenge), welcher gesetzt wird. |
int hasPeak | ( | float | threshold, | |
float * | vector, | |||
int | size | |||
) |
Ermittelt, ob die Netzausgabe einen Peak erzeugt (anhand eines Schwellwertes threshold). Liefert 1, wenn ein Peak vorhanden ist oder 0, wenn kein Peak vorhanden ist.
threshold | Ist der Schwellwert | |
vector | Ist der Netzausgabevektor | |
size | Ist die Groesse des Netzausgabevektors. |
GAULFUNC boolean mySeed | ( | population * | pop, | |
entity * | adam | |||
) |
void printPhraseByChromo | ( | entity * | et, | |
population * | pop | |||
) |
Gibt des Satz, der durch ein Individuum beschrieben, aus.
et | Ist das Individuum, dessen repraesentierter Satz ausgegeben werden soll. | |
pop | Ist die Population in der sich das Individuum befindet. |
void setOrderPhrase | ( | char ** | orderPhrase_, | |
int | orderPhraseSize_ | |||
) |
Legt die Worte in ihrer geforderten Reihenfolge fest.
orderPhrase_ | Ein Vektor mit den geforderten Worten in ihrer geforderten Reihenfolge | |
orderPhraseSize_ | Die Groesse des Vektors orderPhrase |
void setParams | ( | int | populationSize_, | |
int | maxGenerations_, | |||
float | crossoverRate_, | |||
float | mutationRate_, | |||
int | crossoverMethod_, | |||
int | selectionMethod_, | |||
int | eliteMethod_ | |||
) |
Diese Funktion dient als Schnittstelle. Hier koennen von "aussen" die Parameter des genetischen Algorithmus gesetzt werden.
populationSize_ | Ist die Groesse der Population | |
maxGenerations_ | Ist die maximale Anzahl der Generationen. | |
crossoverRate_ | Ist die Kreuzungsrate. | |
crossoverMethod_ | Ist das verwendete Kreuzungsschema. | |
mutationRate_ | Ist die Mutationsrate. | |
selectionMethod_ | Ist die Selektionsmethode | |
eliteMethod_ | Ist der verwendete Elitismus. |
void setSpecialSeed | ( | int | seed, | |
float | chance | |||
) |
Hier wird die Wahrscheinlichkeit fuer die Belegung des leeren Wortes € in der Anfangspopulation festgelegt.
seed | Der Wert des Allels, welches mit bestimmer Wahrscheinlichkeit besetzt werden soll. Wahrscheinlichkeit € [0,1], mit der die Allele durch den Wert seed belegt werden sollen. |
boolean struggle_generation_hook | ( | int | generation, | |
population * | pop | |||
) |
int codebookSize |
GAcrossover crossoverMethod |
float crossoverRate |
ga_elitism_type eliteMethod |
int maxGenerations |
float mutationRate |
char** orderPhrase |
int orderPhraseSize = 0 |
char** originalPhrase |
int populationSize |
float seedChance = 0 |
GAselect_one selectOne |
GAselect_two selectTwo |
char** smallCB |
int smallCBSize |
int specialSeed = 0 |
int typebookSize |
int validCount |