Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

file_12171 / МОР Пособие

.pdf
Скачиваний:
16
Добавлен:
13.02.2015
Размер:
272.41 Кб
Скачать

А.П.Попов

Методы оптимальных решений

Пособие для студентов экономических специальностей вузов

Ростов-на-Дону

2013

Введение

Вприкладной математике имеется несколько направлений, играющих важную роль в решении целого ряда экономических задачах, и настолько тесно связанных между собой, что иногда трудно понять, где заканчивается одно направление и начинается другое. Речь здесь идет об исследовании операций, теории принятия решения и методах оптимизации. Изначально исследование операций и теория принятия решений служили двумя разными обозначениями одного и того же направления исследований в прикладной математике. Со временем произошло разделение круга задач, решаемых теорией исследования операций и теорией принятия решений, но методы исследования остались общими. Наиболее важным разделом исследования операций является математическое программирование, основная задача которого заключается в поиске экстремума (минимума иди максимума) целевой функции, зависящей от одного или нескольких аргументов, на область изменения которых накладываются ограничения. В зависимости от вида целевой функции и ограничений на область изменения ее аргументов, математическое программирование подразделяется на линейное, выпуклое, квадратичное и общее нелинейное. По сложившейся традиции, содержание ряда дисциплин, которые читают студентам экономических специальностей, включает задачи, либо прямо относящиеся к линейному программированию (задача оптимального использования ресурсов, транспортная задача), либо сводящиеся каким-то образом к задачам линейного программирования (например, теория антагонистических игр с нулевой суммой). В то же время задачи нелинейного программирования в стандартных учебных курсах обычно не рассматриваются, хотя, начиная с работ Р. Беллмана и Э. Полака, под методами оптимальных решений понимают в первую очередь именно универсальные численные методы, специально разработанные для решения задач нелинейного программирования.

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

2

1. Выбор оптимального решения в одномерном случае

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

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

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

Поскольку в точке минимума дифференцируемой функции ее первая производная обращается в ноль, задача поиска минимума целевой функции:

( ) →

(1.1)

сводится к задаче поиска корня ее первой производной:

( ) = 0, где ( ) = ( )

(1.2)

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

3

Относительно производной целевой функции

( )

будем предполагать

выполненными следующие три условия:

 

 

 

 

 

 

 

A) Функция

 

 

на отрезке

 

является монотонно неубывающей

(монотонно

невозрастающей) функцией;

 

 

 

 

 

 

 

 

 

 

 

(

)

 

[ , ]

 

 

 

 

 

 

 

 

 

B) Функция

(

)

на концах отрезка

[ ,

 

]

принимает противоположные

по знаку значения.

 

 

 

 

 

[

, ]

 

C) Вторая производная функции

 

на отрезке

является строго

 

 

 

 

 

 

 

функцией.

 

 

положительной (строго отрицательной) (

)

 

 

 

 

 

 

При выполнении условий A и B функция

 

 

обязательно имеет внутри

отрезка

[ ,

]

корень, причем единственный,

что позволяет обойти проблему

 

 

 

 

( )

 

 

 

 

отделения и уединения корней уравнения (методы решения этой непростой проблемы подробно обсуждаются в специальной литературе). Условию C имеет наглядный геометрический смысл: если оно выполняется, то функция ( ) на отрезке [ , ] является строго вогнутой (строго выпуклой) функцией. Вкратце опишем теперь метод секущих и метод касательных, которые

лежат в основе комбинированного метода.

В методе секущих корень уравнения (1.2) заменяется корнем уравнения

секущей (прямой линии, проходящей через концевые точки графика

( )):

( − ) ( ) + ( −

) ( )

= 0,

(1.3)

 

 

Корень линейного уравнения (1.3) легко находится, и равен:

 

=

( ) − ( )

(1.4)

( ) −

( )

 

В методе касательных корень уравнения (1.2) заменяется корнем уравнения касательной к графику функции ( ), проведенной через одну из концевых точек графика:

( ) +

( )(

) = 0

(1.5a)

( ) +

( )(

) = 0

(1.5b)

