- •Введение
- •Часть 1. Линейное программирование
- •1.1. Построение линейных экономико-математических моделей
- •Примеры задач
- •1.2. Формы записи задач линейного программирования
- •1.3. Свойства решений задач линейного программирования
- •1.4. Геометрический смысл и графический метод решения задач линейного программирования
- •1.5. Симплексный метод решения задач линейного программирования
- •1.6. Симплексный метод с искусственым базисом
- •1.7. Элементы теории двойственности
- •А. Симметричная двойственная пара
- •В. Несимметричная двойственная пара
- •1.8. Основные теоремы двойственности
- •1.9. Транспортная задача
- •Алгоритм метода потенциалов
- •1.10. Задача об оптимальных назначениях
- •Часть 2. Нелинейное программирование
- •2.1. Дробно-линейное программирование
- •2.1.1. Постановка задачи
- •Общую задачу дробно-линейного программирования (в дальнейшем длп) обычно записывают в виде:
- •2.1.2. Графическое решение задач длп
- •2.1.3. Симплекс-метод в длп
- •2.2. Общая задача нелинейного программирования. Классификация вычислительных методов
- •Условия (1) и (2), а также
- •По постановке задачи.
- •2. По характерным чертам алгоритмов.
- •2.3. Эффективные методы одномерной минимизации
- •2.4. Графический метод решения задач нелинейного программирования
- •2.5. Методы минимизации для задач без ограничений, использующие производные
- •2.6. Методы минимизации, не использующие производные
- •2.7. Методы решения задач нелинейного программирования с ограничениями
- •2.7.1. Методы линейной аппроксимации
- •2.7.2. Понятие о методах штрафных функций
- •Список использованной литературы:
- •Содержание
- •Часть 1. Линейное программирование 3
- •Часть 2. Нелинейное программирование 47
Министерство образования и науки Украины
Харьковский национальный университет
им. В. Н. Каразина
С. И. Забуга, Н. П. Дидиченко
МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Учебный материал для студентов
економических специальностей
Харьков – 2010
УДК 519.85 (075.8)
ББК 22.18 я 73 - 1
З 12
Рекомендовано к печати ученым советом экономического факультета
Харьковского национального университета имени В. Н. Каразина
(протокол № .)
Рецензенти:
Забуга С. И.,
З
12
Пособие содержит теоретический материал и примеры решения задач, которые относятся к разделам «Линейное программирование», «Дробно-линейное программирование» и «Нелинейное программирование» курса «Математическое программирование». В начале каждого раздела приводятся краткие необходимые сведения из теории (определения, формулы и т.п.), детально разбираются типичные примеры, приводятся экономические задачи.
Учебное пособие предназначено для студентов экономических специальностей как дневной, так и заочной форм обучения.
УДК 519.85 (075.8)
ББК 22.18 я 73 - 1
© Харьковский национальный университет
имени В. Н. Каразина, 2009
© Забуга С. И., Дидиченко Н. П., Иващенко П. А.
© макет обложки, 2009
Введение
МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ – раздел математики, который посвящен разработке теории и практики решения задач нахождения экстремумов функций многих переменных на множествах их возможных значений, определяемых линейными и нелинейными ограничениями (равенствами и неравенствами).
Задачи математического программирования возникают буквально на каждом шагу: в повседневной экономической практике, в процессе производства, в торговле, в планировании работы предприятий и крупных их объединений. Как правило, задачи математического программирования связаны с сознательно управляемыми явлениями, при реализации которых имеется достаточно большое количество вариантов возможных решений. Особенно ярко это проявляется в процессе планирования экономической деятельности. В настоящее время практически все сложные расчеты отданы мощным компьютерам, однако, понимание математической сути задач нахождения оптимальных решений и умение построить адекватную математическую модель экономического процесса совершенно необходимо.
Формальная постановка задачи математического программирования такова:
D:
Z называется целевой функцией (или критерием качества) задачи математического программирования, D – допустимая область, заданная системой ограничений вида равенств и (или) неравенств. В зависимости от вида функции Z и функций, задающих ограничения, все задачи относятся к двум основным группам – задачи линейного и нелинейного программирования.
ИЗ ИСТОРИИ. Приоритет в разработке методов линейного программирования принадлежит советскому математику Л. В. Канторовичу, который в 1937 г. рассмотрел специальный класс экономико–математических задач и предложил алгоритмы их решения. Знаменательным явлением следует признать изобретение симплекс–метода решения задач линейного программирования американским математиком Дж. Данцигом в 1947 г. Сам же термин «математическое программирование» впервые ввел другой американец Р. Дорфман в 1950 г. Следует заметить, что этот термин не имеет ничего общего с программированием на ЭВМ, а происходит от понятия «оптимальная программа», которое было более распространено в годы становления данной математической дисциплины, а теперь заменено на термин «оптимальный план» или «оптимальное решение».
Использование методов математического программирования для решения экономических задач состоит из следующих этапов:
-
Словесная постановка задачи.
-
Построение математической модели явления (определение целевой функции, ограничений и параметров (переменных), подлежащих оптимизации).
-
Выбор метода решения.
-
Непосредственное нахождение экстремума целевой функции.
-
Анализ полученных результатов.
-
Внедрение результатов решения и управление процессом его реализации.
Естественно, что реализация п.п. 1, 2, 5, 6 должна проводиться математиками совместно со специалистами конкретной отрасли.
Классификация задач математического программирования предусматривает два основных направления:
А. Детерминированные задачи, т. е. задачи, в которых вся исходная информация определена.
В. Стохастическое программирование (исходная информация частично или полностью не определена).
Примеры задач В: планирование производства товаров без точной информации о реальном спросе, уровне инфляции, особенностях налоговой политики и т. п.
В свою очередь, задачи группы А делятся на задачи:
-
Линейного программирования (целевая функция и ограничения линейны).
-
Дискретного (целочисленного) программирования – если на часть переменных или на все наложены условия дискретности (целочисленности).
-
Параметрического программирования (целевая функция и (или) ограничения содержат параметры, заданные на некоторых множествах).
4. Нелинейного программирования (либо целевая функция, либо любая из функций, задающих ограничения, нелинейны). Здесь обычно выделяют два важнейших подкласса:
-
Выпуклое программирование (Z и D выпуклы).
-
Квадратичное программирование (Z – квадратичная, ограничения – линейные).
5. Динамического программирования (задачи, описывающие процессы, протекающие во времени или основанные на идее рекуррентного подхода).
Основная особенность задач математического программирования – к ним, как правило, неприменимы классические методы нахождения экстремума. Например, в самых простых задачах линейного программирования экстремум находится в угловых точках области D, там, где целевая функция недифференцируемая. Кроме того, в ограничения, как правило, присутствуют неравенства, что не дает возможности применить метод Лагранжа.
Следовательно, цель данного раздела математики – разработка там, где это возможно, аналитических методов нахождения экстремума либо создание эффективных процедур отыскания приближенного решения.
Для овладения основами математического программирования необходимо знание таких разделов математики, как математический анализ и линейная алгебра (в особенности, теория матриц и определителей, понятия линейной зависимости и базиса системы векторов, выпуклых множеств и функций, теории систем линейных уравнений).