* {@inheritDoc}
*/
@Override
public final void iteration() {
final ErrorCalculation errorCalculation = new ErrorCalculation();
for (final MLDataPair pair : this.training) {
// calculate the error
final MLData output = this.network.compute(pair.getInput());
for (int currentAdaline = 0; currentAdaline < output.size(); currentAdaline++) {
final double diff = pair.getIdeal().getData(currentAdaline)
- output.getData(currentAdaline);
// weights
for (int i = 0; i <= this.network.getInputCount(); i++) {
final double input;
if (i == this.network.getInputCount()) {
input = 1.0;
} else {
input = pair.getInput().getData(i);
}
this.network.addWeight(0, i, currentAdaline,
this.learningRate * diff * input);
}
}
errorCalculation.updateError(output.getData(), pair.getIdeal()
.getData(),pair.getSignificance());
}
// set the global error
setError(errorCalculation.calculate());
}