Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НЕЛИНЕЙНОЕ И ВЫП ПРОГРАММИРОВАНИЕ.doc
Скачиваний:
69
Добавлен:
10.11.2019
Размер:
11 Мб
Скачать
☆

Алгоритм нелокального случайного поиска на минимум целевой функции

Найти min Z =

при условии аj ≤ xj ≤ bj; j = 1 ÷ n,

где – выпуклая функция.

  1. Выписываем область допустимых значений ω( аj ≤ xj ≤ bj ); где j=1÷n.

  2. Подготавливаем начальный вектор (а1, а2, ..., аn) = (x1нижняя граница, x2нижняя граница,…, xnнижняя граница) = ( x10, x20, ..., xn0 ), координатами служат нижние границы измерения координат из области допустимых решений ω.

  3. Вводим целевую функцию Z = .

  4. Вычисляем целевую функцию при = , Z = f( ).

  5. Вводим счетчик неудачных испытаний S = 0, N = 1000 – контрольное число.

  6. Формируем массив случайных чисел λ.

  7. Формируем случайный вектор , где  , координаты которого вычисляются по правилу xj1 = xjнижняя граница + λj ּxjверхняя граница = аj + λj ּbj.

  8. Вычисляем целевую функцию при = , Z = f( ).

  9. Сравниваем f( ) и f( ).

  10. Если испытание удачное, то есть если f( ) <f( ), то переход к пункту 11, иначе переход к пункту 12.

  11. = и Z =f( ) = f( ).

  12. Переход к пункту 7.

  13. Если f( ) ≥ f( ), то ведем счет неудачных испытаний S = S + 1.

  14. Сравниваем S с N, где N – контрольное число неудачных испытаний. Если S ≤ N, то переходим к пункту 7, иначе переход к пункту 15.

  15. Конец вычислений. Запись ответа Z =f( ) и .

Пример 18

Найти minZ = (x1 - 2)2+(x2 - 1)2

при условиях

0 ≤ x1 ≤ 3,

0 ≤ x2 ≤ 2.

I итерация.

  1. В ыписываем область допустимых решений ω:

ω 0 ≤ x1 ≤ 3,

0 ≤ x2 ≤ 2.

  1. Подготавливаем начальный вектор (x1нижняя граница, x2нижняя граница), (0,0).

  2. Вводим целевую функцию Z= (x1 - 2)2+(x2 - 1)2

  3. Вычисляем целевую функцию при = , Z =f( ) = + = 5

Вводим счетчик неудавшихся испытаний S = 0.

  1. Формируем массив случайных чисел

λ (0,11; 0,17; 0,20; 0,09; 0,15; 0,71; … )

  1. Формируем случайный вектор

= xj нижняя граница + λj ּ xj верхняя граница

= 0 +0,11*3 = 0,33

= 0 +0,17*2 = 0,34

= (0,33; 0,34)  ω

Схема алгоритма случайного поиска на минимум целевой функции

  1. Вычисляем целевую функцию при = ; Z = f( ); Z = f( ) = (x1 - 2)2+(x2 - 1)2= + = (1,67)2 + (0,66)2 = 2,79 + 0,44 = 3,23

  2. Сравниваем f( ) и f( ), 3,23 < 5, испытание удачное.

  3. = (0,33; 0,34); Z =f( ) =f( ) = 3,23

II итерация

1. Формируем случайный вектор

= 0 + 0,20*3 = 0,60

= 0 + 0,09*2 = 0,18

( 0,60; 0,18)  ω

2. Вычисляем Z =f( ) = + = (1,40)2 + (0,82)2 = 1,96 + 0,67 = 2,63

3. Сравним f( ) и f( )

2,63 < 3,23, испытание удачное.

4. = (0,60; 0,18)

Z=f( ) = f( ) = 2,63

и т. д.

Индивидуальные задания 8

Решить задачи 1-15 методом нелокального случайного поиска, в четных номерах находить максимум целевой функции, а в нечетных – минимум.

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

Особенности метода локального случайного поиска

Отличие алгоритма локального случайного поиска от алгоритма нелокального случайного поиска только в формировании случайного вектора . Координаты вектора случайных чисел вычисляются по формуле: = xj0 +Pj , где - заданное для данной задачи число, например,

=1, т. е. = + · 1.

Вектор сам является случайным вектором, координаты которого принадлежат какому-то заданному интервалу, ≤ Pj ≤ . Например, интервалу [-1, 1]. Координаты вектора формируются по формуле Pj =A+ λjּB, где λj - число из массива случайных чисел λ.

Следовательно, = xj0 + (A+ λjּB) · .

В этой задаче можно значение менять по формуле = до какого-то заданного предела .