16 Лекция Методы одномерной оптимизации

advertisement
Методы нелинейного
программирования
МЕТОДЫ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ.
Они применяются для оптимизации как
детерминированных, так и стохастических
процессов.
Общим для данных методов является то, что
их используют при решении оптимальных
задач с нелинейными функциями цели и
ограничениями
в
виде
нелинейных
соотношений
в
форме
равенств
или
неравенств.
Математическая
формулировка
задачи
нелинейного программирования:
F  F  x ,x ,...xn 
 1 2

где F является количественной оценкой
представляющего интерес качества объекта
оптимизации.
На независимые переменные
можно наложить ограничения в
виде равенств:
(x1…xn)=0
или
неравенств:
(x1…xn)0.
Большинство
методов
нелинейного
программирования
основываются на движении в n –
мерном
пространстве
в
направлении оптимума.
При
этом,
из
некоторого
исходного
или
промежуточного
состояния
x(k)
осуществляется
переход в следующее состояние
x(k+1) на величину шага x(k), т.е.
xk+1=xk+xk.
В
случае
максимального
(минимального) значения должно
выполняться условие:
F(xk+1)>F(xk)max
F(xk+1)<F(xk)min
В зависимости от числа
факторов можно выделить два
случая поиска оптимума:
1. Одномерный поиск, когда
функция F зависит от одного
фактора
F=F(x)
2.
Многомерный поиск, когда
факторов больше одного
F=F(x1,x2…xn)
Одномерный поиск
оптимума.
МЕТОД ДЕЛЕНИЯ ОТРЕЗКА ПОПОЛАМ
(МЕТОД ДИХОТОМИИ)
Простейшими
методами
нахождения
экстремума
функции
одной переменной является метод
деления
отрезка
пополам
(дихотомия) (интервальный метод).
Рассмотрим поиск максимума на
отрезке (a,b).
F
F(  )
F(P)
a
P
b
x
Разделим отрезок [a,b] пополам (т. l ).

Рассчитаем значение функции в этой
точке F=F (l ).
Затем произвольно выбираем малое
приращение x на величину  (например,
b  a  ).
10
xk+1=xk+ - это т.Р
Рассчитаем F(P). Если F (P )>F(  )
,
то максимум
находится в правой стороне отрезка.
После этого отбрасываем левую половину отрезка (на
ней нет максимума).
Точку a перенесем в точку  или в т.Р.

Если бы F(  ) >F(P),то перенесли бы точку b.
После переноса правого конца отрезка, задача
вернулась к исходным позициям. Опять задан отрезок
а b , на котором надо найти максимум. Поэтому
проводим следующий цикл расчета, подобный
предыдущему.
Снова делим отрезок пополам, снова получаем точку на
расстояние  и снова переносим в середину правый или
левый конец отрезка.
Условие окончания поиска оптимума:
b-a  
Метод «золотого сечения».
Поиск оптимума с помощью метода
«золотого сечения»основан на делении
отрезка на 2 части, при этом
отношение длины всего отрезка к
большей его части равно отношению
большей его части к меньшей.
Разделим отрезок
m – меньшая часть;
 -m – большая;
на две части m и
l- m
  m;
m
m
m  (  m)2;
m  2  2 m  m2  0;
m2  3 m  2  0;
m
m
а
b
Решаем квадратное уравнение относительно m.
m 3 
2
3

 2



2
2 4 2
3
9
2
  
;
2
2
5 2 3  5 
2
2
 3 5 



;
m
2
 3


2
5 
;
m=0.382
= (1-0.618)
 -m=0.618  ;
