Читаем Учебное пособие по курсу «Нейроинформатика» полностью

  Map = CreateArray; {Создаем вспомогательные массивы}

  DirectMap= CreateArray;

  If Map = Null Then GoTo Exit;

  If DirectMap= Null Then GoTo Exit;

  Est1 = Estimate(Handle, True);

  If Error <> 0 Then GoTo Exit;

  RadiusNum = 1; {Обрабатываем первый радиус}

  Radius = 1 / RadiusNum; {Вычисляем первый радиус}

  If Not SaveArray(Map) Then GoTo Exit; {Сохраняем начальный массив параметров}

 End

InstrStep Radius > MinRadius {Обработка с одним радиусом – один шаг обучения}

 Begin 

  TryNum = 0;

  While TryNum < Try Do Begin

   If Not SetArray(Map) Then GoTo Exit; {Устанавливаем лучший массив параметров}

   If Not RandomArray(DirectMap) Then GoTo Exit; {Генерируется новый массив параметров}

   If Not Modify(DirectMap, 1, Radius) Then GoTo Exit; {Модифицируем массив параметров}

   Est2 = Estimate(Handle, True);

   If Error <> 0 Then GoTo Exit;

   If Est1>Est2 Then Begin

    If Not SaveArray(Map) Then GoTo Exit; {Сохраняем лучший массив параметров}

    Est1 = Est2;

    TryNum = 0;

   End Else TryNum = TryNum + 1; {Увеличиваем счетчик отказов}

  End

  RadiusNum = RadiusNum + 1; {Обрабатываем следующий радиус}

  Radius = 1 / RadiusNum; {Вычисляем следующий радиус}

 End

Close

 Begin

Exit:

  If Not SetArray(Map) Then; {Восстанавливаем лучший массив параметров}

  If Not EraseArray(Мар1) Then; {Освобождаем вспомогательные массивы}

  If Not EraseArray(Мар2) Then;

  QName = "CloseSession"; {Задаем имя запроса}

  Map = NewArray(mRealArray, 1); {Создаем массив для аргументов запроса}

  If Map = Null Then GoTo Exit1;

  TPointer(Map^[1]) = @Handle; {Заносим адрес единственного аргумента}

  If Not GenerateQuest(@QName, Map) Then;{Открываем сеанс работы с задачником}

  If Not FreeArray(mRealArray, Map) Then; {Освобождаем массив для аргументов}

Exit1:

 End

End Instructor

Пример 2. Библиотека функций

InstrLib Library1; {Библиотека содержит функции для следующего учителя}

{Метод наискорейшего спуска}

 Function SDM( Handle : Integer; Step : Real) : Real;

 Label Exit, Endd;

 Var

  Real Est;

 Begin

  Est = CalcGradient(Handle, True);

  If Error <> 0 Then GoTo Exit;

  Est =Optimize(Null, Step); {Вызываем функцию подбора оптимального шага}

  If Error <> 0Then GoTo Exit;

  SDM = Est;

  GoTo Endd;

Exit:

  SDM = 0;

Endd:

 End

{Метод случайного поиска}

 Function RDM( Handle : Integer; Step : Real) : Real;

 Label Exit, Endd;

 Var

  Real Est;

  PRealArray : Direction;

 Begin

  Direction = CreateArray; {Создаем вспомогательный массив}

  If Direction = Null Then GoTo Exit;

  If Not RandomArray(Direction) Then GoTo Exit; {Генерируется новый массив параметров}

  If Error <> 0 Then GoTo Exit;

  Est =Optimize(Direction, Step); {Вызываем функцию подбора оптимального шага}

  If Error <> 0 Then GoTo Exit;

  RDM = Est;

  GoTo Endd;

Exit:

  RDM = 0;

Endd:

 End

End InstrLib

Пример 3. Антиовражная процедура обучения.

Перейти на страницу:

Похожие книги