
- •Методы численного дифференцирования
- •Методы численного интегрирования
- •Алгоритмы решения задачи Коши
- •Алгоритм решения краевой задачи оду.
- •Классификация дифференциальных уравнений в частных производных
- •Метод сеток и алгоритмы его реализации
- •Численное решение рациональных и трансцендентных уравнений
- •Нахождение действительных и комплексных корней многочленов
- •§ 3.2.2 Методы решения задач оптимизации
- •Алгоритм метода
- •Задачи многомерной оптимизации
§ 3.2.2 Методы решения задач оптимизации
В принципе задача оптимизации может быть решена тремя разными способами:
- аналитически;
- численно;
- методом итеративного поиска.
Первый способ решения возможен, если существуют аналитические выражения для первой и второй производной F(X) и можно аналитически решить уравнение F'(X) = 0.
Если аналитического решения уравнений F'(X)= 0 нет, то его можно получить численно методами решения системы нелинейных уравнений.
Поисковые методы заключаются в последовательном улучшении решения. Их схема такова: выбирают некоторое начальное допустимое решение. Чем оно ближе окажется к оптимальному, тем лучше.
Окружают это решение множеством сравнения и на этом множестве тем или иным способом определяют наилучший вектор X или, во всяком случае, вектор лучший, чем начальное решение; затем этот цикл вычислений повторяют, образуя окрестность улучшенного решения и т.д.
Все алгоритмы этих способов основаны на необходимых условиях оптимизации.
Существуют еще два класса вычислительных алгоритмов при поиске экстремума:
- алгоритм отсечения неоптимальных решений;
- алгоритмы, базирующиеся на достаточных условиях оптимальности.
Задача поиска одномерного, локального безусловного оптимума.
Задача формулируется следующим образом. Найти наименьшее (или наибольшее) значение целевой функции f(X), заданной на множестве М и определить значение проектного параметра х* М, при котором целевая функция принимает экстремальное значение. Если целевая функция может быть вычислена при некоторых дискретных значениях аргумента, то среди них можно выбрать экстремальное значение. Существует несколько методов решения такой задачи:
перебора, дихотомии, половинного деления, золотого сечения, квадратичной функции, Фибоначчи. Все они используют такой алгоритм.
Выбор начального интервала поиска [a, b] и допустимой ошибки .
Выбор направления поиска внутри интервала и шага поиска x (стратегия поиска).
Вычисление значений ЦФ f(xi).
Проверка условия окончания поиска. xi+1- xi . Если условия выполняются, переход к п.6 иначе к п.4.
Конец.
Рассмотрим наиболее простой метод - “половинного деления”.
Пусть требуется найти безусловный минимум функции f(X) одной переменной. Метод относится к последовательным стратегиям и позволяет исключать из дальнейшего рассмотрения на каждой итерации в точности половину текущего интервала неопределенности. Алгоритм уменьшения интервала основан на анализе величин функции в трех точках, равномерно распределенных на текущем интервале (делящих его на четыре равные части).
Алгоритм метода
Шаг 1. Задать начальный интервал неопределенности L0 = [a ,b] , погрешность -
Шаг 2. Положить i = k = 0
Шаг 3. Вычислить координату средней точки интервала L0 xck = (ak + bk)/2, длину интервалаL2k= bk – ak и значение функции f(xck).
Шаг 4. Вычислить координаты точек: yk = ak + L2k/4 , zk = bk - L2k/4, f(yk), f(zk).
Эти три точки делят равномерно исходный интервал на 4 части.
Шаг 5. Сравнить значения f(yk) и f(xck) – слева от средней точки.
а) если f(yk) < f(xck), исключить интервал (xck, bk]. Положить bk+1 = xck , ak+1 = ak. Средней точкой нового интервала неопределенности L2 становится точка yk: xck+1 = yk. Перейти к шагу 7.
б) если f(yk) f(xck), перейти к шагу 6.
Шаг 6. Сравнить значения f(zk) и f(xck) – справа от средней точки.
а) если f(zk) < f(xck), исключить интервал (ak xck], положив ak+1 = xck , bk+1 = bk . Средней точкой нового интервала L2 становится точка zk: xck+1 = zk . Перейти к шагу 7.
б) если f(zk) f(xck), исключить интервал [ak , yk), (zk , bk ], положив ak+1= yk , bk+1 = zk Средней точкой нового интервала останется точка xck+1 = xc k.
Шаг 7. Вычислить длину нового интервала неопределенностиL2(k+1)= bk+1 – ak+1 и проверить условие окончания поиска.
а) если L2(k+1) , процесс поиска завершается и x* [bk+1 , ak+1]. В качестве приближенного решения можно взять середину интервала xck+1 ;
б) если L2(k+1) , то положить k= k +1 и перейти к шагу 4.
Продолжать вычисления до выполнения условия L2(k+1) .
ПРИМЕР Найти минимум функции f(x)= 2x2 – 12x на интервале [0,10], = 1.
1. L0 = [0,10].
2. k=0.
30. Вычислим xc0 = (0+10)/2 = 5 L0= 10 - 0, f(xck) = f(5) = -10.
40. Вычислим y0 = 0 + 10/4 = 2.5, z0 = 10 - 10/4 = 7.5, f(y0)= -17.5 ,f(z0)= 22.5.
50. Так как f(y0)= -17.5 < f(xc0) = -10 , то положим bk+1 = b1 = xc0 =5 , xc1 = y0 = 2.5, a1 = a0= 0 и переходим к следующему шагу 70.
70. Получим новый интервал L2= [ 0 ,5 ] L2= 5-0= 5> 1 k=1, переходим к шагу 41.
41. Вычислим y1 = 0 + 5/4 = 1.25, z1 = 5 - 10/4 = 3.75, f(y1)= -11.875 , f(z1)= - 16.875.
51. Сравним f(y1) и f(xc1) = f(y0) = -17.5 Так как, f(y1)= -11.875 > f(xc1) = -17.5, то перейдем к шагу 6.
61. Сравним f(z1) и f(xc1) f(z1) = - 16.875 > f(xc1) = -17.5, то положим: a2 = y1= 1.25 b2 = z1=3.75 ,
xc2 = xc1 = 2.5 и переходим к следующему шагу 71.
71. Получим новый интервал L4= [ 1.25 ,3.75 ] L4=3.75- 1.25= 2.5> 1 k = 2, поэтому снова переходим к шагу 42.
42. Вычислим y2 = 1.25 + 2.5/4 = 1.875, z2 = 3.75 - 2.5/4 = 3.125, f(y2)= -15.47 , f(z2)= - 17.87.
52. Сравним f(y2) и f(xc2) = f(xc1) = -17.5 Так как f(y2)= -15.47 > f(xc2) = -17.5 то перейдем к шагу 6.
62. Сравним f(y2) и f(xc2) = f(xc1) = -17.5 Так как f(y2)= -15.47 > f(xc2) = -17.5 то положим: a3 = xc2 = 2.5 b3 = b2 = 3.75 , xc3 = z2 = 3.125
72. Получим новый интервал L6= [2.5 ,3.75] L6= 3.75-2.5= 1.25> 1 k=3, переходим к шагу 4.
43. Вычислим y3 =2.5 + 1.25/4 = 2.81, z3 = 3.75 - 1.25/4 = 3.43, f(y3)= -17.93 , f(z3)= - -17.62.
53. Сравним f(y3) и f(xc3) Так как f(y3)= -17.93 > f(xc3) = -17.97 то перейдем к шагу 6.
63. Сравним f(z3) и f(xc3) Так как f(z3)= -17.62 > f(xc2) = -17.97 то положим: a4 = y3= 2.81 b4 = z3 = 3.43 , xc4 = x* [bk+1 , ak+1]. = 3.125
73. Получим новый интервал L8= [2.81 ,3.43] L8= 3.43-2.81= 0.62 < 1 x* [bk+1 , ak+1]. L8.
x* = xc4 = 3.125.
Для этого уравнения оптимум можно вычислить аналитически. f '(x)= 4x – 12 = 0, x = 3. Значит, последний интервал надо уменьшать.
Методы дихотомии, золотого сечения и чисел Фибоначчи описаны в рекомендованной литературе.