;
«Золотое сечение»
Рассмотрим отрезок (a,b), на котором нужно
найти максимум. Поиск максимума начинаем с
деления отрезка слева и справа в отношении
«золотого сечения», получаем точки  и Р
F
(a,  =0.382(b-a);
а

P
b
x
(a,P)=0.618(b-a);
В этих точках (  и P) вычисляем значение функции F( )иF(P).
Как и в методе дихотомии имеем две точки
и Р, но
расстояние между ними велико и точка экстремума

может попасть между ними. Поэтому, если
например,F(Р)>F(  ),
максимум может быть в средней части отрезка или в
правой.
В левой части максимума быть не может (если функция
унимодальна), поэтому левую часть отрезка
отбрасываем, переносим a в l и рассматриваем новый
отрезок (a,b).
На этом отрезке уже есть точка l
в которой
рассчитано значение F(l)
точка
отсекла от
прежнего отрезка справа 38,2% ,отсекает от нового
(меньшего) 61,8%,т.е. и на новом отрезке является точкой
золотого сечения.
Таким образом, на каждом этапе расчета, кроме первого,
необходимо рассчитывать F только в одной точке, что
повышает эффективность метода.
/b-a/  
Методы многомерного поиска
(функция более чем одного фактора)
Рассмотрим простейший вариант – оптимизацию без ограничений.
Покоординатный спуск.
Рассмотрим поиск максимума для случая с двумя факторами.
В качестве начальной приближенной функции с двумя
переменными f(x1,x2). Выбираются координаты начальной точки
0
0
поиска x1н и x 2 н ,т.е. те значения ,от которых начинается поиск
оптимума. Выбираются приращения факторов (шаги) H1и H2 и
малые приращения x1 и x2. Выбор этих величин определяется
физическим смыслом задачи.
Рассчитывается F(x1H,x2H) – точка 1.
x2
F
14
13
10
x2
12
16
9
11
8
15
7
M0
x1
1
2
3
4
5
6
x1
Далее, движемся по оси x1, изменяя фактор x1 на каждом
шаге на величину H1 (или –H1). При этом величина x2
остается постоянной, т.е. решаем одномерную задачу.
Движемся до тех пор, пока растет F. В точке 6 значение
F меньше, чем в точке 5. Поэтому возвращаемся в точку
5, фиксируем теперь x1 и изменяем x2 с шагом H2 (точка
7,8,9,10). Снова движемся по оси x1 (11,12,13), меняем
направление (14,15) .
Во всех точках вокруг т.12 функция F меньше, чем в
данной. Следовательно, достигнута область
максимума и, поэтому, необходимо уменьшить шаг и
продолжать поиск меньшими шагами (т.16).
Уменьшение шага может производиться несколько раз до
тех пор, пока
H1x1,
H2x2
В этом случае поиск заканчивается, и выбираем лучшую
точку за оптимум.
Сканирование.
Метод
сканирования
заключается
в
последовательном
просмотре значений критерия оптимальности в ряде точек и
нахождении среди них такой точки, в которой критерий
оптимальности (F) имеет оптимальное (max или min) значение.
Применяется данный метод к непрерывным функциям.
Рассмотрим одномерное сканирование – поиск максимума
функции одной переменной.
Итак, имеем интервал (отрезок) a,b, на котором
требуется отыскать экстремум целевой функции. Его
называют интервал неопределенности функции.
Точку
экстремума
не
обязательно
определять
абсолютно точно. Достаточно сильно сузить интервал.
Например, если мы знаем, что оптимальная температура
заключена в интервале 380-3810, то большая точность и
не нужна. Это обусловлено промышленными условиями
регулировки температуры (10).
Таким образом, в одномерном случае задача поиска экстремума
сводится к сужению интервала неопределенности.
Выберем целое число K значений целевой функции, которое
необходимо рассчитать.
Рассчитаем интервал x. x  B  A ;
K 1
F
F3
F1
A
F2
A
Fn
x
x
B
B
x
Отложим от точки А до В интервал x. В каждой точке
рассчитаем значение F(x). Принимаем за максимум наибольшее
из полученных значений (4-ая точка слева). К концу расчета
интервал неопределенности  составит 2x. Максимум может
находиться либо справа, либо слева от полученной наилучшей
точки.
Новый интервал неопределенности -

2b  a 
k 1
Новый интервал снова разбивается на интервалы величиной
B  A


x



x 
k  1  ,в каждой точке рассчитываются значения F и
выбирается экстремальное и т.д. Поиск продолжается до тех
пор, пока В-А (l=B-a).
Download