Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RK6_Методы_Оптимизации_1 / Все вместе / Оптимизация Глава 3.doc
Скачиваний:
75
Добавлен:
10.02.2015
Размер:
424.45 Кб
Скачать

§4. Классы тестовых функций.

Класс одномерных унимодальных функций.

Положим, что D=[a,b]. Покроем интервал [a,b] сеткой с М+1 узлам и обозначим - рисунок 1.

Рисунок 1 – Сетка, покрывающая интервал [a,b]

Положим, что необходимо построить одномерную унимодальную функцию, минимум которой находится в узле i[0:M], т.е. в точке .Тогда для генерации такой функций может быть использован следующий алгоритм.

1). Генерируем дискретную случайную величину i*, равномерно распределенную на множестве 0,1,2,…,М.

2). Генерируем случайные числа по рекуррентной формуле

где βi, - случайные величины, равномерно распределенные в интервале, если, и в интервале, если. Здесь - некоторая константа, определяющая максимальную скорость изменения искомой функции.

3). Для получения функции Ф(x) используем линейную интерполяцию полученных значений Фi, iє[0:M]. Минимум полученной функции Ф(x) достигается в точке .

Пример 1. Пусть D=[0,1], =1,M=10. Положим, что сгенерированы следующие случайные значения величин i*, βi, :

  • i*=4;

  • β0=-0.5, β1=-0.3, β2=-0.4, β3=-0.7, β4=-0.1, β5=0.3, β6=0.2, β7=0.8, β8=0.5, β9=0.1, β10=0.7.

Тогда искомая одномерная унимодальная функция Ф(x) будет иметь вид, представленный на рисунке 2●

Рисунок 2 - Тестовая одномерная унимодальная функция (к примеру 1)

Класс одномерных многоэкстремальных функций. Положим, что область допустимых значений d функции ф(y) есть интервал [a,b]. С помощью линейного преобразования

(1)

сведем этот интервал к интервалу [0,1]. Тогда в качестве тестовых одномерных многоэкстремальных функций можно использовать тригонометрические полиномы некоторой степени s (отрезки ряда Фурье):

(2)

Здесь ,- случайные величины с некоторыми законами распределения.

Таким образом, генерации одномерных многоэкстремальных функций сводится к генерации указанных случайных величин.

Класс многоэкстремальных функций нескольких переменных.

В простейшем случае для генерации таких функций можно использовать совокупность s квадратичных функций, каждая из которых в общем случае дает локальный минимум искомой функции:

Фj(X), (3)

где квадратичная функция

(4)

Здесь n – размерность вектора варьируемых параметров X, – точкаj-го локального минимума со значением сj; постоянные ,,cj - случайные величины с некоторыми законами распределения.

Пример 2. Чтобы пояснить суть рассмотренного способа генерации многоэкстремальных функций нескольких переменных, рассмотрим прежде случай одной переменной, т.е. случай, когда n=1. Пусть s=3, и пусть сгенерированы следующие значения величин , ,cj, :

j

cj

1

1

-6

4

2

1.2

0

-1

3

1.5

7

-5

Тогда функция Ф(x) будут иметь вид, представленный на рисунке 3●

Рисунок 3 получен с помощью следующей Matlab-программы:

x=-10:0.05:10;

y1=(x+6).^2+4;

y2=1.2*x.^2-1;

y3=1.5*(x-7).^2-5;

yh=min(y1,y2);

y=min(yh,y3);

plot(x,y);

Рисунок 3 - К примеру 2

Пример 3. Пусть теперь n=2, s=3, – двумерное евклидовое пространство и пусть сгенерированы следующие значения величин ,,, k=1,2, j=1,2,3:

j

cj

1

1

1.2

-6

5

-3

2

1.2

1.5

4

7

-1

3

1.5

1.7

5

-4

-5

Тогда линии уровня функции Ф(X) будут иметь вид, представленный на рисунке 4●

Рисунок 4 получен с помощью следующей Matlab-программы:

[X,Y] = meshgrid([-10:0.05:10]);

Z1=(X+6).^2+1.2*(Y-5).^2-3;

Z2=1.2*(X-4).^2+1.5*(Y-7).^2-1;

Z3=1.5*(X-5).^2+1.7*(Y+4).^2-5;

ZH=min(Z1,Z2);

Z=min(ZH,Z3);

V=[-4,0,4,8,16,32,50,100,150,200];

[C,h]=contour(X,Y,Z,V);

clabel(C,h);

Рисунок 4 - К примеру 3

14