- •Евсеев е.А. Линейное программирование рабочие материалы
- •2025Содержание
- •Тема 7. Постановка и решение задач транспортного типа с помощью стандартного программного обеспечения. 57
- •Тема 8. Целевое программирование 60
- •Тема 9. Постановка и решение задач целевого программирования с помощью стандартного программного обеспечения. 64
- •Тема 1. Введение
- •Тема 2. Постановка задачи линейного программирования
- •2.1. Математическая модель задачи линейного программирования
- •2.2. Трактовка задачи линейного программирования как задачи о наилучшем использовании ресурсов
- •2.3. Пример задачи линейного программирования
- •2.4. Примеры постановок задач линейного программирования
- •Тема 3. Геометрическая интерпретация и графический метод решения задач линейного программирования
- •3.1. Геометрическая интерпретация задачи лп
- •3.2. Графическое решение задачи Reddy Mikks
- •3.3. Анализ чувствительности
- •3.4. Анализ чувствительности в задачи Reddy Mikks (2).
- •3.5. Задания для самостоятельной работы
- •3.6. Симплекс-метод
- •1. Проверка оптимальности или нахождение ведущего столбца.
- •2. Проверка условия неограниченности решения задачи лп и нахождение ведущей строки (ведущего элемента).
- •3. Преобразование симплексной таблицы.
- •4. Перейти к исследованию новой симплексной таблицы (новая итерация).
- •Тема 4. Двойственность в задачах линейного программирования
- •4.1. Прямая и двойственная задачи
- •4.2. Экономическая интерпретация двойственной задачи
- •4.3. Основные теоремы двойственности.
- •4.4. Двойственная задача проблемы Reddy Mikks
- •Тема 5 Постановка и решение задач линейного программирования с помощью стандартного программного обеспечения
- •5.1. Решение задачи линейного программирования с помощью Excel
- •5.2. Отчеты, как средство дополнительной информации о модели
- •5.3. Задания для самостоятельной работы
- •Тема 6. Линейные задачи транспортного типа
- •6.1. Постановка транспортной задачи
- •6.2. Условие разрешимости транспортной задачи
- •6.3. Пример транспортной задачи
- •6.4. Примеры постановок задач транспортного типа
- •6.5. Построение начального решения
- •1. Метод северо-западного элемента.
- •2. Метод минимального элемента.
- •3. Метод Фогеля.
- •6.6. Алгоритм решения транспортной задачи
- •6.7. Анализ чувствительности транспортной модели
- •1. Изменение стоимости перевозки для незанятой клетки.
- •2. Изменение стоимости перевозки для занятой (базисной) клетки.
- •3. Одновременное увеличение объема производства и спроса.
- •6.8. Задача о назначениях
- •6.9. Пример задачи о назначениях
- •6.10. Задания для самостоятельного работы.
- •Тема 7. Постановка и решение задач транспортного типа с помощью стандартного программного обеспечения.
- •7.1. Постановка задачи.
- •7.2. Решение с помощью Excel
- •7.3. Задания для самостоятельной работы
- •Тема 8. Целевое программирование
- •8.1. Постановка задачи целевого программирования
- •8.2. Пример задачи целевого программирования
- •8.3. Метод весовых коэффициентов
- •8.5. Метод приоритетов
- •8.6. Метод оптимизации «настоящих» целевых функций
- •Тема 9. Постановка и решение задач целевого программирования с помощью стандартного программного обеспечения.
- •9.1. Постановка задачи на Excel
- •9.2. Поиск допустимого решения
- •9.3. Целевое программирование: шаг 1.
- •9.4. Целевое программирование: шаг 2.
- •9.5. Задания для самостоятельной работы
- •Литература Основная
- •Дополнительная
4.4. Двойственная задача проблемы Reddy Mikks
Для прямой задачи (2) производства красок компании Reddy Mikks двойственной является следующая задача линейного программирования
Так как
оптимальным решением прямой задачи
является
,
то оптимальным решением этой двойственной
задачи является следующее:
.
Оптимальное
решение двойственной задачи показывает,
что стоимость единицы первого ресурса
(сырье A) составляет
$750 за тонну, второго (сырье B)
— $500 за тонну. Эти значения совпадают
со значениями, полученными выше в 3.4
графическим способом, и справедливы,
если значение первого ресурса увеличивается
не более чем на 12 тонн, а второго — не
более чем на 0,67 тонн. Таким образом,
увеличение запаса первого ресурса с 24
до 36 тонн приведет к увеличению дохода
на величину
.
Аналогичное увеличение запаса второго
ресурса с 6 до 6,67 тонн приводит к увеличению
дохода на величину
.
Еще раз подчеркнем, что подобные расчеты
справедливы только тогда, когда увеличение
запасов используемых ресурсов не выходит
за полученные выше интервалы значений.
Для третьего и четвертого ресурсов двойственные оценки равны нулю, что указывает на то, что эти ресурсы недефицитны.
В
литературе по линейному программированию
используются также следующие определения.
Обозначим
.
Величина
представляет собой суммарную стоимость
ресурсов, используемых на производство
единицы продукции
-го
вида. Величина
часто называется приведенной
стоимостью (приведенными издержками)
-го
вида деятельности.
Тема 5 Постановка и решение задач линейного программирования с помощью стандартного программного обеспечения
5.1. Решение задачи линейного программирования с помощью Excel
Рассмотрим задачу нахождения оптимального плана производства компании, производящей краски для наружных и внутренних работ (2). Приведем еще раз математическую модель этой задачи
Для того чтобы решить задачу линейного программирования с помощью Excel необходимо представить на рабочем листе все элементы математической постановки:
Исходные данные (константы, параметры) задачи;
Переменные;
Ограничения;
Целевую функцию.
На Рис. 4 приведен пример построения таблицы Excel для задачи о красках. Рассмотрим более подробно указанные элементы на нашем примере.
Рис.
4 Пример построения таблицы
Excel для
задачи о красках
1. Исходные данные (параметры). Исходные данные включают в себя
а) коэффициенты левых частей ограничений;
б) правые части ограничений;
в) коэффициенты целевой функции.
Данные оформлены в виде таблицы. Выделение цветом и рамками не является обязательным условием, но повышает читаемость таблицы. Все константы (исходные данные задачи) выделены в нашем примере синей рамкой.
2. Переменные. Отведем в таблице место для переменных. Так как Excel не может непосредственно оперировать с переменными в символьной форме, то каждой переменной математической постановки должна соответствовать одна ячейка рабочего листа (т.н. изменяемая ячейка).
В рассматриваемом примере две переменных — им будут соответствовать ячейки B16 и C16, они выделены красной рамкой — в этих ячейках мы получим оптимальный производственный план после решения задачи. В начале решения в эти ячейки вводятся произвольные значения в качестве начального плана.
3. Ограничения. Каждому ограничению задачи, кроме констант и правой части, соответствует ячейка, в которой вычислено значение левой части ограничения — объем затраченных ресурсов.
Так, в соответствии с первым ограничением, для вычисления объема ресурсов 1 — запаса сырья А, затраченного при данном производственном плане (напомним, что значения, введенные в ячейки В16 и С16, и представляют собой текущий план), в ячейку D6 введена следующая формула
=СУММПРОИЗВ(В6:С6;$B$16:$С$16)
Аналогичные формулы, соответствующие остальным ограничениям, находятся в ячейках D7, D8 и D9 (обратите внимание на абсолютные адреса, они использованы для удобства при копировании формулы).
Функцию СУМПРОИЗВ можно вставить с помощью Мастера Функций, она находится в категории «Математические». Аргументам функции являются массивы (диапазоны ячеек) одинаковой длины. Значение функции равно сумме произведений соответствующих элементов массивов.
Вместо встроенной функции СУММПРОИЗ можно использовать обычную формулу, непосредственно соответствующую логике вычисления левой части ограничения:
=В6*В16+С6*С16
в которой также можно использовать абсолютные адреса ячеек, соответствующих переменным.
4. Целевая ячейка (целевая функция). Целевой функции на рабочем листе соответствует одна ячейка, в которой находится формула — сумма произведений коэффициентов целевой функции (констант) на значения переменных. В ячейку D11 введена формула, вычисляющая значение нашей целевой функции — суммарного дохода при данном плане (значений изменяемых ячеек)
=СУММПРОИЗВ(B11:C11;B16:C16)
Вместо этой встроенной функции в целевую ячейку, как и в случае ограничений, можно непосредственно ввести формулу, вычисляющую суммарный доход:
=В11*В16+С11*С16
При вводе исходных данных рекомендуется помещать значки (текстовые значения) , , =, между левыми и правыми частями ограничений, что не влияет на решение задачи, но в дальнейшем упростит прочтение таблицы.
Нахождение оптимального плана.
Обратите внимание, что начальный план, предложенный на Рис. 4: производить 2 тонны краски Е и 3 тонны краски I, не является допустимым, так как второе и четвертое ограничения не выполнены. Допустимость начального плана не влияет на процесс нахождения оптимального решения.
Для решения задачи воспользуемся процедурой «Поиск решения»/«Solver», расположенной в меню Сервис/Service. Процедура «Поиск Решения» представляет собой надстройку Excel и может быть активизирована через пункт «Надстройки» меню «Сервис».
В диалоговом окне этой процедуры необходимо указать основные элементы задачи — целевую ячейку, изменяемые ячейки, ограничения, необходимые Excel для нахождения оптимального решения.
Рассмотрим подробно элементы диалогового окна «Поиск решения» (см. Рис. 5).
Рис. 5 Окно «Поиск решения»
В поле «Установить целевую ячейку»/ «Set Target Cell» указывается адрес ячейки с целевой функцией. В нашем случае это ячейка D11.
Тип оптимизационной задачи (максимизация, минимизация или поиск определенного значения) задается путем установки переключателя в группе «Равной»/ «Equal To». В нашей задаче установим переключатель в положение «Максимальному значению»/ «Max», т.к. мы ищем производственный план, обеспечивающий максимальный доход.
В поле «Изменяя ячейки»/«By Changing Cell» указываются адреса ячеек, за счет изменения которых мы хотим максимизировать целевую функцию, т.е. ячейки, отведенные под переменные задачи. В нашем случае введем в поле «Изменяя ячейки» адреса $B$16:$C$16.
Ограничения, налагаемые на переменные задачи, отображаются в поле «Ограничения»/«Subject To the Constraints». Процедура поиска решений допускает ограничения в виде равенств, неравенств, а также позволяет ввести требование целочисленности переменных. Ограничения добавляются по очереди. Для ввода ограничений нажмите кнопку «Добавить»/«Add» в диалоговом окне «Поиск решения» и в открывшемся диалоговом окне «Добавление ограничения» (Рис. 6) заполните поля.
Рис. 6 Окно «Добавление ограничения»
В поле «Ссылка на ячейку» введите адрес ячейки, в которой вычислена левая часть ограничения, в нашем случае это $D$6.
С помощью раскрывающегося списка указывается тип соотношения между левой и правой частями ограничения. В нашем примере это неравенство типа .
В поле «Ограничение» необходимо указать адрес ячейки, в которой находится правые части, в нашем примере это $F$6. Можно вводить сразу группы ограничений, выделяя соответствующие диапазоны ячеек мышью. Нажатие кнопки «ОК» завершает ввод ограничений.
В диалоговом окне, изображенном на Рис. 5, полностью заполнены все поля, в соответствии с нашем примером.
Кнопка «Параметры»/«Options» в диалоговом окне «Поиск решения», необходима для проверки параметров поиска оптимального решения.
В открывшемся диалоговом окне «Параметры поиска решения» (Рис. 7) можно изменять условия и варианты поиска решения исследуемой задачи, а также загружать и сохранять оптимизируемые модели.
Необходимо убедиться, что установлен флажок в пункте «Линейная модель». Пункт «Линейная модель» служит для поиска решения линейной задачи оптимизации или линейной аппроксимации нелинейной задачи. В случае нелинейной задачи этот флажок должен быть сброшен, в случае линейной задачи — установлен, т.к. в противном случае возможно получение неверного результата.
С помощью флажка «Неотрицательные значения» можно задать условие неотрицательности всех переменных.
Флажок «Показывать результаты итераций» служит для приостановки поиска решения и просмотра результатов отдельных итераций.
Рис. 7 Окно «Параметры поиска решения»
Значения и состояния элементов управления, используемые по умолчанию, подходят для решения большинства задач. Тем не менее, рассмотрим подробнее остальные элементы этого диалога:
Поле «Максимальное время» служит для ограничения времени, отпускаемого на поиск решения задачи.
Поле «Предельное число итераций» служит для ограничения числа промежуточных вычислений.
Поля «Относительная погрешность» и «Допустимое отклонение» служат для задания точности, с которой ищется решение. Рекомендуется после нахождения решения с величинами этих параметров, заданными по умолчанию, повторить вычисления с большей точностью и меньшим допустимым отклонением и сравнить с первоначальным решением. Использование подобной проверки особенно рекомендуется для задач с требованием целочисленности переменных.
Флажок «Автоматическое масштабирование» служит для включения автоматической нормализации входных и выходных значений, качественно различающихся по величине, например, при максимизации прибыли в процентах по отношению к вложениям, исчисляемым в рублях.
Группа «Оценка» служит для выбора метода экстраполяции.
Группа «Производные» служит для выбора метода численного дифференцирования.
Группа «Метод» служит для выбора алгоритма оптимизации.
Вернуться в окно «Поиск решения» можно нажатием кнопки ОК.
Нажатие кнопки «Выполнить»/«Solve» открывает окно «Результаты поиска решения», которое сообщает, что решение найдено (Рис. 8). Для того чтобы вывести отчет о результатах решения задачи выберите в диалоговом окне требуемый тип отчета: «Результаты», «Устойчивость», «Пределы». Можно выбрать одновременно все типы отчетов, выделив их при нажатой клавише Ctrl.
Рис. 8 Окно «Результаты поиска решения»