Возникает вопрос: какую именно концевую точку отрезка [ , ] следует при этом выбрать?

4

Можно показать, что при выполнении условий A, B и C обязательно выполняется одно из двух взаимоисключающих неравенств:

( )

( ) > 0

(1.6a)

( )

( ) > 0

(1.6b)

Если выполняется условие (1.6a), то выбирают уравнение касательной (1.5a), корень которого равен:

= −

( )

(1.7a)

( )

а если выполняется условие (1.6b), то выбирают уравнение касательной (1.5b), корень которого равен:

= −

( )

(1.7b)

( )

Можно показать, что при выполнении условий A, B и C точное значение корня уравнения (1.2) заключено между приближенными значениями корня

и

, найденными методом секущих и методом касательных. Именно этот

фактcлежит в основе комбинированного метода, где приближенные значения

корня

и становятся новыми границами интервала, в котором заключено

точное

значение корня уравнения (1.2).

c

Итерационный процесс, основанный на комбинированном методе, позволяет получить последовательность вложенных интервалов, содержащих корень уравнения (1.2), причем длины вложенных интервалов достаточно быстро стремится к нулю.

Алгоритм 1.1. Итерационный процесс на основе комбинированного

метода секущих и касательных.

 

 

 

 

 

 

 

Шаг 0. Ввести исходные данные

 

.

Параметр задает точность

вычисления корня, по достижении которой,

выполнение,

основного алгоритма

прерывается. Присвоить стартовое значение счетчику числа итераций

.

Шаг 1.

Увеличить значение счетчика

 

, и найти

приближенные

 

 

 

← 0

значения

и

корня методом секущих

(1.4) и касательных (1.7).

 

 

 

+ 1

 

 

 

Шаг 2. Если | − | <

, то перейти к шагу 4.

 

 

5

 

 

 

 

 

 

 

 

 

Шаг 3. Выполнить следующие действия:

и перейти к шагу 1;

 

1) Если

 

<

, то присвоить

,

 

2) Если

, то присвоить

,

и перейти к шагу 1.

 

Шаг 4.

Выход из основного алгоритма, и оформление сводной таблицы

 

<

 

 

 

 

 

с результатами вычислений.

 

 

 

 

 

 

Найдем в качестве примера минимум целевой функции:

(1.8)

 

 

 

( ) = 0.03

+ 0.02

+ 0.18

− 0.5 + 0.5

на отрезке

 

, для чего применим описанный выше алгоритм 1.1 к

 

 

производной:

 

 

 

 

 

 

поиску корня ее [0,2]

 

+ 0.06

+ 0.36 − 0.5

(1.9)

 

 

 

( ) = 0.12

при следующих значениях входных данных:

 

(1.10)

1.5

 

 

= 0

 

= 2

 

= 0.00001

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

0

 

 

0.5

 

1

 

1.5

2

 

0.5

 

 

 

 

 

 

 

 

 

Рис.1.1. Графики целевой функции (1.8) и ее производной (1.9).

 

6

Пользуясь формулами для первой и второй производных полинома (1.9):

( ) = 0.36

+ 0.12 + 0.36

(1.11)

( ) =

0.72# + 0.12

(1.12)

нетрудно убедиться, что на отрезке [0,2] условия A, B и C для функции ( ) выполнены.

1.5

 

 

 

 

1

 

 

 

 

0.5

 

 

 

 

0

0.5

1

1.5

2

0.5

 

 

 

 

Рис.1.2. Производная (1.9) целевой функции (1.8) вместе с секущей и касательной к графику производной.

приближенные значения корня

 

и

 

 

=,

0.9512072

и

На рис. 1.2

показано также точное значение корня

 

 

первой итерации

методом

 

= 0.52083

 

 

= 1.30392

найденные в

 

 

 

 

 

 

 

 

 

 

секущих и методом

 

касательных. Результаты

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

7

Таблица 1.1. Поиск минимума комбинированным методом.

 

 

1

2

3

4

 

 

0.5208333

0.8754355

0.9491522

0.9512057

 

 

1.3039216

1.004902

0.9526257

0.9512082

(

)

-0.2792697

-0.0583492

