
- •Что такое оптимальное решение
- •1.1. Типовые задачи оптимизации
- •1.1.1. Откуда появились вопросы
- •1.1.2. Основные методы решения задач
- •1.2. Классификация задач оптимизации
- •1.2.1. Пример математической модели
- •1.2.2. Общий случай задачи оптимизации
- •1.2.3. Классификация математических моделей
- •1.3. Последовательность работ при принятии оптимальных решений
- •1.3.1. Основные этапы работ
- •1.3.2. Анализ решаемых задач
- •Типовые работы при оптимизации
- •2.1. Работа с электронной таблицей
- •2.1.1. Основные положения
- •Блок назначения команд
- •Блок ввода команд
- •2.1.2. Панели инструментов
- •Закрыть.
- •2.1.3. Ввод и форматирование данных
- •Формат, ячейки...
- •Сервис, параметры...
- •2.1.4. Основные задачи копирования и переноса
- •2.1.5. Некоторые дополнительные процедуры
- •Защита файлов
- •Файл, сохранить как...
- •Параметры...
- •Файл, сохранить как...
- •Параметры...
- •Сервис, защита.
- •Комментарии
- •Вставка, примечание...
- •Вставка, примечание...
- •Вставка, примечание...
- •Вставка, примечание...
- •Запись...
- •Вставка, примечание...
- •2.2. Построение диаграмм
- •2.2.1. Основные положения
- •2.2.2. Создание встроенных диаграмм
- •2.2.3. Работа с выделенными диаграммами
- •Вставка, метки значений...
- •2.2.4. Построение диаграмм с рисунками
- •2.3. Работа с базами данных
- •2.3.1. Основные положения
- •Данные, сортировка...
- •Данные, сортировка...
- •Параметры...
- •Правка, копировать...
- •Правка, специальная вставка...
- •2.3.2. Поиск
- •Условие...
- •2.3.3. Функции базы данных
- •2.4. Список алгоритмов
- •Задачи линейного программирования
- •3.1. Методы решения задач
- •3.1.1. Постановка задачи
- •3.1.2. Задача распределения ресурсов
- •3.1.3. Основные положения симплекс-метода
- •Признак 1
- •Признак 2
- •3.2. Методы анализа задач
- •3.2.1. Если решения нет
- •3.2.2. Двойственность в задачах линейного программирования
- •3.2.3. Анализ оптимального решения
- •Анализ влияния изменения cj
- •Анализ влияния изменения bi
- •3.2.4. Вариантный анализ
- •Первая постановка
- •Вторая постановка
- •3.3. Решение задач линейного программирования с помощью Excel
- •3.3.1. Блок-схема решения задачи
- •3.3.2. Ввод условий задачи
- •Сервис, поиск решения...
- •Добавить...
- •3.3.3. Решение задачи
- •Параметры...
- •Максимальное время
- •Предельное число итераций
- •3.3.4. Графическое представление результатов решения
- •3.3.5. Преодоление несовместности
- •3.3.6. Устранение неограниченности целевой функции
- •3.4. Анализ задач линейного программирования в Excel
- •3.4.1. Анализ оптимального решения
- •Отчет по результатам
- •Отчет по устойчивости
- •Отчет по пределам
- •3.4.2. Параметрический анализ
- •2.2. Сервис, поиск решения...
- •2.3. Выполнить.
- •2.4. Сохранить сценарий...
- •4.1. Сервис, сценарии...
- •4.2. Отчет...
- •3.4.3. Решение по нескольким целевым функциям
- •3.4.4. Решения по заказу
- •Сервис, поиск решения...
- •Выполнить.
- •3.4.5. Решение задач при условных исходных данных
- •3.5. Список алгоритмов
Задачи линейного программирования
3.1. Методы решения задач
3.1.1. Постановка задачи
задача линейного программирования, которая является частным случаем задачи оптимизации (1.1.9), записывается следующим образом:
(3.1.1)
задача линейного программирования является достаточно распространенной задачей принятия оптимальных решений, особенно в экономике. решение этой задачи рассмотрим на примере задачи распределения ресурсов. но сначала маленькое отступление.
чтобы смотреть телевизор, совсем не обязательно иметь представление о принципах его работы. большинство авиапассажиров не знает, что такое подъемная сила и почему самолеты летают на больших высотах. точно так же, чтобы принимать оптимальное решение на основе математической модели, совершенно не обязательно знать достаточно сложные алгоритмы, по которым это решение находится.
с другой стороны, когда известно, каким путем получен результат, больше уверенности в его правильности и на душе спокойнее. поэтому любознательному читателю мы предоставляем возможность познакомиться с алгоритмами решения задач линейного программирования.
задачу линейного программирования можно решать аналитическими и графическими методами. аналитические методы, которые представляют собой последовательность вычислений по некоторым правилам, являются основой для решения задачи на компьютере. их единственный недостаток заключается в том, что в отличие от графических методов, они совершенно не наглядны. графические же методы достаточно наглядны, но они пригодны лишь для решения таких задач, в которых число переменных n = 2, что дает возможность представлять задачу на плоскости. однако, учитывая наглядность графических методов, идею решения задачи линейного программирования мы рассмотрим с их помощью.
начнем с простых примеров.
как известно, уравнение прямой имеет вид
a1x1+a2x2=b. (3.1.2)
построим прямую
2х1+х2=2.
для этого запишем уравнение в виде
. (3.1.3)
при такой форме записи в знаменателе показаны отрезки, которые отсекает прямая (3.1.3) на осях координат, что показано на рис. 3.1.1.
е
рис.
3.1.1
2х1+х2 2, (3.1.4)
то его можно представить графически, как это показано на рис. 3.1.2.
из приведенных рисунков видно, что если линейное уравнение с двумя неизвестными представляет собой прямую линию, то линейное неравенство — полуплоскость.
н
рис.
3.1.2
построим теперь систему неравенств:
(3.1.5)
х1 0; х2 0
для удобства построения запишем ее в форме уравнения в отрезках:
(3.1.6)
э
рис.
3.1.3
поскольку в одр бесчисленное множество точек, значит, рассматриваемая система имеет бесчисленное множество допустимых решений.
если мы хотим найти оптимальное решение, то должны принять целевую функцию. допустим, мы хотим, чтобы решение было оптимальным в смысле максимизации целевой функции
(3.1.7)
эта зависимость на рис 3.1.4 представлена в форме уравнения прямой с угловым коэффициентом
х2 = F x1,
из которого видно, что tg = 1. при этом угол = 135°, а величина F равна отрезку, отсекаемому прямой на оси координат. если прямую перемещать параллельно самой себе в направлении, указанном стрелками, то величина F будет возрастать. совместим теперь одр, изображенную на рис. 3.1.3, с линией целевой функции (3.1.7), построенной на рис. 3.1.4, как это показано на рис. 3.1.5.
рис.
3.1.4
рис. 3.1.5
поскольку требуется найти оптимальное решение, при котором целевая функция
,
т. е. стремится к максимуму, будем перемещать график целевой функции в направлении увеличения F. очевидно, что оптимальным решением будут координаты точки с, равные х1* и х2*. при этом F = F*.
на основании рассмотренного можно сделать исключительно важный вывод: оптимальным решением являются координаты вершины одр.
на этом выводе базируется аналитический метод решения задач линейного программирования, который заключается в следующем:
найти вершины одр, как точки пересечения ограничений.
определить последовательно значения целевой функции в вершинах.
вершина, в которой целевая функция приобретает оптимальное (максимальное или минимальное) значение, является оптимальной вершиной.
координаты этой вершины и являются искомыми оптимальными значениями переменных.
эти правила, сформулированные на основании графического решения задачи на плоскости, т. е. в двухмерном пространстве, справедливы и для трехмерного. в этом случае одр представляет собой многогранник. координаты каждой его вершины — это допустимые решения. координаты той вершины, в которой целевая функция имеет максимальное (или минимальное) значение, являются оптимальным решением задачи. для трехмерного пространства, где число переменных равно трем, это нетрудно себе представить. в практических же задачах число переменных может исчисляться десятками и даже сотнями. в этом случае никакое пространственное воображение не поможет. что же делать? а выход один — решать задачу аналитически.
но чтобы читатель не думал, что мы занимаемся чистой теорией, прервем ненадолго теоретические рассуждения и рассмотрим содержательную сторону типовой задачи линейного программирования.