Балашовский институт (филиал) ГОУ ВПО «Саратовский государственный университет имени Н. Г. Чернышевского» Г. И. Горемыкина М. А. Ляшко Введение в линейное программирование Учебное пособие для студентов физико-математических и экономических факультетов Балашов 2011 1 УДК 517.1 ББК 22.14я73+22.143 Г67 Рецензенты: Кандидат физико-математических наук, доцент, зав. кафедрой математического анализа Вологодского государственного педагогического университета Г. Н. Шилова; Кандидат физико-математических наук, доцент, зав. кафедрой физики и информационных технологий О. А. Кузнецов. Горемыкина, Г. И. Г67 Введение в линейное программирование : учеб. пособие для студентов физ.-мат. и эконом. фак-тов / Г. И. Горемыкина, М. А. Ляшко. — Балашов : Николаев, 2011. — 132 с. ISBN 978-5-94035В учебном пособии кратко излагаются основные теоретические сведения из линейного программирования; приводятся примеры решения реальных экономических задач; описываются алгоритмы графического и симплексного методов решения задачи линейного программирования; даются указания для автоматизации вычислений и экономического анализа; указываются подходы к многокритериальной оптимизации в простейшем случае; предлагаются задачи для самостоятельного решения с ответами и указаниями; даются структура и критерии оценивания работы студентов в рамках учебного модуля «Введение в линейное программирование» с последующим расчетом итогового дисциплинарного рейтинга. Пособие рассчитано на студентов математических и экономических специальностей высших учебных заведений. Оно может быть полезно при самостоятельном изучении методов решения задачи линейного программирования. ISBN 978-5-94035- © Горемыкина Г. И., Ляшко М. А., 2011 2 Содержание Предисловие ......................................................................................................... 4 § 1. Задача линейного программирования в общей постановке7 1. Примеры задач линейного программирования ......................................... 7 2. Некоторые особенности транспортной задачи........................................ 12 3. Формулировка общей задачи линейного программирования ................ 17 4. Геометрическая интерпретация ЗЛП ....................................................... 18 § 2. Графический метод решения задач линейного программирования 1. Алгоритм решения ЗЛП с двумя переменными ...................................... 21 2. Иллюстративные примеры ........................................................................ 24 3. Применение графического метода при решении транспортной задачи.............................................................................................................. 32 4. Решение ЗЛП с тремя переменными ........................................................ 35 5. Применение графического метода при решении экономических задач ................................................................................................................ 37 6. Применение графического метода при проведении экономического анализа ЗЛП (на примере задачи регионального уровня) ............................................................................................................ 44 7. Упражнения................................................................................................ 49 § 3. Симплексный метод 1. Каноническая задача линейного программирования.............................. 53 2. Жордановы исключения............................................................................ 56 3. Алгоритм симплекс-метода для расчетов вручную ................................ 59 4. Реализация алгоритма симплекс-метода на языке паскаль .................... 69 5. Упражнения................................................................................................ 79 § 4. Решение задачи линейного программирования в Excel 1. Автоматизация решения задачи линейного программирования ........... 80 2. Графическое решение задачи линейного программирования в Excel ............................................................................................................. 90 § 5. Многокритериальная оптимизация 1. Формулировка многокритериальной задачи ......................................... 106 2. Множество Парето. ................................................................................. 107 3. Задача линейной многокритериальной максимизации с двумя переменными и двумя целевыми функциями ........................................... 109 4. Применение метода идеальной точки .................................................... 111 5. Пример решения экономической задачи с двумя критериями эффективности ............................................................................................. 118 6. Применение симплексного метода при решении многокритериальных задач ......................................................................... 121 7. Упражнения.............................................................................................. 124 § 6. Введение в линейное программирование как учебный модуль в контексте модульно-рейтинговой системы обучения 1. Модульно-рейтинговая система контроля успеваемости..................... 126 2. Примеры оценочных средств.................................................................. 127 Список литературы .......................................................................................... 131 3 Предисловие Учебное пособие содержит необходимый теоретический материал, примеры, задачи и упражнения по таким разделам линейной алгебры, как линейное программирование, симплексный метод и линейные модели, которые прекрасно иллюстрируют возможность применения математики в экономических исследованиях. За основу взята программа курса, который читается авторами на протяжении многих лет студентам математических и экономических специальностей БИСГУ и соответствует Государственному образовательному стандарту 2005 г., а также программа спецкурса на физико-математическом факультете. Эффективная обработка математических моделей реальных ситуаций невозможна без точного предписания, определяющего вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату. Применение вычислительной техники позволяет сделать такую обработку не только точной, но и быстрой, поэтому авторы сочли необходимым сопроводить пособие алгоритмами и программами представленных в нем методов, а также показать возможность использования табличного процессора Excel. Представленным в пособии разделам предшествует изучение в курсе алгебры векторов, матриц, определителей и линейных систем. Предполагается, что читатель уже владеет понятиями, умениями и навыками, приобретенными в процессе обучения по указанным темам. Понятия, выходящие за рамки линейной алгебры, снабжены в пособии определениями, а некоторые проиллюстрированы примерами. Один из наиболее важных инструментов оптимизации — линейное программирование — определяется так: имеется линейная функция, которую следует максимизировать (минимизировать) с учетом выбора линейных ограничений. В § 1 приведены типы реальных экономических задач, которые могут быть сформулированы как задачи линейного программирования ЗЛП; показана природа возникновения ограничений и выражения для целевой функции. Затем дается общая формулировка 4 задачи, и обсуждаются пути возможного ее решения, рассматриваются теоремы, лежащие в основе приведенных в пособии алгоритмов. В § 2 предложен к рассмотрению графический метод линейной оптимизации: представлен алгоритм решения ЗЛП с двумя переменными, рассмотрены многочисленные и разнообразные примеры его применения, в том числе и для задач регионального уровня, материал для которых был получен на действующих предприятиях г. Балашова. Здесь же алгоритм обобщается на случай трех переменных, а также проводится экономический анализ одной из задач и дается интерпретация полученных результатов. В § 3 подробно рассмотрен универсальный способ решения ЗЛП — симплексный метод (ручной и машинный варианты), а также весь необходимый для его реализации аппарат. Современные вычислительные среды (MathCAD, MATLAB, Excel) имеют встроенные инструменты решения оптимизационных задач, в том числе и задачи линейного программирования. Но табличный процессор Excel изучается как в школьном, так и в вузовском курсе информатики практически всех специальностей. Поэтому в § 4 для автоматизации вычислений в задаче линейного программирования авторы использовали именно это хорошо знакомое студентам приложение. Расширением математического программирования с единственной целевой функцией на случай нескольких целевых функций является многокритериальная оптимизация. В § 5 рассматривается указанная оптимизация при условии линейности целевых функций и системы ограничений. Особенностью пособия является то, что учебный модуль «Введение в линейное программирование» рассмотрен авторами в контексте модульно-рейтинговой системы обучения, приведены подробная методика расчета баллов, указано распределение нагрузки при освоении модуля, сформулированы требования к оформлению самостоятельной работы. Материалом повышенной сложности авторы считают п. 4 § 2 (решение ЗЛП с тремя переменными), изложение которого на лекции или отработка на практическом занятии требуют много времени. Имея изображение на страницах пособия или подготовленную презентацию, можно обсудить со студентами решения предложенных трехмерных задач. Освоение теории машинной реализации симплекс-метода (п. 4 § 3) также потребует от студентов значительных усилий. Упражнения позволяют закрепить и сравнить рассмотренные алгоритмы, приобрести необходимые вычислительные навыки, а также составить и обработать реальные экономико-математические модели линейного программирования. Очень трудно давать рекомендации по построению таких моделей или пытаться систематизировать процесс моделирования. Тем не менее, чтобы этому научиться, необходим практический опыт, 5 а его можно приобрести только в процессе самостоятельной работы. Наиболее ценным в пособии авторы считают небольшие по объему, но конкретные по содержанию модели региональной экономики. Данные для них были собраны в процессе проведения учебно-исследовательской работы со студентами экономического и физико-математического факультетов. Естественным представляется путь последовательного приближения студента к главной цели — умению решать задачи, которые обязательно должны входить в предметную область будущего профессионала и имеют место в определенной экономической, коммерческой или управленческой ситуации. Стоит, однако, отметить, что привлечение студентов первого курса к решению прикладных задач таит в себе следующую опасность. Иногда ими рассматриваются настолько упрощенные реальные ситуации, что при их решении не формируется умение решать профессиональные задачи. Поэтому авторы посчитали целесообразным предоставить студентам возможность применять на практике приобретаемые знания и навыки по мере их освоения, поступательно изучать технологии в контексте предстоящей профессиональной деятельности. Этим и объясняется подборка задач. Список литературы, состоящий из двух частей — рекомендуемой и дополнительной, — может быть использован при написании курсовых и дипломных работ. Подготовка пособия была распределена следующим образом: § 1, 2, 5 написаны Г. И. Горемыкиной, § 3 и 4 — М. А. Ляшко, § 6 — совместно. Работа по улучшению пособия будет продолжена. Авторы заранее благодарят всех, кто выскажет свои замечания и пожелания, касающиеся улучшения стиля изложения, а также устранения возможных неточностей и опечаток. 6 § 1. Задача линейного программирования в общей постановке Для оптимизации производства традиционно используются методы линейного программирования. Критериями эффективности могут быть, как-то: оптимальное использование производственного оборудования, рентабельность изделий, совокупный маржинальный доход, оптимальное распределение выделенных средств в инвестиционные проекты, минимальный объем ресурсов и т. д. Методы линейного программирования находят свое применение даже при решении задач, относящихся к задачам нелинейного программирования. В качестве примера можно указать задачи дробно-линейного программирования, интерпретируемые в экономике как задачи определения рентабельности затрат на производство изделий, рентабельности продаж, нахождения себестоимости изделий и т. п. Путем введения новых переменных их можно свести к задачам линейного программирования. 1. Примеры задач линейного программирования Прежде чем приступать к формулировке задачи линейного программирования (сокращенно ЗЛП), рассмотрим три часто встречающиеся экономические ситуации. С и т у а ц и я 1. Фирма имеет одно предприятие, которое выпускает n видов продукции, затрачивая m видов ресурсов. Каждый вид продукции j характеризуется технологией Aj = (a1j,…, amj, cj) в виде набора {aij}, где aij — количество единиц ресурса i, затрачиваемого на единицу продукта j, и cj — прибыль, получаемая фирмой с каждой единицы продукта j. Известны также объемы ресурсов B = (b1,…, bm), которыми располагает предприятие. Руководство фирмы заинтересовано в получении оптимального варианта своего бизнеса по прибыли. Для этого предприятию нужно, грамотно распорядившись имеющимися ресурсами, выпустить такую комбинацию всех видов продукции, при которой прибыль оказалась бы наибольшей. Составим математическую модель данной экономической ситуации. Обозначим через X = (x1,…, xn)T вектор производства, где xj — объем выпуска продукции j. Вектор X часто называют еще планом производства. При этом координаты вектора X должны быть неотрицательны: xj 0, j =1, 2,…, n, (иногда выпуск продукции j может быть ограничен dj, в этом случае имеет место двойное неравенство 0 xj dj). Ограниченность ресурсов и линейная зависимость между расходами ресурсов и производством продукции приводит к системе линейных неравенств 7 n a j 1 ij x j bi, i =1, 2, …, m. Прибыль от реализации произведенного продукта равна L(X) = c1x1 + c2x2 + ... + cjxj + ... + cnxn. План производства X = (x1,…, xn)T называется оптимальным по прибыли, если L(X) достигает наибольшего возможного значения при вышеописанных ограничениях. Поэтому, руководствуясь интересами фирмы, предприятие в качестве критерия экономической эффективности должно принять максимум прибыли: L(X) = c1x1 + c2x2 + ... + cjxj + ... + cnxn max. При этом следует найти не только само значение max L(X), но (что не менее важно!) точки, в которых оно достигается, то есть получить оптимальный вектор производства X = (x1,…, xn)T. Замечание 1. Возможно, что фирма решит использовать другую технологическую характеристику каждого вида продукции. Например, в описанной выше технологии Aj, не меняя экономической интерпретации a1j,…, amj, изменит экономическую интерпретацию последней константы: под cj будет понимать себестоимость каждой единицы продукта j. Это означает, что руководство фирмы заинтересовано в получении оптимального варианта своего бизнеса по себестоимости. Поэтому в качестве критерия экономической эффективности предприятие должно будет принять минимум себестоимости: L(X ) = c1x1 + c2x2 + ... + cjxj + ... + cnxn min. Рассмотренная задача оптимизации является одним из примеров задач линейного программирования. Она носит название задачи об использовании ресурсов. В зависимости от конкретной экономической ситуации в качестве ресурсов могут выступать: оборудование, рабочая сила, сырье, деньги, производственные площади и т. п. С и т у а ц и я 2. Научно-производственное объединение занимается разработкой и производством комплексных удобрений. На данный момент в своем распоряжении оно имеет n видов удобрений, каждое из которых содержит m элементов непосредственного питания растений. Такими элементами могут быть азот, фосфор, калий, магний, медь, марганец и др. Известно, что одна единица j-го вида удобрений (j = 1, 2,…, n) содержит aij единиц i-го (i = 1, 2,…, m) элемента непосредственного питания растений и имеет стоимость cj. Необходимо изготовить смешанное комплексное удобрение (тукосмесь), получаемое механическим смешением имеющихся удобрений. При этом тукосмесь должна иметь следующую «химико-экономическую» характеристику: содержание каждого i-го элемента питания не менее bi(i = 1, 2,…, m); наименьшую стоимость. 8 Рассмотрим математическую модель данной экономической ситуации. Обозначим через xj количество j-го удобрения, используемого при изготовлении тукосмеси. Конечно, xj ≥ 0 (j = 1, 2,…, n). Для каждого i-го (i = 1, 2,…, m) элемента питания, согласно «химико-экономической» характеристике тукосмеси, имеет место следующее неравенствоограничение: ai1x1 + ai2x2 + ... + ainxn ≥ bi. Стоимость комплексного удобрения составляет c1x1 + c2x2 + ... + cnxn. Эту величину необходимо минимизировать. Таким образом, математическая модель предложенной экономической ситуации имеет следующий вид: L(X) = c1x1 + c2x2 + ... + cjxj + ... + cnxn min, n a x ij j bi, i =1, 2,…, m; j 1 xj ≥ 0, j=1, 2,…, n. Рассмотренная задача носит название задачи о смесях. К ним относят задачи определения состава сплавов, кормовых смесей, смесей горючего и т. п., а также определения урожайности кормовых культур, составления рациона питания. С и т у а ц и я 3. На пунктах отправления А1,…, Аm находится соответственно a1,…, am единиц однородного груза. Его следует доставить получателям в пункты назначения В1,…, Вn , причем в каждый из которых — соответственно b1,…, bn единиц этого груза. Стоимость перевозки единицы груза из пункта Аi в пункт Вj равна cij. Требуется составить такой план перевозок, который требовал бы минимальных затрат. При этом предполагается, что транспортные расходы пропорциональны перевозимому количеству груза (то есть перевозка k единиц груза требует расходов в размере kcij), а общий объем груза, готового к отправлению, совпадает с объемом груза, который готовы принять в пунктах назначения: m n a b . i 1 i j 1 j Замечание 2. Часто в качестве А1,…, Аm и В1,…, Вn выступают соответственно пункты производства и пункты потребления однородного продукта, а n m a i 1 i и b j 1 j интерпретируются тогда как суммарное количество произведенного и потребленного продукта. Построим модель рассматриваемой экономической ситуации. План перевозок задается матрицей X = (xij), где xij — число единиц груза, перевозимого из пункта Аi в пункт Вj. При этом, конечно, xij 0 (i=1, 2,…, m; j = 1, 2,…, n). Тогда xi1 + xi2 +...+ xin — это общее количество груза, которое можно отправить из пункта Аi в пункты В1,…, Вn, а x1j+x2j+...+xmj — общее количество груза, которое можно принять в пункте Вj из пунктов 9 А1,…, Аm. Предположение о совпадении суммарных запасов груза и суммарных потребностей в нем приводит к системе линейных равенств n x j 1 ai для i = 1, 2,…, m; ij m x i 1 ij bj для j =1, 2,…, n. Линейная зависимость между транспортными расходами и перевозимым количеством груза позволяет определить стоимость перевозки груза из пункта Аi в пункт Вj как величину, равную cijxij. Тогда общая стоимость m n c всех перевозок составит i 1 j 1 ij x ij . В описываемой ситуации лица, при- нимающие решения (для краткости обозначим их ЛПР), в качестве критерия экономической эффективности должны принять минимум этой величины. Таким образом, математическая модель данной экономической ситуации имеет следующий вид: m n L(X ) = c ij x ij min i 1 j 1 при ограничениях: n x j 1 = ai для i = 1, 2,…, m; ij m x i 1 ij = bj для j = 1, 2,…, n. xij 0 для i = 1, 2,…, m и j =1, 2,…, n. Как и в предыдущих случах, следует найти не только само значение min L(X), но и точки, в которых оно достигается, то есть получить оптимальную матрицу X = (xij) — оптимальный план перевозок. Рассмотренная задача носит название транспортной задачи. Замечание 3. Сделаем несколько уточнений. Рассмотренная задача называется закрытой (= сбалансированной) транспортной задачей. Так называют транспортные задачи, в которых общий объем груза, готового к отправлению, совпадает с объемом груза, который готовы принять в пунктах назначения: m a i 1 i n b . Если же указанные объемы не совпаj 1 j дают, то транспортная задача называется открытой. При этом, если n m a b i 1 i j 1 j , то количество груза, равное n m a –b i 1 i j 1 j , остается в пунк- тах отправления невостребованным. Тогда вводят гипотетического (виртуального) (n + 1)-го получателя с готовностью принять груз указанного 10 объема и считают транспортные расходы ci, n +1 равными 0 для всех i. Таким образом, при введении виртуального получателя транспортная задача становится сбалансированной: n 1 m a = b i i 1 j 1 j m n i 1 j 1 , где bn+1 = a i – b j . Мате- матическая модель такой экономической ситуации имеет вид: m n 1 L(X ) = c x ij ij min i 1 j 1 при ограничениях: n 1 x j 1 m x i 1 ij ij = ai для i =1, 2,…, m; = bj для j =1, 2,…, n, n + 1. xij 0 для i =1, 2,…, m и j =1, 2,…, n, n + 1. Если же n m a b , то вводят гипотетический (виртуальный) пункт i 1 i j 1 j n отправления Аm+1, содержащий am+1 b j j 1 m a i 1 i единиц готового к от- правке груза, и транспортные расходы cm+1,j считают равными 0 для всех j. Такое изменение начальных условий также приводит к тому, что транспортная задача становится сбалансированной: m 1 n a =b i 1 i j 1 j . Математиче- скую модель описанной ситуации предлагается составить самостоятельно. Замечание 4. ЛПР могут руководствоваться, вырабатывая свою стратегию, принципом максимизации суммарного дохода от перевозок. Тогда транспортная ЗЛП задается следующими элементами: двумя конечными множествами {А1,…, Аm} и {В1,…, Вn}, экономическая интерпретация элементов которых совпадает с интерпретацией соответствующих элементов в рассмотренной выше минимизационной транспортной задаче; неотрицательными векторами (a1,…, am) и (b1,…, bn), координаты которых ai и bj определяют количество единиц груза, готового к отправлению и получению в пунктах Ai и Bj соответственно; матрицей C = (cij), где cij — доход от перевозки единицы груза из пункта Ai в пункт Bj. В этом случае оптимальный план X опт должен максимизировать суммарный доход от перевозок: m n L(X ) = c ij x ij max. i 1 j 1 11 2. Некоторые особенности транспортной задачи Приведенная выше формулировка транспортной задачи не единственная с точки зрения применения транспортной задачи для решения экономических задач. Поясним это на двух примерах. Пример 1. Привести варианты конкретных экономических ситуаций, каждая из которых может быть описана с помощью одной из следующих математических моделей L(X) = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + 5x23 min (max) при ограничениях: x11 + x12 + x13 = 110, x21 + x22 + x23 = 100, x11 + x21 = 60, x12 + x22 = 80, x13 + x23 = 70, x11 0, x12 0, x13 0, x21 0, x22 0, x23 0. Решение. 1) Сначала рассмотрим случай, когда в качестве критерия экономической эффективности выступает минимум указанной величины: L(X) = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + 5x23 min. Приведем один из возможных вариантов экономических ситуаций, которые могут быть описаны с помощью предлагаемой математической модели. Заметим, что данная модель представляет собою модель транспортной задачи, рассмотренной в § 1, п. 1. Вариант 1 примера 1. Фирма имеет два склада и трех оптовых покупателей. Конкретные данные о загруженности каждого из складов (в тоннах), потребности каждого покупателя (в тоннах) и стоимости перевозки (усл. ед. за 1 т) приведены в таблице 1. Таблица 1 Стоимость перевозок к покупателям B1 B2 B3 A1 A2 Потребности Склады 4 7 60 8 3 80 9 5 70 Наличие груза 110 100 Составить оптимальный план перевозок, имеющий минимальные транспортные расходы. Неформальные пояснения к решению варианта 1. Экономической интерпретацией переменной xij является количество товара, поставляемого со склада Ai покупателю Bj, а величина L(X) = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + + 5x23 трактуется как общая стоимость всех перевозок. Общий объем запасов на складах совпадает с общим объемом запросов покупателей: 3 2 a = 110 + 100 = 210 (т), b i 1 i j 1 12 j = 60 + 80 + 70 = 210 (т). Следовательно, данная задача является закрытой транспортной задачей, экономическая интерпретация которой подробно рассмотрена в п. 1. Поэтому ограничимся лишь схематическим изображением сформулированной задачи (рис. 1), которое облегчает понимание и будет полезно при решении аналогичных ЗЛП. x11 a1 = 110 A1 B1 b1 = 60 x12 x21 B2 x13 b2 = 80 x22 a2 = 100 A2 x23 B3 b3 = 70 Рис. 1. Схематическое изображение транспортной задачи Решение задачи, соответствующее для варианта 1 оптимальному плану перевозок, удобно будет записать в виде матрицы Х опт.= (xij), экономическая интерпретация которой, благодаря изображенной схеме, весьма прозрачна. 2) Теперь рассмотрим случай, когда в качестве критерия экономической эффективности выступает максимум указанной величины: L(X) = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + 5x23 max. Вариант 2 примера 1. Мастерская имеет два станка, каждый из которых может выполнять три операции по обработке деталей (порядок выполнения операций не важен). Продолжительность выполнения первой операции составляет 60 часов, второй — 80, третьей — 70. Время работы первого и второго станков равно соответственно 110 и 100 часам. Производительность за час (в количестве деталей) первого станка при выполнении первой операции равна 4, при выполнении второй — 8, третьей — 9. Аналогичная производительность второго станка равна соответственно 7, 3 и 5. Составить план временнóй загрузки станков по выполнению каждой операции, при котором можно было бы обработать наибольшее количество деталей. Сформулированная задача носит название задачи об использовании производственного оборудования (мощностей). 13 Неформальные пояснения к решению варианта 2. Обозначив через A1 и A2 первый и второй станки, а через B1, B2 и B3 первую, вторую и третью операции соответственно, условия данной задачи удобно записать в виде таблицы 2 (сравните с соответствующей таблицей варианта 1). Таблица 2 Производительность станков при выполнении операций A1 A2 Продолжительность выполнения операции Станки B1 B2 B3 4 7 8 3 9 5 60 80 70 Время работы станков 110 100 Покажем, что математическая модель рассматриваемой экономической ситуации совпадает с описываемой моделью при условии максимизации целевой функции и, конечно, при условии соответствующей экономической интерпретации переменных и констант, входящих в указанную модель. Обозначим через xij количество часов, которое требуется при выполнении на i-м станке j-й операции. При этом, конечно, xij 0 (i = 1, 2, j = 1, 2, 3). Тогда xi1 + xi2 + xi3 — общее количество часов, которое требуется при выполнении на i-том станке каждой из трех операций, а x1j +x2j — суммарная продолжительность выполнения j-й операции на каждом из двух станков. Это приводит к системе линейных равенств x11 + x12 + x13 = 110, x21 + x22 + x23 = 100, x11 + x21 = 60, x12 + x22 = 80, x13 + x23 = 70. Заметим, что суммарная продолжительность выполнения операций совпадает с суммарным временем работы станков: 60 + 80 + 70 = 110 + + 100 (ч). Обозначим через cij производительность i-го станка при выполнении j-й операции. Тогда количество деталей, обработанных на i-м станке при выполнении j-й операции, будет равно cijxij. Общее же количество деталей, обработанных на двух станках при выполнении трех указанных 2 3 i 1 j 1 операций, составит cij xij = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + 5x23. В условиях решаемой задачи в качестве критерия экономической эффективности нужно принять максимум этой величины. 14 Таким образом, математическая модель данной экономической ситуации действительно совпадает с описываемой моделью при условии максимизации целевой функции. Анализ экономической ситуации варианта 2 подтверждает, что алгоритм решения транспортной задачи может быть использован при решении задач, далеких от транспортировки груза. Доказательством этого может служить и рассматриваемый ниже пример 2. Конечно, при решении таких задач необходимо учитывать их специфику, что должно отражаться в различных экономических интерпретациях переменных и констант, входящих в математические модели указанных задач. Так, например, если в «чисто» транспортной задаче коэффициенты целевой функции интерпретируются как транспортные расходы, а переменные — как количество перевозимого груза, то в задаче об использовании производственного оборудования коэффициенты целевой функции интерпретируются как производительность, а переменные — как затраты времени. Пример 2. Привести варианты экономических ситуаций, каждая из которых может быть описана с помощью одной из следующих математических моделей n n i 1 j 1 L(X) = cij xij min(max) при ограничениях: n x j 1 ij = 1 для i =1, 2,…, n; n x i 1 ij = 1 для j =1, 2,…, n. xij {0, 1} для i =1, 2,…, n и j =1, 2,…, n. Решение. 1) Сначала рассмотрим случай, когда в качестве критерия экономической эффективности выступает минимум указанной величины. Вариант 1 примера 2. Автомобильный завод планирует построить станции A1,…, An для технического обслуживания производимых им машин. Для строительства он выбрал города B1,…, Bn. Вырабатывая стратегию строительства, ЛПР решили руководствоваться принципом минимизации суммарных затрат на строительство указанных станций. Затраты на строительство станции Ai в городе Bj составляют cij. Необходимо определить оптимальную стратегию ЛПР. Неформальные пояснения к решению варианта 1. Обозначим xij = 1, если i - я станция строится в j - м городе, (i 1; n, j 1; n) . 0 в противном случае Конечно, при такой интерпретации переменных 15 n x j 1 ij = 1 для i =1, 2,…, n; ij = 1 для j =1, 2,…, n, n x i 1 а n n i 1 j 1 c x ij ij — суммарные затраты на строительство станций, в миними- зации которых заинтересованы ЛПР. 2) Рассмотрим случай, когда в качестве критерия экономической эффективности выступает максимум указанной величины: Вариант 2 примера 2. В целях повышения привлекательности франшизы1 франчайзер2 решил организовать торговую точку. Для этого ему потребовалось ввести n новых штатных единиц для выполнения n видов работ. В результате объявленного конкурса было принято n сотрудников. Производительность i-го сотрудника при выполнении j-го вида работ равна cij. Необходимо распределить людей по видам работ таким образом, чтобы их суммарная производительность была бы максимальной. Неформальные пояснения к решению варианта 2. Обозначим 1, если сотрудник i назначается на вид работ j , xij= (i 1; n, j 1; n). 0 в противном случае Тогда n n i 1 j 1 c x ij ij — суммарная производительность сотрудников, в мак- симизации которой заинтересован франчайзер. При этом Франшиза — контрольная лицензия, выданная одним лицом (франчайзером) другому (франчайзи), которая: дает разрешение и обязывает франчайзи заниматься в течение франшизы определенным бизнесом, используя специфическое наименование, принадлежащее франчайзеру; позволяет франчайзеру осуществлять контроль в течение всего периода франшизы за качеством бизнеса, являющегося предметом франчайзингового договора; обязывает франчайзера предоставлять франчайзи помощь в бизнесе, который служит предметом франшизы (в отношении организации предприятия франчайзи, обучения персонала, управления продажами и т. д.); требует от франчайзи регулярно в течение всего периода франшизы выплачивать франчайзеру определенные денежные суммы в оплату франшизы или товаров, услуг, предоставляемых франчайзером франчайзи; не является обычной сделкой между холдинговой и ее дочерними компаниями или между дочерними компаниями одной холдинговой компании, либо между физическим лицом и контролируемой им компанией. Часто франшизой называют и саму сеть предприятий, связанных с головной компанией сходными франчайзинговыми договорами, использующих одинаковые торговую марку, стиль, условия, методы и формы продаж товаров или оказание услуг [Рудашевский В. Д., Фурщик М. А. Оптимальная стратегия развития франчайзинговой системы // Экономика и мат. методы. 1998. Т. 34. Вып. 2]. 2 Франчайзер — организатор дела, владелец генеральной лицензии, ноу-хау, главный консультант и оптовый поставщик (см. там же). 1 16 n x j 1 ij = 1 для i =1, 2,…, n; ij = 1 для j =1, 2,…, n. n x i 1 Задачи, математические модели которых описаны в примере 2, являются частными случаями транспортной задачи и носят название задач о сопоставлении (или назначениях). 3. Формулировка общей задачи линейного программирования В общем виде математическая формулировка основной задачи линейного программирования выглядит следующим образом. Требуется найти значения действительных переменных x1, x2,…, xn, при которых целевая функция (показатель эффективности) L(X ) = c1x1 + c2x2 + ... + cjxj + ... + cnxn + c принимает экстремальное значение при ограничениях: a11x1 a12 x2 ... a1 j x j ... a1n xn b1 , a x a x ... a x ... a x b , 2j j 2n n 2 21 1 22 2 ............................................................ ai1 x1 ai 2 x2 ... aij x j ... ain xn bi , ............................................................ am1 x1 am 2 x2 ... amj x j ... amn xn bm , xk 0, где aij, bi, cj, c — заданные постоянные величины, i = 1, 2,…, m, j = 1, 2,…, n, k 1, 2,..., n. Заметим, что знак « » в ограничительных условиях выбран условно (для определенности), так как, например, неравенство ai1x1+...+ ainxn bi всегда можно заменить на эквивалентное ему неравенство –(ai1x1+...+ainxn) –bi, а уравнение ai1x1+...+ainxn = bi — на систему неравенств ai1x1+...+ainxn bi и ai1x1+...+ ainxn bi. Стоит, однако, отметить, что на практике сведение уравнений к неравенствам, как правило, осуществляют другим способом (см., например, решение транспортной задачи). Если все ограничительные условия, накладываемые на элементы решения, кроме требования xj 0, являются уравнениями, то в этом случае задачу линейного программирования называют канонической задачей линейного программирования (сокращенно КЗЛП). Ее примером может служить опять же транспортная задача. Заметим, что любая задача линейного программирования может быть приведена к канонической. 17 Точку или точки (если их несколько), удовлетворяющие системе ограничений, называют допустимым решением (планом) задачи линейного программирования и обозначают Х . Множество всех допустимых решений называют областью допустимых решений (сокращенно ОДР). Допустимое решение, в котором достигается экстремальное значение целевой функции, называют оптимальным решением (планом) задачи линейного программирования и обозначают Х опт. Формулировку общей задачи линейного программирования (сокращенно ОЗЛП) можно записать более компактно: n L(X) = с j x j + c max (min) j 1 при ограничениях: n a ij x j b i, i = 1, 2,…, m, xk 0, k 1, 2,..., n. j 1 4. Геометрическая интерпретация ЗЛП Рассмотрим задачу линейного программирования по нахождению максимума (минимума) целевой функции L(X) = c1x1 +...+ cnxn + c на допустимом множестве Х , заданном с помощью системы линейных ограничений (нестрогих неравенств или уравнений). Напомним некоторые определения. Выпуклой линейной комбинацией элементов X1,…, Xk из пространства Rn называют элемент X этого же пространства вида X =1X1+…+kXk, где все i 0 и 1+…+k = 1. Множество M Rn называется выпуклым, если M = или вместе с любыми двумя элементами X1 и X2 содержит и их произвольную выпуклую линейную комбинацию. Геометрически выпуклость множества M Rn означает, что вместе с любыми двумя своими точками оно содержит и весь отрезок, их соединяющий (Рис. 2). X1 X2 X2 X1 Рис. 2. Различие между выпуклыми и невыпуклыми множествами из R2 18 Замечание 5. Такая геометрическая интерпретация выпуклости объясняется тем, что любая точка отрезка является выпуклой линейной комбинацией его концов. Действительно, если точки X, X1, X2 определяются в Rn соответственно координатами (x1,…, xn), (x11,…, x1n), (x21,…, x2n) и X — произвольная точка отрезка X1X2, то x1 = x11+(1)x21,…, xn = x1n + + (1)x2n, 0 1. В сокращенном виде это запишется так: X = X1+ (1)X2, 0 1. Примерами выпуклых множеств в R3 служат куб, шар, точка. Примером выпуклого множества в Rn может служить плоскость. Еще два примера выпуклых множеств в Rn описывает Теорема 1. а) Множество решений системы ограничений задачи линейного программирования является выпуклым множеством; б) Множество решений задачи линейного программирования является выпуклым множеством. Таким образом, геометрическая интерпретация задачи линейного программирования заключается в следующем: найти максимум (минимум) линейной функции на выпуклом множестве. Ограниченное множество решений системы ограничений ЗЛП называют выпуклым многогранником, а неограниченное — выпуклой многогранной областью. В R2 — это выпуклые многоугольники или выпуклые многоугольные области (см., например, Рис. 3). а) б) в) д) г) Рис. 3. Выпуклые многоугольники и выпуклые многоугольные области 19 Функция L(x1, x2…, xn) называется ограниченной сверху (снизу) на множестве M Rn, если существует число К такое, что для всех (x1, x2,…, xn) из множества М выполняется неравенство L(x1, x2,…, xn) ≤ К (L(x1, x2,…, xn) ≥ К). Функция, ограниченная и сверху, и снизу, называется ограниченной. Будем говорить, что целевая функция ЗЛП ограничена, если в задаче на максимум она ограничена на допустимом множестве сверху, а в задаче на минимум — снизу. Теорема 2. Если в задаче линейного программирования допустимое множество отлично от пустого и целевая функция ограничена, то существует по крайней мере одно оптимальное решение. Точку выпуклого множества, не являющуюся выпуклой лиY2 нейной комбинацией никаких Z2 других его точек, называют углоY вой (или вершиной). ИллюстраZ Z1 цией может служить Рис. 4. Y1 У выпуклого множества, изображенного на Рис. 4, точки X и W являются его вершинами, X W а точки Y и Z — нет. ДействиРис. 4. Вершины выпуклого множества тельно, каждая из двух последних точек является выпуклой линейной комбинацией других его точек: Y, например, является выпуклой линейной комбинацией точек Y1 и Y2, а Z — выпуклой линейной комбинацией Z1 и Z2 (см. замечание 5). У X и W таких точек нет. Теорема 3. Если в задаче линейного программирования целевая функция L(X) ограничена на допустимом множестве Х, то угловая точка, в которой L(X) принимает наибольшее (наименьшее) значение среди всех угловых точек этого множества, является оптимальным решением данной задачи. Эта теорема дает возможность разработать алгоритм, позволяющий решить ЗЛП методом перебора вершин. Для чего первое, что необходимо сделать, — это определить все угловые точки допустимого множества; затем среди этих точек нужно найти точку с оптимальным (максимальным или минимальным — в зависимости от критерия эффективности) значением целевой функции — найденная точка и будет оптимальным решением (не исключено, что не единственным). 20 Заметим, что реализация описанной процедуры связана с определенными трудностями (особенно, когда существует большое число угловых точек, а это часто имеет место, так как задачи реальной экономики порой содержат сотни неизвестных, уравнений и неравенств). Алгоритм должен быть способен по некоторой данной угловой точке определить последующий порядок перебора вершин таким образом, чтобы это был кратчайший путь к нахождению оптимального решения. Определение такого порядка перебора представляет собой самостоятельную задачу, решение которой будет предложено в § 3. Избежать полного перебора вершин позволяет графический метод решения ЗЛП. § 2. Графический метод решения задач линейного программирования Графический метод, как правило, применяется при решении ЗЛП, система ограничений которых содержит две (реже три) переменных. Одно из достоинств этого метода указано в § 1. К числу других следует отнести простоту и наглядность, а также то, что с его помощью становятся прозрачными идеи, заложенные в основе других методов решения ЗЛП. 1. Алгоритм решения ЗЛП с двумя переменными Требуется решить задачу в следующей формулировке. Найти значения действительных переменных x1, x2, при которых целевая функция L(X) = c1x1 + c2x2 + c принимает экстремальное значение при ограничениях: a11 x1 a12 x2 b1 , ......................... am1 x1 am 2 x2 bm . Прежде, чем перейти к описанию указанного алгоритма, напомним одно понятие. Линией уровня функции f(x1, x2) называется множество всех точек пространства R2, в которых функция принимает некоторое постоянное значение. Согласно этому определению, для целевой функции L(X) = c1x1 + c2x2+ c произвольная линия уровня L0 — это прямая с вектором нормали С (c1, c2). Теорема 4. Значения целевой функции L(X) в точках линии уровня L0 возрастают, если линию уровня перемещать в направлении вектора нормали С и убывают, если линию уровня перемещать в направлении, противоположном направлению вектора нормали. Сформулированные теоремы позволяют представить алгоритм решения ЗЛП графическим методом: 21 Шаг 1. Находят область допустимых решений системы ограничений: 1.1. Если ОДР = , то задача неразрешима. Конец. 1.2. Если ОДР , то переходят к п. 2. Шаг 2. Строят вектор С (c1, c2). Шаг 3. Проводят линию уровня L0 так, чтобы она имела с ОДР общие точки. Шаг 4. Перемещают линию уровня по направлению вектора С для задачи на максимум и в направлении, противоположном С , для задачи на минимум. Перемещение производится до линии уровня, которая является границей полуплоскости, целиком содержащей ОДР: 4.1. Если такой линии не существует, то: 4.1.1. Lmax= +∞ при решении ЗЛП с максимизационным критерием; 4.1.2. Lmin= –∞ при решении ЗЛП с минимизационным критерием. В обоих случаях задачу считают неразрешимой. Конец. 4.2. Если же указанная линия уровня существует, то точка, в которой целевая функция достигает максимального (минимального) значения, находится на этой прямой, обозначаемой L0+ (L0–): 4.2.1. Если линия уровня не параллельна ни одной из сторон ОДР, то это — угловая точка ОДР. 4.2.2. Если линия уровня параллельна одной из сторон ОДР, то в этом случае возможны варианты: эта точка — а) угловая точка ОДР или б) любая точка соответствующей стороны. Переходят к пункту 5. Шаг 5. Находят координаты точек экстремума и значение целевой функции в них: 5.1. Если задача имеет единственное решение (случаи 4.2.1, 4.2.2а), то находят координаты точки экстремума и значение целевой функции в ней. Конец. 5.2. Если же имеет место случай 4.2.2б, то, говорят, что задача имеет альтернативный оптимум, и ее общее решение находится по формуле Х опт = X1+(1)X2, где 0 λ 1, X1, X2 — оптимальные решения в угловых точках ОДР (если такие, конечно, имеются). Конец. Из рисунка, построенного в соответствии с указанным алгоритмом, всегда видно, разрешима ЗЛП или нет, а также существуют ли у ОДР вершины (см., например, Рис. 5 и комментарии к нему). ОДР без угловых точек может быть только двух видов: полуплоскостью (рис. 3б) или областью, ограниченной двумя параллельными прямыми (рис. 3в). Как правило, в задачах реальной экономики отсутствие вершины — явление, редко встречающееся. 22 Комментарии к рис. 5: а) Максимального значения целевая функция достигает в точке А, минимального — в точке В. Записывают это обычно следующим образом: Lmax= L(A), Lmin= L(B). б) Максимального значения целевая функция достигает в любой точке отрезка AB, минимального — в точке D. x2 L0– L0– x2 B L0 D L0+ B L0 L0+ O A x1 С A O x1 С а) б) x2 x2 L0+ L0 L0 L0– С С O x1 O в) x1 г) Рис. 5. Геометрическая интерпретация возможных решений ЗПЛ в) В любой точке луча, отмеченного на рисунке, целевая функция принимает максимальное значение. Из рисунка видно, что прямой L0–, характеристическим свойством которой является свойство «быть грани23 цей полуплоскости, целиком содержащей ОДР», не существует, поэтому Lmin= –∞, и задача на минимум неразрешима. г) Lmax= +∞, следовательно, ЗЛП с максимизационным критерием неразрешима. Минимальное значение целевая функция принимает в любой точке прямой L0–, одновременно являющейся стороной ОДР. Так как множество всех оптимальных решений Хопт является подмножеством линии уровня L0+ (или L0–), то возможна следующая геометрическая интерпретация Хопт. : точка на прямой L0+ (или L0–); отрезок на прямой L0+ (или L0–); луч, все точки которого принадлежат прямой L0+ (или L0–); прямая L0+ (или L0–). Первый случай соответствует п. 4.2.1 и 4.2.2а, последние три — п. 4.4.2б. Иллюстрацией может служить снова Рис. 5. Итак, графический метод решения ЗЛП действительно позволяет избежать полного перебора вершин: если из рисунка видно, что некоторая угловая точка является единственной точкой пересечения линии уровня с ОДР, то нет необходимости вычислять координаты остальных вершин, так как указанная точка — единственное оптимальное решение. 2. Иллюстративные примеры Пример 1. Найти значения переменных x1, x2, при которых функция L(X) = 3x1 + 4x2 принимает экстремальные значения при условии, что: x1 x 2 3, 5 x1 3x 2 97 , x 7 x 74 , 2 1 x1 0, x2 0. Решение. Введем на плоскости прямоугольную систему координат Ox1x2 (это позволит применить алгоритм графического метода). 1. Начнем с нахождения значения переменных х1 и х2, при которых целевая функция принимает максимальное значение. Действовать будем пошагово в соответствии с алгоритмом решения ЗЛП графическим методом. Шаг 1. Для того чтобы найти множество точек, координаты которых удовлетворяют первым трем неравенствам системы ограничений, нужно построить граничные прямые –x1 + x2 = 3, (1) 5x1 + 3x2 = 97, (2) x1 + 7x2 = 74, (3) (например, по точкам их пересечения с координатными осями), а затем определить соответствующие полуплоскости. 24 x2 3 –3 O x1 (1) Рис. 7. Решение линейного неравенства Более подробно. Находим точки пересечения прямой (1) с осями Ox1 и Ox2. Ими являются соответственно точки (– 3; 0) и (0; 3). По этим точкам строим прямую (1). Затем подставляем координаты точки отсчета в неравенство –x1 + x2 3. Они ему удовлетворяют: 0 + 0 3. Следовательно, геометрическим местом точек, координаты которых удовлетворяют неравенству x1 + x2 3, является полуплоскость, содержащая точку O(0; 0) (Рис. 7). x2 (2) 20 18 (9; 171/3) 16 14 (3) 12 (12; 121/3) (0; 104/7) 10 8 (7; 94/7) 6 4 2 –6 –4 –2 O 2 4 6 8 10 12 14 16 x1 Рис. 6. Множество решений двух линейных неравенств Замечание 6. Более общо. Для того чтобы узнать, какую полуплоскость описывает неравенство a1x1 + a2x2 b (знак неравенства выбран произвольно — для определенности), нужно: 25 1) Построить прямую a1x1 + a2x2 = b. 2) Определить, по какую сторону от нее располагается точка O(0; 0) (или любая другая, не принадлежащая данной прямой): если координаты выбранной точки удовлетворяют данному неравенству, то полуплоскость, в которой находится эта выбранная точка, является искомой, если координаты выбранной точки не удовлетворяют данному неравенству, то искомой полуплоскостью будет являться та, которая эту точку не содержит. Множества точек, координаты которых удовлетворяют двум оставшимся неравенствам, изображены на Рис. 6. Из условий x1 0, x2 0 следует, что геометрический образ ОДР должен располагаться в первой четверти плоскости Ox1x2. Поэтому нас интересует только то, что находится в первой четверти. Пересечением полученных полуплоскостей является изображенный на Рис. 8 треугольник ABD, представляющий собою область допустимых решений. x2 (2) 20 (1) 18 16 B 14 (3) 12 10 8 A D 6 4 2 –6 –4 –2 O 2 4 6 8 10 12 14 16 x1 Рис. 8. Множество решений трех линейных неравенств Шаг 2. Строим вектор С (3; 4) (Рис. 9). 26 Шаг 3. Линия уровня L0 задается уравнением 3x1+ 4x2 = const. На Рис. 9 построена линия уровня, соответствующая значению 79. Шаг 4. Сначала найдем значения переменных x1, x2, при которых целевая функция принимает максимальное значение. Поэтому перемещаем L0 по направлению вектора С до линии уровня, являющейся границей полуплоскости, целиком содержащей ОДР (треугольник ABD). Такой линией является прямая L0+, проходящая через точку В. Следовательно, максимального значения целевая функция достигает в точке В (точке выхода из ОДР), координаты которой определяются как пересечение прямых (1) и (2). Шаг 5. Решая систему x1 x2 3, 5 x1 3 x2 97, получим x1 = 11, x2 = 14. Таким образом, целевая функция имеет максимальное значение в точке (11; 14), при этом Lmax= 3·11+ 4·14 = 89. x2 (2) 20 (1) 18 16 B 14 (3) 12 10 L0+ A 8 D 6 4 2 L0– С –6 –4 –2 O 2 4 6 8 10 12 14 16 x1 Рис. 9. ОДР и целевая функция 27 L0 1. Теперь найдем значения переменных x1, x2, при которых целевая функция минимизируется. Система ограничений — прежняя. Следовательно, ОДР та же, что и максимизационной задаче. Поэтому решение начнем с шага 4. Перемещаем линию уровня в направлении, противоположном вектору С . Из рисунка видно, что наименьшее значение L(X) на ОДР достигается в точке A — точке пересечения прямых (1) и (3). Шаг 5. Решая систему x1 x 2 3, x1 7 x 2 74, найдем координаты указанной точки — (6,625; 9,625). Следовательно, Lmin= L(A) = 3·6,625 + 4·9,625 = 58,375. Пример 2. Найти значения переменных, при которых целевая функция L(X) = 5x2 принимает экстремальные значения при условии, что: 7 x1 12 x 2 84, 35 x1 12 x 2 0, 7 x 6 x 42, 2 1 x1 0, x2 0. Решение. Введем на плоскости прямоугольную систему координат Ox1x2. 1. Начнем с нахождения значения переменных х1 и х2, при которых целевая функция принимает максимальное значение. Шаг 1. Находим ОДР. Построим граничные прямые 7x1 + 12x2 = 84, 35x1 – 12x2 = 0, 7x1 – 62 = 42. Первую прямую построим по точкам пересечения с осями: (12; 0) 3 и (0; 7). Вторую — по точкам (0; 0) и (3; 8 ). Третью прямую построим 4 2 по точкам (6; 0) и, например, (10; 4 ). 3 Теперь определим соответствующие полуплоскости. Для определения полуплоскости, задаваемой неравенством 7x1 + 12x2 84, подставляем координаты точки (0; 0) в данное неравенство. Они ему удовлетворяют: 7·0 + + 12·0 84. Следовательно, геометрическим местом точек, координаты которых удовлетворяют данному неравенству, является полу-плоскость, содержащая точку (0; 0). Для определения полуплоскости, задаваемой неравенством 35x1 – 12x2 0, подставляем координаты, например, точки (–1; 0) в данное неравенство. Они ему не удовлетворяют: 35 ·(–1) – 2·0 0. Следовательно, геометрическим местом точек, координаты которых удо28 влетворяют данному неравенству, является полуплоскость, не содержащая точку (–1; 0). Аналогично определяем полуплоскость, задаваемую неравенством 7x1 – 62 42. С учетом условий x1 0, x2 0 находим пересечение полученных полуплоскостей. Им является изображенный на рис. 10 четырехугольник 5 OABD. Этот четырехугольник и есть искомая ОДР. Вершина A(2; 5 ) 6 определяется как пересечение граничных прямых 7x1 + 12x2 = 84 и 35x1 – 1 – 12x2 = 0, B(8; 2 ) — как пересечение 7x1 + 12x2 = 84 и 7x1 – 6x2 = 42, D(6; 3 0) — пересечение прямой 7x1 – 62 = 42 и оси Ox1. Шаг 2. Строим вектор С (0; 5). Шаг 3. Проводим линию уровня L0 . Линия уровня задается уравнением 5x2 = const. На Рис. 10 построена линия уровня, соответствующая значению 15. Шаг 4. Перемещаем L0 по направлению вектора С . Результатом такоx2 10 35x1 12 x2 0 7 x1 12 x2 84 8 L0+ A 6 7 x1 6x2 42 С 4 L0 B 2 D –2 O 2 4 6 8 10 12 x1 Рис. 10. Альтернативный оптимум в задаче линейного программирования 29 го перемещения является прямая L0+. На ней находится точка A. Следовательно, она и является точкой максимума. 5 1 Шаг 5. Lmax = L(A) = 5 · 5 = 29 . 6 6 2. Теперь найдем значения переменных x1, x2, при которых целевая функция минимизируется. Шаги 1—3 те же, что и в максимизационной задаче. Поэтому начинаем с шага 4. Шаг 4. Перемещаем линию уровня в направлении, противоположном вектору С . Из Рис. 10 видно, что наименьшее значение L(X ) на ОДР достигается на отрезке OD. Шаг 5. Поэтому (0; 0), (6; 0) — оптимальные решения соответственно в угловых точках O и D области допустимых решений. Тогда общее решение Х опт=(1 – λ)(0; 0) + + λ(6; 0) = (0; 0) + (6λ; 0) = (6λ; 0), где 0 λ 1. При этом Lmin= 0. Пример 3. Найти значения переменных, при которых функция L(X) = 5,2x1 – x2 принимает экстремальные значения при условии, что: 2 x1 5 x2 10, x1 3x2 3, x x 1, 1 2 x1 0, x2 0. Решение. Введем на плоскости прямоугольную систему координат Ox1x2. 1. Начнем с решения с максимизационной задачи. Шаг 1. Находим ОДР. Сначала построим граничные прямые (по точкам их пересечения с координатными осями): 2x1 + 5x2 = 10 по точкам (5; 0),(0; 2), x1 – 3x2 = 3 по точкам (3; 0),(0; –1), –x1 + x2 = 1 по точкам (–1; 0),(0; 1). Затем, используя точку О(0; 0), определим соответствующие полуплоскости (Рис. 11). Пересечением полученных полуплоскостей является неограниченная многогранная область, изображенная на Рис. 11. Это и есть искомая ОДР, так как полученная область располагается в первой четверти плоскости Ox1x2. Шаг 2. Строим вектор С (5,2; –1). Шаг 3. Проводим линию уровня L0 таким образом, чтобы она имела с ОДР общие точки. Шаг 4—5. Перемещаем L0 по направлению вектора С до линии уровня, которая являлась бы границей полуплоскости, целиком содержащей 30 ОДР. Однако закончить указанное перемещение невозможно. Из Рис. 11 видно, что какую бы линию уровня в направлении вектора нормали ни провести (штрихованные прямые на чертеже), любая из них пересекает ОДР. Следовательно, Lmax= +∞. Это означает, что задача на максимум неразрешима. 2. Теперь найдем значения переменных, при которых целевая функция x2 L0– 10 L0 8 6 4 2x1 5x2 10 2 x1 3x2 3 B A –2 O 2 4 6 8 10 x1 x1 x2 1 D С Рис. 11. Неограниченность ОДР и целевой функции минимизируется. Шаги 1—3 точно те же, что и при решении максимизационной задачи. Шаг 4. Перемещаем линию уровня L0 в направлении, противоположном вектору С , до линии, являющейся границей полуплоскости, целиком содержащей ОДР. Такой линией является прямая L0–, проходящая через точку В. Следовательно, Lmin = L(B). Шаг 5. Координаты точки В определяются как пересечение прямых 2x1 + 5x2 = 10 и –x1 + x2 = 1. Решая соответствующую систему уравнений, найдем координаты точки В: x1=5/7 и x2=12/7. Таким образом, Lmin = 5,2 · 5/7 – – 12/7 = 2. 31 3. Применение графического метода при решении транспортной задачи Дадим подробную иллюстративную характеристику схемы алгоритма применительно к конкретной транспортной задаче. Это позволит не приводить последующее ее формальное описание. Пример 4. а) Найти значения переменных, при которых функция L(X) = 4x11 + 8x12 + 9x13 + 7x21 + 3x22 + 5x23 принимает экстремальные значения при условии, что: x11 + x12 + x13 = 110, x21 + x22 + x23 = 100, x11 + x21 = 60, x12 + x22 = 80, x13 + x23 = 70, x11 0, x12 0, x13 0, x21 0, x22 0, x23 0. б) Интерпретируя переменные и константы, входящие в указанные математические модели, в соответствии с вариантами примера 1 из § 1, дать экономическую характеристику полученных решений. Решение. а) Введем новые переменные u1, u2, положив u1 = x11, u2 = x12, и выразим через них остальные. Получим x13 = – u1 – u2 + 110, x21 = – u1 + 60, x22 = – u2 + 80, x23 = 70 – x13 = 70 – (– u1 – u2 + 110) = u1 + u2 – 40. Соответственно L(X) = L(U) = 4u1 + 8u2 + 9(– u1–u2 +110) + 7(– u1 + 60) + 3(– u2 + 80) + + 5(u1 + u2 – 40) = –7u1 + u2 + 1 450. Тогда с учетом неотрицательности переменных xij для i, j= 1, 2, 3, формулировка исходной задачи приобретает следующий вид: L(U) = –7u1 + u2 + 1 450 max (min) u1 u 2 110 0, u 60 0, 1 u 80 0, 2 u 1 u 2 40 0, u1 0, u2 0. Для решения задачи с такой формулировкой применим графический метод. Введем на плоскости прямоугольную систему координат Ou1u2 и построим ОДР данной задачи аналогично тому, как это было сделано в примере 1. Ограничительные условия определяют на плоскости многоугольник ABDEFG (Рис. 12), вершины которого имеют соответственно координаты: (0; 40), (0; 80), (30; 80), (60; 50), (60; 0), (40; 0). Строим вектор С (–7; 1). Проводим линию уровня L0. Она задается уравнением 7u1 + + u2 + 1 450=const. На Рис. 12 построена линия уровня, соответствующая 32 значению 1 450. Сначала найдем значения переменных u1, u2, при которых целевая функция принимает минимальное значение. Поэтому перемещаем L0 в направлении, противоположном вектору С . Точкой выхода из ABDEFG является точка F. Следовательно, наименьшее значение функции L(U) на ОДР достигается при u1 = 60, u2 = 0. Поэтому Lmin= –7·60 + + 0 + 1 450 = 1 030. Теперь найдем значения переменных u1, u2, при которых функция L(U) принимает максимальное значение. Перемещаем L0 по направлению вектора С . При таком перемещении точкой выхода из шестиугольника ABDEFG является точка B(0; 80). Следовательно, Lmax= L(B) = u1 u2 110 0 u2 u1 60 0 100 u2 80 0 B 80 D 60 A E 40 20 u1 u2 40 0 G -20 O 20 40 60 80 100 u1 С L0+ F L0– L0 Рис. 12. ОДР и целевая функция транспортной задачи = –7·0 + 80 + 1 450 = 1 530. Таким образом, Lmin= 1 030 при x11 = 60, x12 = 0, x13 = 50, x21 = 0, x22 = 80, x23 = 20; Lmax= 1 530 при x11 = 0, x12 = 80, x13 = 30, x21 = 60, x22 = 0, x23 = 40. б) Сначала рассмотрим случай, когда в качестве критерия экономической эффективности выступает минимум указанной величины. 33 Полученный в п.(а) ответ соответствует для варианта 1 оптимальному плану перевозок. Запишем его в виде матрицы 60 0 50 , Х опт = 0 80 20 экономическая интерпретация которой, благодаря Рис. 1, весьма прозрачна. При таком плане перевозок затраты будут минимальны, а именно 1 030. Теперь рассмотрим случай, когда в качестве критерия экономической эффективности выступает максимум указанной величины: Полученный в подпункте а ответ соответствует для варианта 2 оптимальному плану временнóй загрузки станков по выполнению каждой операции. Его также (как и для варианта 1) удобно записать в виде матрицы 0 80 30 . Х опт = 60 0 40 Экономическая интерпретация полученной матрицы такова: на первом станке имеет смысл выполнять вторую и третью операции продолжительностью 80 и 30 часов соответственно; на втором — первую и третью операции продолжительностью 60 и 40 часов соответственно. При таком плане будет обработано наибольшее количество деталей, а именно 1 530. Отметим одну немаловажную деталь. Иногда ЛПР, наряду с оптимальным планом, интересует такой план временнóй загрузки станков, при котором будет обрабатываться наименьшее количество деталей. Как правило, это происходит в том случае, когда по тем или иным причинам осуществить оптимальный план не удается. Поэтому приходится варьировать временнýю загрузку станков и, естественно, при этом нужно постараться исключить такой вариант, при котором будет обрабатываться наименьшее количество деталей. Для данной задачи таким вариантом является план, матрица которого имеет следующий вид: 60 0 50 . 0 80 20 При указанной временнóй загрузке станков будет обработано минимальное количество деталей, а именно, 1 030 (разница с оптимальным планом в 500(!) деталей). (Проведите аналогичное исследование для варианта 1, а именно, укажите такой план перевозок, при котором транспортные расходы будут наибольшими.) 34 4. Решение ЗЛП с тремя переменными Применение графического метода возможно и при решении ЗЛП, система ограничений которых содержит три переменные. В этом случае описанный выше алгоритм остается в силе, только линии уровня следует заменить на поверхности уровня и учесть, что, если в случае двух переменных экстремальные значения (конечно, при условии их существования) целевой функции достигались в вершинах многоугольника решений в двумерном пространстве, то в случае трех переменных они достигаются в вершинах многогранника решений в трехмерном пространстве. Напомним, что поверхностью уровня функции f(x1, x2, x3) называется множество всех точек пространства R3, в которых функция принимает некоторое постоянное значение. Согласно этому определению, для целевой функции L(X) = c1x1 + c2x2 + c3x3 + c произвольная поверхность уровня L0 — это плоскость с вектором нормали С (c1, c2, c3). Рассмотрим применение алгоритма на конкретном примере. Пример 5. Найти значения переменных x1, x2, x3, при которых функция L(X) = 3x1 – x2 + 2x3 принимает экстремальные значения при условии, что: x3 4, x1 2 x2 x3 5, x1 ≥ 0, x2 ≥ 0, x3 ≥ 0. Решение. Введем в пространстве прямоугольную систему координат Ox1x2x3. 1. Начнем с решения максимизационной задачи. Шаг 1. Находим ОДР. Построим граничные плоскости x3 = 4 и x1 + 2x2 + x3 = 5. Первая плоскость проходит через точку (0; 0; 4) параллельно плоскости Ox1x2. Уравнение второй плоскости представим уравнением в отрезках: x x x1 2 + 3 1 (это возможно сделать в силу того, что плоскость 5 5/ 2 5 не проходит через начало координат). Следовательно, означенная плос5 кость пересекает оси координат в точках (5; 0; 0), (0; ; 0) и (0; 0; 5). 2 Теперь определим соответствующие полупространства. Подставляем координаты точки (0; 0; 0) в неравенство x3 4. Они ему удовлетворяют. Следовательно, выбираем полупространство, содержащее указанную точку. Для определения полупространства, задаваемого неравенством x1 + + 2x2 + x3 5 , подставляем координаты той же самой точки. Они удовле35 x3 A1 O1 B1 4 L0 С c B –6 O 2 4 x2 A x1 Рис. 13. ОДР и целевая функция в задаче с тремя переменными творяют и ему. Следовательно, выбираем полупространство, также содержащее начало координат. С учетом условий x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 находим пересечение полупространств. Им является изображенный на Рис. 13 многогранник AOBA1O1B1. Полученный многогранник и есть искомая ОДР. Шаг 2. Строим вектор С (3; –1; 2). Шаг 3. Проводим поверхность уровня L0. Поверхность уровня задается уравнением 3x1 – x2 + 2x3 = с (с = const). Положим с = 6 и запишем для данного значения с уравнение поверхности уровня в отрезках: x x x1 2 + 3 1 . Следовательно, L0 пересекает оси координат в точках 6 3 2 (2; 0; 0), (0; –6; 0) и (0; 0; 3). По этим точкам и построим выбранную поверхность уровня (Рис. 13). 36 Шаги 4, 5. Перемещаем L0 по направлению вектора С . Точкой выхода из ОДР является точка A (Рис. 14). Следовательно, целевая функция имеет максимальное значение в этой точке: Lmax = L(A) = 3 · 5 – 0 + 2 · 0 = 15. x3 A1 O1 B1 4 С c B –15 –6 O 2 4 x2 A x1 Рис. 14. Оптимальное положение целевой функции 2. Решим минимизационноу задачу. Шаги 1—3 те же, что и при решении соответствующей максимизационной задачи. Шаги 4, 5. Перемещаем L0 в направлении, противоположном вектору С . В этом случае точкой выхода из ОДР является точка B (Рис. 14). 5 5 5. Следовательно, Lmin= L(B) = 3 · 0 – + 2 · 0 = – . 2 2 5. Применение графического метода при решении экономических задач Задача 1 (Выбор оптимального рациона питания). Детская молочная кухня в суточный рацион питания для одного трехмесячного ребенка включает два продукта питания: смесь № 5 и В-рис, причем смеси № 5 должно войти в дневной рацион не более 400 г. Стоимость 100 г смеси № 5 составляет 0,7 руб., В-риса — 0,9 руб. Содержание питательных веществ в 100 г продукта, минимальные нормы потребления указаны в таб- 37 лице 3. Определить оптимальный рацион питания, стоимость которого будет наименьшей. Питательные вещества Таблица 3 Содержание питательных веществ в 100 г продукта Смесь № 5 В-рис 2,8 3,2 4,7 8,3 Минимальная норма потребления, г Белки Углеводы 14,0 32,9 Решение. Обозначим x1 — суточный объем потребления смеси № 5, кг; x2 — суточный объем потребления В-риса, кг. Составим математическую модель задачи. Целевая функция будет иметь вид: L(x) = 7x1 + 9x2 → min при ограничениях: 28 x1 32 x 2 14,0, 47 x1 83 x 2 32,9, x1 0,4, x1 0, x2 0. ABDE — область допустимых решений (Рис. 15). Строим вектор С (7; 9). Линия уровня задается уравнением 7x1 + 9x2 = const. C x2 E A x1 0,4 B D L0 47x1 + 83x2 = 32,9 28x1 + 32x2 = 14,0 x1 O Рис. 15. ОДР и целевая функция в задаче о рационе питания 38 Перемещаем линию уровня в направлении, противоположном вектору С . Точкой выхода L0 из области допустимых решений является точка B, ее координаты определяются как пересечение прямых, заданных уравнениями 28 x1 32 x2 14,0, 47 x1 83x2 32,9. Решая систему, получим приближенно координаты точки B(0, 133; 0,321), в которой и будет оптимальное решение, то есть Xопт ≈ (0,133; 0,321), при этом L(X)min = L(B) ≈ 7 · 0,133 + 9 · 0,321 ≈ 3,82 (руб.). Таким образом, детская молочная кухня должна в суточный рацион питания для одного трехмесячного ребенка включать 0,133 кг смеси № 5 и 0,321 кг В-риса, при этом стоимость такого рациона составит 3,82 руб. Задача 2. Фирма, занимающаяся грузовыми перевозками, получила следующий заказ. На двух товарных складах находится сахар в количестве 110 и 100 т, который должен быть доставлен трем оптовым покупателям в количестве 60, 80 и 70 т соответственно. Как следует организовать доставку сахара оптовым покупателям, чтобы суммарный доход от перевозок был максимальным, если доход в условных денежных единицах от каждой перевозки 1 т сахара задан матрицей 15 11 8 ? 6 2 4 Решение. Общий объем запасов на складах совпадает с общим объемом запросов покупателей: 110 + 100 = 60 + 80 + 70 (т). Следовательно, данная задача является закрытой транспортной задачей. Обозначим xij количество сахара (т), поставляемого с i-го (i = 1, 2) склада к j-му (j = 1, 2, 3) покупателю. Тогда соответствующая транспортная задача может быть сформулирована следующим образом. Максимизировать суммарный доход от перевозок: L(X) = 15x11 + 11x12 + 8x13 + 6x21 + 2x22 + 4x23 max при условии, что x11 + x12 + x13 = 110, x21 + x22 + x23 = 100, x11 + x21 = 60, x12 + x22 = 80, x13 + x23 = 70, x11 0, x12 0, x13 0, x21 0, x22 0, x23 0. 39 Введем новые переменные u1, u2, положив u1 = x11, u2 = x12, и выразим через них остальные. Заметим, что получили транспортную задачу, ограничительные условия которой совпадают с ограничительными условиями примера 4 из п. 3. Поэтому, обратившись к решению этого примера, получим L(U) = 5u1 + 5u2 + 1 240 max u1 u 2 110 0, u 60 0, 1 u 2 80 0, u1 u2 40 0, u1 0, u2 0. u1 u2 110 0 u2 u1 60 0 100 u2 80 0 B 80 D 60 u1 u2 40 0 A E 40 20 L0+ С G F –20 O 20 40 60 80 100 u1 L0 Рис. 16. Альтернативный оптимум в транспортной задаче Ограничительные условия определяют на плоскости многоугольник ABDEFG (Рис. 16), вершины которого имеют соответственно координаты: (0; 40), (0; 80), (30; 80), (60; 50), (60; 0), (40; 0). Строим вектор С (5; 5). Проводим линию уровня L0. Находим значения переменных u1, u2, при которых целевая функция принимает максимальное значение. Перемеща40 ем L0 в направлении вектора С . Из Рис. 16 видно, что максимального значения L(U) достигает в любой точке отрезка DE. Поэтому Lmax= L(D) = = 5 · 30 + 5 · 80 + 1 240 = 1 790. Задача имеет альтернативный оптимум и ее общее решение находится по формуле: U опт (30; 80) (1 ) (60; 50) (60 30; 50 30 ), где 0 1. Таким образом, x11 60 30 , x12 50 30 , x13 0, x21 30 , x22 30 30 , x23 70. Полученный ответ запишем в виде матрицы 60 30 50 30 0 , где 0 1. X опт 30 30 70 30 При таком плане перевозок суммарный доход будет максимальным, а именно Lmax=1 790. Таким образом, фирма может различными способами организовать доставку сахара покупателям, при которых ее суммарный доход будет максимальным. Укажем некоторые из этих способов: 60 50 0 50 60 0 45 65 0 30 80 0 ; ; ; . 0 30 70 10 20 70 15 15 70 30 0 70 Первый из этих способов получен при λ = 0, второй — при λ = 1/3, третий — при λ = 0,5, четвертый — при λ = 1. Задача 3. АООТ «Прицеп» выпускает дачный инвентарь, а именно грабли, мотыги и лопаты. При этом для изготовления одного изделия используется сталь-65Г в количестве 1,7, 0,8 и 1,5 кг соответственно. Запасы стали-65Г на складе составляют 1,3 т на месяц. Анализ рынка сбыта показал, что за год АООТ «Прицеп» реализует не более 20 тыс. грабель, 15 тыс. мотыг и 1 тыс. лопат, причем выпуск одного изделия приносит доход 36, 24 и 40 руб. соответственно. Требуется составить план производства, обеспечивающий АООТ «Прицеп» наибольший доход. Решение. Обозначим через x1, x2 и x3 соответственно количество грабель, мотыг и лопат (шт.), выпускаемых АООТ «Прицеп» в месяц. Составим математическую модель задачи, выразив ограничения сверху по ежемесячному выпуску продукции в целых числах. Для этого поделим 20 000, 15 000 и 1 000 на 12 и округлим до ближайшего целого числа. Целевая функция имеет вид: L(x1, x2, x3) = 36x1 + 24x2 + 40x3 → max, при ограничениях: 41 x1 1 667, x2 1 250, x3 83, 1,7 x1 0,8 x2 1,5 x3 1 300, x1 0, x2 0, x3 0. Введем в пространстве прямоугольную систему координат Ox1x2x3. Геометрическое место точек, координаты которых удовлетворяют системе ограничений, т. е. ОДР, образует выпуклый многогранник. Грани этого многогранника расположены на плоскостях, уравнения которых получаются при замене неравенств системы точными равенствами. На Рис. 17 изобразим многогранник решений, получающийся в результате как пересечение полупространств, на которые делит пространство каждая из указанных плоскостей. Самой ближней к началу координат пунктиром показана поверхность (линия) уровня L0 = 12 000, и вектор 10 С , перпендикулярный ей. Вектор 10 С изображен вместо вектора С для удобства, так как вектор С на этом чертеже будет слишком мал. Будем перемещать эту линию уровня в сторону возрастания целевой функции, т. е. по направлению вектора 10 С . Из взаимного расположения ОДР и линий уровня ясно, что наибольшего значения целевая функция будет достигать в наиболее «выступающих», т. е. удаленных от начала координат точках ОДР: A, B, C или D. Найдем их координаты и значения целевой функции в этих точках. Точка А имеет координаты x1, x2 и x3, удовлетворяющие системе 1,7 x1 1 300, x2 0, x 0, 3 откуда получаем (в целых числах) x1 = 765 и L1 = 36x1 + 24x2 + 40x3 = 27 540. Аналогично, координаты точки В удовлетворяют системе 1,7 x1 1,5 x3 1 300, x2 0, x3 83, откуда x1 = 691 и L2 = 36x1 + 24x2 + 40x3 = 28 196. Координаты точки С удовлетворяют системе 42 1,7 x1 0,8 x2 1,5 x3 1 300, x2 1 250, x3 83, откуда x1 = 103 и L3 = 36x1 + 24x2 + 40x3 = 37 028. Координаты точки D удовлетворяют системе 1,7 x1 0,8 x2 1 300, x2 1 250, x3 0, откуда x1 = 176 и L4 = 36x1 + 24x2 + 40x3 = 36 336. Следовательно, наибольшего значения целевая функция достигает в точке С. Оптимальным будет выпуск (в целых числах) 103 грабель, 1 250 мотыг и 83 лопат в месяц. При этом прибыль составит 37 028 руб. На Рис. 17 изображены поверхности уровня L1 и L3. Поверхности L2 и L4 находятся очень близко к указанным и не изображены, чтобы не загромождать чертеж. x3 867 L3=37 028 10 С c L1=27 540 L0=12 000 83 D B x1 1 250 1 625 x2 O 765 C A Рис. 17 43 6. Применение графического метода при проведении экономического анализа ЗЛП (на примере задачи регионального уровня) При решении задач линейного программирования часто важен не только полученный результат, но и его экономический анализ: понимание взаимосвязи конкретных производственных факторов; значимость ограничительных условий, влияющих на эффективность получаемых решений. Задача 4. АООТ «Прицеп» выпускает изделия двух типов: задвижки и тиски слесарные. При этом используется сырье четырех видов. Расход сырья задан в таблице 4. Таблица 4 Изделия Задвижки Тиски слесарные Сталь-45 3 4 Сырье, кг Чугун Бронза 0 2 1 0 Сталь-3 0,5 2 Суточные запасы стали-45 составляют 322 кг, чугуна — 70 кг, бронзы — 180 кг, стали-3 — 100 кг. Розничная цена одной задвижки равна 60 руб., тисков — 100 руб. По этим исходным данным требуется: составить план производства, обеспечивающий АООТ «Прицеп» наибольшую выручку; выяснить, как влияет на оптимальное решение изменение запасов исходного сырья; а также провести анализ предложенной ситуации по диапазону розничных цен на изделия, при котором не происходит изменения оптимального решения. Решение. Обозначим через x1 и x2 суточные объемы выпуска задвижек (шт.) и слесарных тисков (шт.) соответственно. Составим математическую модель задачи. Целевая функция имеет вид: L(X) = 60x1 +100x2 → max, при ограничениях: (ограничение по стали - 45), 3x1 4 x2 322 x 70 (ограничение по чугуну ), 2 2 x 180 ( ограничение по бронзе), 1 0,5 x1 2 x2 100 (ограничение по стали - 3), x1 0, x2 0. С учетом этих ограничений сочетание объемов выпуска задвижек и слесарных тисков должно находиться внутри области допустимых решений OABDE (Рис. 18), являющейся «плацдармом» для дальнейших 44 действий руководителей АООТ «Прицеп». Для отыскания точки, в которой находится оптимальное решение, строим вектор, показывающий направление самого быстрого изменения целевой функции (это вектор С с координатами (60; 100)), и линию уровня L0, перпендикулярную указанному вектору. Перемещая прямую L0 по направлению вектора С , найдем точку выхода линии уровня из области допустимых решений. Ею является точка B, координаты которой — (61; 34,75) — определяются как пересечение прямых, заданных уравнениями 3x1 + 4x2 = 322 и 0,5x1 + 3x2 = 100. x2 2x1 = 180 С c x2 = 70 A B b b D 0,5x1 + 2x2 = 100 b О L0 E b 3x1 + 4x2 = 322 x1 Рис. 18. ОДР и целевая функция в задаче с ограничениями по ресурсам Следовательно, Lmax= L(B) = 60 ∙ 61 + 100 ∙ 34,75 = 7 135. Таким образом, АООТ «Прицеп» должно выпускать в сутки 61 задвижку и 34,75 слесарных тисков. С этими данными по выпуску выручка от реализации составит 7 135 руб. Если выпускать в сутки 34,75 тисков нельзя, то этот результат можно интерпретировать так: оптимальным является выпуск 34,75 ∙ 4 = 139 тисков за 4 суток. Экономический анализ. Определим, как влияет на оптимальное решение увеличение или уменьшение запасов исходного сырья. Для анализа задачи примем, что неравенства системы ограничений могут быть активными или пассивными. Если прямая, являющаяся границей множества решений некоторого неравенства, проходит через точку, в которой находится оптимальное решение, то это неравенство представляет собой активное ограничение. В противном случае неравенство относится к пассивному ограничению. Если ограничение активное, то соответствующий 45 ресурс является дефицитным, так как он используется полностью. Если ограничение пассивное, то оно имеется на предприятии в избытке. Рассмотрим увеличение ресурса правой части ограничения 3x1 + + 4x2 322 по стали-45 (Рис. 19). x2 2x1 = 180 С c x2 = 70 A О B b F b D b L0 E b 0,5x1 + 2x2 = 100 3x1 + 4x2 = 322 x1 Рис. 19. Увеличение ресурса по стали-45 При перемещении прямой 3x1 + 4x2 = 322 параллельно самой себе до точки F(90; 27,5) — точки пересечения прямых 0,5x1 + 3x2 = 100 и 2x1 = 180 — ограничение x1 + 4x2 322 будет оставаться активным, при этом, если АООТ «Прицеп» будет выпускать в сутки 90 задвижек и 27,5 слесарных тисков, величина выручки составит L(90; 27,5) = 8 150 (руб.), что на 1 015 руб. выше реальной выручки. Это может произойти за счет изменения запасов стали-45 (см. описанное выше перемещение прямой 3x1 + 4x2 = 322 до точки F). Для такой выручки предельно допустимый запас стали-45 нужно увеличить до 3 · 90 + 4 · 27,5 = 380 (кг). Рассмотрим увеличение ресурса правой части ограничения 0,5x1+2x2 100 по стали-3 (Рис. 20). При перемещении прямой 0,5x1 + 2x2 = 100 параллельно самой себе до точки G(14; 70) — точки пересечения прямых 3x1 + 4x2 = 322 и x2 = 70 — ограничение 0,5x1 + 2x2 100 будет оставаться активным. При этом величина выручки составит L(14; 70) = 7 840 (руб.), что на 705 руб. выше реальной. Это может произойти за счет изменения запасов стали-3 (см. перемещение прямой 0,5x1 + 2x2 = 100 параллельно самой себе до точки G). Для такой выручки предельно допустимый запас стали-3 нужно увеличить до величины 0,5 · 14 + 2 · 70 = 147 (кг). 46 x2 2x1 = 180 С c G x2 = 70 A B b b 0,5x1 + 2x2 = 100 D b О L0 b E 3x1 + 4x2 = 322 x1 Рис. 20. Увеличение ресурса по стали-3 Рассмотрим возможность изменения правой части пассивного ограничения 2x1 180 по бронзе (Рис. 1). Прямую 2x1 = 180 можно перемещать параллельно самой себе влево, не изменяя величины реального дохода, до точки B(61; 34,75). При этом предельно допустимый суточный запас бронзы можно уменьшить до значения 2 · 61 = 122 (кг). x2 2x1 = 180 С c x2 = 70 A B b b b О L0 b 0,5x1 + 2x2 = 100 D E 3x1 + 4x2 = 322 x1 Рис. 21. Уменьшение ресурса по бронзе Теперь рассмотрим возможность изменения правой части пассивного ограничения x2 70 по чугуну (Рис. 21). Не изменяя оптимального решения, прямую x2 = 70 можно перемещать параллельно самой себе до точки 47 B(61; 34,75). Это означает, что предельно допустимый суточный запас чугуна можно уменьшать до 34,75 кг. x2 2x1 = 180 С c x2 = 70 A B b b b О L0 b D E 0,5x1 + 2x2 = 100 3x1 + 4x2 = 322 x1 Рис. 21. Уменьшение ресурса по чугуну Проведем анализ предложенной ситуации по диапазону розничных цен на изделия, при котором не происходит изменения оптимального решения. Изменение коэффициентов x2 целевой функции оказывает влияние на наклон линии уровня, С уравнение которой записывается c в общем виде как c1x1 + c2x2 = const. Оптимальное решение будет оставаться неизменным, A если угловой коэффициент k B линии уровня, проходящей через b точку B, не будет выходить за + границы отрезка [k1; k2], где k1 и L 0 b D k2 — угловые коэффициенты b прямых BD и AB соответственно. E x1 О Таким образом, –3/4≤ k ≤ – b 1/4. Рис. 22. Изменение целевой функции Рассмотрим изменение коэффициента целевой функции у переменной x1 (коэффициент у x2 оставим без изменения). Имеем –3/4 ≤ – c1/100 ≤ –1/4 или 25 ≤ c1 ≤ 75. 48 Таким образом, оптимальное решение не изменится, если розничная цена одной задвижки будет лежать в диапазоне от 25 до 75 руб., в этом случае выручка предприятия составит от 5 000 до 8 050 руб. Теперь рассмотрим изменение коэффициента целевой функции у переменной x2, оставляя коэффициент у x1 неизменным. В этом случае –3/4 ≤ –60/c2 ≤ –1/4, или 80 ≤ c2 ≤ 240. Следовательно, оптимальное решение не изменится, если розничная цена одних слесарных тисков будет лежать в диапазоне от 80 до 240 руб. В этом случае выручка АООТ «Прицеп» может составить от 6 440 до 12 000 руб. 7. Упражнения Решить графически задачи линейного программирования: 1. L = x1 + 2x2 → max 2. L = x1 – 2x2 → min x1 + x2 ≤ 1, x1 – x2 ≤ 1, –x1 + x2 ≥ –1, x1 + x2 ≥ 2, x1 ≥ 0, x2 ≥ 0. x1 – 2x2 ≤ 0, x1 ≥ 0, x2 ≥ 0. 3. L = 2x1 + 3x2 → min 4. L = x1 + 3x2 → max –3x1 – 2x2 ≤ –6, x1 – x2 ≤ 1, x1 + 4x2 ≥ 4, x1 – x2 ≥ 0, x1 ≥ 0, x2 ≥ 0. 2x1 + x2 ≤ 2, x1 ≥ 0, x2 ≥ 0. 5. L = 2x1 + 3x2 → min 6. L = x1 + 2x2 → max x1 + x2 ≤ 4, x1 – 2x2 ≤ 1, 3x1 + x2 ≥ 4, –x1 + x2 ≥ –1, –x1 – 5x2 ≤ –4, x1 ≥ 0, x2 ≥ 0. 0 ≤ x1 ≤ 3, 0 ≤ x2 ≤ 3. 7. L = x1 + x2 → min 8. L = 2x1 + 3x2 → max x1 + x2 ≤ 3, x1 + x2 ≤ 2, x1 + x2 ≥ 0, x1 + x2 ≥ 1, x1 – x2 ≤ 0, x1 ≥ 0, x2 ≥ 0. x1 – x2 ≥ –1 0≤ x1 ≤ 1, 0 ≤ x2≤ 2. 9. L = 2x1 – 3x2 → min 10. L = x1 + x2 → max –4x1 + 5x2 ≤ 20, x1 + 2x2 ≤ 10, 2x1 + x2 ≥ 6, x1 + 2x2 ≥ 2, 5x1 – x2 ≤ 45, 2x1 + x2 ≤ 10, x1 – x2 ≤ 6, x1 ≥ 0, x2 ≥ 0. x1 ≥ 0, x2 ≥ 0. 11. АООТ «Прицеп» производит совковые и штыковые лопаты. Для их изготовления требуется листовой металл и древесина. Для изготовления одной совковой лопаты требуется 0,04 листа металла и 0,004 м 3 древеси49 ны, для изготовления одной штыковой лопаты — 0,02 листа металла и 0,004 м3 древесины. Розничная цена одной совковой лопаты 60 руб., а штыковой — 50 руб. Изучение рынка сбыта показало, что спрос на штыковые лопаты превышает спрос на совковые не более чем на 3 тыс. штук в месяц. Кроме того, спрос на совковые лопаты не превышает 15 тыс. штук в месяц. Сколько лопат каждого вида должно изготовлять АООТ «Прицеп» в месяц, если оно располагает 300 листами металла и 60 м 3 древесины и хочет получить максимальный доход от реализации своей продукции? 12. АООТ «Прицеп» выпускает 4,5-тонные прицепы и кормораздатчики «Ванюша» по цене 40,3 и 74,3 тыс. руб. соответственно. По результатам маркетинговых исследований спрос на изделия первого вида составляет не менее 1 200 ед. в год. Для производства прицепов используются сталь и чугун, запасы которых на предприятии составляют 25 000 и 4 500 т соответственно. Для изготовления 1 тыс. прицепов норма расхода стали составляет 1 615 т, а чугуна — 385 т. Для изготовления 1 тыс. кормораздатчиков расходуется: стали — 2 022 т, чугуна — 478 т. Себестоимость прицепов — 34,66, а кормораздатчиков — 63,9 тыс. руб. Найти оптимальное решение по производству прицепов и кормораздатчиков, чтобы: а) количество выпускаемых изделий было максимальным; б) выручка от выпускаемых изделий была максимальной; в) себестоимость выпускаемых изделий была минимальной. 13. Ремонтный завод «Хоперский» выпускает насосы двух типов: топливные и водяные. В комплектацию этих изделий входят четыре основных вида деталей: корпус, платик, манжета, шестерня. Для изготовления топливного насоса требуется один корпус, четыре платика, четыре манжеты и одна шестерня, для изготовления водяного насоса — 1, 2, 4 и 3 комплектующих деталей соответственно. От реализации одного топливного насоса завод имеет прибыль 50 руб., а от одного водяного — 200 руб. На складе завода имеется следующий запас комплектующих: корпусов — 6 штук, платиков — 8 штук, манжет — 12 штук, шестерней — 9 штук. Составить план производства, обеспечивающий заводу наибольший доход. 14. Провести экономический анализ задач 11—13. 15. Для производства двух видов кормовых биодобавок можно использовать витамины трех групп. При этом на изготовление биодобавки «Телец» расходуется 16 кг витамина А, 8 кг витамина В 1 и 5 кг витамина Е. На изготовление биодобавки «Овен» расходуется 4 кг витамина А, 7 кг витамина В1 и 9 кг витамина Е. На складе фирмы имеется всего 784 кг витамина А, 552 кг витамина В1 и 567 кг витамина Е. От реализации добавки «Телец» фирма имеет прибыль 4 тыс. руб., а от добавки «Овен» — 50 7,2 тыс. руб. Определить максимальную прибыль от реализации обеих биодобавок. 16. Фирма выпускает два набора удобрений «Купрум-I» и «КупрумII». В «Купрум-I» входит 3 кг азотных, 1 кг калийных и 1 кг медных удобрений. В «Купрум-II» — 1 кг азотных, 2 кг калийных и 6 кг медных удобрений. После осушения торфяных болот для внесения в почву потребовалось по меньшей мере 9 кг азотных, 8 кг калийных и 12 кг медных удобрений. «Купрум-I» стоит 4 усл. ден. ед., а «Купрум-II» — 6 усл. ден. ед. Какие и сколько наборов удобрений необходимо внести, чтобы обеспечить эффективное питание почвы и минимизировать стоимость? 17. На участке производства зубчатых колес имеются два станка — зубофрезерный и зубодолбежный. Требуется изготовить три вида зубчатых колес в следующих количествах: первого вида — 80 штук, второго и третьего — 110 и 140 штук соответственно. Каждое зубчатое колесо может быть изготовлено на любом из станков. Для выпуска одного колеса первого вида на зубофрезерном станке требуется затратить 20 мин, а на зубодолбежном — 34 мин. Для выпуска одного колеса второго вида на зубофрезерном станке требуется затратить 12 мин, а на зубодолбежном — 14 мин. Для выпуска одного колеса третьего вида требуется затратить 10 и 8 мин соответственно. Ресурс работы зубофрезерного станка без смены инструмента (фрезы) позволяет выпустить всего 180 колес, а ресурс работы зубодолбежного станка без смены инструмента (долбяка) позволяет выпустить всего 150 зубчатых колес. Определить оптимальную загрузку станков, обеспечивающую минимальное общее время их работы без смены инструмента. 18. Автотранспортное предприятие получило заказ на укомплектование трех строящихся объектов стройматериалами, производимыми на двух заводах. На первом заводе подготовлено к отправке 120 т стройматериалов, на втором — 180 т. На первый объект необходимо доставить 70 т строительных материалов. Второй и третий объекты нуждаются в получении 140 и 90 т указанного материала. Матрицей 8 12 5 3 7 9 задано: а) доход от перевозки одной тонны стройматериалов с каждого завода к каждому строящемуся объекту; б) стоимость перевозки одной тонны стройматериалов с каждого завода к каждому строящемуся объекту. Составить оптимальный план перевозок, а) максимизирующий доход; б) минимизирующий стоимость. 51 Ответы В ответах на задачи 1—10 приведено только оптимальное значение целевой функции, этого достаточно для проверки. 1. Lmax = 2. 2. Lmin = –∞. 3. Lmin = 5. 4. Lmax = 8/3. 5. Lmin = 4. 6. Lmax = +∞. 7. Lmin = 0. 8. Lmax = 6. 9. Lmin = –162/3. 10. Lmax = 20/3. 11. X опт = (4 000; 7 000), Lmax = 590 000 (руб.). 12. а) X опт = (11,688; 0), Lmax= 11,688 (шт.); б) X опт = (1,2; 8,448), Lmax = 676 046,4 (тыс. руб.); в) X опт = (1,2; 0), Lmin = 41 592 (тыс. руб.). 13. X опт = (0; 3), Lmax= 600 (руб.). 15. X опт = (27 – 27 ; 48 + 15 ), 0 1 , Lmax = 453 600 (руб.). 16. X опт = (2; 3), Lmin = 26 (усл. ден. ед.). 17. На зубофрезерном станке надо выпустить 80 колес первого вида и 100 колес второго вида, а на зубодолбежном — 10 колес второго вида и 140 колес третьего вида, Lmin = 4 060 (мин). 70 70 50 70 0 18. а) X опт = , 0 1 , Lmax= 2 600; 70 90 70 9 0 30 30 30 б) X опт = 40 30 140 30 90 , 0 1 , Lmin= 1 790. 0 52 § 3. Симплексный метод 1. Каноническая задача линейного программирования Графический метод решения задачи линейного программирования применяется только в случае двух или трех переменных. Симплексный метод (или симплекс-метод) в отличие от него является универсальным, так как позволяет решить общую задачу линейного программирования (ОЗЛП) практически с любым количеством переменных. Но для этого она должна быть приведена к каноническому виду или к канонической задаче линейного программирования (КЗЛП). Множество канонических задач является подмножеством всех задач линейного программирования. Перечислим отличительные черты КЗЛП: 1. Все ограничения в системе ограничений являются равенствами. 2. Требование неотрицательности наложено на все переменные, входящие в систему ограничений. 3. Целевая функция минимизируется. Надо отметить, что это требование влечет только лишь признак прекращения вычислений, который мы укажем при изложении алгоритма симплекс-метода, и не является принципиальным. Покажем, что любая задача линейного программирования может быть приведена к каноническому виду. Для этого необходимо выполнить следующие преобразования ОЗЛП: n 1. Всякое условие вида j 1 asj x j bs , где s = 1 или 2, или …, или n j 1 asj x j ys bs , ys 0. n 2. Всякое условие вида j 1 asj x j bs , где s = 1 или 2, или …, или n n заменяется условием j 1 a sj x j y s bs , y s 0. заменяется условием n 3. Все переменные xp, на которые не наложены требования неотрицательности, подставляются в равенства, полученные на двух предыдущих шагах, и в целевую функцию в виде xp = wp – vp, wp ≥ 0, vp ≥ 0. После преобразований 1—3 все новые переменные удобно обозначить буквой x, пронумеровав их по порядку введения, начиная с номера m + 1. Причем на шаге 3 переменную wp удобно обозначить xp, а vp — буквой x с первым свободным номером. Возможно, за счет введения новых переменных на шаге 3 изменится и целевая функция. Новую целевую функцию обозначим L1(X). 4. В случае оптимизации вида L1(X)→max воспользуемся равенством max L1(X) = –min(–L1(X)). Поэтому введем новую целевую функцию 53 L (X) = –L1(X), решим задачу при условии L (X)→min, после чего сделаем замену max L1(X) = –min(– L (X)). Пример 1. Общая задача линейного программирования x1 x2 x3 7, 2 x x x 3, 1 2 3 x1 x2 9 x3 16, x1 0, L( X ) x1 x2 x3 max приводится к каноническому виду согласно шагам 1—4. x1 x2 x3 y1 7, y1 0. 2 x1 x2 x3 y2 3, y2 0. x2 = w2 – v2, w2 ≥ 0, v2 ≥ 0; x3 = w3 – v3, w3 ≥ 0, v3 ≥ 0. Теперь обозначим y1 как x4, y2 — x5, w2 — x2, v2 — x6, w3 — x3, v3 — x7. Задача оптимизации при этом примет вид: L1 ( X ) x1 ( x2 x6 ) ( x3 x7 ) max . L( X ) x1 x2 x3 x6 x7 min . Пример 2. Из общей задачи линейного программирования x1 x2 x3 x4 x5 7, 2 x x x x x 3, 1 2 3 4 5 x x 9 x x 8 x 3 4 5 16, 1 2 x j 0, j 1,..., 5, L( X ) x1 x2 x3 x4 x5 min путем введения новых неотрицательных переменных получаем каноническую задачу: x1 x2 x3 x4 x5 x6 7, 2 x x x x x x 3, 1 2 3 4 5 7 x1 x2 9 x3 x4 8 x5 16, x j 0, j 1,..., 7, L( X ) x1 x2 x3 x4 x5 min . Ясно, что новые переменные можно сразу обозначать буквой x. Легко показать, что в результате преобразований 1—4 из общей задачи линейного программирования получается каноническая задача, решение которой тесно связано с решением исходной задачи. Действительно, пусть количество переменных при переходе к КЗЛП с n увеличилось до 54 n + t и пусть Z = ( x1 , x2 ,..., xn , xn 1 ,..., xn t ) — какое-нибудь решение КЗЛП. Ясно, что после отбрасывания из Z последних t компонент, согласно правилу их введения, получается решение исходной задачи линейного программирования. Поскольку в целевую функцию отброшенные компоненты не входят вообще или разность двух из них в точности равна значению некоторой исходной переменной, то значения L ( x1 , x2 ,..., xn , xn 1 ,..., xn t ) и L( x1 , x2 ,..., xn ) равны по модулю. И наоборот, располагая каким-нибудь решением ( x1 , x2 ,..., xn ) исходной задачи, можно вычислить и соответствующее решение КЗЛП ( x1 , x2 ,..., xn , xn 1 ,..., xn t ), посчитав, согласно правилам ввода, значения недостающих t компонент. Так как выполняется равенство | L | = |L|, то оптимальное решение Z* КЗЛП Z*= ( x1* , x2* ,..., xn* , xn*1 ,..., xn*t ) после отбрасывания последних t компонент даст оптимальное решение исходной задачи: X*= ( x1* , x2* ,..., xn* ). Таким образом, преобразования (1)—(4) приводят к КЗЛП, которую в общем виде можно записать: n t aij x j bi , i 1,..., m; j 1 x j 0, j 1,..., n t; n t L( X ) c0 c j x j min . (1) (2) (3) j 1 Пусть ранг системы линейных уравнений (1) в этой задаче равен r. Это означает, что r переменных этой системы, называемых базисными, могут быть выражены через остальные n + t – r переменных, называемых свободными. Напомним, что решение, в котором все свободные переменные равны нулю, а базисные принимают соответствующие неотрицательные значения, называется опорным планом. В теории линейного программирования доказано, что оптимальное значение целевая функция (3) принимает на множестве опорных планов (решений) КЗЛП, которое конечно. Таким образом, перебрав все опорные решения, можно указать то из них, на котором целевая функция оптимальна. Но даже при небольшом числе переменных, количество опорных планов может быть очень велико, и полный их перебор займет много времени. Идея же симплексного метода, или метода последовательного улучшения плана, заключается в том, что начиная с некоторого исходного опорного решения (плана) осуществляется последовательное целенаправ55 ленное перемещение по опорным планам в сторону оптимального значения целевой функции. Не излагая теории симплексного метода, укажем его алгоритм. Сначала рассмотрим алгоритм, применяющийся для расчетов вручную. 2. Жордановы исключения Поскольку переход от одного опорного плана к другому означает перевод некоторой базисной переменной в свободные, а соответствующей свободной переменной в базисные, рассмотрим отдельно эту процедуру в общем виде и запишем ее алгоритм. Для понимания сути преобразований возьмем систему двух линейных алгебраических уравнений с пятью переменными, имеющую ранг 2. Это означает, что две базисные переменные могут быть выражены через три свободные. Для того, чтобы удобно было следить за перемещением базисной переменной в свободную и наоборот, обозначим свободные переменные x1, x2, x3, а базисные — y1, y2: y1 a11x1 a12 x2 a13 x3 , y2 a21x1 a22 x2 a23 x3 . Переведем базисную переменную y1 в свободные, а свободную переменную x2 — в базисные, то есть выразим x2, y2 через x1, y1, x3. При этом новую базисную переменную будем писать на месте старой, то есть в первой строке системы, и новую свободную — на месте старой, то есть во втором столбце. Пусть коэффициент a12 при свободной переменной x2 отличен от нуля. 1. Все независимые (свободные) переменные запишем со знаком «–»: y1 (a11 )( x1 ) (a12 )( x2 ) (a13 )( x3 ), y2 (a21 )( x1 ) (a22 )( x2 ) (a23 )( x3 ). 2. Для удобства обозначим –aij = αij: y1 11 ( x1 ) 12 ( x2 ) 13 ( x3 ), y2 21 ( x1 ) 22 ( x2 ) 23 ( x3 ). 3. Поделим первую строчку на α12: y1 11 ( x1 ) 1 ( x2 ) 13 ( x3 ) . 12 12 12 4. Выразим из этого уравнения x2: 1 x2 11 ( x1 ) ( y1 ) 13 ( x3 ) . 12 12 12 5. Сделаем преобразования во втором уравнении, заменив в нем x2 на указанное выше выражение: 56 y2 21 22 11 ( x1 ) 22 ( y1 ) 23 22 13 ( x3 ) . 12 12 12 В результате проделанных шагов 1—5 мы выразили x2, y2 через x1, x3, y1. Причем новые свободные переменные записаны со знаком «–», то есть полученная система 1 x2 11 ( x1 ) ( y1 ) 13 ( x3 ), 12 12 12 y2 21 22 11 ( x1 ) 22 ( y1 ) 23 22 13 ( x3 ) 12 12 12 снова готова к описанным преобразованиям типа 3—5. Проделанная процедура называется жордановыми преобразованиями, или исключениями. Жордановы исключения очень удобно проводить с помощью специальных таблиц. Количество строк в таблице равно количеству базисных переменных (т. е. рангу системы), а количество столбцов — числу свободных переменных. Если справа от знака равенства имеются свободные члены, то появляется еще один столбец и для них. Преобразуются они, очевидно, по тем же правилам, что и остальные коэффициенты. Все клетки исходной таблицы, содержащие числовые величины, делятся по диагонали (таблица 5). Таблица 5 разрешающий столбец Свободные x1 Базисные разрешающая (10) строка y1 y2 x2 x3 11 12 13 21 22 23 В верхние треугольники исходной таблицы помещаются коэффициенты системы, полученной после шага 2. Столбец, содержащий коэффициенты при свободной переменной, которую необходимо перевести в базисные, будем называть разрешающим столбцом, а строку с соответствующей базисной переменной — разрешающей строкой и отмечать 57 стрелками. На пересечении разрешающих строки и столбца находится разрешающий элемент. В таблице он обведен кружком. В алгоритме жордановых исключений запишем последовательность преобразований коэффициентов системы на шагах 3—5. Преобразование исходной таблицы (таблица 5): 1) Разрешающий элемент заменяется обратной величиной и записывается внизу. 2) Остальные элементы разрешающей строки делятся на разрешающий элемент и записываются внизу. 3) Остальные элементы разрешающего столбца делятся на разрешающий элемент, меняют знак и записываются внизу. 4) Обозначим буквой в — верхний элемент, буквой н — нижний элемент, буквой k — номер разрешающей строки, буквой s — номер разрешающего столбца. В остальных, не заполненных внизу, клетках таблицы с номерами i,j рассчитывается величина нij = вkj ∙ нis. Например, н21 = в11 ∙ н22 = 11 22 . 12 Ниже приведена таблица 6 — исходная таблица, для которой выполнены преобразования (1)—(4): Таблица 6 разрешающий столбец Свободные x1 x2 x3 Базисные разрешающая строка y1 y2 11 12 11 12 21 13 13 12 1 12 22 11 22 12 23 22 12 13 22 12 Переход к новой таблице. Для этого необходимо построить такую же таблицу, что и исходная, поменяв местами рассматриваемые свободную и базисную переменные. Затем выполнить указанные ниже шаги. 1) Нижние элементы разрешающей строки записываются вверху. 2) Остальные элементы разрешающего столбца записываются вверху. 58 3) В остальных клетках верхние и нижние элементы складываются и записываются вверху. Таблица 7 разрешающий столбец Свободные Базисные разрешающая строка x2 y2 x1 11 12 21 11 y1 1 12 22 12 22 12 x3 13 12 23 13 22 12 Выше приведена таблица 7 — новая таблица, в которой выполнены преобразования (1)—(3). Она готова к дальнейшим преобразованиям, то есть снова можно менять местами какие-нибудь базисную и свободную переменные при условии, что соответствующий числовой коэффициент при свободной переменной отличен от нуля. К тому же, если вести заполнение исходной таблицы карандашом, стирая величины, в которых уже нет необходимости, то для всех расчетов можно использовать один и тот же табличный шаблон. Это свойство симплекс-таблиц очень удобно при программировании: все расчеты идут в пределах одного двумерного массива, верхние элементы исходной таблицы представляют собой старые значения коэффициентов (элементов массива), а верхние значения преобразованной таблицы — новые значения коэффициентов с теми же номерами. К этому вопросу мы еще вернемся при рассмотрении программы симплекс-метода. 3. Алгоритм симплекс-метода для расчетов вручную Мы приводим этот алгоритм, не рассматривая подробно теорию симплекс-метода, но там, где это возможно, будем давать обоснование проводимым действиям. 1. Начало. Общая задача линейного программирования приводится к каноническому виду (1)—(3), то есть путем введения новых дополнительных неотрицательных переменных все неравенства, входящие в математическую модель, превращаются в равенства, а все переменные, на которые не наложены требования неотрицательности, представляются в виде разности новых неотрицательных переменных. Целевая функция при этом минимизируется. Алгоритм такого перехода изложен выше. 59 2. Определяется ранг матрицы A системы уравнений a x b , i 1 ,..., m ; канонической задачи: пусть rank A = k. После ij j i n t j 1 этого базисные переменные выражаются через свободные. Как правило, базис образуют вновь введенные переменные, но это не обязательно. Допустим, базис образуют первые k переменных. Выразим их через свободные, записывая, как и при реализации алгоритма жордановых исключений, свободные переменные со знаком «–». Получим систему: x1 b10 b1,k 1 xk 1 b1,k 2 xk 2 ... b1,n t xn t , x b b x b 2 20 2 , k 1 k 1 2 , k 2 xk 2 ... b2 , n t xn t , ....................................................................... xk bk 0 bk ,k 1 xk 1 bk ,k 2 xk 2 ... bk ,n t xn t . (4) Подставим выражения для базисных переменных в целевую функцию. После этого в ней будут только свободные переменные с некоторыми коэффициентами перед ними. В целевой функции также запишем свободные переменные со знаком «–»: L (X)= c0 ck 1 ( xk 1 ) ck 2 ( xk 2 ) ... cnt ( xnt ). Для полученной системы и целевой функции составляется таблица для жордановых исключений, т. н. симплекс-таблица (таблица 8): Таблица 8 Свободные bi0 xk+1 … xk+2 xn+t Базисные x1 b10 b1, k+1 b1, k+2 … b1, n+t x2 b20 b2, k+1 b2, k+2 … b2, n+t … … … … … … xk bk0 bk, k+1 bk, k+2 … bk, n+t L(X ) c0 ck 1 ck 2 cnt 3. Выясняется, имеются ли в последней строке таблицы 8 положительные элементы, кроме c0 . Пусть, например, коэффициент ck 1 0. Значит, увеличивая переменную xk+1, мы уменьшаем слагаемое ck 1 ( xk 1 ) , а значит, и целевую функцию. Следовательно, опорный план, в котором переменная xk+1 имеет нулевое значение, поскольку является свободной, не оптимален. Но ненулевое значение переменная xk+1 может принять, если будет базисной. Значит, ее надо перевести в базисные. 60 Столбец, содержащий положительный коэффициент в последней строке, может стать разрешающим столбцом. Если столбцов с положительными элементами в последней строке несколько, то в качестве разрешающего столбца может быть выбран любой из них. Для уточнения номера разрешающего столбца надо перейти к пункту 4. Если же в последней строке положительных элементов нет, то процесс вычисления завершен, и опорное решение, соответствующее последней таблице, будет оптимальным. Выписываем его, значение целевой функции, даем интерпретацию полученных результатов. Конец. 4. Пусть столбец, который может стать разрешающим, имеет номер j, то есть c j 0. Это означает, как уже говорилось выше, можно уменьшить значение целевой функции путем увеличения значения xj, оставляя все другие свободные переменные без изменений, то есть равными нулю. В системе (4), на основе которой построена симплекс-таблица 4, имеем: x1 b10 b1 j x j 0, x b b x 0, 2 20 2j j ............................. xk bk 0 bkj x j 0. Ясно, что увеличивая xj, надо следить за тем, чтобы x1, x2,…, xk оставались неотрицательными. Здесь возможны два случая: а) Все коэффициенты bij < 0, i = 1,…, k. Тогда значение xj можно увеличивать неограниченно, от этого произведения –bijxj будет только расти, и все переменные x1, x2,…, xk будут неограниченно возрастать, то есть требование их неотрицательности не будет нарушено. Целевая функция при этом L (X) = c0 c j ( x j ), c j 0, не будет ограничена снизу: L( X ) . б) Среди bij , i = 1,…, k имеются положительные, и таких чисел может быть несколько. Пусть brj > 0 r = 1 или r = 2, или …, или r = k. Ясно, чтобы выполнялось условие xr = br0 – brjxj ≥ 0, надо потребовать выполнения b равносильного неравенства x j ro , то есть переменную xj можно увелиbrj чивать, но только до величины bro . И такие неравенства должны выполbrj нятся для всех строк j-го столбца, в которых brj > 0. Следовательно, надо для таких строк определить величину 61 K min br 0 , 1 r k , brj 0. brj Ясно, что xj можно увеличивать, но не более чем до K. Значит, xj надо менять местами с той базисной переменной, в которой строке указанный минимум достигается. Итак, последовательность действий в пункте 4 такова: просматривается столбец, соответствующий c j 0, выясняется, имеются ли в нем положительные элементы; если ни в одном из таких столбцов положительных элементов нет, то оптимального решения не существует, так как целевая функция не ограничена снизу, конец; если найден хотя бы один столбец, содержащий положительный элемент в последней и какойнибудь еще строках, то этот столбец — разрешающий. Далее надо перейти к пункту 5. 5. В разрешающем столбце j находится строка с номером i, для котоb рой достигается min r 0 , 1 r k , brj 0. Строка i — разрешающая brj строка. Перейти к пункту 6. 6. Меняются местами переменные xj и xi. Для этого в последней симплекс-таблице надо выполнить жордановы исключения по соответствующему алгоритму. Вернуться к пункту 3. Продемонстрируем на примерах применение рассмотренного алгоритма симплекс-метода. Пример 1. Рассмотрим задачу 4 из п. 6 § 2. Имеем общую задачу: 3 x1 4 x2 322, x2 70, 2 x1 180, 0,5 x 2 x 100, 1 2 x j 0, j 1, 2, L( X ) 60 x1 100 x2 max . 1. Путем введения новых неотрицательных переменных приведем ее к каноническому виду: 62 3 x1 4 x2 x3 322, x2 x4 70, 2 x1 x5 180, 0,5 x 2 x x 100, 1 2 6 x j 0, j 1,...,6, L( X ) 60 x1 100 x2 min . 2. Определим ранг матрицы коэффициентов системы уравнений. В нашем случае ясно, что он равен 4, так как коэффициенты при новых переменных образуют единичную подматрицу. Еще более очевидно, что переменные x3, x4, x5, x6 могут одновременно быть выражены через x1 и x2. Таким образом, x3, x4, x5, x6 являются базисными переменными, а x1 и x2 — свободными. В этом случае система (4) имеет вид: x3 322 3x1 4 x2 , Таблица 9 x 70 x , 4 Свободные 2 bi0 x1 x2 x 180 2 x1 , 5 Базисные x6 100 0,5 x1 2 x2 . x3 322 3 4 Составим для полученной системы и целевой функции x4 70 0 1 симплекс-таблицу (таблица 9). X = (0; 0; 322; 70; 180; 100) x5 180 2 0 — опорный план, с которого мы начинаем движение в стоx6 100 0,5 2 рону уменьшения значения L(X ) . Для него L(X ) = 0. 0 60 100 L(X ) Значения x3, x4, x5, x6 считываются из столбца свободных членов bi0, так как именно эти Таблица 10 значения получаются, если Свободные свободные переменные равны bi0 x1 x2 нулю. Базисные 3. Видим, что в последней x3 322 3 4 строке есть положительные –200 –1 –2 элементы в столбцах при x1 и x4 70 0 1 x2. Значит, любой из этих –50 –0,25 –0,5 столбцов в дальнейшем моx5 180 2 0 жет стать разрешающим. 0 x6 100 0 0,5 50 L(X ) 0 2 0,25 60 –5000 0 –25 0,5 63 100 –50 4. Рассмотрим столбец x2. В нем есть положительные коэффициенты в строках при x3, x4 и x6. b 5. Находим, в какой из этих строк достигается min r 0 . Видим, что brj 322 70 100 min , , 50, и достигается в строке при x6. Значит, эта 4 1 2 строка будет разрешающей. 6. Отметим в таблице разрешающую строку, разрешающий столбец, разрешающий элемент и Таблица 11 выполним один шаг жордаСвободные новых исключений, то есть bi0 x1 x6 переведем переменную x2 в Базисные базисные, а x6 — в свободx3 122 2 –2 ные. Преобразования ис61 0,5 –1 ходной таблицы отражены x4 20 –0,25 –0,5 в таблице 10, а новая сим–0,25 плекс-таблица представле15,25 0,125 на в верхних треугольниках x5 180 2 0 –122 –1 2 таблицы 11. В дальнейшем для экономии места в слуx2 50 0,25 0,5 чае, если новая таблица 0,25 –15,25 –0,125 снова подвергается преоб–5 000 35 –50 L(X ) разованиям, будем в ней –17,5 35 –2 135 заполнять нижние треугольники, что соответствует следующим жордановым исключениям. Так сделано в таблице 11, судя по которой значение L(X ) от 0 в начале процесса вычислений уменьшилось до –5 000. Это значение целевой функции на опорном плане X = (0; 50; 122; 20; 180; 0). Значения x3, x4, x5, x2 считываются из столбца свободных членов bi0. Вернемся к пункту 3 алгоритма симплекс-метода. 1. Видим, что в последней строке таблицы 11 (рассматриваем только верхние треугольники) положительный элемент только один — в столбце x1. 2. Этот столбец — разрешающий, так как в нем в строках при x3, x5 и x2 находятся положительные коэффициенты. 64 Таблица 12 Свободные bi0 Базисные x1 61 x3 0,5 x6 3. Находим, в какой из этих строк достигается br 0 min . Видим, что brj –1 122 180 50 min , , 61 , 2 0,25 2 x4 35,25 0,125 –0,75 и достигается в строке при x3. Значит, эта строка будет разx5 58 –1 2 решающей. 4. Отметим в таблице 11 x2 34,75 –0,125 0,75 разрешающую строку, разрешающий столбец, разрешаю–7135 –17,5 –15 щий элемент и выполним L(X ) один шаг жордановых исключений, то есть переведем переменную x1 в базисные, а x3 — в свободные. Преобразования исходной таблицы отражены в нижних треугольниках таблицы 11, а новая симплекс-таблица представлена в верхних треугольниках таблицы 12. По таблице 12 находим, что значение L(X ) от –5 000 на предыдущем шаге симплекс-метода уменьшилось до –7 135. Это — значение целевой функции на опорном плане X = (61; 34,75; 0; 35,25; 58; 0). Значения x1, x4, x5, x2 считываются из столбца свободных членов bi0. Вернемся к пункту 3 алгоритма симплекс-метода. 3. Видим, что в последней строке таблицы 12 положительных элементов нет. Это означает, что найденное опорное решение является оптимальным: X*= (61; 34,75; 0; 35,25; 58; 0). Наименьшее значение L( X * ) равно –7 135. Интерпретируем полученные результаты: x1* 61 — оптимальный выпуск задвижек в день составляет 61 штуку; x2* 34,75 — оптимальный выпуск тисков в день составляет 34,75 штук; x3* 0 — сталь-45 при таком выпуске расходуется полностью; x4* 35,25 — остаток чугуна (кг) на складе за 1 день; x5* 58 — остаток бронзы (кг) на складе за 1 день; x6* 0 — сталь-3 при таком выпуске расходуется полностью; max L( X ) min L( X ) 7 135 — наибольшая выручка (руб.) за день за выпущенную продукцию. 65 Получили то же решение, что и в § 1.1. Если выпускать 34,75 тисков в день нельзя, то этот результат можно интерпретировать так: оптимальным является выпуск 34,75 · 4 = 139 штук тисков за 4 дня. Остальные цифры также должны быть соответственно пересчитаны. Можно поступить и по-другому: оптимальным считать выпуск 34 тисков в день. Но в этом случае необходимо пересчитать выручку, остаток стали-45, чугуна и стали-3. Заметим, что выбирая разрешающий столбец в таблице 1 (пункт 4), можно было бы остановиться и на столбце переменной x1: в последней строке этого столбца и в других строках есть положительные элементы. В этом случае решение пошло бы по другому пути. Убедитесь в этом самостоятельно. Порядок жордановых исключений в этом случае таков: x1 меняем с x5, x2 меняем с x3, x5 меняем с x6. Значения целевой функции при этом будут уменьшаться так: 0, –5 400, –6 700, –7 135. Пример 2. Рассмотрим конкретную экономическую ситуацию. На АООТ «Балтекс» для выпуска глянцевой ткани, ткани «Турист» и курточной ткани используются ткацкие станки двух типов: станки гидравлические и станки ткацкие бесчелночные (коротко: СГ и СТБ) с различной производительностью. Для изготовления указанных видов ткани используются нити и красители. Ресурсы времени работы станков, нитей и красителей ограничены. В таблице 13 указаны ежемесячные ресурсы времени работы станков в тысячах станко-часов, нитей и красителей в килограммах, производительность станков в метрах на час, нормы расхода нитей и красителей в килограммах на тысячу метров каждого вида ткани и цена 1 м ткани. Требуется организовать выпуск продукции так, чтобы ежемесячная выручка предприятия была максимальной. Таблица 13 Виды ресурсов Виды ткани Глянцевая «Турист» Курточная Производительность станков СГ 0 м/ч 45,5 м/ч 29 м/ч СТБ 23,5 м/ч 0 м/ч 0 м/ч Нормы расхода Нити 417,7 кг/тыс. м 221,9 кг/тыс. м 112,24 кг/тыс. м Красители 1 192,5 кг/тыс. м 675,0 кг/тыс. м 270,0 кг/тыс. м Цена за 1 м ткани 54,3 руб. 50,2 руб. 27,0 руб. Ежемесячный объем ресурсов 4,6 тыс. ст.-ч 4,5 тыс. ст.-ч 2 485,7 кг 9 738,5 кг Составим математическую модель задачи. Пусть x1, x2 и x3 — количество в тыс. м глянцевой ткани, ткани «Турист» и курточной ткани соответственно, выпускаемой ежемесячно. На выпуск x1 тыс. м глянцевой ткани на 66 x1 тыс. ст.-ч, на 23 ,5 выпуск x2 тыс. м ткани «Турист» на СГ с производительностью 45,5 м/ч x2 — тыс. ст.-ч, на выпуск x3 тыс. м курточной ткани на СГ с произво45 ,5 x дительностью 29 м/ч — 3 тыс. ст.-ч. Другие соотношения достаточно 29 очевидны. Получим: x3 x2 45,5 29 4,6, x1 4,5, 23,5 417,7 x1 221,9 x2 112,24 x3 2 485,7, 1192,5 x1 675 x2 270 x3 9 738,5, x1 0, x2 0, x3 0, СТБ с производительностью 23,5 м/ч будет потрачено L( X ) 54,3x1 50,2 x2 27,0 x3 max . Перейдем к КЗЛП, оставив для корректного выполнения алгоритма в дробях 4 знака после запятой: 0,0220 x2 0,0345 x3 x4 4,6, 0,0426 x1 x5 4,5, 417,7 x1 221,9 x2 112,24 x3 x6 2 485,7, 1192,5 x 675 x 270 x x 9 738,5, 1 2 3 7 xi 0, i 1,..., 7, L( X ) 54,3x1 50,2 x2 27,0 x3 min . Ясно, что базис в системе линейных уравнений образуют новые переменные x4, x5, x6, x7. Не проводя подробные рассуждения, как в предыдущем примере, укажем только симлекс-таблицы (таблицы 14—16), отражающие решение. Все величины будем сохранять с 4 знаками после запятой. Здесь в таблице 14, в отличие от предыдущего примера, совмещены исходная и преобразованная по алгоритму жордановых исключений таблица. bi0 x1 x2 67 Таблица 14 x3 4,6 0 x4 0,0220 –0,2486 4,5 –0,0418 0,0426 x5 x7 –7561,2508 L 0,0045 675 –562,2653 0,5058 270 –1270,6016 54,3 0 112,24 1,8824 1192,5 0 0 221,9 11,2019 9738,5 –0,0112 0 0 417,7 x6 –0,0001 0 0 2485,7 0,0345 –3,0419 50,2 –341,4229 27,0 –94,4837 –0,2262 –25,3887 В таблице 16 в последней строке нет положительных элементов, следовательно, последнее опорное решение (0; 0; 22,1469; 3,8350; 4,5; 0; 3759,0449) является оптимальным. bi0 x1 –0,0418 4,3514 x4 x7 –0,0868 0,0426 x5 x2 –0,0001 –0,5164 4,5 –0,0002 0 0 –0,0461 0 0 0 11,2019 1,8824 22,1469 2177,2492 –78,1016 –3,0419 1581,7957 –562,2653 265,8096 –40,1837 –0,2262 –35,6848 –5,9966 L Таблица 15 x3 0,0233 x6 0,0045 0 0,5058 3,7216 0,0089 1,9771 –71,4229 0,6354 141,2078 1,6113 –0,0143 –3,1856 3,8350 –0,1286 –0,0003 Таблица 16 x2 –0,0461 4,5 0,0426 0 0 22,1469 3,7216 0,0089 1,9771 bi0 x1 x6 x4 x5 x3 68 3759,0449 187,7080 –2,4065 141,2078 –597,9501 –46,1803 –0,2405 –3,1856 x7 L Дадим интерпретацию полученным результатам: x1* 0 — для получения наибольшей выручки глянцевую ткань выпускать не надо; x2* 0 — для получения наибольшей выручки ткань «Турист» выпускать не надо; x3* 22,1469 — для получения наибольшей выручки курточную ткань надо выпускать в объеме 22,1469 тыс. м ежемесячно; x4* 3,8350 — остаток в тыс. станко-часов рабочего времени СГ; x5* 4,5 — СТГ не использовались (глянцевая ткань не выпускалась); x6* 0 — нити израсходованы полностью; x7* 3 759,0449 — остаток в кг красителей; max L( X ) min L( X ) 597,9501 — наибольшая ежемесячная выручка в тыс. руб. за выпущенную продукцию. 4. Реализация алгоритма симплекс-метода на языке паскаль Эта часть параграфа, посвященного симплекс-методу, будет полезна тем, кто хочет реализовать его на каком-либо языке программирования. Такая реализация существенно отличается от алгоритма, предложенного выше. Дело в том, что выбор базисных переменных — трудоемкая процедура, требующая в связи с возникающей вычислительной погрешностью весьма тонкого анализа получающихся результатов. Гораздо проще ввести искусственный базис — новые по отношению к КЗЛП переменные, количество которых равно количеству строк и которые заведомо образуют базис. Для простоты рассуждений будем полагать, что в КЗЛП, полученной из ОЗЛП, количество уравнений равно m, а количество пременных (старых и новых вместе) — n. Потребуем, чтобы правые части уравнений системы (1) в КЗЛП были неотрицательными: bi ≥ 0, i = 1, 2,…, m. Если в каком-либо уравнении это не так, то умножим обе части его на (–1). Ясно, что такое преобразование никоим образом не изменит решение. Добавим к левой части каждого уравнения системы в КЗЛП еще одну неотрицательную переменную: xn+1, xn+2,…, xn+m. Будем называть их искусственными. Система (1) примет вид: 69 a11 x1 a12 x2 ... a1n xn xn 1 b1 , a x a x ... a x x b , 21 1 22 2 2n n n2 2 ........................................................... am1 x1 am 2 x2 ... amn xn xn m bm . Ясно, что переменные xn+1, xn+2,…, xn+m всегда образуют базис, так как в новой матрице системы размерами m×(n + m) коэффициенты при них образуют единичную подматрицу размерами m×m. Этот базис и будем называть искусственным. Далее, если мы выразим базисные переменные xn+1, xn+2,…, xn+m через x1, x2,…, xn, и найдем соответствующее базисное решение (0; 0;…; 0; b1; b2;…; bт), то, в силу наложенных на систему (1) требований, оно будет неотрицательным, то есть опорным. Таким образом, автоматически решается вопрос о выборе базисных переменных для начала вычислений по симплекс-методу. Будем называть B-задачей новую КЗЛП, полученную из имеющейся (1)—(3): n (5) aij x j xn i bi , bi 0, i 1,..., m; j 1 (6) x j 0, j 1,..., n m; n m j 1 i 1 L( X ) c0 c j x j B xn i min, (7) здесь целевая функция (3) увеличена на Bi1 xni , где B — достаточно m большое число. Имеется тесная связь между решениями задачи (1)—(3) и B-задачи (5)—(7). Во-первых, если существует оптимальное решение B-задачи X*= ( x1* , x2* ,..., xn* , 0,..., 0 ), в котором последние m компонент равны нулю, то вектор ( x1* , x2* ,...,xn* ), очевидно удовлетворяющий системе ограничений (1), (2), является оптимальным решением задачи (1)—(3). Допустим, что это не так. Тогда существует вектор Y * ( y1* , y2* ,...,yn* ) , удовлетворяющий (1) и (2), и для L(Y * ) L( x1* , x2* ,...,xn* ) . которого Но L( y ,..., y ,0,..., 0) L( y ,..., y ) L( x ,..., x ) L( x ,..., x ,0,..., 0). Ясно, что * 1 * n * 1 * n * 1 * n * 1 * n вектор ( y1* , y2* ,...,yn* ,0,...,0) удовлетворяет системе ограничений (5), (6), а значит, X* не является оптимальным решением задачи (5)—(7). Получили противоречие. Во-вторых, если существуют сколь угодно большие значения B, такие, что в решении ( x1* , x2* ,...,xn* , xn*1 ,...,xn*m ) задачи (5)—(7) хотя бы одна из компонент с номером, большим n, больше нуля 70 ( xi* 0, i n ), то система ограничений (1)—(2) противоречива. Доказывать этот факт мы не будем, но укажем, что на практике решается B-задача для одного, достаточно большого B. Обычно его выбирают большим по модулю всех входящих в задачу числовых коэффициентов. В-третьих, если линейная форма (7) L ( X ) не ограничена снизу, то и линейная форма (3) L(X ) не ограничена снизу, так как слагаемое Bi1 xni m может только увеличивать значение L(X ). Для составления начальной симплекс-таблицы B-задачи выразим базисные переменные xn+1, xn+2,…, xn+m через x1, x2,…, xn: n xni bi aij x j , bi 0, i 1,..., m (8) j 1 и подставим их в целевую функцию (7). Получим: n m n m n L( X ) c0 c j x j B xni c0 c j x j B bi aij x j , j 1 i 1 j 1 i 1 j 1 m n m c0 B bi c j B aij x j . i 1 j 1 i 1 m m Обозначим 0 c0 B bi , j c j B aij , j 1,..., n. Тогда поi 1 i 1 лучим L( X ) 0 j 1 j ( x j ). n (9) Для B-задачи с преобразованной целевой функцией модифицируем первоначальную симплекс-таблицу так, чтобы ее обработка легко алгоритмизировалась. Поэтому она немного будет отличатся от аналогичной таблицы, использующейся при расчетах вручную (см. таблицу 17). Номера строк этой модифицированной таблицы с 0-й по m + 1-ю отражены в ее первой графе, а номера столбцов с 0-го по n + m + 1-й — в верхней строке. В памяти ЭВМ будет храниться двумерный массив A величин, обведенных жирной чертой. В программе этот массив задается как матрица со строками от 1 до 20 и столбцами от 0 до 40, вводится реальное количество уравнений M системы (1), количество переменных в ней N, а в дальнейшем обрабатывается его часть с номерами столбцов от 0 до N+M, и с номерами строк от 1 до M + 1, в нулевом столбце хранятся значения свободных членов, в столбцах с 1-го по n-й хранятся коэффициенты при соответствующих свободных переменных, а в последней, M + 1-й, строке хранятся и в дальнейшем преобразуются вместе со всей симплекстаблицей коэффициенты целевой функции. При автоматических расчетах 71 коэффициенты при свободных и базисных переменных хранятся в одном массиве: в столбце n + i базисной переменной xn+i имеется один ненулевой коэффициент — единица в i-ой строке. Номера базисных переменных фиксируются в последнем, n + m + 1-м, столбце симплекс-таблицы 17 (выделен точками), а в программе эти номера хранятся в массиве NOM. В начале расчетов эти номера совпадают с номерами искусственных переменных. Наша цель — получить решение исходной КЗЛП, если оно имеется, а для этого надо перевести все базисные переменные xn+1, xn+2,…, xn+m в свободные. В нулевой строке таблицы 17 в столбцах от n+1-го по n + m-й будем ставить метки, указывающие на факт удаления соответствующей искусственной переменной из базиса (выделена пунктиром). В самом начале все метки — нули. При переводе искусственной базисной переменной в свободные метка становится равной 1. В программе эти метки хранятся в массиве MET. 1 … n n+1 … Таблица 17 n +m n+m+1 x1 … xn xn + 1 … xn + m 0 … 0 0 … 0 b1 b2 … bm a11 a21 … am1 a1n a2n … amn 0 1 … … … … … 1 0 … 0 0 … … … … … 0 0 … 1 0 0 0 1 2 … m m+1 n xn + m + 1 n+1 n+2 … n+m С помощью модифицированной симплекс-таблицы расчеты проводятся почти так же, как и в алгоритме жордановых исключений. Чтобы не заводить вспомогательного массива для хранения «нижних» значений, в программе используется изящный прием (его можно применять и при вычислениях вручную, но при этом нужно особо внимательно следить за алгоритмом). Сначала все элементы разрешающей строки меняют свое значение на частное от деления, т. е. делятся на разрешающий элемент и «записываются вверху», что соответствует полным преобразованиям разрешающей строки в жордановых исключениях. Пусть, как и ранее, k — номер разрешающей строки, а s — номер разрешающего столбца. В программе описанная процедура выглядит так: For J:=0 To P Do A[K,J]:=A[K,J]/R; Здесь P — число столбцов, R — значение разрешающего элемента. Теперь в клетке симплекс-таблицы с номерами i,j надо получить «нижний элемент» по формуле вkj ∙нis. Если в этот момент мы вычислим его как -A[I,S]*A[K,J], 72 получим требуемый результат, ведь деление на разрешающий элемент, смена знака и «запись внизу» в разрешающем столбце в этой формуле заложены. Таким образом, сложение «верхнего» и «нижнего» значений в клетке симплекс-таблицы с номерами i,j и запись этой суммы «вверху» в программе осуществляется с помощью одного оператора присваивания: A[I,J]:=A[I,J]-A[I,S]*A[K,J]. Ясно, что в модифицированной таблице перевод свободной переменной в базисные означает превращение разрешающего элемента в 1 и обнуление всех остальных элементов разрешающего s-го столбца, так как эта переменная выражается через свободные и не входит больше ни в одно из уравнений. Так мы и будем делать в программе. И, наконец, на практике было установлено, что вследствие ошибок округлений результатов арифметических операций в таблице не получается «чистых» нулей. Поэтому при проверке числа на положительность сравнение осуществляется не с нулем, а с величиной «чуть большей» нуля, с малым числом EPS. Все величины, меньшие либо равные EPS, считаются нулями или отрицательными величинами. Значение EPS устанавливается экспериментально, при отладке программы, и при более высокой точности вычислительной системы может быть уменьшено. Program SIMPLEX; {$R+} uses crt; Const B=1E+8;{большое число} EPS=1E-10;{малое число} N_STOLBEC=40; {зарезервированное число столбцов} N_STROKA=20; {зарезервированное число строк} Type VEKTOR=Array[0..N_STOLBEC] Of Real; MATRICA=Array[1..N_STROKA,0..N_STOLBEC] Of Real; NOMER=Array[1..N_STROKA] Of Byte; METKA=Array[1..N_STOLBEC] Of Byte; STROKA=String[40]; Var F:VEKTOR;{массив коэффициентов целевой функции} A:MATRICA;{симплекс-таблица} NOM:NOMER;{массив номеров базисных переменных} MET:METKA;{массив меток переменных} SUM,R,C:Real; 73 M,N,W,M0,P,I,J,R1,K,S:Byte; Procedure OPTIMALNOE_RESHENIE; {вывод на экран оптимального решения} Var X:VEKTOR; Begin WriteLn; WriteLn('О П Т И М А Л Ь Н О Е Р Е Ш Е Н И Е'); FillChar(X,SizeOf(X),0); {обнуление массива X} For J:=1 To N Do Begin {если в номерах базисных переменных есть номер J, стоящий на K-м месте, то X[J] присваивается значение свободного члена A[K,0], иначе — 0} C:=0; For K:=1 To M Do If NOM[K]=J Then C:=A[K,0]; X[J]:=C End; {находится значение целевой функции на векторе X} {в массиве F сохранены значения коэффициентов целевой функции исходной КЗЛП} SUM:=F[0]; For J:=1 To N Do Begin WriteLn('X[',J,']=',X[J]); SUM:=SUM+F[J]*X[J] End; WriteLn; WriteLn('Целевая функция = ',SUM) End; {$V-} Procedure Stop(S:Stroka); {выводится строка S и программа завершается} Begin WriteLn(S); Halt End; {основная программа} BEGIN ClrScr; FillChar(A,SizeOf(A),0);{обнуление массива A} 74 FillChar(F,SizeOf(F),0);{обнуление массива F} FillChar(NOM,SizeOf(NOM),0);{обнуление массива NOM} FillChar(MET,SizeOf(MET),0);{обнуление массива MET} {ввод данных с клавиатуры и создание массива А} Write('Сколько РАВЕНСТВ в системе ограничений?'); ReadLn(M); Write('Сколько ПЕРЕМЕННЫХ в системе ограничений?'); ReadLn(N); WriteLn; WriteLn('Ведите по строкам матрицу коэффициентов'); WriteLn('и правые части системы ограничений'); WriteLn; For I:=1 To M Do Begin WriteLn(I,' строка:'); For J:=1 To N Do Begin Write('Коэффициент при X',J,'?'); ReadLn(A[I,J]) End; Write('Правая часть = ');ReadLn(A[I,0]); {если правая часть отрицательная, то вся строка меняет знак} If A[I,0]<0 Then For J:=0 To N Do A[I,J]:=-A[I,J] End; WriteLn; WriteLn('Введите коэффициенты целевой функции'); WriteLn; Write('Свободный член = ');ReadLn(A[M+1,0]); For J:=1 To N Do Begin Write('Коэффициент при X',J,' ? ' ); ReadLn(A[M+1,J]) End; WriteLn; {коэффициенты целевой функции дублируются в массив F, так в процессе решения они будут меняться} F[0]:=A[M+1,0]; For J:=1 To N Do F[J]:=A[M+1,J]; A[M+1,0]:=-A[M+1,0];{для коррек-го вычисления γ_0} 75 {дальнейшее построение симплекс-таблицы В-задачи} P:=N+M;{максимальный номер базисной переменной} M0:=M+1;{переобозначение строки М+1 для удобства} {заполняются столбцы с n+1-го по n+m-й} For I:=1 To M Do Begin A[I,N+I]:=1; {запоминаются номера базисных переменных} Nom[I]:=N+I End; {вычисляются коэффициенты γ_J целевой функции в (9)} For J:=0 To N Do Begin Sum:=0; For I:=1 To M Do Sum:=Sum+A[I,J]; A[M0,J]:=B*Sum-A[M0,J] End; {формирование таблицы в массиве А завершено} W:=0;{количество повторений жордановых исключений} {пока среди базисных переменных есть искусственные, повторяются жордановы исключения} While P>=N Do Begin {поиск разрешающего столбца S} S:=0;{начальный номер разрешающего столбца} K:=0;{признак наличия положительного элемента} {перебираются все столбцы с 1 по Р-й} J:=1; While J<=P Do Begin {если в последней строке есть положительный элемент и соответствующая переменная — свободная} If (A[M0,J]>Eps) And (Met[J]<>1) Then Begin S:=J;{запоминается номер столбца} I:=1;{в этом столбце перебираются все строки} While I<=M Do Begin {если встретился положительный элемент, то перебор в строке и поиск столбца надо закончить} If A[I,J]>Eps 76 Then Begin {выход из цикла по J; закончен поиск столбца} J:=P+1; K:=I;{запоминается номер строки} {выход из цикла по I; закончен перебор строк} I:=M+1 End; I:=I+1; End End; J:=J+1; End; If S=0 {разрешающий столбец не найден} Then Begin {если В-задача имеет оптимальное решение, в котором компонента с номером, большим N, больше нуля} If P>N Then Stop('Система ограничений противоречива') {все искусственные пер-е переведены в свободные} Else Begin OPTIMALNOE_RESHENIE; Halt{конец} End End Else{разрешающий столбец найден} Begin If K=0{но положительных элементов в нем нет} Then Begin If P>N{если среди базисных есть искусственные} Then Stop('Система ограничений противоречива') Else Stop('Форма не ограничена снизу') End End; {поиск разрешающей строки K} R:=B;{начальное значение минимума} K:=0;{начальный номер строки с минимумом} For I:=1 To M Do Begin 77 If A[I,S]>EPS{если I,S-й элемент положительный} Then Begin C:=A[I,0]/A[I,S]; If C<R Then Begin R:=C;K:=I End End End; {шаг жордановых исключений} R:=A[K,S];{запоминается разрешающий элемент} {разрешающая строка делится на разрешающий элемент, и результат сразу «записывается вверху»} For J:=0 To P Do A[K,J]:=A[K,J]/R; {в остальных клетках таблицы, исключая разрешающую строку и столбец, вычисления идут по формулам (10)} For I:=1 To M0 Do Begin If I<>K Then Begin For J:=0 To P Do If J<>S Then A[I,J]:=A[I,J]-A[I,S]*A[K,J] End End; {зануляются все элементы S-го столбца, кроме K-го} For I:=1 To M0 Do If I<>K Then A[I,S]:=0; R1:=NOM[K];{номер старой базисной пер-й} NOM[K]:=S;{номер новой базисной переменной} If R1>N Then Begin {отмечается, что она стала свободной переменной} MET[R1]:=1; {количество повторений жордановых исключений увеличивается на 1} W:=Succ(W) End; {если количество повторений жордановых исключений больше либо равно М — количеству базисных пер-х} If W>=P-N Then P:=N{завершение симплекс-метода} End 78 END. 5. Упражнения В качестве упражнений решить задачи § 2 симплексным методом. Указание: первый выбранный план должен быть опорным, т. е. все свободные члены после выражения базисных переменных через свободные должны быть неотрицательными. Если это не так, то надо искать новое базисное решение до тех пор, пока оно не будет неотрицательным. Только после этого можно приступать к реализации симплекс-метода. 79 § 4. Решение задачи линейного программирования в Excel 1. Автоматизация решения задачи линейного программирования Для решения оптимизационных задач можно использовать надстройку «Поиск решения» табличного процессора Excel. В Microsoft Office Excel 2007 надстройка «Поиск решения» доступна на вкладке Данные в группе Анализ. Если она еще не загружена, ее необходимо загрузить. Необходимую инструкцию можно найти в Справке (Рис. 23). Рис. 23. Загрузка надстройки После загрузки надстройка «Поиск решения» появится на вкладке Данные в группе Анализ (Рис. 24). Рис. 24. Вкладка Данные 80 Рассмотрим решение задачи о выборе оптимального рациона питания со стр. 37 в табличном процессоре Excel с помощью инструмента «Поиск решения»: L(x) = 7x1 + 9x2 → min (минимизация стоимости рациона), при ограничениях: 28 x1 32 x2 14,0 (ограничение по белкам) , 47 x1 83x2 32,9 (ограничение по углеводам) , x 0,4 (ограничение по смеси № 5), 1 x1 0, x2 0. При нажатии на кнопку Поиск решения говое окно (Рис. 25). появится диало- Рис. 25. Диалоговое окно Поиск решения Инструмент «Поиск решения» приложения Microsoft Office Excel использует программу нелинейной оптимизации Generalized Reduced Gradient. Чтобы правильно провести этот диалог, надо подготовить данные задачи в ячейках листа. При этом часть ячеек будет содержать подписи (т. е. текст, подписи обрабатываться не будут, их назначение — сделать диалог максимально удобным, легко Рис. 81 26. Начальные значения переменных, ограничений и целевой функции воспринимаемым пользователем), а часть — расчетные формулы или конкретные числовые значения. Как видим на Рис. 25, во-первых, в диалоге надо сослаться на ячейку листа, в которой хранится значение целевой функции: Установить целевую ячейку, и выбрать радиокнопку в соответствии с условием оптимизации. Во-вторых, на листе надо выбрать ячейки, в которых будут храниться текущие значения переменных, входящих в задачу: Изменяя ячейки. Для этого в ячейках А1 и А2 разместим подписи «х1» и «х2» соответственно, а под ними, в ячейках В1 и В2 — первоначальные значения этих переменных, например, числа 100 и 100 соответственно. В-третьих, необходимо указать ограничения в окне Ограничения. Для этого в ячейках А4:А6 разместим подписи «28x1+32x2=», «47x1 + 83x2=», «x1=» соответственно, а в ячейках справа от них — В4:В6 — формулы со ссылками на ячейки А2 и В2, в которых хранятся значения x1 и x2: «=28*A2 + 32*B2», «=47*A2+83*B2», «=A2». При этом в ячейках В4:В6 появятся соответствующие начальным значениям переменных числа — значения рассчитываемых величин белков, углеводов и смеси № 5 (Рис. 26). Далее в ячейке А8 поместим подпись целевой функции, а в ячейке справа от нее — расчетную формулу. Чтобы увидеть все формулы одновременно, надо на вкладке Формулы в группе Зависимости формул нажать кнопку Показать формулы (Рис. 27). При этом текст формул в ячейках выравнивается по левому краю. После того, как необходимая подготовка листа выполнена, вызывается инструмент «Поиск решения», в окне Установить целевую ячейку указывается ссылка на ячейку $B$8 (в то время, как указатель находится в окне, достаточно щелкнуть по этой ячейке и перейти в другое окно диалога), выбирается радиокнопка миРис. 27. Отображение формул нимальному значению. В окне Изменяя ячейки необходимо протащить мышь по ячейкам значений x1 и x2: $A$2:$B$2. Примерный вид экрана после этих действий изображен на Рис. 28. 82 Рис. 28. Проведение диалога в окне Поиск решения После этого надо перейти в окно Ограничения и нажать на кнопку Добавить. Появится диалоговое окно как на Рис. 29. Рис. 29. Диалоговое окно Добавление ограничения Подробно опишем добавление ограничения по белкам. В окне Ссылка на ячейку сошлемся на ячейку, в которой хранится рассчитанное по формуле текущее значение количества белков, т. е. на $B$4. В среднем окне из списка выберем тип ограничения: >=. В окне Ограничение укажем конкретное значение 14 (Рис. 30). Рис. 30. Проведение диалога Добавление ограничения 83 Рис. 31. Окончательный вид окна Поиск решения После этого нажмем кнопку Добавить, и введем по очереди остальные ограничения задачи. В конце нажмем ОК, все ограничения появятся в окне Ограничения. Надо помнить и про требования неотрицательности переменных, которые тоже являются ограничениями. После указания всех необходимых ограничений окно Поиск решения выглядит как на Рис. 31. После нажатия на кнопку Выполнить инструмент «Поиск решения» реализует оптимизационный алгоритм, появляется сообщение о том, что решение найдено (Рис. 32), а в изменяемых и в зависящих от них ячейках появляются оптимальные значения величин. Рис. 32. Оптимальное решение задачи о рационе питания 84 Полученное решение совпадает с решением, найденным ранее с помощью графического метода. При этом ограничения по белкам и углеводам являются активными, так как их оптимальные значения в ячейках В4 и В5 в точности равны правым частям соответствующих неравенств. Далее можно провести эксперимент с данным сценарием, задавая различные начальные значения переменных в ячейках А2 и В2, в том числе и отрицательные. Легко убедиться в том, что независимо от начальных значений x1 и x2, встроенный алгоритм поиска оптимального решения задачи линейного программирования будет давать один и тот же результат. Такое свойство алгоритма называется устойчивостью по начальным данным. Предложенный вариант оформления листа книги Excel для применения инструмента «Поиск решения» не является оптимальным. Например, для того, чтобы решить эту же задачу при других коэффициентах в ограничениях и целевой функции, надо в ячейке с соответствующей формулой вручную изменить такие коэффициенты. А при изменении правых частей ограничений необходимо вызвать диалоговое окно Поиск решения и поменять правые части в ограничениях в соответствующем окне. Можно предложить другой, более универсальный, способ расположения данных задачи и оформления ссылок (Рис. 33). Рис. 33. Универсальное оформление задачи линейного программирования В этом случае во всех ячейках находятся конкретные числа, в ячейке D7 и лежащих ниже — формулы. Причем, если в D7 поместить формулу «=B7*$B$3+C7*$C$3», то ее можно скопировать вниз в ячейки D8, D9, 85 D12, и необходимые формулы в них появятся автоматически. Значительно упрощается при этом и организация диалога в окне Поиск решения (Рис. 34). Рис. 34. Организация диалога в окне Поиск решения Для решения одной конкретной задачи можно использовать любой из предложенных подходов, но если требуется провести экономический анализ, то второй, несомненно, будет предпочтительнее. Ведь в этом случае нет необходимости менять сценарий, вносить поправки в окне Поиск решения, достаточно менять числа на листе книги Excel. Например, выясним, при какой минимальной стоимости в рублях килограмма В-риса ограничение по смеси № 5 становится активным при неизменной стоимости смеси № 5. Будем менять в сторону увеличения цену 1 кг В-риса с шагом 1, каждый раз возвращая начальные значения 100 и 100 в ячейки В2 и С2 и запуская инструмент «Поиск решения». Тогда при цене 13 руб./кг В-риса получим, что активными станут ограничения по углеводам и смеси № 5 (Рис. 35). 86 Рис. 35. Результат экономического анализа по изменению целевой функции Приведем еще несколько примеров использования инструмента «Поиск Решения». Рассмотрим пример со с. 12, так называемую транспортную задачу (ТЗ). Ее графическое решение представлено на с. 32—33. Исходную ситуацию в ТЗ удобно представить в специальной таблице — макете, в которой отражены запасы у поставщиков Аi, потребности (заявки) потребителей Bj и тарифы перевозок Cij. На Рис. 36 такая таблица обведена утолщенной рамкой, а собственно тарифы В3:D4 выделены имеющими яркие границы ячейками. Остальные данные ясны из подписей в этой таблице. Особенность подготовки данных ТЗ на листе книги Excel состоит в том, что нет возможности подписать переменные: они имеют табличную структуру и характеризуются двумя индексами. Ниже таблицы тарифов создадим точно такую же таблицу начальных значений переменных В8:D9, не подписывая их. Ясно, что формулы суммирования по строкам или по столбцам можно автоматически набирать с помощью кнопки автосуммы и дальнейшего копирования. Для удобства формирования целевой функции создадим ниже таблицу произведений тарифов на перевозки В13:D14, набрав формулу «=B3*B8» в ячейке В13 и скопировав ее по горизонтали, а затем всю строку — по вертикали. 87 Рис. 36. Подготовка данных транспортной задачи Тогда в ячейке значения целевой функции можно задать формулу «=СУММ(B13:D14)». Все необходимые формулы показаны на Рис. 37. Рис. 37. Формулы при подготовке данных транспортной задачи 88 Окно Поиск решения должно содержать требование неотрицательности, наложенное на все переменные (Рис. 38). Рис. 38. Требование неотрицательности переменных в окне Ограничения Такие ограничения можно задать по отдельности, а можно наложить его сразу на все ячейки диапазона B13:D14 (Рис. 39). Рис. 39. Наложение одинаковых ограничений на диапазон значений Результат работы инструмента «Поиск решения» представлен на рис. 41. 89 Рис. 40. Оптимальное решение транспортной задачи 2. Графическое решение задачи линейного программирования в Excel 90 Рассмотрим пример со с. 44 (Задача 4. Лист, подготовленный к применению инструмента «Поиск решения» выглядит как на Рис. 41 Рис. 41. Задача об оптимальном использовании сырья или с указанием формул, как на Рис. 42. Рис. 42. Перечень формул в задаче об оптимальном использовании сырья Покажем, как можно с помощью Excel графически построить МДР, найти оптимальное значение целевой функции, провести экономический анализ. Самое трудное, выбрать точки для построения прямых — границ ограничений — на диаграмме Excel. Поскольку границей каждого ограничения является прямая, заданная в виде «в отрезках» ax1 bx2 c , то можно выбрать точки пересечения таких прямых с осями координат: (0; 91 c/b) и (c/a; 0). Но такой подход возможен, если граница не параллельна ни одной из осей координат, то есть в случае, когда ни один из коэффициентов при переменных в уравнении прямой не обращается в 0. В случае же задания границы в виде ax1 c прямую будем задавать точками (c/a; c/a) и (c/a; 0), а в случае bx2 c — точками (0; c/b) и (c/b; c/b). В дальнейшем покажем, как точку с ненулевыми координатами можно уточнить, добиваясь наиболее привлекательного вида ОДР. Для рассмотренной задачи введем формулы координат необходимых точек прямых в части листа после заголовка «Точки графиков». Рис. 43. Задание точек пересечения с осями Здесь в ячейках В16 и С16 хранятся координаты точки пересечения границы ограничения по стали-45 с осью Oy, а в ячейках В17 и С17 — с осью Ох. Граница ограничения по чугуну параллельна оси Ох, поэтому в соответствии с изложенным выше соглашением в ячейки В18 и С18 поместим координаты 0 и c/b соответственно, а в В19 и С19 — c/b и c/b. Аналогично задаем точки для построения границ ограничений по бронзе, стали-3 и прямой, отражающей положение целевой функции для текущих значений переменных, которые, напоминаем, задаются произвольно. Далее построим диаграмму, содержащую единственную прямую — границу 92 первого ограничения по стали-45: выделив ячейки В16:С17, вызовем Вставка — Точечная — Точечная с прямыми отрезками (Рис. 44). Рис. 44. Вставка диаграммы ограничения по стали-45 Появится диаграмма, примерно как на Рис. 45. Рис. 45. Диаграмма ограничения по стали-45 Замечаем, что автоматика неправильно интерпретировала данные: вместо нужных нам точек (0; 80,5) и (107,33; 0) на диаграмме использованы точки (0; 107,33) и (80,5; 0). Для изменения диаграммы и смены подписи «Ряд 1» на «Сталь-45» щелкнем правой кнопкой мыши в области диа93 граммы и из появившегося контекстного меню выберем пункт Выбрать данные (Рис. 46). Рис. 46. Редактирование диаграммы Рис. 47. Изменение ряда данных Далее в появившемся диалоговом окне Выбор источника данных при выделенной строке «Ряд 1» нажмем кнопку Изменить (Рис. 47). В открывшемся новом диалоговом окне, таком, как на Рис. 48, 94 Рис. 48. Изменение ряда и подписи ряда для задания имени ряда в окне Имя ряда щелкнем по ячейке с подписью «Сталь-45», удалим значения в окне Значения Х и протащим мышь по ячейкам с первыми координатами точек построения — В16:В17, удалим значения в окне Значения Y и протащим мышь по ячейкам со вторыми координатами точек построения — С16:С17, нажмем кнопки ОК, закрывая все диалоговые окна. На диаграмме вместо слов «Ряд 1» появится «Сталь-45», а прямая изменит наклон. Заметим, что данная задача решается на листе Лист3 книги Excel, поэтому указание на этот лист будет предшествовать ссылкам на ячейки. Остальные прямые будем добавлять последовательно в виде новых рядов данных. Описанным выше способом вызовем диалоговое окно Выбор источника данных, и в нем нажмем кнопку Добавить. В строке Имя ряда щелкнем по ячейке с подписью «Чугун», в строке Значения Х протащим мышь по ячейкам с первыми Рис. 49. Добавление ряда ограничения по чугуну 95 координатами точек для построения прямой В18:В19, в строке Значения Y — по ячейкам со вторыми координатами С18:С19 (Рис. 49). После нажатия на кнопку ОК на диаграмме появится новая прямая с нужной подписью. В диалоговом окне Выбор источника данных снова нажмем кнопку Добавить и аналогично последовательно добавим данные по бронзе, стали-3 и целевой функции. Окончательный вид диаграммы показан на Рис. 50. Рис. 50. Диаграмма ограничений по 4 видам сырья Она, очевидно, имеет ряд недостатков. В ней единичные отрезки по осям имеют разную длину, ограничение по чугуну хочется вытянуть горизонтально до пересечения с другими прямыми. Щелкнем по области построения диаграммы и опытным путем изменим ее размеры так, чтобы единичные отрезки по осям были примерно одинаковыми, не меняя при этом размеры области диаграммы. Чтобы изменить расположение ограничения по чугуну, заменим формулу в ячейке В19 на конкретное подходящее число, например, на 100. Улучшенная диаграмма будет выглядеть примерно так, как на Рис. 51. Зная, что в задаче с ограничениями по ресурсам в качестве решения любого из ограничений выбирается полуплоскость, содержащая начало координат («нижняя» полуплоскость), легко получаем МДР. К тому же, понимая, что из себя представляет МДР, можно увидеть и точку, в которой целевая функция достигает оптимального значения. 96 Рис. 51. Окончательный вид диаграммы Далее на основе данных этой задачи с помощью инструмента «Поиск решения» можно провести поиск оптимального решения. При этом изменится положение целевой функции на диаграмме: она займет оптимальное положение (Рис. 52). Рис. 52. Оптимальное положение целевой функции И по диаграмме (Рис. 52), и по текущим значениям правых частей ограничений в таблице видно, что активными являются ограничения по 97 стали-3 и стали-45, а пассивными — по чугуну и бронзе (Рис. 53). Суточные запасы чугуна можно снизить до 34,75 кг, а бронзы — до 122 кг. Рис. 53. Оптимальное решение задачи в Excel Покажем, как можно провести экономический анализ активных ограничений. Будем, например, увеличивать суточные запасы стали-45 в ячейке Е7, каждый раз после изменения заново запуская инструмент «Поиск решения». Рис. 54. Увеличение ограничения по стали-45 98 При значении 380 кг видим, что активными стали ограничения по бронзе, стали-45 и стали-3 (Рис. 54), а границы соответствующих неравенств пересекаются в одной точке, которая и является оптимальным решением (Рис. 55). Дальнейшее увеличение ограничения по стали-45 делает это ограничение пассивным. Рис. 55. Три активных ограничения Рассмотрим более сложный пример оптимального решения и экономического анализа задачи линейного программирования с ограничением по ресурсам. Эта задача была предложена на II очном туре Всероссийской междисциплинарной олимпиады «Информационные технологии в сложных системах» по профилю «Сложные социально-экономические системы» в октябре 2010 года. Задача. Предположим, Вы являетесь владельцем пекарни, которая специализируется на производстве сдобного печенья и бисквитов. Данные о ценах, затратах соответствующих ресурсов на 1 кг продукции и доступных объемах запасов ресурсов приведены в таблице 18. Ресурсы Мука, кг Масло, кг Яичный порошок, кг Сахар, кг Крахмал, кг Труд, чел./дн. Оборудование 1, маш./смен. Оборудование 2, маш./смен. Цена за 1 кг продукции, руб. Сдоб. печ. 0,58 0,25 0,18 0,1 0 0,08 0,02 0,07 31 99 Бисквиты 0,3 0,05 0,8 0,5 0,07 0,09 0,07 0,08 29 Таблица 18 Запасы 750 500 700 200 100 120 100 100 Имеющийся запас сахара можно пополнить, исходя из цены 14 руб. за 1 кг сахара. Сколько сахара выгодно докупить и какова ожидаемая величина прироста выручки? Решение. Подготовим данные на листе Excel, как это было описано на с. 85, и запустим инструмент «Поиск решения». Получим оптимальное значение целевой функции и активные ограничения по муке и сахару (Рис. 56). Теперь будем увеличивать запасы сахара, например: Рис. 56. Оптимальное решение с рис. 57 шагом 10 и выполнять поиск решения до тех пор, пока ограничение по сахару не станет пассивным. Обнаружим, что при запасах сахара в 230 кг ограничение по сахару становится пассивным, а активными будут ограничения по муке и оборудованию 2. Текущее значение сахара при этом равно 226,378 кг. Ведем это значение в ячейку Е10 и снова запустим «Поиск решения». Видим, что сразу три ограничения становятся активными: по муке, сахару и оборудованию 2 (Рис. 57). Значит, дальнейшее увеличение запасов сахара не влияет на оптимальное значение целевой функции. Ожидаемая величина прироста выручки будет вычисляться как разность между оптимальным значением целевой функции при запасах сахара 226,378 кг и 200 кг, из которой надо вычесть сумму, потраченную на покупку дополнительного сахара: 100 Рис. 57. Три активных ограничения Заметим, что по смыслу задачи значения переменных должны быть целыми. Для этого в окне Поиск решения необходимо ввести дополнительное ограничение целочисленности на значения ячеек $B$3:$C$3 (Рис. 58). Рис. 58. Добавление ограничения на целочисленные значения переменных В этом случае оптимальное решение почти не будет отличаться от полученного выше, но оптимальные значения переменных в ячейках $B$3:$C$3 будут выражаться целыми числами (Рис. 59), а текущие значения ограничений по муке и по сахару будут более других близки к граничным. Этот факт говорит об активности данных ограничений. 101 Рис. 59. Целочисленное оптимальное решение Путем увеличения правой части ограничения по сахару обнаружим, что при запасах в 226,5 кг сахара активными станут три ограничения: по муке, сахару и оборудованию 2. Соответствующее решение предлагается получить самостоятельно. Значение целевой функции при этом составит 42 873 руб. Следовательно, ожидаемая величина прироста выручки будет Итак, решение указанной задачи выглядит так: необходимо докупить 26,5 кг сахара; при этом прирост выручки составит 408 руб. 102 В процессе решения этой задачи удалось обойтись без графического представления данных. Но целесообразно рассмотреть и его. Построим границы МДР и целевую функцию так, как было описано на с. 91— 97Error! Reference source not found.. Видим, что диаграмма получилась крайне неудачной; большое количество ограничений и сильно отличающиеся координаты точек пересечения с осями их границ делают ее практически не читаемой. Но в то же время, благодаря легенде (и данным в таблице как на с. 100), видим, что ограничения по маслу, крахмалу, оборудованию 1 не участвуют в ограничении МДР. Их границы можно выделить непосредственно на диаграмме и удалить клавишей Del. На диаграмме автоматически изменятся максимальные значения по осям (Рис. 61). 103 Рис. 60. Ограничения и целевая функция Рис. 61. Удаление пассивных ограничений 104 После этого можно скорректировать максимальные значения по осям, последовательно выделив их и вызвав из контекстного меню пункт Формат оси… Видим, что важные в задаче ограничения будут хорошо различимы, если максимальные значения по горизонтальной и вертикальной осям зафиксировать в точках 2 000 и 1 000 соответственно (Рис. 62). Рис. 62. Изменение максимальных значений по осям Теперь хорошо видно, что ограничение по сахару можно увеличивать до тех пор, пока граница не пройдет через точку пересечения границ по муке и оборудованию 2. Рис. 63. Оптимальное решение с активными ограничениями по муке, сахару и оборудованию 2 Зная, что нужное число 226,5, введем его в ячейку Е10, запустим «Поиск решения». Оптимальное положение целевой функции с тремя актив105 ными ограничениями показано на Рис. 63. На этом примере показано, как удалять с диаграммы мешающие пассивные ограничения, делать диаграмму с МДР более информативной. 106 § 5. Многокритериальная оптимизация В рассматриваемых до сих пор задачах математические модели имели единственную целевую функцию, при наличии системы ограничений. Однако на практике при решении задач, связанных с принятием решений, нередко приходится учитывать набор из нескольких несоизмеримых, противоречивых целевых функций, которые необходимо рассматривать одновременно. Расширением математического программирования с единственной целевой функцией на случай нескольких целевых функций является многокритериальное программирование, или многокритериальная оптимизация. В качестве иллюстрации можно привести следующую, часто встречающуюся, ситуацию. Необходимо принять решение о строительстве нового предприятия. Для этого из нескольких конкурсных проектов необходимо выбрать один. Критериями эффективности могут служить стоимость L1 реализации проекта и величина прибыли L 2 , которую обеспечит построенное предприятие. Если ограничить рассмотрение данной задачи лишь одним критерием эффективности, практическая значимость ее решения окажется незначительной. В самом деле, при использовании только первого критерия будет выбран самый дешевый проект, но его реализация может привести к недопустимо малой прибыли. С другой стороны, на строительство самого прибыльного проекта, выбранного на основе второго критерия эффективности, может просто не хватить имеющихся средств. Поэтому в данной задаче необходимо учитывать оба указанных критерия одновременно. Если же дополнительно стараться минимизировать нежелательные экологические последствия строительства и функционирования предприятия, то к двум указанным следует добавить еще один – третий критерий и т. д. Рассмотренная многокритериальная задача носит название задачи выбора наилучшего проектного решения. 1. Формулировка многокритериальной задачи В общем виде математическая формулировка многокритериальной задачи выглядит следующим образом. Требуется найти значения действительных переменных x1,…, xn, при которых целевые функции L1 (X),…, L p (X) принимают экстремальные значения при ограничениях: g i ( X ) 0, i 1,..., m , 107 где X — n-мерный вектор независимых переменных x1,…, xn, g i ( X ) 0 — система ограничений. Если цели находятся в противоречии друг с другом, то не существует оптимального решения, которое удовлетворяло бы всем критериям эффективности. В этом случае вводится понятие «эффективное решение». Оно означает, что невозможно улучшить значение любой из целевых функций без ухудшения значений одной или нескольких целевых функций. Уточним введенное понятие для задачи максимизации: решение X* называется эффективным, если не существует допустимого решения Х , такого, что Li ( Х ) Li (X*), i 1,..., p , и L j ( Х ) > L j (X*) по крайней мере, для одного индекса j. Множество всех эффективных решений в непрерывном случае известно как эффективная граница. Эффективное решение называют также недоминируемым решением, неулучшаемым решением или решением по Парето3 (Парето-оптимальным решением). Очевидно, что наличие в математической модели каждой из таких задач нескольких целевых функций требует применения более гибких математических методов их решений. В данном параграфе будет рассмотрено несколько задач с двумя или тремя целевыми функциями. В каждой из рассматриваемых задач критерии эффективности считаются равноправными. 2. Множество Парето Напомним некоторые определения. Пусть на плоскости (или в пространстве) дано некоторое множеМ ство точек M. Точка P называется внутренней точкой множества М, если существует такая окрестность этой точки, которая целиком состоит из точек данного множества. Если же в любой окрестности точки P имеются точки, как принадлежащие, так и не принадлежащие Рис. 64. Внутренняя и граничная множеству М, то точка P называетточки ся граничной точкой множества М. Совокупность всех граничных точек данного множества М называется его границей. Иллюстрацией служит Рис. 64. 3 Вильфредо Парето (1848—1923) — итальянский социолог и экономист. 108 Если множество М не содержит ни одной своей граничной точки, то оно называется открытым (то есть любая точка открытого множества является внутренней). Если множество М содержит все свои граничные точки, то оно называется замкнутым. В дальнейшем будут рассматриваться только замкнутые множества. Рассмотрим на плоскости P7 P8 OL1 L2 множество М. Пусть Р — L2 М произвольная точка этого множества. Возможно ли во множестве М P6 перемещение точки Р в близкую ей P1 точку так, чтобы при этом увелиP3 чились обе ее координаты? Если Р P5 — внутренняя точка, то такое пеP2 ремещение возможно. Если Р — P4 граничная точка, то такое перемещение не всегда возможно. ИллюL1 0 страцией служит Рис. 65. ТребуеРис. 65. Возможные перемещения точек мое перемещение точек P1 , P2 , P3 , P4 возможно, а ни одна из точек как отрезков P5 P6 и P7 P8 , так и дуги P6 P7 такому перемещению подвергнута быть не может. Действительно, при перемещении любой точки вертикального отрезка P5 P6 может увеличиваться лишь координата L 2 этой точки (координата L1 при этом останется неизменной); горизонтального отрезка P7 P8 может увеличиваться лишь координата L1 (координата L 2 при этом останется неизменной); дуги P6 P7 увеличение одной координаты влечет уменьшение другой. Таким образом, каждая точка множества М попадает в один из трех следующих классов. Первый класс содержит точки, каждую из которых можно переместить так, чтобы при этом увеличились обе ее координаты, а сама точка осталась во множестве М (в этот класс попадают все внутренние точки множества М и некоторые его граничные точки (например, P2 )). Второй класс содержит точки, каждую из которых можно переместить во множестве М лишь при условии увеличения только одной из ее координат при сохранении значения второй (точки вертикального отрезка P5 P6 и точки горизонтального отрезка P7 P8 ). 109 Третий класс содержит точки, каждую из которых можно переместить во множестве М лишь при условии уменьшения хотя бы одной из координат (точки дуги P6 P7 ). Множество точек третьего класса называют границей (множеством) Парето данного множества М. Часто говорят, что граница Парето множества М — это множество точек, из которых нельзя переместиться на «север», «восток» или «северо-восток», оставаясь во множестве М. Свойства множества Парето изучены достаточно подробно (см., например, [10]), разработаны методы и алгоритмы его построения. Считается, что наилучшие решения многокритериальной задачи следует искать именно среди множества Парето. Поэтому построение множества Парето нередко считают первым необходимым шагом в решении любой многокритериальной задачи. 3. Задача линейной многокритериальной максимизации с двумя переменными и двумя целевыми функциями Указанная задача является частным случаем многокритериальной задачи в случае p = 2. Сформулируем ее. Пусть на плоскости Ox1 x 2 задано множество X (Рис. 66) и в каждой точке этого множества определены две непрерывные функции L1 = f 1 ( x1 , x 2 ) и L 2 = f 2 ( x1 , x 2 ) . Необходимо найти значения переменных, при которых указанные функции принимают наибольшие значения. Формулировку задачи максимизации с двумя целевыми функциями можно записать более компактно: f 1 ( x1 , x 2 ) → max; f 2 ( x1 , x 2 ) → max при ограничениях: ( x1 , x 2 ) X . Попытаемся ее решить. Изобразим на плоскости OL1 L2 все точки, координаты которых удовлетворяют условиям L1 = f 1 ( x1 , x 2 ) , L 2 = f 2 ( x1 , x 2 ) и ( x1 , x 2 ) X . Полученное множество обозначим через L (Рис. 67). 110 x2 L2 (L2)max 0 L1 x1 0 Рис. 66. ОДР на плоскости Ox1 x 2 (L1)max Рис. 67. ОДР на плоскости OL1 L2 Из Рис. 67 видно, что ( L1 ) max — наибольшее значение L1 — и (L2 ) max — наибольшее значение L 2 — достигаются в разных точках. При этом (( L1 ) max , ( L 2 ) max ) L . Это означает, что задача неразрешима — не существует оптимального решения, которое одновременно максимизировало бы обе целевые функции. Поэтому нужно искать Паретооптимальное решение. Как уже выше отмечалось, наилучшие решения многокритериальной задачи следует искать среди множества Парето. Рассмотрим два метода нахождения недоминируемого решения, связанных с множеством Парето: 1. Метод (последовательных) уступок. 2. Метод идеальной точки. В рассматриваемом случае множество Парето составлено из допустимых точек задачи, которые не могут быть перемещены в пределах допустимого множества с улучшением сразу по двум критериям: улучшение значения одного критерия влечет ухудшение значения другого. Метод (последовательных) уступок заключается в том, что ЛПР, работая в режиме диалога со специалистом, анализирует точки на границе Парето и выбирает одну из них — компромиссную. Метод идеальной точки заключается в нахождении на границе Парето точки, ближайшей к точке утопии, задаваемой ЛПР. Как правило, ЛПР формулирует цель в виде определенных показателей, и часто в качестве координат целевой точки выбирается комбинация наилучших значений всех критериев (в данном случае — точка с координатами (( L1 ) max , 111 ( L 2 ) max )). Обычно эта точка не реализуется при заданных ограничениях, поэтому ее и называют точкой утопии. Замечание 1. Задачу максимизации можно путем умножения целевой функции на (–1) преобразовать в задачу минимизации, решаемую при тех же самых ограничениях. Это связано с наличием следующего свойства: функция ( f ) достигает наибольшего значения в тех точках, в которых функция f принимает наименьшее значение, и наоборот. Это означает, что условия [f → min] и [ ( f ) → max] равносильны. Следовательно, поменяв знак целевой функции на противоположный, любую двухкритериальную задачу можно свести к задаче максимизации с двумя целевыми функциями. 4. Применение метода идеальной точки Дадим подробную иллюстративную характеристику применения метода идеальной точки к конкретным задачам оптимизации с двумя целевыми функциями. Это позволит не приводить последующего его формального описания. Пример 1. Найти значения переменных, при которых функции L1 = 2 x1 x 2 1 → max; L 2 = x1 x 2 5 → max при ограничениях: x1 2 x 2 8, 0 x1 6, 0 x 3. 2 Решение. Введем на плоскости прямоугольную систему координат Ox1 x 2 и построим множество X — область допустимых решений данной задачи в указанной системе координат. Ограничительные условия определяют на плоскости многоугольник ABCDE (Рис. 68), вершины которого имеют соответственно координаты: (0; 0), (0; 3), (2; 3), (6; 1), (6; 0). Следовательно, X представляет собою многоугольник ABCDE. 112 Рис. 68. Область допустимых решений на плоскости Ox1 x 2 Подвергнем координаты каждой точки плоскости Ox1 x 2 преобразованиям L1 = 2 x1 x 2 1 и L 2 = x1 x 2 5 . Получим плоскость OL1 L2. При этом в силу линейности проводимых преобразований прямоугольная система координат Ox1 x 2 перейдет в прямоугольную систему координат OL1 L2 , а многоугольник ABCDE в многоугольник A*B*C*D*E*, вершины которого имеют соответственно координаты: (1; 5), (4; 2), (8; 4), (14; 10), (13; 11) (Рис. 69). Для наглядности укажем описанное соответствие вершин: A(0; 0) → A*(1; 5), B(0; 3) → B*(4; 2), C(2; 3) → C*(8; 4), D(6; 1) → D*(14; 10), E(6; 0) → E*(13; 11). Таким образом, все точки, координаты которых удовлетворяют условиям L1 = 2 x1 x 2 1 , L 2 = x1 x 2 5 и ( x1 , x 2 ) X , определяют на плоскости многоугольник A*B*C*D*E*. Следовательно, область допустимых решений L данной задачи в системе координат OL1 L2 (пространстве критериев) представляет собою многоугольник A*B*C*D*E*. 113 Рис. 69. ОДР в пространстве критериев и множество Парето Находим множество Парето. Это отрезок D*E*. В условии задачи не сказано, что считать точкой утопии. Поэтому выбираем комбинацию наилучших значений всех критериев. В данном случае это точка U с координатами (14; 11). Теперь необходимо найти во множестве Парето точку, расположенную ближе всех к точке утопии U. Из Рис. 69 видно, что точка I( I 1 , I 2 ), являющаяся основанием перпендикуляра, проведенного из точки U (14; 11) к прямой D*E*, принадлежит отрезку D*E*. Это означает, что точка I — искомая. Найдем ее координаты. Воспользуемся уравнением прямой, проходящей через две заданные точки. Имеем L1 L1, D* L1, E* L1, D* L2 L2, D* , L2, E* L2, D* где L1, D* , L2, D* и L1, E * , L2, E * — координаты точек D* и E* соответственно. Подставляя сюда числовые значения для координат D* и E*, находим: L1 14 L 10 2 , или L1 + L 2 =24. 13 14 11 10 114 Нормальным вектором прямой D*E* является вектор N (1; 1), направляющим вектором для прямой UI. Следовательно, ее каноническое уравнение имеет вид: L1 L1,U L 2 L 2,U , 1 1 где L1,U , L 2,U — координаты точки U. Подставляя сюда числовые значения для координат U, находим: L1 14 L2 11 , или L1 - L 2 =3. 1 1 Точка I принадлежит прямым D*E* и UI (Рис. 70). Поэтому ее координаты удовлетворяют системе уравнений I 1 I 2 24 , I 1 I 2 3. Отсюда находим I 1 27 2 , I2 21 2 . Рис. 70. Идеальная точка 115 ; 21 ) Расстояние d между точками I ( 27 2 2 и U(14; 11) равно длине вектора ; 11 21 ) = ( 12 ; 12 ) , которая, в свою очередь, равна корню IU = ( 14 27 2 2 квадратному из суммы квадратов его координат. Поэтому d 1 2 2 2 . Соответствующие значения x1 , x 2 найдем из системы линейных уравнений 27 2 x1 x 2 1 2 , 21 x1 x 2 5 2 . Имеем x1 6, x 2 12 . Таким образом, Парето-оптимальное решение L1 гается при x1 6, x 2 , а идеальная точка 1 2 27 2 21 2 ( ; ) 27 2 , L2 21 2 дости- находится от точки утопии (14; 11) на расстоянии 22 . Замечание 2. При нахождении расстояния между точкой утопии и идеальной точкой, учитывая топологию множества Парето, был применен «геометрический» метод. В общем случае задача нахождения расстояния между указанными точками решается как экстремальная. Необходимо найти на множестве Парето точку, такую, что расстояние между ней и точкой утопии минимально: ( I 1 U 1 ) 2 ( I 2 U 2 ) 2 → min, или, опуская знак квадратного корня, ( I 1 U1 ) 2 ( I 2 U 2 ) 2 → min, где I 1 и I 2 — неизвестные координаты искомой точки I, а U 1 и U 2 — уже найденные координаты точки утопии U. Предлагается в качестве упражнения определить в задаче примера 1 идеальную точку только что описанным способом. Пример 2. Найти значения переменных, при которых функции L1 = 2 x1 x 2 1 → max; L 2 = x1 x 2 5 → min при тех же ограничениях, что и в примере 1. Решение. Введем функцию L2 = x1 x 2 5 . Тогда, согласно замечанию 1, исходная задача преобразуется в задачу максимизации L1 = 2 x1 x 2 1 → max; L2 = x1 x 2 5 → max. 116 Рис. 71. Геометрическая интерпретация задачи максимизации Ограничительные условия те же, что и в примере 1. Они определяют на плоскости Ox1 x 2 многоугольник ABCDE (Рис. 68), который функции L1 = 2 x1 x 2 1 и L2 = x1 x 2 5 переводят в многоугольник A*B*C*D*E*. Его вершины в плоскости OL1L2 (пространстве критериев) имеют соответственно координаты: ( 1 ; 5 ), ( 4 ; 2 ), ( 8 ; 4 ), ( 14 ; 10 ), ( 13 ; 11 ) (Рис. 71). Множество Парето образуют точки ломаной B*C*D*. Как и в примере 1, в условии не сказано, что считать точкой утопии. Поэтому снова выбираем комбинацию наилучших значений всех критериев. В данном случае это точка U с координатами (14; 2) (заметим, что в исходной задаче ей соответствует точка с координатами (14; 2) , и, следовательно, в исходной задаче точкой утопии является она). Из Рис. 71 видно, что точка, принадлежащая ломаной B*C*D* и находящаяся на минимальном расстоянии от точки утопии, должна принадлежать отрезку C*D*. Обозначим ее через I ( I 1 ; I 2 ). Для отыскания ее координат воспользуемся способом, описан- ным в замечании 2. Согласно этому способу, нужно минимизировать функцию расстояния d между точкой I ( I 1 ; I 2 ) и точкой U (14; 2) : 117 d ( I 1. 14 ) 2 ( I 2 2) 2 → min, или y ( I 1 14 ) 2 ( I 2 2) 2 → min. Составим уравнение прямой C*D* (подробности см. в примере 1). Имеем L1 8 L2 4 , или L1 + L2 =4. 14 8 10 4 Точка I принадлежит множеству точек отрезка C*D*. Следовательно, ее координаты удовлетворяют уравнению прямой C*D*: I 1 + I 2 = 4, или I 1 I 2 4. Это y 2( I 2 ) 24 I 2 104 2 означает, что минимизируется функция на отрезке [10;4] . Вычисляем производную y 4 I 2 24 и находим стационарную точку: I 2 6. Легко видеть, что y < 0 на промежутке [10;6) и y > 0 на промежутке ( 6; 4] . Следовательно, (6) — точка минимума функции y ( I 2 ) на отрезке [10; 4] , а (10; 6) — точка минимума функции y ( I 1 , I 2 ) = ( I 1 10 ) 2 ( I 2 2) 2 в и = замкнутой области, 10 I 2 4 , определяемой при неравенствами этом dmin 8 I 1 14 d (10; 6) = (10 14 ) 2 (6 2) 2 32 4 2 . Заметим, что в исходной задаче точке (10; 6) соответствует точка (10; 6) . Соответствующие значения x1 , x 2 найдем из системы линейных уравнений 2 x1 x 2 1 10, x1 x 2 5 6. , x 2 73 . Имеем x1 10 3 Таким образом, Парето-оптимальное решение L1 10, L2 6 достига, x 2 73 . При этом идеальная точка (10; 6) находится от ется при x1 10 3 точки утопии (14; 2) на расстоянии 4 2 . 118 5. Пример решения экономической задачи с двумя критериями эффективности В качестве примера рассмотрим конкретную задачу из практики действующего предприятия (задачу регионального уровня). Задача 1. ОАО «Мукомольный завод „Балашовский“» реализует хлебопекарную муку высшего сорта двумя способами: через сеть магазинов и через прямые поставки по договорам неторговым организациям. Известно, что ежемесячно магазины могут реализовать не более 50 тыс., а ежемесячные поставки неторговым организациям не должны превышать 35 тыс. т муки. Для продажи в каждом месяце выделяется не более 45 тыс. т муки. Предприятие выработало определенную политику в области ценообразования, которой собиралось следовать. Однако в связи с сильно изменившейся экономической ситуацией, затраты на реализацию увеличились, а мука вошла в перечень продуктов, которые должны продаваться по ранее установленной цене, регулируемой местной властью. При продаже одной тонны муки через магазины расходы на реализацию стали составлять 7 тыс. руб., а цена осталась прежней — 10 тыс. руб.; при втором способе реализации расходы и цена составили 4 и 6 тыс. руб. соответственно. Необходимо определить, сколько тонн муки следует продавать каждым способом, чтобы расходы были минимальными, а выручка от продажи — максимальной. Решение. Составим математическую модель задачи. Пусть x1 и x 2 — объемы (тысячи тонн) реализуемой в ноябре хлебопекарной муки высшего сорта через сеть магазинов и через прямые поставки по договорам неторговым организациям соответственно. Тогда целевые функции имеют вид: L1 = 7 x1 5 x 2 → min; L 2 = 10 x1 8x 2 → max при ограничениях: x1 x 2 45, 0 x1 50, 0 x 35 . 2 Введем функцию L1 = 7 x1 5 x 2 . Тогда исходная задача преобразуется в задачу максимизации L1 = 7 x1 5 x 2 → max; L 2 = 10 x1 8x 2 → max. 119 Ограничительные условия остаются прежними. Они определяют на плоскости Ox1 x 2 многоугольник ABCD (Рис. 72), который функции L1 и L 2 переводят в многоугольник A*B*C*D* плоскости OL1L2 : A(0; 0) → A*(0; 0), B(0; 35) → B*(–175; 280), C(10; 35) → C*(–245; 380), D(45; 0) → D*(–315; 450) (Рис. 73). Рис. 72. ОДР на плоскости Ox1 x 2 120 Рис. 73. Геометрическая интерпретация задачи максимизации, эквивалентной задаче 1 Множество Парето образуют точки ломаной A*B*C*D*. Выбираем комбинацию наилучших значений всех критериев. В данном случае это точка U с координатами (0; 450). Необходимо найти во множестве Парето точку, расположенную ближе всех к точке утопии U. Обозначим ее через I ( I1 ; I 2 ). Для отыскания координат указанной точки минимизируем функцию расстояния d между точкой I ( I1 ; I 2 ) и точкой U (0; 415) : d I 12 ( I 2 450 ) 2 → min, или y I 12 ( I 2 450 ) 2 → min. Из Рис. 73 видно, что искомая точка находится на отрезке B*C*. Составим уравнение прямой B*C*. Имеем L 380 L1 245 , или 10L1 7 L2 210 . 2 175 245 280 380 121 Точка I принадлежит множеству точек отрезка B*C*. Следовательно, ее координаты удовлетворяют уравнению прямой B*C*: 10I 1 + 7I 2 = 210, I 30 . Это означает, что на отрезке [245; 175] минимиили I 2 10 7 1 зируется функция y 2 2 . Вычисляем y 149 49 I1 1 200 I1 420 I 1 200 и находим стационарную точку: I 1 197 298 49 1 что y < 0 на промежутке [–245; 197 ( 197 47 149 ; –175], следует: (197 47 ) 149 на отрезке [245; 175] . Тогда (197 соответствует точке (197 47 ; 149 47 149 производную 47 149 . Из того, ) и y > 0 на промежутке — точка минимума функции y( I1 ) 47 ; 149 917 311 1043 ) — искомая точка, что 917 311 1043 ) в исходной задаче. Соответствующие значения x1 , x 2 найдем из системы линейных уравнений 47 1043 x1 745 x 2 2940 , 7 x1 5 x2 197 149 , 10430 x1 8344 x 2 325290 . 917 10 x1 8 x2 311 1043 196 Имеем x1 3 1043 ; x 2 35. Таким образом, объемы реализации хлебопекарной муки высшего сорта ОАО «Мукомольный завод „Балашовский“» должны составить: 3,19 тыс. т через сеть магазинов и 35 тыс. т через прямые поставки по договорам неторговым организациям. При таких способах и объемах реализации расходы будут минимальными (составят 197,32 тыс. руб.), а выручка — максимальной (составит 311,88 тыс. руб.). 6. Применение симплексного метода при решении многокритериальных задач Математическая модель каждой из таких задач имеет несколько целевых функций, что, как уже отмечалось, требует применения более гибких математических методов их решения. Например, многокритериальную модель, содержащую несколько задач с весовыми коэффициентами предпочтения, можно рассматривать как частный случай задач в условиях неопределенности. Если же вопроса о приоритетах не касаться, ограничившись рассмотрением задач с несколькими критериями, считая их равноправными, то можно предложить следующий способ решения. Сначала сформулируем задачу: 122 n L1(X) = c (j1) x j max, j 1 n L2(X) = c (j 2 ) x j min j 1 при ограничениях: n m a j 1 i 1 ij x j Bi, xj 0 для i = 1, m , j = 1, n . Теперь опишем один из возможных методов ее решения. 1. Решают задачу n L1(X) = c (j1) x j max, j 1 при тех же ограничениях, что и у исходной задачи. 2. Решают задачу n L2(X) = c (j 2 ) x j min, j 1 оставляя ограничения неизменными. 3. Решают задачу L=xn+1 min при ограничениях: n (1) c J x j L1 max x n 1 L1 max , jn1 ( 2) c J x j L 2 min x n 1 L 2 min , j 1 n a ij x j bi , j 1 xj 0 для i = 1, m , j = 1, n . На каждом из этапов применяют симплексный метод. Алгоритм нахождения эффективного решения задач, имеющих более двух целевых функций, аналогичен. В качестве примера рассмотрим задачу, состоящую в нахождении оптимального выпуска продукции. Задача 2. АООТ «Прицеп» выпускает 4,5-тонные прицепы и кормораздатчики «Ванюша» по цене 40,3 и 74,3 тыс. руб. соответственно. По результатам маркетинговых испытаний спрос на изделия первого вида не менее 1 200 шт. в год. Для производства прицепов используются сталь 123 и чугун, запасы которых на предприятии составляют 25 000 и 4 500 т соответственно. Для изготовления одной тысячи прицепов норма расхода стали составляет 1 615 т, а чугуна — 385 т. Для изготовления одной тысячи кормораздатчиков расходуется: стали — 2 022 т, чугуна — 478 т. Себестоимость прицепов — 34,66, а кормораздатчиков — 63,9 тыс. руб. Составить годовой план производства прицепов и кормораздатчиков, такой, чтобы количество выпускаемых изделий и выручка от их реализации были максимальными, а себестоимость — минимальной. Решение. Обозначим через x1 количество прицепов (тыс. шт.); x2 — количество кормораздатчиков (тыс. шт.), выпускаемых АООТ «Прицеп» в год. Математическая модель задачи будет иметь вид: L1 = x1 + x2 max, L2 = 40,3x1 + 74,3x2 max, L3 = 34,66x1 + 63,9x2 min при ограничениях: x1 0, x2 0. Применяя симплексный метод, решим задачу по каждой целевой функции в отдельности. Получим X1 опт = (11,688; 0), X2 опт = (1,2; 8,448), X3 опт = (1,2; 0), L1 max = 11,688, L2 max = 676,0464, L3 min = 41,592. Математическая модель задачи нахождения эффективного решения в канонической форме имеет вид: L= x3 min при ограничениях x2 11,688 x3 x4 11,688, x1 40,3x 74,3x 676,05 x3 x5 676,05, 1 2 x6 41,592, 34,66 x1 63,9 x2 41,592 x3 x7 25 000, 1 615 x1 2 022 x2 385 x1 478 x2 x8 4 500, x1 x9 1,2, xj 0, j = 1,9 . Получим Xэффект = (1,2; 0,564). Таким образом, АООТ «Прицеп» целесообразно выпускать 1 200 прицепов и 564 кормораздатчика ежегодно. При таком плане производства количество изделий и выручка от их реа124 лизации будут максимальными (составят 1 764 единиц и 90,096 млн руб. соответственно), а себестоимость — минимальной (составит 77,6316 млн руб.). 7. Упражнения Применяя: а) метод идеальной точки; б) симплексный метод, решить задачи многокритериальной оптимизации: 1. L1 = x1 x 2 2 → max; 2. L1 = x1 3x 2 → max; L 2 = x1 x 2 6 → max L 2 = 2 x1 x 2 → min при ограничениях при ограничениях 8 x1 12 x2 48, x1 2 x 2 6, 12 x 6 x 36, 0 x1 4, 2 1 0 x 2. 0 x1 4, 2 x2 1. 3. L1 = 2 x1 1 → max; 4. L1 = 4 x1 x 2 → max; L 2 = x1 4x 2 → min при ограничениях: 18 x1 30 x 2 288 , 40 x1 40 x 2 160 , 20 x1 10 x 2 60, 9 x1 6 x 2 9, x1 0, x 2 0. L 2 = 2 x 2 3 → max при ограничениях 0 x1 1, 0 x 2 1 и при условии, что точка утопии имеет координаты (5; 7). 5. L1 = 5 x1 4 x 2 → max; 6. L1 = x1 x 2 6 → min; L 2 = x 2 → max L 2 = x1 x 2 2 → max; при ограничениях при ограничениях: 13 x1 26 x 2 78, 13 x1 26 x 2 182 , 0 x1 4, 8 x1 4 x 2 88, 0 x 2 0 x1 5, 2 0 x 2 4. и при условии, что точка уто пии имеет координаты (–8; 7). Ответ. Ответы к упражнениям 1—6 сведены в таблицу 19: L1 1 6,5 2 4,8 3 3 125 4 0 5 41 Таблица 19 6 6,5 L2 9,5 1,6 5 0 4 5,5 x1 4 0 1 0 5 1,5 x2 0,5 1,6 1 0 4 2 126 § 6. Введение в линейное программирование как учебный модуль в контексте модульно-рейтинговой системы обучения 1. Модульно-рейтинговая система контроля успеваемости Содержание пособия является собою частью учебной информации, достаточной для формирования определенных знаний, умений и навыков, которые должны подвергаться обязательной проверке. Поэтому с учетом перехода на кредитно-модульный формат учебных планов оно представляет собою модуль, в зависимости от специальности, являющийся составной частью тематического модуля (блока дисциплин); отдельной дисциплиной или учебным модулем (разделом дисциплины). Например, согласно действующим учебным планам специальностей «Прикладная математика и информатика», «Прикладная информатика (в экономике)» физико-математического факультета и специальности «Национальная экономика» экономического факультета, модуль «Введение в линейное программирование» изучается как раздел дисциплины «Линейная алгебра». Основными отличиями кредитно-модульной системы обучения от действующей являются: непрерывный контроль успеваемости с определением рейтингового балла на основании процентной шкалы с последующим переводом оценок в традиционную четырехбалльную систему; ранжирование студентов по средневзвешенному рейтинговому баллу с учетом трудоемкости изучения дисциплин. Исходя из рекомендаций по введению Европейской переводной и накопительной системы кредитов (ECTS), авторами были разработаны оценочные средства для текущего контроля успеваемости и промежуточной аттестации студентов по материалу учебного модуля «Введение в линейное программирование». В качестве таких средств предлагаются: домашняя контрольная работа, выполненная с использованием вычислительной техники, и две аудиторные самостоятельные работы. Начисление зачетных единиц (кредитов)4 осуществляется следующим образом. Пусть трудоемкость модуля внутри дисциплины составляет m зачетных единиц (кредитов). Студент за полностью выполненные задания по материалу учебного модуля получает N баллов. Пусть в результате проведения всех контрольных мероприятий студент получил 4 1 зачетная единица (кредит) = 36 академическим часам. 127 n ( 0 n N ) баллов. Тогда количество K, получаемых им за модуль n кредитов, есть средневзвешенное значение: K m . N Полученные студентом за каждый учебный модуль кредиты будут затем учтены при расчете итогового дисциплинарного рейтинга. Приведем одну из возможных и уже апробированных методик расчета указанного рейтинга. Пусть K — количество кредитов, полученных студентом за модуль, трудоемкость которого составляет m зачетных единиц. Перевод кредитов в четырехбалльную систему осуществляется по правилу: если 0 K 0,3m , то соответствующая оценка k в четырехбалльной системе — 2 (неудовлетворительно), если 0,3m K 0,5m , то k 3 (удовлетворительно), если 0,5m K 0,8m , то k 4 (хорошо), если 0,8m K m , то k 5 (отлично). Итоговый дисциплинарный рейтинг определяется по формуле: l R round (0,5 ( ki k э )), i 1 где round () — функция округления до ближайшего целого числа, k i — оценка в четырехбалльной системе, соответствующая количеству кредитов K i , полученных студентом за i-й модуль, l — количество модулей, kэ — оценка за экзамен в четырехбалльной системе. Такой подход позволяет вести непрерывный контроль успеваемости и внутри модуля, производя начисление кредитов после проведения каждого запланированного отчетного мероприятия. 2. Примеры оценочных средств В качестве оценочных средств предлагаются: домашняя контрольная работа, выполненная с использованием вычислительной техники, и две аудиторные самостоятельные работы. Домашняя работа на тему «Введение в линейное программирование» Задача. Фирма выпускает два вида продукции P1 и P2 , используя сырье трех видов: S1 , S 2 , S 3 . Каждый вид продукции Pj (j = 1, 2) характеризуется технологией A j (a1 j , a 2 j , a3 j , c j ) , где a ij — количество единиц сырья S i (i = 1, 2, 3), затрачиваемого на единицу продукции Pj , c j — розничная цена (в условных денежных единицах) каждой единицы про128 дукции Pj . Известны также объемы сырья каждого из трех видов: B (b1 , b2 , b3 ) , располагаемых фирмой. Требуется составить такой план выпуска видов продукции P1 и P2, при котором доход от реализации всей продукции был бы максимальным. Значения параметров задачи приведены в таблице 20. Содержание и оценка каждого этапа работы 1. Составить математическую модель планирования производства, записав соответствующую задачу линейного программирования (2 балла). 2. Изобразить графически множество допустимых решений задачи (3 балла). 3. Найти графическим методом оптимальный план выпуска продукции (3 балла). 4. Применяя графический метод, провести экономический анализ: а) выяснить влияние изменения запасов исходного сырья на оптимальное решение (6 баллов); б) определить диапазон розничных цен на каждый из двух видов продукции, при котором не происходит изменения оптимального решения (4 балла). 5. Применяя алгоритм симплексного метода для расчетов вручную, а) найти оптимальный план выпуска продукции (5 баллов) и б) дать интерпретацию полученных результатов (3 балла). 6. Решить задачу линейного программирования на компьютере с использованием Microsoft Excel. Привести распечатку полученных решений, сравнить их с полученными вручную и сделать вывод (6 баллов). Замечание 1. После выполнения домашней контрольной работы максимальное количество кредитов, которые может получить студент, равно 32 ( K ДЗ ) max m 0,64 m. 50 Таблица 20 Номер варианта и значения параметров условий задачи В-т 1 2 3 4 5 6 7 8 9 10 c1 50 80 100 30 100 50 150 40 390 30 c2 100 100 130 60 80 100 270 20 300 15 a11 3 8 6 15 30 20 30 34 40 3 a12 3 16 24 15 30 5 40 34 10 3 З. п. 129 a 21 20 12 18 20 65 7 11 5 13 20 a 22 5 18 6 100 195 7 11 20 39 40 a31 10 4 0 5 240 20 0 70 31 20 a32 35 4 33 10 80 70 7 20 0 10 b1 450 1 600 156 6 000 90 2 500 24 000 5 100 260 1 200 b2 2 400 2 700 138 6 000 325 1 050 13 200 2 400 299 12 000 b3 3 500 600 198 3 500 480 7 000 2 100 7 000 1 860 7 000 Демонстрационный вариант самостоятельной работы на тему «Применение графического метода при решении транспортной задачи» 1 (5 баллов). Найти значения переменных, при которых функция L(X)= 4x11 + 9x12 + 6x13 + 4x21 + 9x22 + 7x23 принимает экстремальные значения при условии, что: x11 + x12 + x13 =120, x21 + x22 + x23 = 180, x11 + x21 = 70, x12 + x22 = 140, x13 + x23 = 90, x11 0, x12 0, x13 0, x21 0, x22 0, x23 0. 2 (2 + 2 балла). Привести вариант конкретной экономической ситуации, когда в качестве критерия эффективности выступает: а) максимум; б) минимум указанной в п. 1 величины. Интерпретируя переменные и константы, входящие в математическую модель, в соответствии с выбранной ситуацией, дать экономическую характеристику полученного решения. Демонстрационные варианты самостоятельной работы на тему «Многокритериальная оптимизация» Вариант 1 В задаче двухкритериальной максимизации множество допустимых решений задается системой неравенств 2 x1 x 2 4, x x 2, 1 2 x1 0, x 2 0, а критерии заданы соотношениями: L1 = 2 x1 x 2 ; L 2 = x 2 . Требуется: 130 1) изобразить множество допустимых решений и найти его вершины (1 балл); 2) найти и изобразить образ множества допустимых решений и образ его вершин в пространстве критериев (2 балла); 3) найти множество Парето и указать идеальную точку (3 балла); 4) найти расстояние от точки утопии до идеальной точки (1балл); 5) найти Парето-оптимальное решение (2 балла). Вариант 2 В задаче двухкритериальной оптимизации L1 = 2x1 → max; L 2 = x1 x 2 1 → min множество допустимых решений задается системой неравенств 0 x1 1, 0 x 2 1. Точка утопии имеет координаты (2; –2). Требуется: 1) изобразить множество допустимых решений и найти его вершины (1 балл); 2) найти и изобразить образы множества допустимых решений и его вершин в пространстве критериев (2 балла); 3) найти множество Парето и указать идеальную точку (3 балла); 4) найти расстояние от точки утопии до идеальной точки (1 балл); 5) найти Парето-оптимальное решение (2 балла). Замечание 2. После выполнения каждой самостоятельной работы мак9 m 0,18 m кредитов, где симально студент может получить ( K i ) max 50 i 1, 2. 131 Список рекомендуемой литературы Основная 1. Гантмахер, Ф. Р. Теория матриц / Ф. Р. Гантмахер. — М. : Физматлит, 2010. — 560 с. 2. Заварыкин, В. М. Численные методы : учеб. пособие для студентов физ.мат. спец. пед. ин-тов / В. М. Заварыкин, В. Г. Житомирский, М. П. Лапчик. — М. : Просвещение, 1990. — 176 с. 3. Информатика : учеб. пособие для пед. спец. высш. учеб. заведений / А. Р. Есаян [и др.]. — М. : Просвещение, 1991. — 288 с. 4. Карманов, В. Г. Математическое программирование : учеб. пособие / В. Г. Карманов. — М. : Физматлит, 2004. — 264 с. 5. Карпелевич, Ф. И . Элементы линейной алгебры и линейного программирования / Ф. И. Карпелевич, Л. Е. Садовский. — М. : Наука, 1967. —312 с. 6. Кострикин, А. И. Введение в алгебру. Ч. 2. Линейная алгебра : учеб. для вузов / А. И. Кострикин. — М. : Физ.-мат. литература, 2009. — 368 с. 7. Красс, М. С. Основы математики и ее приложения в экономическом образовании : учеб. / М. С. Красс, Б. П. Чупрынов. — М. : Дело, 2008. — 688 с. 8. Курс высшей математики для экономистов : учеб. / под ред. В. И. Ермакова. — М. : Инфра-М, 2001. — 656 с. 9. Леонтьев, В. Экономические эссе. Теория, исследования, факты и политика: пер. с анг. / В. Леонтьев. — М. : Изд. полит. литературы, 1990. — 415 с. 10. Солодовников, А. С. Математика в экономике : в 2 ч. Ч. 1 : учеб. / А. С. Солодовников, В. А. Бабайцев, А. В. Браилов. — М. : Финансы и статистика, 2001. — 224 с. 11. Шикин, Е. В. Математические методы и модели в управлении : учеб. пособие / Е. В. Шишкин, А. Г. Чхартишвили ; Академия народного хозяйства при правительстве Российской Федерации. — М. : Дело, 2009. — 440 с. Дополнительная 1. Абчук, В. А. Экономико-математические методы: Элементарная математика и логика. Методы исследования операций / В. А. Абчук. — СПб. : Союз, 1999. — 320 с. 2. Вводные лекции по прикладной математике / А. Н. Тихонов, Д. П. Костомаров. — М. : Наука, 1984. — 192 с. 3. Капустин, В. Ф. Практические занятия по курсу математического программирования / В. Ф. Капустин. — Л. : Изд-во Ленингр. ун-та, 1976. — 192 с. 4. Кремер, Н. Ш. Высшая математика для экономистов / Н. Ш. Кремер, Б. А. Путко, И. М. Тришин [и др.]. — М. : Юнити, 2010. — 479 с. 5. Ланкастер, П. Теория матриц / П. Ланкастер. — М. : Наука, 1978. — 280 с. 6. Матрицы и вычисления / В. В. Воеводин, Ю. А. Кузнецов. — М. : Наука, 1984. — 320 с. 7. Шелобаев, С. И. Математические методы и модели в экономике, финансах, бизнесе : учеб. пособие для вузов / С. И. Шелобаев. — М. : ЮНИТИ-ДАНА, 2001. — 367 с. 132 Учебное издание Горемыкина Галина Ивановна, Ляшко Марина Александровна Введение в линейное программирование Учебное пособие для студентов экономических и физико-математических факультетов Подписано в печать 20.06.11. Формат 60×84/16. Уч.-изд. л. 5,84. Усл.-печ. л. 8,25. Тираж 100 экз. Заказ № ИП «Николаев», г. Балашов, Саратовская обл., а/я 55. Отпечатано с оригинал-макета, изготовленного редакционно-издательским отделом Балашовского института Саратовского университета. 412309, г. Балашов, Саратовская обл., ул. К. Маркса, 29. Печатное агентство «Арья», ИП «Николаев», Лиц. ПЛД № 68-52. 412309, г. Балашов, Саратовская обл., ул. К. Маркса, 43. E-mail: [email protected] 133