Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коросов А.В. 2002. Имитационное моделирование в...doc
Скачиваний:
26
Добавлен:
12.09.2019
Размер:
3.07 Mб
Скачать

4. Теория оптимизации

Термин «оптимизация», «улучшение ситуации», в математике обозначает процесс поиска наилучших с некоторой точки зрения параметров системы, в моделировании – поиск таких значений параметров модели, которые обеспечивают наибольшее сходство модельных и реальных переменных, минимизируют функцию невязки (целевую функцию оптимизации). Обозначим параметр модели (характеристику системы) через a, функцию невязки – через F(a). Общая задача оптимизации состоит в том, чтобы найти такие a, при которых

F(a) = 0 (Иванищев и др., 1989, с. 68).

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

Модель с одним параметром

Возьмем для начала простейшую модель с одним параметром a:

Y' = f(a, X, Y).

Пусть модель строится для имитации изменения ряда реальных значений переменной Y, зависящей от внешней переменной X. Отличие расчетных значений от модельных характеризует функция невязки, или целевая функция оптимизации, F(a) = S(Y'–Y)2. Общая задача оптимизации состоит в том, чтобы найти такое значение параметра модели a, при котором отличие модельных предсказаний от реальных данных было бы минимальным, т. е. целевая функция отличий F(a) обнулилась:

a ® оптимум,

F(a) ® 0.

В этом плане оптимизация есть последовательный (повторяющийся, итеративный) поиск все новых значений параметра ai+1, которые были бы лучше, чем предыдущие значения ai, лучшие в том смысле, что при подстановке их в модельное уравнение функция отличий приблизилась бы к нулю:

если 0< F(a i+1) < F(a i), то ai+1 лучше, чем ai.

По этой причине задача настройки параметров модели есть задача минимизации.

При расчете нового значения параметра ai+1 обычно используют предыдущее значение ai, измененное на некоторую величину V(ai) (уравнение итерации) (Васильев, 1988, с. 261):

ai+1 = ai + k · V(ai), [1]

где

i – номер шага оптимизации (шаг итерации),

k – коэффициент пропорциональности со своим знаком.

Это вычисление требуется для «улучшения» значения параметра. Но это значит, что прибавка V(ai) еще до расчета нового значения ai+1 должна каким-то образом улавливать, что это улучшение произойдет. Контроль за будущим значением параметра осуществляется двояким образом: по величине и по знаку прибавки V(ai).

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

V(ai) ~ F(ai).

Новая формула итерации примет вид:

ai = ai+1 + k · F(ai). [2]

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

DF(ai) = F(ai) – F(ai+Da),

к приращению параметра на величину Da , т. е. какой знак будет иметь величина

F'(ai) = DF(ai) / Da = [F(ai) – F(ai+Da)] /Da ?

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

Da – условное приращение параметра; это малая величина, она задается в условиях программы оптимизации (см. свойства макроса «Поиск решения"),

F(ai) – значение целевой функции, вычисленное при прежнем значении параметра,

F(ai+Da) – значение целевой функции, вычисленное при измененном значении параметра.

Р

F(ai+Da)

ис. 4.1. Целевая функция и дискретный аналог ее производной

Если положительное приращение Da уменьшает целевую функцию F(ai)<F(ai+Da) и сохраняет положительный знак перед приращением DF(ai), значит, знак перед F'(ai) остается положительным. Если же функция невязки увеличилась, то знак перед F'(ai) поменяется на противоположный.

Рассмотренные идеи автоматического определения и величины, и знака приращения значения параметра лежат в основе метода Ньютона:

V(ai) = F(ai)/ F'(ai)

или

ai+1 = ai + F(ai)/ F'(ai) (Турчак, 1987; с. 159). [3]

С технической стороны вся процедура оптимизации выглядит следующим образом. Сначала для произвольно взятого значения модельного параметра (a0) вычисляется исходное значение целевой функции F(a0) (как было показано выше, исходные значения параметров моделей задаются с учетом знания о существе моделируемого явления). После этого отыскивается первое условное приращение параметра Da, исходя из установленных свойств программы оптимизации, затем вычисляется «рабочее» новое значение параметра a0 + Da и «рабочее» новое значение целевой функции F(a0 + Da). Так получают характеристики двух шагов итерации, после чего появляется возможность для расчета величины и знака приращения параметра V(a0), а также и самого нового значения параметра a1 по формуле [3]. Используя рассчитанное обновленное значение параметра, вычисляется новое значений целевой функции F(a1), после чего процедура повторяется по тех пор, пока решение не станет «оптимальным», т. е. пока целевая функция не станет равна нулю или не перестанет уменьшаться.

Здесь уместно сравнить величины приращений Da и V(ai), каждая из которых в свое время прибавляется к текущему значению параметра ai. Отличие их состоит в том, что сумма (a0 + Da) служит только для определения «оптимального» направления дальнейшего изменения параметра, но не участвует в получении его окончательного нового значения. Сумма (a+ V(ai)), напротив, используется только для получения очередного, «более оптимального» значения, параметра ai+1.

Серия вычислений производит последовательность значений параметра: a1, a2, … ai-1, ai, ai+1, … an, которая может сходиться, т. е., в конце концов, приблизиться к некоторому стабильному значению ai. В наилучшем случае функция невязки превращается в нуль. Отсюда следует основной смысл уравнений итерации [1, 2, 3]: когда целевая функция F(ai) становится равной нулю, найденный параметр ai считают решением уравнения (Заварыкин и др., 1990, с. 13–17).

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

F(ai) – F(ai+1)< .

Значение этой относительной погрешности выбирают порядка  = 0.000001; его можно изменить в параметрах макроса «Поиск решения».

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