русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Методы решения задач нелинейного программирования


Дата добавления: 2015-09-15; просмотров: 4506; Нарушение авторских прав


Метод неопределенных множителей Лагранжа является классическим методом решения задач математического программирования. При практическом применении метода могут встретиться значительные вычислительные трудности, сужающие область его использования. Метод Лагранжа является аппаратом, используемым для обоснования различных современных численных методов.

Рассмотрим задачу оптимизации

max (min) z = ƒ(x); (6.3)

φi(x) = bi (i = 1,...,m), x = (x1, x2,..., xn). (6.4)

Эта задача выделяется из задачи (6.1), (6.2) тем, что среди ограничений (6.2) нет неравенств, нет условий не отрицательности переменных, их дискретности, m<n и функции ƒ(x) и φi(x) непрерывны и имеют частные производные, по крайней мере второго порядка.

Последовательность решения данной задачи методом неопределенных множителей Лагранжа:

1) составить функцию Лагранжа

L(x1,…, xn, λ1,…, λm) = ƒ(x1,..., xn) + ; (6.5)

λ1,…, λm – множители Лагранжа;

2) найти частные производные функции Лагранжа по всем переменным х1, х2,..., хп, λ1,…, λm

(6.6)

Получили систему уравнений(6.6), состоящую из n + m уравнений. Решить полученную систему (если это окажется возможным!) и найти таким образом все стационарные точки функции Лагранжа;

3) из стационарных точек, взятых без координат λ1,…, λm , выбрать точки, в которых функция ƒ(x) имеет условные локальные экстремумы при наличии ограничений (6.4).

Признаком существования минимума функции ƒ(x) в стационарнойточке х* является выполнение в ней достаточных условий минимума – выпуклости функции в окрестности этой точки, что может быть представлено следующим образом [*]:

x= > 0;

> 0,

т.е. все определители должны быть положительны.

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



Методы спуска. Численные (поисковые) методы играют существенную роль при решении многих прикладных задач, в том числе электроэнергетики. Это обусловлено рядом причин, среди которых главное место занимает разнообразие целевых функций и ограничений, а также форм их задания.

Допустим, что рассматривается задача безусловной минимизации целевой функции F(x). Сущность всех методов решения этой задачи, о которых далее пойдет речь, состоит в построении последовательности точек х(0), х(1), ..., х(р),..., монотонно уменьшающих значение целевой функции, т.е.

F(x(0)) ≥ F(x(1)) ≥ F(x(2)) ≥ … ≥ F(x(p)) ≥ … .

Такие методы (алгоритмы) называют методами спуска (или подъема при максимизации целевой функции). Их важнейшей характеристикой является сходимость, которая состоит в том, что при беспредельном увеличении последовательность х(0), х(1), ..., х(р),... сходится в точке глобального (локального) минимума.

Использование всех методов спуска сводится к следующей схеме. Пусть на р – й итерации (р – м шаге) имеется точка х(р). Тогда выбирают направление спуска – единичный вектор l(p), определяющий это направление, а также длину шага αр > 0 вдоль этого направления. Очередную точку вычисляют по следующей формуле:

х(р+1) = х(р) + αр l(p), р = 0,1,... .

Различные методы спуска отличаются друг от друга подходом к выбору длины шага αр (при αр = αспуск осуществляется с постоянным шагом) и вектора l(p). Все методы спуска можно разделить на три группы в зависимости от того, какие характеристики целевой функции F(x) используются для определения αр и l(p). К первой группе относят методы, требующие только вычисления значений целевой функции. Эти методы называются методами нулевого порядка. Методы первого порядка требуют вычисления значений функции и ее первых производных. Наконец, методы второго порядка предполагают исследование и вторых производных.

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

Широкое распространение в энергетических расчетах нашел метод нулевого порядка – метод покоординатного спуска. В соответствии с этим методом направление спуска выбирают параллельно координатным осям. Сначала проводят спуск вдоль оси Ох1, затем – вдоль оси Ох2 и т.д. вплоть до оси Охп.

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

