- •Введение
- •Тема 1 Математическое программирование и оптимизация
- •1.1 Эволюция развития математических методов и моделей в экономике
- •1.2 Классификация экономико-математических моделей
- •1.3 Математическое программирование
- •1.4 Оптимизация в математике и ее методы
- •1.5 Метод Монте-Карло
- •1.5.1 Алгоритм Бюффона для определения числа Пи
- •1.5.2 Связь стохастических процессов и дифференциальных уравнений
- •1.5.3 Рождение метода Монте-Карло в Лос-Аламосе
- •1.5.4 Дальнейшее развитие и современность
- •1.5.5 Интегрирование методом Монте-Карло
- •1.5.6 Обычный алгоритм Монте-Карло интегрирования
- •1.5.7 Геометрический алгоритм Монте-Карло интегрирования
- •Тема 2 Линейное программирование
- •2.1 Общая задача линейного программирования
- •2.2 Основная задача лп (озлп)
- •2.3 Симплекс-метод линейного программирования
- •2.4 Двойственные задачи линейного программирования
- •2.5 Целочисленное линейное программирование
- •2.6 Параметрическое линейное программирование
- •2.7 Дробно-линейное программирование
- •2.8 Блочное программирование
- •2.9 Теория графов
- •2.10 Транспортная задача
- •2.10.1 Общая характеристика транспортной задачи
- •2.10.2 Математическая модель транспортной задачи
- •Тема 3 Нелинейное программирование
- •3.1 Методы нелинейного программирования
- •3.2 Метод множителей Лагранжа
- •3.3 Сепарабельное программирование
- •3.4 Выпуклое программирование
- •3.5 Квадратичное программирование
- •3.6 Геометрическое программирование
- •3.7 Динамическое программирование
- •3.8 Стохастическое программирование
- •Тема 4 Межотраслевой баланс и сетевое моделирование
- •4.1 Задача межотраслевого баланса
- •4.2 Балансовая модель Леонтьева
- •4.3 Модели межотраслевого баланса в планировании инновационных программ
- •4.3.1 Однопродуктовая динамическая макроэкономическая модель
- •1) Открытая однопродуктовая динамическая модель Леонтьева
- •2) Замкнутая однопродуктовая модель Леонтьева
- •4.4 Сетевая модель данных
- •4.4.1 Историческая справка
- •4.4.2 Основные элементы сетевой модели данных
- •4.4.3 Особенности построения сетевой модели данных
- •4.4.4 Операции над данными сетевой модели
- •4.4.5 Использование сетевой модели
- •4.5 Сетевой график
- •4.6 Методика составления сетевого графика
- •5. Задачи оптимального проектирования
- •5.1. Постановка задачи оптимального проектирования
- •5.1.1. Основные понятия и определения
- •5.2. Пример задачи оптимального проектирования
- •5.3. Классификация задач оптимального проектирования
- •Первая постановка
- •5.4 Определение уравнений линейной регрессии
- •5.7. Методика получения исходных данных
- •5.3. Решение задач оптимального проектирования
- •5.3.1. Оптимизация параметров изделия
Тема 3 Нелинейное программирование
3.1 Методы нелинейного программирования
Одновременно с развитием линейного программирования большое внимание уделялось задачам нелинейного программирования, в которых либо целевая функция, либо ограничения, либо то и другое нелинейны. В 1951 г была опубликована работа Куна и Таккера, в которой приведены необходимые и достаточные условия оптимальности для решения задач нелинейного программирования. Эта работа послужила основой для последующих исследований в этой области.
Начиная с 1955 г опубликовано много работ, посвященных квадратическому программированию (работы Била, Э. Баранкина (Barankin E.) и Дорфмана (Dorfman R.), Франка (Frank M.) и Вольфа (Wolfe P.), Г. Марковица и др.). В работах Денниса (Dennis J. B.), Розена (Rosen J. B.) и Зонтендейка (Zontendijk G.) разработаны градиентные методы решения задач нелинейного программирования.
В настоящее время для эффективного применения методов математического программирования и решения задач на компьютерах разработаны алгебраические языки моделирования, представителями которыми являются AMPL и LINGO.
Многообразие методов решения линейных программ имеет в своей основе идею упорядоченного перебора опорных планов (вершин) исходной или сопряженной задачи. Для нелинейных же программ простого метода решения, подобного cимплексному, нет по многим причинам.
Во-первых, множество планов может оказаться невыпуклым или иметь бесконечное количество "вершин".
Во-вторых, искомые экстремумы могут достигаться как на границе множества планов, так и внутри его.
В-третьих, в нелинейных программах возникает проблема поиска глобального экстремума среди множества локальных.
Как мы показали ранее, ни использование аппарата производных, ни прямое табулирование целевой функции над множеством планов не решают проблему в случае более трех переменных. Поэтому каждая нелинейная программа требует индивидуального подхода, учитывающего ее специфику.
Существующие методы нелинейного программирования можно подразделить на следующие основные классы.
Градиентные методы, в основе которых лежит свойство градиента функции в точке (вектора частных производных, вычисленного в точке) как указателя направления наибольшего роста функции в окрестности точки.
Так при отсутствии ограничений одна из простейших разновидностей градиентных методов - метод наискорейшего спуска предлагает выбрать некоторую точку (план) Xk и начальный шаг Hk, вычислить градиент функции в выбранной точке grad F(Xk) и осуществить переход по градиенту (при максимизации) с выбранным шагом. Если значение функции в новой точке больше предыдущего, новая точка принимается за исходную и повторяется такая же процедура. При попадании в точку с меньшим значением уменьшается шаг (например, вдвое) и переход повторяется от исходной точки. Переходы продолжаются до достаточно малого шага.
Например, если нужно решить систему уравнений
(X2+1)(Y-1)=3,Y=ln(X+1),
то можно заменить эту задачу задачей минимизации функции F(X,Y)=[(X2+1)(Y-2)-3]2+[Y-ln(X+1)]2 (если система имеет решение, то искомый минимум равен нулю).
Градиент этой функции определяется вектором
Grad F(X,Y) = {2[(X2+1)(Y-2)-3] 2X (Y-2) - 2[Y-ln(X+1)]/(X+1), 2 [(X2+1)(Y-2)-3](X2+1) - 2[Y-ln(X+1)]}.
Выбираем начальную точку M0(2,1) и шаг h=1.Здесь значение функции F(M0)=64, градиент в этой точке grad F(M0) =[64.066, -80.197], нормированный градиент (вектор единичной длины, составленный из компонент, деленных на корень из суммы их квадратов) gradн F(M0) = [0.62, -0.78]. Смещаемся в направлении, обратном градиенту (ищем минимум), с выбранным шагом в точку М1=М0-h gradн F(M0)=(2-1 0.62, 1+1 0.78)=(1.38, 1.78) и обнаруживаем, что F(M1)=14 < F(M0).
Аналогичный переход с учетом gradн F(M1) = [0.19, -0.98] приводит в точку М2(1.19, 2.76), где F(M2)=5.26, gradн F(M2) = [-0.96, -0.27]. Переход в очередную точку М3(2.15, 3.03) дает F(M3)=11.33 > F(M2).Соответственно уменьшаем шаг вдвое (h=0.5) и получаем точку М4(2.15, 3.03), где F(M4)=3.78, gradн F(M2) = [0.12, 0.99]. Очередной переход приводит в точку с большим значением функции и приходится еще уменьшать шаг и т.д.
Есть и более эффективные переходы по градиенту, связанные с выбором различного шага по разным координатам или с автоматическим определением шага (при каждом переходе решается задача поиска экстремума функции в заданном направлении). Однако, гарантии нахождения глобального экстремума нет (при разных начальных точках или шагах можно получить разные решения для многоэкстремальных функций).
Градиентные методы для задач с ограничениями, где при смещениях по градиенту приходится сталкиваться с опасностью "выскочить" за пределы допустимого множества решений, существенно усложняются (модифицированный метод Ньютона, методы возможных направлений Зойтендейка, сопряженных градиентов, проектируемых градиентов Розена и др.).
Существует обширная литература по численному анализу, где значительное внимание уделяется градиентным и другим итерационным методам, но тем не менее решение нелинейных задач оптимизации при наличии ограничений иногда весьма затруднительно.
Методы Монте-Карло. Здесь отыскивается n - мерный параллелепипед, включающий в себя множество планов, и затем моделируются N случайных точек с равномерным законом распределения в параллелепипеде (практически во всех программных средах предусмотрено наличие соответствующих датчиков псевдослучайных чисел).
В точках, попавших во множество планов, вычисляются значения функции и запоминается точка текущего экстремума. После этого берется параллелепипед меньших размеров с центром в найденной точке, и в нем вновь моделируются N случайных точек. Процесс такого стохастического моделирования заканчивается при малых размерах параллелепипеда. Методы Монте-Карло имеют преимущество над моделированием на детерминированной сетке, так как их точность имеет порядок 1/ и не зависит от размерности задачи. Естественно, этими методами никто не пользуется при ручном счете; они просты для программной реализации и обычно используются при поиске начального приближения для градиентных методов.
Методы динамического программирования, сводящие многомерную задачу оптимизации к последовательности задач меньшей размерности.
Методы выпуклого программирования, реализующие поиск минимума выпуклой функции или максимума вогнутой на выпуклом множестве планов. Если множество планов - выпуклый многогранник, то эти методы допускают использование симплексного метода.
Наиболее эффективно эти и другие методы решения действуют для так называемых сепарабельных функций, т.е. функций, представимых в виде суммы функций одной переменной
F(X1, X2, .. ,Xn) = f1(X1) + f2(X2) + ... + fn(Xn).