* @param ea Der zu mutierende Automat.
* @return Ob ein Zustand mutiert wurde.
*/
public final boolean ageSemMutZustand(final EndlicherAutomat ea) {
ArrayList<Integer> knListe = ea.getKnList();
Knoten zufallsKnoten1;
int veraenderung;
int neuParam;
int altParam;
int neuBefehl;
int zufallsIndex;
if (knListe.size() == 0) {
return false;
} else {
zufallsIndex = this.rand.nextInt(knListe.size());
zufallsKnoten1 = ea.holeKnoten(knListe.get(zufallsIndex));
if (pars.getParValueBoolean("ageDecrement")) {
zufallsKnoten1.getInfo().setAlter(Math.max(1, zufallsKnoten1.getInfo().getAlter() - 1));
}
else {
zufallsKnoten1.getInfo().setAlter(1);
}
veraenderung = this.rand.nextInt(2 * this.k) - this.k;
altParam = (zufallsKnoten1.getInfo()).getParam();
if (veraenderung + altParam > 0) {
neuParam = altParam + veraenderung;
neuBefehl = (zufallsKnoten1.getInfo()).getAktion();
} else if (veraenderung + altParam < 0) {
neuParam = (veraenderung + altParam) * -1;
neuBefehl = StaticMethods.glVertZwischen(
StaticMethods.minBef(this.modus),
StaticMethods.maxBef(this.modus, this.pars),
this.rand);
} else { // veraenderung + altparam == 0
neuParam = 1;
neuBefehl = (zufallsKnoten1.getInfo()).getAktion();
}
if (checkMutation(zufallsKnoten1.getInfo().getAlter())) {
(zufallsKnoten1.getInfo()).setAkt(neuBefehl);
(zufallsKnoten1.getInfo()).setPar(neuParam);
return true;
}
else {
return false;
}