Задачи без ограничений. Рассмотрим задачу максимизации нелинейной дифференцируемой функции f(Х). Суть градиентного поиска точки максимума Х* очень проста: надо взять произвольную точку Х0 и с помощью градиента , вычисленного в этой точке, определить направление, в котором возрастает с наибольшей скоростью, а затем, сделав небольшой шаг в найденном направлении, перейти в новую точку Х1. Потом снова определить наилучшее направление для перехода в очередную точку Х2 и т.д. Таким образом, надо построить последовательность точек Х0, Х1, Х2, …, Хк, …так, чтобы она сходилась к точке Х*, т.е. для точек последовательности выполнялись условия

 

f0) < f1) < f2) < … < fк) < ….

 

Градиентные методы позволяют получать точное решение за бесконечное число шагов и только в некоторых случаях – за конечное. В связи с этим градиентные методы относят к приближенным методам решения.

Движение из точки Хк в новую точку Хк+1 осуществляется по прямой, проходящей через точку Хк и имеющей уравнение

Хк+1 = Хк + , (6.7)

где числовой параметр, от которого зависит длина шага.

Градиентные методы отличаются друг от друга способом выбора величины шага – значения параметра αк. Можно, например, двигаться из точки в точку с постоянным шагом αк = α, т.е. при любом к

Хк+1 = Хк + .

Если при этом окажется, что fк+1) < fк), то следует возвратиться в точку Хк и уменьшить значение параметра α, например до α/2.

Если ищется приближенное решение, то поиск можно прекратить, основываясь на следующих соображениях. После каждой серии из определенного числа шагов сравнивают достигнутые значения целевой функции f(Х). Если после очередной серии изменение f(Х) не превышает некоторого наперед заданного малого числа ε, поиск прекращают и достигнутое значение f(Х) рассматривают как искомый приближенный максимум, а соответствующее ему Х принимают за Х*.

Если целевая функция f(Х) вогнутая (выпуклая), то необходимым и достаточным условием оптимальности точки Х* является равенство нулю градиента функции в этой точке.

Распространенным является вариант градиентного поиска, называемый методом наискорейшего подъема (наискорейшего спуска – если решается задача минимизации). Суть его в следующем. После определения fк) в точке Хк движение вдоль прямой Х = Хк + производится до точки Хк+1, в которой достигается максимальное значение функции f(Х) в направлении градиента fк). затем в этой точке вновь определяется градиент, и движение совершается по прямой Х = Хк+1 + в направлении нового градиента fк+1) до точки Хк+2, в которой достигается максимальное в этом направлении значение f(Х). Движение продолжается до тех пор, пока не будет достигнута точка Х*, соответствующая наибольшему значению целевой функции f(Х). На рис.х.х приведена схема движения к оптимальной точке Х* методом наискорейшего подъема. В данном случае направление градиента fк) в точке Хк является касательным к линии уровня поверхности f(Х) в точке Хк+1, следовательно, градиент в точке Хк+1 ортогонален градие fк).

 

Рис.6.2

Перемещение из точки Хк в точку Хк+1 = Хк + сопровождается возрастанием функции f(Х) на величину

 

Δ f(Х) = fк+1) - fк) = fк+1,1;…; Хк+1,п) - fк,1;…; Хк,п) =

 

= . (6.8)

 

