*/
public void naechsterZustand() {
int aktion;
int parameter;
LinkedList<Transition> bedingungen;
Transition aktBed;
ZInfo zusatz;
int folgeZ = 0;
Iterator<Transition> it;
int i = 0;
while (i < this.conds.length) {
if (this.conds[i].evaluiere(this)) {
if (this.initial || i != this.aktAut) {
this.aktAut = i;
this.vAut[this.aktAut].setzeChanged();
this.vAut[this.aktAut].notifyObservers(
new Integer(this.aktAut));
this.initial = false;
}
break;
}
i++;
}
this.expAktZyklen++;
this.fitAktZyklen[this.aktAut]++;
this.fitRedAktZyklen[this.aktAut]++;
this.aktivZyklen[this.aktAut]++;
this.mutAktZyklen++;
this.aktMemZyk++;
this.condMutAktZyklen++;
if (this.fitRedAktZyklen[this.aktAut] > this.fitRedZyklen) {
this.setFitness(this.aktAut,
(int) ((double) this.getFitness()[this.aktAut]
/ this.fitRedWert));
this.fitRedAktZyklen[this.aktAut] = 0;
}
if (this.fitAktZyklen[this.aktAut] > this.fitZyklen) {
this.befehle.clear();
this.befehle.add(new Integer(this.lastBf));
this.setFitness(this.aktAut,
this.getFitness()[this.aktAut]
+ this.fitVs[this.aktAut].fitness(
(Roboter) this));
this.fitAktZyklen[this.aktAut] = 0;
}
if (this.pars.getEvol().booleanValue()) {
if (this.aktMemZyk > this.pars.getMemInt().longValue()) {
this.resetToBest();
}
if (this.mutAktZyklen > this.mutZyklen) {
this.mutV = true;
this.mutiere();
this.mutAktZyklen = 0;
this.mutV = false;
} else {
this.mutV = false;
}
if (this.condMutAktZyklen > this.pars.getCondMutZyk()) {
this.mutiereBeds();
this.condMutAktZyklen = 0;
}
}
if (this.aktZustand[this.aktAut] == null) {
this.aktZustand[this.aktAut]
= this.vAut[this.aktAut].holeStartzustand();
}
if (this.isSelektiert()) {
if (this.aktZustand[this.aktAut] != null) {
this.vAut[this.aktAut].setzeChanged();
this.vAut[this.aktAut].notifyObservers(
this.aktZustand[this.aktAut]);
}
}
if (this.aktZustand[this.aktAut] != null) {
zusatz = (ZInfo) this.aktZustand[this.aktAut].getInfo();
aktion = zusatz.getAktion();
parameter = zusatz.getParam();
this.gesamtAktion(aktion, parameter);
this.lastBf = aktion;
bedingungen = zusatz.getBeds();
it = bedingungen.iterator();
this.aktZustand[this.aktAut] = null;
while (it.hasNext() && folgeZ == 0) {
aktBed = (Transition) it.next();
if (aktBed.evaluiere(this)) {
folgeZ = aktBed.getFolgezustand();
this.aktZustand[this.aktAut]
= this.vAut[this.aktAut].holeKnoten(
new Integer(folgeZ));
}
}