-0.001642

-0.0000012

(

)

0.3374575

0.0441278

0.0011355

0.0000008

(

)

0.2934447

0.2312709

0.2290338

0.2290321

(

)

0.2851377

0.2302062

0.2290329

0.2290321

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

8

2. Выбор оптимального решения в многомерном случае

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

зависит от

аргументов

 

 

 

. Любую совокупность значений этих

аргументов можно считать

координатами точки

 

в

– мерном

,

, , …

 

задана на всем

– мерном

пространстве. Будем считать, что целевая функция ( ,

, , … )

 

 

пространстве, и обозначать через

 

 

значение функции в точке

. Кроме

того, будем предполагать,

что

целевая функция не только непрерывна, но

 

( )

 

 

 

 

имеет также непрерывные частные производные первого и второго порядка. Приведем теперь описание самой алгоритмической схемы. Алгоритмическая схема 2.0. Схема поиска минимума функции многих

переменных.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 0. Задать точность

 

вычисления

 

минимума

целевой функции.

Выбрать стартовую точку и присвоить счетчику итераций значение

.

.

 

 

 

 

 

 

 

 

 

 

 

(

)

 

точке

Шаг 1. Вычислить текущее значение целевой функции

 

 

в

← 0

( , , , … )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 2. Определить направление поиска

 

 

 

 

 

,

и выбрать

величину перемещения (шага)

 

в данном

направлении.

Найти следующую

 

 

 

(

,

,

 

, … )

 

 

.

точку в итерационной

последовательности по формуле:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в новой точке.

Шаг 3. Вычислить значение целевой функции

(

>)

> =

 

+

 

Шаг 4. Если

 

(

)| <

, перейти к

 

 

 

 

 

 

 

 

 

 

шагу 5, иначе присвоить

счетчику итераций| ( >) −

 

 

 

, и перейти к шагу 1.

 

следующее значение

 

 

 

 

Шаг 5. Выход из основного

алгоритма и оформление сводной таблицы с

 

 

+ 1

 

 

 

 

 

 

 

 

результатами вычислений.

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

9

Вместе с тем в подавляющем большинстве известных алгоритмов при выборе шага руководствуются универсальным правилом: при заданном

направлении поиска величину шага

 

следует выбрать так, чтобы минимум

при

 

( ) = (

+

)

 

зависящей от одной переменной

, достигался

функции

 

=

 

 

,

 

 

 

 

 

значении

:

 

 

min( ;F)

( ) = ( )

(2.1)

 

 

 

 

 

 

 

 

 

 

 

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

Напомним теперь определение градиента функции многих переменных, которое далее потребуется нам при описании метода наискорейшего спуска и метода сопряженных градиентов.

Градиентом ( ) целевой функции ( ) в точке называют вектор, проекции которого на координатные оси совпадают с частными производными первого порядка от целевой функции, взятыми в данной точке по соответствующим аргументам:

= H( ) =

K

K

 

K

 

 

K

,

K

,

K

, …

(2.2)

Перейдем теперь к непосредственному описанию метода наискорейшего спуска и метода сопряженных градиентов.

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

 

 

 

= − = − H(

)

 

 

 

 

 

 

 

(2.3)

Алгоритм 2.1. Поиск минимума функции многих переменных методом

наискорейшего спуска.

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 0. Задать точность вычисления

минимума целевой

функции.

Выбрать стартовую точку

 

 

 

 

 

 

 

в

 

← 0.

и присвоить счетчику итераций значение

 

.

Шаг 1. Вычислить текущее значение целевой функции

 

 

 

точке

 

Шаг 2. Определить направление поиска

 

в

соответствии с (2.3),

и

 

 

 

(

)

 

 

 

 

выбрать величину шага

 

согласно правилу (2.1). Найти следующую точку в

итерационной

последовательности по формуле:

> =

+в

.

 

 

 

 

 

 

 

 

 

(

>)

 

 

 

 

 

Шаг 3. Вычислить значение целевой функции

 

новой точке.

 

 

 

 

 

 

 

 

 

 

 

 

 

10

Соседние файлы в папке file_12171