Из выражения (6.8) видно, что Δf является функцией переменной αк, т.е. Δf = Δf(αк). При прохождении максимума функции f(x) в направлении градиента fк) необходимо выбирать шаг перемещения (множитель , обеспечивающий наибольшее возрастание приращению функции, именно функции Δƒ( . Величина при которой достигается наибольшее значение Δƒ( , может быть определена из необходимого условия экстремума функции Δƒ( :

 

d(Δƒ( )/dαk = 0. (6.9)

 

Найдем выражение для производной, дифференцируя равенство (6.9) по αк как сложную функцию:

 

fк+1) fк).

 

Подставляя этот результат в равенство (х.х1), получаем

d(Δƒ( )/dαk fк+1) fк).

Это равенство имеет простое геометрическое истолкование: градиент в очередной точке Хк+1 ортогонален градиенту в предыдущей точке Хк.

Задачи с линейными ограничениями. Рассмотрим задачу выпуклого программирования с линейными ограничениями:

max Z = ƒ(x); (6.10)

ax ≤ ai0 (i = 1, 2,...m) (6.11)

x ≥ 0, (6.12)

где х = (х1; х2;...; хп); аi = (ai1; ai2;...; ain).

Предполагается, что ƒ(x) является вогнутой функцией и имеются непрерывные частные производные в каждой точке допустимой области.

Начнем с геометрической иллюстрации процесса решения задачи (рис.х.хх). Пусть начальная точка Х0 расположена внутри допустимой области. Из точки Х0 можно двигаться в направлении градиента f0), пока ƒ(Х) не достигнет максимума. В нашем случае ƒ(Х) все время возрастает, поэтому остановиться надо в точке Х1 на граничной прямой.

Рис. 6.3

Как видно из рисунка, дальше двигаться в направлении градиента f1) нельзя, т.к. выйдем из области допустимых решений. Поэтому надо найти другое направление перемещения, которое, с одной стороны, не выходит из допустимой области, а с другой – обеспечивает наибольшее возрастание ƒ(Х). Такое направление определяет вектор r1, составляющий с вектором f1) наименьший острый угол по сравнению с любым другим вектором, выходящим из точки Х1и лежащим в допустимой области. Аналитически такой вектор найдется из условия максимизации скалярного произведения f1) r1 > 0. В данном случае вектор r1, указывающий наивыгоднейшее направление, совпадает с граничной прямой.

Таким образом, на следующем шаге двигаться надо по граничной прямой до тех пор, пока возрастает ƒ(Х); в нашем случае – до точки Х2. Из рисунка видно, что далее следует перемещаться в направлении вектора r2, который находится из условия максимизации скалярного произведения f2) r2 > 0, т.е. по граничной прямой. Движение заканчивается в точке Х3, поскольку в этой точке завершается оптимизационный поиск, т.к. в ней функция ƒ(Х) имеет локальный максимум. Ввиду вогнутости оптимизационной функции, в этой точке ƒ(Х) достигает глобального максимума в допустимой области. Градиент в точке максимума Х3 = Х* составляет тупой угол с любым вектором rк из допустимой области, проходящей через Х3, поэтому скалярное произведение f3) rк будет отрицательным для любого допустимого rк, кроме r3, направленного по граничной прямой. Для него скалярное произведение f3) r3 = 0, т.к. f3) и r3 взаимно перпендикулярны (граничная прямая касается линии уровня поверхности ƒ(Х), проходящей через точку максимума Х*). Это равенство и служит аналитическим признаком того, что в точке Х3 функция ƒ(Х) достигла максимума.

Аналитическое решение задачи (х.хх1) – (х.хх3) требует, чтобы при выборе αк определение очередной точки Хк+1 = Хк + αк fк) осталось в допустимой области. Существуют различные методы оптимизации длины шага (αк) и проверки принадлежности очередной точки Хк допустимой области.

Задачи с нелинейными ограничениями. Если в задачах с линейными ограничениями движение по граничным прямым оказываетя возможным и даже целесообразным, то при нелинейных ограничениях, определяющих выпуклую область, любое сколь угодно малое перемещение из граничной точки может сразу вывести за пределы области допустимых решений, и возникает необходимость в возвращении в допустимую область (рис. 6.4). Подобная ситуация характерна для задач, в которых экстремум функции ƒ(Х) достигает на границе области. В связи с этим

Рис 6.4

применяются различные способы перемещения, обеспечивающие построение последовательности точек, расположенных вблизи границы и внутри допустимой области, или зигзагообразное движение вдоль границы с пересечением последней. Как видно из рисунка, возврат из точки Х1 в допустимую область следует осуществлять вдоль градиента той граничной функции φк(Х), которая оказалась нарушенной. Это обеспечит отклонение очередной точки Х2 в сторону тоски экстремума Х*. Признаком экстремума в подобном случае будет коллинеарность векторов ƒ и φк.



<== предыдущая лекция | следующая лекция ==>
ЗАДАЧИ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ | ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.