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

5.  Модификация_вектора Н, 1, Ш2

6.  Вычислить_оценку О2

7.  Если О1<О2 то переход к шагу 15

8.  Ш3=Ш2*3

9.  Установить_параметры В

10. Модификация_вектора Н, 1, Ш3

11. Вычислить_оценку О3

12. Если О3>О2 то переход к шагу 21

13. О1=О2 О2=О3 Ш1=Ш2 Ш2=ШЗ

14. Переход к шагу 3

15. ШЗ=Ш2 03=02

16. Ш2=ШЗ/3

17. Установить_параметры В

18. Модификация_вектора Н, 1, Ш2

19. Вычислить_оценку О3

20. Если О2>=О1 то переход к шагу 15

21. Число_парабол=0

22. Ш=((ШЗШЗ-Ш2Ш2)О1+(Ш1Ш1-ШЗШЗ)О2+(Ш2Ш2-Ш1Ш )О3)/(2((ШЗ-Ш2)О1+(Ш1-Ш3)О2 +(Ш2-Ш )О3))

23. Установить_параметры В

24. Модификация_вектора Н, 1, Ш

25. Вычислить_оценку О

26. Если Ш>Ш2 то переход к шагу 32

27. Если О>О2 то переход к шагу 30

28. ШЗ=Ш2 О3=О2 О2=О Ш2=Ш

29. Переход к шагу 36

30. Ш1=Ш О1=О

31. Переход к шагу 36

32. Если О>О2 то переход к шагу 35

33. ШЗ=Ш2 О3=О2 О2=О Ш2=Ш

34. Переход к шагу 36

35. Ш1=Ш О1=О

36. Чиспо_парабол=Число_парабол+1

37. Если Число_парабоп<Максимальное_Число_Парабол то переход к шагу 22

33. Установить_параметры В

39. Модификация_вектора Н, 1, Ш 2

40. Освободить_вектор В

Рис. 3. Алгоритм оптимизации шага

Если после первого пробного шага получилось О2 большее О1, то уменьшаем шаг до тех пор, пока не получим оценку, меньше чем О1. После этого производим квадратичную оптимизацию.

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

Этот метод похож на метод случайной стрельбы с уменьшением радиуса, однако в его основе лежит другая идея — сгенерируем случайный вектор и будем использовать его вместо градиента. Этот метод использует одномерную оптимизацию — подбор шага. Одномерная оптимизация описана в разделе «Одномерная оптимизация». Процедура случайного поиска приведена на рис. 4. В этом методе есть два параметра, задаваемых пользователем.

1.  Создать_вектор Н

2.  Число_Смен_Радиуса=1

3.  Попытка=0

4.  Радиус=1/Число_Смен_Радиуса

5.  Случайный_вектор Н

6.  Оптимизация шага Н Радиус

7.  Попытка=Попытка+1

8.  Если Радиус=0 то Попытка=0

9.  Если Попытка<=Число_попыток то переход к шагу 4

10. Число_Смен_Радиуса= Число_Смен_Радиуса+1

11. Радиус=1/Число_Смен_Радиуса

12. Если Радиус>= Минимальный_радиус то переход к шагу 3

13. Освободить_вектор Н

Рис. 4. Алгоритм метода случайного поиска

Число_попыток — число неудачных пробных генераций вектора при одном радиусе.

Минимальный_радиус — минимальное значение радиуса, при котором продолжает работать алгоритм.

Идея этого метода состоит в следующем. Зададимся начальным состоянием вектора параметров. Новый вектор параметров будем искать как сумму начального и случайного, умноженного на радиус, векторов. Если после Число_попыток случайных генераций не произошло уменьшения оценки, то уменьшаем радиус. Если произошло уменьшение оценки, то полученный вектор объявляем начальным и продолжаем процедуру с тем же шагом. Важно, чтобы последовательность уменьшающихся радиусов образовывала расходящийся ряд. Примером такой последовательности может служить использованный в примере на рис. 4 ряд 1/n.

Метод Нелдера-Мида
Перейти на страницу:

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