Element Sum(N Long) {Простой сумматор на N входов}
InSignals N {N входных сигналов}
OutSignals 1 {Один выходной сигнал}
Forw {Начало описания прямого функционирования}
Var {Описание локальных переменных}
Long I; {I – длинное целое – индекс}
Real R; {R – действительное – для накопления суммы}
Begin
R = 0;
For I=1 To N Do {Выходной сигнал равен сумме входных}
R = R + InSignals[I];
OutSignals[1] = R
End {Конец описания прямого функционирования}
Back {Начало описания обратного функционирования}
Var Long I; {I – длинное целое – индекс}
Begin
For I=1 To N Do {Поправка к каждому входному сигналу равна}
Back.InSignals[I] = Back.OutSignals[1] {поправке выходного сигнала}
End {Конец описания обратного функционирования}
End Sum {Конец описания простого сумматора}
Element Mul {Умножитель}
InSignals 2 {Два входных сигнала}
OutSignals 1 {Один выходной сигнал}
Forw {Начало описания прямого функционирования}
Begin
OutSignals[1] =InSignals[1] * InSignals[2] {Выходной сигнал равен произведению входных сигналов}
End {Конец описания прямого функционирования}
Back {Начало описания обратного функционирования}
Begin
{Поправка к каждому входному сигналу равна произведению поправки выходного сигнала на другой входной сигнал}
Back.InSignals[1] = Back.OutSignals[1] * InSignals[2];
Back.InSignals[2] = Back.OutSignals[1] * InSignals[1]
End {Конец описания обратного функционирования}
End Mul {Конец описания умножителя}
Element S_Train {Обучаемый гиперболический сигмоидный элемент}
InSignals 1 {Один входной сигнал}
OutSignals 1 {Один выходной сигнал}
Parameters 1 {Один параметр – характеристика}
Forw {Начало описания прямого функционирования}
Begin
{Выходной сигнал равен отношению входного сигнала к сумме параметра и абсолютной величины входного сигнала}
OutSignals[1] =InSignals[1] / (Parameters[1] +Abs(InSignals[1])
End {Конец описания прямого функционирования}
Back {Начало описания обратного функционирования}
Var Real R; {R – действительное}
Begin
{R – вспомогательная величина для вычисления поправок, равная отношению поправки выходного сигнала к квадрату суммы параметра и абсолютной величины входного сигнала}
R= Back.OutSignals[1] / Sqr(Parameters[1] +Abs(InSignals[1]);
{Поправка к входному сигналу равна произведению вспомогательной величины на параметр}
Back.InSignals[1] = R *Parameters[1];
{Поправка к параметру равна сумме ранее вычисленной величины поправки и произведения вспомогательной величины на входной сигнал}
Back.Parameters[1] = Back.Parameters[1] + R * InSignals[1]
End {Конец описания обратного функционирования}