Решение задач линейного программирования онлайн

Решение задач линейного программирования онлайн Инвестиции

Геометрия задачи линейного программирования

Рассмотрим задачу линейного программирования по отысканию максимума (или минимума) линейной функции Решение задач по линейному программированию на допустимом множестве Решение задач по линейному программированию заданном с помощьюсистемы Решение задач по линейному программированию линейных ограничений (уравнений или нестрогих неравенств). Напомним, что множество Решение задач по линейному программированию заданное с помощью системы линейных ограничений в пространстве Решение задач по линейному программированию называется выпуклой многогранной областью в Решение задач по линейному программированию Таким образом, геометрический смысл задачи линейного программирования состоит в отыскании максимума (минимума) линейной функции Решение задач по линейному программированию на заданной выпуклой многогранной области Решение задач по линейному программированию

Скажем, что целевая функция в задаче линейного программирования ограничена, если в задаче на максимум целевая функция ограничена на допустимом множестве сверху, а в задаче на минимум — снизу.

Теорема 7.1. Если в задаче линейного программирования допустимое множество непусто и целевая функция ограничена, то существует хотя бы одно оптимальное решение.

Доказательство теоремы 7.1 будет дано ниже.

При исследовании задачи линейного программирования важнейшую роль играет понятие угловой точки. Напомним, что точка Решение задач по линейному программированию называется угловой точкой множества Решение задач по линейному программированию если она не является внутренней точкой ни для какого отрезка Решение задач по линейному программированию целиком содержащегося в Решение задач по линейному программированиюТеорема 7.2. Если в задаче линейного программирования Решение задач по линейному программированию при условии Решение задач по линейному программированию допустимое множество Решение задач по линейному программированию имеет хотя бы одну угловую точку, а целевая функция Решение задач по линейному программированию ограничена, то найдется угловая точка множества Решение задач по линейному программированию в которой Решение задач по линейному программированию

принимает оптимальное значение данной задачи.

Доказательство теоремы 7.2 также будет дано ниже. Из теоремы 7.2 следует, что задачу линейного программирования с ограниченной целевой функцией и не слишком большим числом угловых точек можно решить, применяя следующий метод (метод перебора вершин).

Находятся все угловые точки допустимого множества, и среди этих точек выбирается точка с оптимальным (максимальным или минимальным) значением целевой функции. Найденная точка и есть оптимальное решение (возможно, правда, не единственное).

Указанный способ решения задачи линейного программирования, как правило, требует громоздких вычислений. В § 8.1 и 8.2 мы ознакомимся с так называемым симплекс-методом, представляющим собой целенаправленную процедуру перебора вершин.

Доказательства теорем 7.1 и 7.2 используют метод исключения неизвестных, аналогичный методу Гаусса решения систем линейных уравнений. Геометрическое понятие, соответствующее процедуре исключения неизвестных для систем линейных неравенств, называется проектированием выпуклого многогранного множества на координатные плоскости.

Пусть точка Решение задач по линейному программированию имеет координаты Решение задач по линейному программированию Заменив последнюю координату Решение задач по линейному программированию нулем, получим точку Решение задач по линейному программированию Будем называть эту точку проекцией точки Решение задач по линейному программированию на координатную плоскость Решение задач по линейному программированию Аналогично определяется проекция точки Решение задач по линейному программированию на любую координатную плоскость. Например, проекция на координатную плоскость Решение задач по линейному программированию есть точка Решение задач по линейному программированию Вообще, сохранив любые Решение задач по линейному программированию координат точки Решение задач по линейному программированию и заменив остальные координаты нулями, получим проекцию точки Решение задач по линейному программированию на соответствующую координатную плоскость.Сделаем сразу же замечание. Как только что сказано, проектирование точки Решение задач по линейному программированию на ту или иную координатную плоскость сводится к сохранению каких-то Решение задач по линейному программированию координат точки Решение задач по линейному программированию и замене остальных Решение задач по линейному программированию координат нулями. Если просто отбросить эти Решение задач по линейному программированию нулевых координат, получим точку пространства Решение задач по линейному программированию Эту точку также можно называть проекцией точки Решение задач по линейному программированию на соответствующую координатную плоскость. Именно так мы и будем понимать дальше проекцию точки Решение задач по линейному программированию Например, проекция точки Решение задач по линейному программированию на координатную плоскость Решение задач по линейному программированию понимается как точка Решение задач по линейному программированиюТеорема о проекциях. Если Решение задач по линейному программированию — выпуклая многогранная область в Решение задач по линейному программированию то проекция Решение задач по линейному программированию на любую координатную плоскость снова является выпуклой многогранной областью (в соответствующем пространстве Решение задач по линейному программированию Доказательство. Поскольку взятие проекции для точки Решение задач по линейному программированию сводится к отбрасыванию нескольких координат, то достаточно доказать теорему для случая, когда отбрасывается только одна координата, например Решение задач по линейному программированию Другими словами, мы должны доказать, что если от каждой точки Решение задач по линейному программированию отбросить последнюю координату Решение задач по линейному программированию то полученные точки Решение задач по линейному программированию будут образовывать выпуклую многогранную область в Решение задач по линейному программированиюПо условию, область Решение задач по линейному программированию выделяется из Решение задач по линейному программированию с помощью некоторой системы Решение задач по линейному программированию нестрогих линейных неравенств. Рассмотрим любое из этих неравенствЕсли Решение задач по линейному программированию то оставим неравенство (7.11) без изменения. Если же Решение задач по линейному программированию то, в зависимости от знака Решение задач по линейному программированию приведем его к виду Решение задач по линейному программированию (при Решение задач по линейному программированию либо Решение задач по линейному программированию Итак, любое из неравенств системы Решение задач по линейному программированию приводится к одному из трех видовгде Решение задач по линейному программированию суть выражения видат.е. многочлены первой степени, не содержащие Решение задач по линейному программированиюТаким образом, система Решение задач по линейному программированию равносильна системе из трех блоков:Разумеется, при этом не исключено, что в системе (7.12), (7.13), (7.14) не будет одного или даже двух блоков. Это зависит от знаков чисел Решение задач по линейному программированиюПостроим теперь систему неравенств с Решение задач по линейному программированию неизвестными Решение задач по линейному программированию следующим образом: для любого неравенства Решение задач по линейному программированию блока (7.12) и любого неравенства Решение задач по линейному программированию блока (7.13) напишем новое неравенство

неравенства же блока (7.14) оставим без изменения. В итоге получится новая система

неравенств с Решение задач по линейному программированию неизвестными Решение задач по линейному программированию Эта система выделяет из пространства Решение задач по линейному программированию выпуклую многогранную область Решение задач по линейному программированиюПокажем, что Решение задач по линейному программированию есть проекция области Решение задач по линейному программированию на координатную плоскость Решение задач по линейному программированию чем и завершим доказательство теоремы.Поясним подробнее определение системы (7.15). Может случиться, что в системе из трех блоков (7.12), (7.13), (7.14) первый или второй блок отсутствует. Тогда в системе (7.15) будут только неравенства Решение задач по линейному программированию Если отсутствует блок (7.14), то в (7.15) будут только неравенства Решение задач по линейному программированию Наконец, если отсутствуют блоки (7.12), (7.14) или (7.13), (7.14), то системы (7.15) нет вовсе. Мы будем считать ее в этом случае тождественной, т.е. состоящей из неравенства Решение задач по линейному программированию (или точнее, из неравенства Решение задач по линейному программированию

Фактически мы должны доказать два утверждения.

Доказательство. Утверждение Решение задач по линейному программированию очевидно (если какой-нибудь набор значений неизвестных удовлетворяет системе Решение задач по линейному программированию то он удовлетворяет и системе (7.12), (7.13), (7.14); но тогда для этого же набора выполняются все неравенства системы (7.15)).Докажем утверждение Решение задач по линейному программированию Сначала рассмотрим основной случай, когда в системе (7.15) имеется хотя бы одно неравенство Решение задач по линейному программированию Пусть— какое-нибудь решение системы (7.15). Подставив указанные значения неизвестных в выражения Решение задач по линейному программированиюполучим некоторые числа Решение задач по линейному программированию Для них выполняются неравенстваМы видим, что каждое из чисел Решение задач по линейному программированию не больше, чем любое из чисел Решение задач по линейному программированию Но в таком случае обязательно найдется такое число Решение задач по линейному программированию которое заключено между всеми числами Решение задач по линейному программированию и всеми числами Решение задач по линейному программированию

Отсюда следует, что набор значений неизвестных

является решением системы (7.12), (7.13), (7.14), а следовательно, и (7.15).

В исключительном случае, когда в системе (7.12), (7.13), (7.14) отсутствует первый или второй блок, рассуждаем следующим образом. Если нет первого блока, в качестве Решение задач по линейному программированию можно взять любое число, удовлетворяющее условиямАналогично при отсутствии второго блока выбираем Решение задач по линейному программированию исходя из условийНаконец, если отсутствуют сразу первый и второй блоки, то в качестве Решение задач по линейному программированию можно взять какое угодно число. Теорема доказана.

Используем теорему о проекциях для доказательства одного факта о вершинах выпуклых многогранных областей.

Предварительно заметим следующее: если в системе линейных неравенств, задающих область Решение задач по линейному программированию одно из неизвестных, например Решение задач по линейному программированию отсутствует, то область Решение задач по линейному программированию не имеет вершин. Действительно, если какая-либо точка Решение задач по линейному программированию принадлежит Решение задач по линейному программированию то и все точки прямойпроходящей через Решение задач по линейному программированию также принадлежат Решение задач по линейному программированию Отсюда следует, что Решение задач по линейному программированию не может быть вершиной Решение задач по линейному программированиюУточним нашу терминологию. Мы будем говорить, что неизвестное Решение задач по линейному программированию реально входит в систему Решение задач по линейному программированию если хотя бы одно из неравенств системы содержит член вида Решение задач по линейному программированию где Решение задач по линейному программированию в противном случае будем говорить, что Решение задач по линейному программированию в систему Решение задач по линейному программированию реально не входит. Это означает: если в систему Решение задач по линейному программированию некоторое неизвестное реально не входит, то область Решение задач по линейному программированию отвечающая системе Решение задач по линейному программированию не имеет вершин.Теперь сформулируем предложение о вершинах. Пусть некоторое неизвестное, например Решение задач по линейному программированию реально входит в систему Решение задач по линейному программированию Рассмотрим область Решение задач по линейному программированию — проекцию Решение задач по линейному программированию на координатную плоскость Решение задач по линейному программированию Предположим, что область Решение задач по линейному программированию имеет вершины, и Решение задач по линейному программированию -одна из них. Тогда справедливо следующее утверждение.Лемма о вершинах. Пусть Решение задач по линейному программированию — выпуклая многогранная область в Решение задач по линейному программированию — ее проекция на координатную плоскость Решение задач по линейному программированию где Решение задач по линейному программированию реально входит в систему неравенств, задающих Решение задач по линейному программированию Если обе области имеют вершины, и Решение задач по линейному программированию — одна из вершин Решение задач по линейному программированию то средиточек области Решение задач по линейному программированию проектирующихся в Решение задач по линейному программированию обязательно имеется вершина области Решение задач по линейному программированиюДоказательство. Обозначим множество всех точек области Решение задач по линейному программированию проектирующихся в Решение задач по линейному программированию через Решение задач по линейному программированию Как показывает доказательство теоремы о проекциях, точки множества Решение задач по линейному программированию получаютсяпутем дополнения координат Решение задач по линейному программированию точки Решение задач по линейному программированию значениями координаты Решение задач по линейному программированию удовлетворяющими системе неравенствМножество всех решений системы (7.16) есть либо отрезок Решение задач по линейному программированию либо лучи Решение задач по линейному программированию либо вся числовая прямая. Последнее невозможно, ибо это означало бы, что в системе (7.12), (7.13), (7.14) блоки (7.12) и (7.13) попросту отсутствуют, т.е. система неравенств Решение задач по линейному программированию состоит только из блока (7.14). Это, в свою очередь, означало бы, что в систему Решение задач по линейному программированию неизвестное Решение задач по линейному программированию реально не входит. Однако это, как было сказано ранее, противоречит тому, что по условию Решение задач по линейному программированию имеет вершины.Итак, множество всех решений системы (7.16) есть либо Решение задач по линейному программированиюлибо Решение задач по линейному программированию Покажем, что точка Решение задач по линейному программированию является вершиной области Решение задач по линейному программированиюПредположим противное, т.е. что Решение задач по линейному программированию не является вершиной Решение задач по линейному программированию Тогда существует отрезок Решение задач по линейному программированию имеющий точку Решение задач по линейному программированию своей внутренней точкой. Проекция этого отрезка на координатную плоскость Решение задач по линейному программированию есть некоторый отрезок Решение задач по линейному программированию имеющий Решение задач по линейному программированию своей внутренней точкой; либо же эта проекция совпадает с Решение задач по линейному программированию Первое противоречит тому, что Решение задач по линейному программированию — вершина Решение задач по линейному программированию второе также невозможно, ибо это означало бы, что отрезок Решение задач по линейному программированию состоит из точек вида Решение задач по линейному программированию где Решение задач по линейному программированию изменяется от некоторого Решение задач по линейному программированию до некоторогоРешение задач по линейному программированию а это противоречит сказанному выше о множестве решений системы (7.16).Доказательство теоремы 7.1. Сразу заметим, что если целевая функция Решение задач по линейному программированию— константа, то доказывать нечего. Для определенности будем считать, что решается задача нахождения минимума Решение задач по линейному программированию а значит, функция Решение задач по линейному программированию ограничена снизу на Решение задач по линейному программированию Рассмотрим вначале случай, когда Решение задач по линейному программированию Проекция множества Решение задач по линейному программированию на координатную прямую Решение задач по линейному программированию (т.е. на плоскость Решение задач по линейному программированию есть выпуклая многогранная область в Решение задач по линейному программированию Последняя в силу ограниченности Решение задач по линейному программированию снизу есть либо отрезок Решение задач по линейному программированию либо луч Решение задач по линейному программированию В обоих случаях Решение задач по линейному программированиюПусть теперь Решение задач по линейному программированию — какая угодно линейная функция. Хотя бы один из коэффициентов Решение задач по линейному программированию не равен нулю;пусть, например, Решение задач по линейному программированию Перейдем тогда в пространстве Решение задач по линейному программированию к новым координатам по формулам

или, что то же,

Очевидно, любое линейное неравенство с переменными Решение задач по линейному программированию перепишется в виде линейного неравенства с Решение задач по линейному программированию поэтому выпуклая многогранная область Решение задач по линейному программированию в координатах Решение задач по линейному программированию превратится в выпуклую многогранную область Решение задач по линейному программированию в координатах Решение задач по линейному программированию При этом Решение задач по линейному программированию значит, по доказанному, Решение задач по линейному программированию достигает минимума в Решение задач по линейному программированию Теорема доказана.Доказательство теоремы 7.2. Предположим, что решается задача о нахождении минимума. Ограничимся случаем Решение задач по линейному программированию общий случай сводится к этому частному при помощи приема, указанного в доказательстве теоремы 7.1.Как и ранее, систему ограничений данной задачи обозначим через Решение задач по линейному программированию и соответствующую выпуклую многогранную область в Решение задач по линейному программированию — через Решение задач по линейному программированиюВыберем одну из неизвестных Решение задач по линейному программированию реально входящую в систему Решение задач по линейному программированию -но только не Решение задач по линейному программированию — и спроектируем Решение задач по линейному программированию на координатную плоскость Решение задач по линейному программированию Обозначим проекцию через Решение задач по линейному программированию а соответствующую систему неравенств в Решение задач по линейному программированию Снова выберем одну из неизвестных, реально входящую в Решение задач по линейному программированию — опять-таки не Решение задач по линейному программированию — и спроектируем Решение задач по линейному программированию на соответствующую координатную плоскость. Получим область Решение задач по линейному программированию И так далее, пока не придем к некоторой области Решение задач по линейному программированию в пространстве Решение задач по линейному программированию т.е. на числовой прямой, определенной с помощью некоторой системы линейных неравенств с одной переменной Решение задач по линейному программированиюУчитывая, что минимум Решение задач по линейному программированию существует, получим, что множество решений последней системы есть либо Решение задач по линейному программированию либо Решение задач по линейному программированию где Решение задач по линейному программированию Используя лемму о вершинах, дополним значение Решение задач по линейному программированию значениями некоторых «реальных» неизвестных (значения «нереальных» неизвестных выбираем произвольно) и получим вершину области Решение задач по линейному программированию Для этой вершины координата Решение задач по линейному программированию равна Решение задач по линейному программированию что и требовалось доказать.Оптимальная вершина получается последовательным дополнением значения Решение задач по линейному программированию крайними значениями остальных переменных. В этом отношении нахождение оптимальной вершины полностью аналогично обратному ходу метода Гаусса.Замечание. На самом деле можно показать, что в данном случае «нереальных» неизвестных не будет и процесс исключения состоит ровно из Решение задач по линейному программированию шагов. Действительно, при наличии «нереальных» неизвестных среди чисел Решение задач по линейному программированию — координат вершины имеютсятакие, которые можно варьировать, т.е. менять произвольным образом. Очевидно, это означает, что в исходную систему ограничений Решение задач по линейному программированию эти неизвестные реально не входят. Отсюда, в свою очередь, следует, что область Решение задач по линейному программированию вопреки условию, не имеет вершин.Для полноты приведем доказательство теоремы 7.2, опирающееся на геометрическую интуицию. Прежде всего установим такую лемму. Лемма. Пусть Решение задач по линейному программированию — выпуклое многогранное множество в пространстве Решение задач по линейному программированию Для существования хотя бы одной вершины множества Решение задач по линейному программированию необходимо и достаточно, чтобы Решение задач по линейному программированию не содержало прямых.

Про бизнес:  3.7. Особенности девелоперской деятельности в рамках инвестиционных договоров с публичным субъектом

Доказательство. Мы должны доказать два утверждения.

Докажем первое утверждение. Пусть существует вершина Решение задач по линейному программированию Рассуждая от противного, допустим, что Решение задач по линейному программированию содержит некоторую прямую Решение задач по линейному программированию Очевидно, Решение задач по линейному программированию (иначе Решение задач по линейному программированию не была бы вершиной Решение задач по линейному программированию Рассмотрим двумерную плоскость м (рис. 7.1), содержащую Решение задач по линейному программированию если Решение задач по линейному программированию — две точки на Решение задач по линейному программированию то Решение задач по линейному программированию состоит из всех точек вида Решение задач по линейному программированиюРешение задач по линейному программированию — любые числа. Плоскость Решение задач по линейному программированию можно рассматривать как пространство Решение задач по линейному программированию с координатами Решение задач по линейному программированию Пересечение Решение задач по линейному программированию есть выпуклая многогранная (лучше сказать — многоугольная) область в Решение задач по линейному программированию действительно, любое линейное неравенство Решение задач по линейному программированию из числа тех, что задают Решение задач по линейному программированию после замены переменных Решение задач по линейному программированию линейными функциями от Решение задач по линейному программированию превращается в линейное неравенство относительно Решение задач по линейному программированию Итак, Решение задач по линейному программированию есть выпуклая многогранная область в Решение задач по линейному программированию имеющая вершину Решение задач по линейному программированию и содержащая прямую Решение задач по линейному программированию Непосредственно очевидно, что в Решение задач по линейному программированию такая область невозможна.Докажем второе утверждение. Пусть множество Решение задач по линейному программированию не имеет вершин. Из всех неравенств, задающих Решение задач по линейному программированию оставим только существенные, т.е. такие, которые нельзя удалить, не изменив Решение задач по линейному программированию Рассмотрим одну из граней Решение задач по линейному программированию множества Решение задач по линейному программированию это означает, что одно из существенных неравенств, задающих Решение задач по линейному программированию заменяется равенством. Если в Решение задач по линейному программированию имеется прямая, доказывать нечего.Пусть в Решение задач по линейному программированию нет прямых. Рассмотрим грань Решение задач по линейному программированию множества Решение задач по линейному программированию Если в Решение задач по линейному программированию имеется прямая, доказывать нечего. Рассмотрим грань Решение задач по линейному программированию множества Решение задач по линейному программированию и т.д. Продолжая это рассуждение, придем к множеству Решение задач по линейному программированию задающемуся только уравнениями (неравенств нет). Если Решение задач по линейному программированию содержит две различные точки Решение задач по линейному программированию то содержит и всю прямую Решение задач по линейному программированию Действительно, Решение задач по линейному программированию есть пересечение нескольких гиперплоскостей, но если гиперплоскость содержит две точки Решение задач по линейному программированию то содержит и все точки Решение задач по линейному программированию (проверьте!), т.е. содержит всю прямую Решение задач по линейному программированию Получается, что Решение задач по линейному программированию содержит прямую, что и требовалось доказать. Решение задач по линейному программированиюслучае же, когда Решение задач по линейному программированию состоит из единственной точки, эта точка есть вершина Решение задач по линейному программированию (см. способ нахождения вершин в § 6.9), чего не может быть по условию. Лемма доказана.Завершим теперь доказательство теоремы 7.2. Так как множество Решение задач по линейному программированию имеет вершины, то оно не содержит прямых. Следовательно, подмножество Решение задач по линейному программированию для которого Решение задач по линейному программированию тоже не содержит прямых, а значит, Решение задач по линейному программированию имеет вершины. Остается показать, что любая вершина Решение задач по линейному программированиюявляется одновременно вершиной Решение задач по линейному программированию Предположим противное: Решение задач по линейному программированию вершина Решение задач по линейному программированию но не вершина Решение задач по линейному программированию Тогда найдутся такие точки Решение задач по линейному программированиюРешение задач по линейному программированию — внутренняя точка отрезка Решение задач по линейному программированию Так как Решение задач по линейному программированию — вершина Решение задач по линейному программированию не могут одновременно принадлежать Решение задач по линейному программированию Следовательно, из двух неравенств Решение задач по линейному программированию хотя бы одно должно быть строгим. Отсюда вытекает, что для любого числа Решение задач по линейному программированию из интервала (0, 1) выполняется неравенствоС другой стороны, Решение задач по линейному программированию для некоторого Решение задач по линейному программированию так как Решение задач по линейному программированию — внутренняя точка отрезка Решение задач по линейному программированию Поэтомучто противоречит полученному выше неравенству. Следовательно, всякая вершина множества Решение задач по линейному программированию является вершиной множества Решение задач по линейному программированию Теорема 7.2 доказана.

Системы линейных ограничений, возникающие в экономических приложениях, почти всегда содержат условия неотрицательности для всех переменных. В этом случае нетрудно доказать, что допустимое множество имеет хотя бы одну угловую точку (если только оно непусто). С учетом этого замечания теорема 7.2 может быть переформулирована следующим образом:

Теорема 7.2′. Если в задаче линейного программирования все переменные подчинены условиям неотрицательности и целевая функция Решение задач по линейному программированию ограничена на допустимом множестве Решение задач по линейному программированию то угловая точка Решение задач по линейному программированию в которой Решение задач по линейному программированию принимает наибольшее (наименьшее) значение среди всех угловых точек Решение задач по линейному программированию является оптимальным решением данной задачи.

Возможно, вас также заинтересует эта ссылка:

Графический метод состоит в следующем.

1. Строится множество Решение задач по линейному программированию всех допустимых решений.2. Если Решение задач по линейному программированию то задача неразрешима.3. Если Решение задач по линейному программированию то рассматриваются прямые уровня Решение задач по линейному программированию а при монотонном изменении Решение задач по линейному программированию При увеличении Решение задач по линейному программированию прямая Решение задач по линейному программированию смещается параллельно в направлении вектора Решение задач по линейному программированию Если Решение задач по линейному программированию — первая точка встречи прямой уровня с областью Решение задач по линейному программированию то прямая уровня Решение задач по линейному программированию при Решение задач по линейному программированию не имеет общих точек с Решение задач по линейному программированию откуда следует, что Решение задач по линейному программированию Аналогичным образом, еслиРешение задач по линейному программированию — последняя точка пересечения линии уровня с Решение задач по линейному программированию то Решение задач по линейному программированиюЕсли первой точки пересечения линии уровня с Решение задач по линейному программированию не существует (т.е. при всех Решение задач по линейному программированию из некоторого промежутка вида Решение задач по линейному программированию прямая Решение задач по линейному программированию пересекает Решение задач по линейному программированию то Решение задач по линейному программированию и задача на минимум неразрешима. Если не существует последней точки пересечения, то Решение задач по линейному программированию и неразрешима задача на максимум.Таким образом, из чертежа всегда видно, разрешима задача или нет. Из чертежа также видно, имеются ли у допустимого множества вершины. Отметим сразу, что отсутствие вершины — явление довольно редкое, при ограниченной целевой функции допустимое множество Решение задач по линейному программированию без вершины может быть только двух видов:Если у Решение задач по линейному программированию есть хотя бы одна вершина, то (при ограниченной целевой функции) оптимальное значение может быть найдено методом перебора вершин. Для вычисления целевой функции в некоторой вершине Решение задач по линейному программированию допустимого множества необходимо знать точное значение ее координат. Для определения координат вершины Решение задач по линейному программированию решается система линейных уравнений видагде Решение задач по линейному программированию — номера прямых, ограничивающих область Решение задач по линейному программированию на пересечении которых находится вершина Решение задач по линейному программированиюГрафический метод позволяет избежать полного перебора вершин. Действительно, если из чертежа видно, что Решение задач по линейному программированию — единственная первая (или последняя) точка пересечения линии уровня с Решение задач по линейному программированию то незачем вычислять координаты других вершин, так как Решение задач по линейному программированию — единственное оптимальное решение. Для некоторых задач, однако, из чертежа не ясно, в какой именно точке линия уровня пересекает в первый раз допустимое множество. В этом случае необходимо найти координаты всех «подозрительных» на оптимальность вершин, вычислить для них значения целевой функции и выбрать из них вершины с оптимальным значением. Заметим, что могут оказаться две оптимальные вершины Решение задач по линейному программированию Тогда множество всех оптимальных решений Решение задач по линейному программированию — это отрезок Решение задач по линейному программированиюПусть Решение задач по линейному программированию — оптимальное значение Решение задач по линейному программированиюМножество всех оптимальных решений Решение задач по линейному программированию является подмножеством линии уровня Решение задач по линейному программированию и задается системой линейных неравенств. Поэтому возможны лишь следующие случаи:

Рассмотрим теперь несколько примеров.

Пусть Решение задач по линейному программированию — квадрат, стороны которого параллельны осям координат. Каждая из его вершин может быть как точкой максимума, так и точкой минимума в зависимости от того, в какой четверти находится вектор Решение задач по линейному программированию (рис.7.2 — 7.5).

Решим графическим методом задачу о банке из § 7.1:

Построим в плоскости Решение задач по линейному программированию полуплоскости, заданные неравенствами 1) … 5). Общая их часть (заштрихованный треугольник на рис. 7.6) — область Решение задач по линейному программированию допустимых решений. Построим вектор Решение задач по линейному программированию и прямую уровня, перпендикулярную вектору Решение задач по линейному программированию и проходящую через начало координат. Перемещая эту прямую параллельно в направлении вектора Решение задач по линейному программированию найдем последнюю точку пересечения прямой уровня и допустимого множества Решение задач по линейному программированиюРешение задач по линейному программированию Найденная точка максимума находится на пересечении прямых 1 и 3. Ее координаты получаются решением следующей системы линейных уравнений:Итак, оптимальный портфель активов (точка максимума) имеет структуру Решение задач по линейному программированию Максимальная прибыль составит Решение задач по линейному программированиюРешение задач по линейному программированиюРассмотрим теперь случай трех переменных. Для функции Решение задач по линейному программированию аналогом линии уровня является поверхность уровня, т.е. множество всех точек трехмерного пространства, в которых функция Решение задач по линейному программированию принимает определенное значение. Для функции вида Решение задач по линейному программированию всякая поверхность уровня — это плоскость с вектором нормали Решение задач по линейному программированию Теоретически графический метод

можно применить и в трехмерном пространстве, заменив прямые уровня на плоскости уровня. На практике, однако, приходится иметь дело с плоскими чертежами, по которым трудно разобраться в характере взаимного расположения допустимого множества и плоскости уровня. Поэтому в следующем примере мы используем метод перебора вершин.

Рассмотрим производственную задачу с тремя продуктами Решение задач по линейному программированиюРешение задач по линейному программированию и тремя видами ресурсов Решение задач по линейному программированию Введем обозначения:Решение задач по линейному программированию — количество доступных единиц ресурса Решение задач по линейному программированиюРешение задач по линейному программированию — цена продукта Решение задач по линейному программированиюРешение задач по линейному программированию — количество единиц ресурса Решение задач по линейному программированию расходуемых на производство 1 ед. продукта Решение задач по линейному программированиюРешение задач по линейному программированию — количество производимых единиц продуктов Решение задач по линейному программированию соответственно.

Приходим к задаче линейного программирования:

Считаем, что все ресурсы при производстве продуктов только расходуются, а не производятся, т.е. Решение задач по линейному программированию Кроме того, естественно предположить, что при производстве каждого продукта расходуется хотя бы один ресурс. Предположим для определенности, что при производстве каждого продукта Решение задач по линейному программированию расходуется ресурс Решение задач по линейному программированию(и, возможно, другие ресурсы тоже). Тогда Решение задач по линейному программированию и Решение задач по линейному программированию Учитывая неотрицательность Решение задач по линейному программированию получаем неравенстваРешение задач по линейному программированию Следовательно, при самых общих предположениях допустимое множество в производственной задаче ограничено. Поэтому решение задачи сводится к нахождению угловых точек (метод перебора вершин).Пусть, например, Решение задач по линейному программированию иа числа Решение задач по линейному программированию конкретно не указаны. Уравнения, отвечающие условиям (7.19), имеют вид Решение задач по линейному программированиюЧтобы найти вершины многогранника Решение задач по линейному программированию нужно рассмотреть всевозможные подсистемы из трех уравнений, выбрать из них те, которые имеют единственное решение, и проверить, что найденное решение принадлежит Решение задач по линейному программированию Чтобы как-то упорядочить этот процесс, рассмотрим четыре случая.1. Все три координаты Решение задач по линейному программированию равны нулю (система (7.23) -(7.25)), что дает вершину Решение задач по линейному программированию

2. Лишь одна координата равна нулю. Это приводит к вершинам:

(система (7.21), (7.22), (7.23));

(система (7.20), (7.22), (7.24));

(система (7.20), (7.21), (7.25)).

3. Ровно две координаты равны нулю. Это дает вершины

Решение задач по линейному программированию (система (7.20), (7.24), (7.25));Решение задач по линейному программированию (система (7.21), (7.23), (7.25));

(система (7.22), (7.23), (7.24)).

4. Все три координаты отличны от нуля, что дает вершину

(система (7.20), (7.21), (7.22)).

Итак, вершинами допустимого множества являются следующие точки: Решение задач по линейному программированию Поэтому максимальное значениеМножество оптимальных решений совпадает с выпуклой оболочкой тех вершин среди Решение задач по линейному программированию в которых это максимальное значение достигается.

Задача 4.

Транспортная задача. Уголь, добываемый в нескольких месторождениях, отправляется ряду потребителей: заводам, электростанциям и т.п. Известно, сколько угля добывается в каждом из месторождений, скажем, за месяц и сколько его требуется на тот же срок любому из потребителей; известны также расстояния между месторождениями и потребителями, а также условия сообщения между ними.

Учитывая эти данные, можно подсчитать, во что обходится перевозка каждой тонны угля из любого месторождения в любой пункт потребления. Требуется при этих условиях спланировать перевозки угля таким образом, чтобы затраты были минимальными.

Пусть, например, имеются два месторождения Решение задач по линейному программированию и три потребителя Решение задач по линейному программированию Количество угля в Решение задач по линейному программированию соответственно Решение задач по линейному программированию Запросы потребителей Решение задач по линейному программированию пусть будут соответственно Решение задач по линейному программированию Считаем, что суммарные запасы равны суммарным потребностям: Решение задач по линейному программированию (такое предположение вполне естественно). Наконец, заданы числа Решение задач по линейному программированию — стоимости перевозки тонны угля из Решение задач по линейному программированию Необходимо определить шесть чисел Решение задач по линейному программированию где Решение задач по линейному программированию — количество угля, предназначенное к отправке из Решение задач по линейному программированию

Составим таблицу (табл. 7.2).

Общее количество угля, вывезенное из Решение задач по линейному программированию должно равняться Решение задач по линейному программированию отсюда имеем условиеАналогичное условие должно выполняться для Решение задач по линейному программированиюОбщее количество угля, доставленное в Решение задач по линейному программированию должно равняться Решение задач по линейному программированию Отсюда

Аналогично получаем условия

Предположим, что затраты на перевозку прямо пропорциональны количеству перевозимого угля, т.е. перевозка из Решение задач по линейному программированию стоит Решение задач по линейному программированию Тогда общие затраты по всем перевозкам будут

Таким образом, приходим к следующей задаче. Дана система

пяти линейных уравнений с шестью неизвестными и линейная функция Решение задач по линейному программированию Требуется среди неотрицательных решений Решение задач по линейному программированиюРешение задач по линейному программированию системы (7.5) выбрать такое, при котором функция Решение задач по линейному программированию достигает наименьшего значения (минимизируется).

Поставленная задача может быть, конечно, сформулирована и в более общем виде, т.е. с любым числом месторождений и потребителей. Она получила название транспортной задачи и явилась одной из первых проблем, для решения которых были с успехом применены методы линейного программирования.

Из рассмотренных четырех примеров, казалось бы, только первые три подходят под общую схему задач математического программирования. Так, в четвертом примере не все ограничения неравенства; часть из них (а именно (7.5)) являются уравнениями. Однако случай уравнений легко свести к случаю неравенств: достаточно каждое уравнение Решение задач по линейному программированию заменить системой из двух неравенств Решение задач по линейному программированию Впрочем, сведение уравнений к неравенствам может быть осуществлено и более эффективным способом (см. ниже).

Про бизнес:  Методы оценки эффективности инвестиционных проектов

Дадим теперь общую формулировку задачи линейного программирования.

Пусть Решение задач по линейному программированию— система линейных ограничений (т.е. линейных уравнений или нестрогих линейных неравенств) с Решение задач по линейному программированию переменными Решение задач по линейному программированию целевая функция вида

Требуется решить задачу

Обычно система Решение задач по линейному программированию включает в себя условия неотрицательности всех переменных:— это вытекает из реального смысла чисел Решение задач по линейному программированию Будем называть эти условия тривиальными ограничениями.

Наиболее часто встречаются две разновидности задачи линейного программирования.

Указанные две разновидности сводятся одна к другой. Покажем сначала, как свести стандартную задачу к канонической.

Пусть дана стандартная задача линейного программирования -будем называть ее задачей Решение задач по линейному программированиюгде Решение задач по линейному программированию — заданная система линейных неравенств, включающая (7.6).Пусть Решение задач по линейному программированию — число нетривиальных неравенств в системе Решение задач по линейному программированию Рассмотрим любое из этих неравенств:Введем новую дополнительную переменную Решение задач по линейному программированию и заменим неравенство (7.7) двумя ограничениями: уравнениеми условием Решение задач по линейному программированиюЕсли подобную замену произвести с каждым из нетривиальных неравенств системы Решение задач по линейному программированию то получим новую систему Решение задач по линейному программированию состоящую из уравнений, а также условий неотрицательности всех переменных: исходных Решение задач по линейному программированию и дополнительных Решение задач по линейному программированию Заметим, чтодополнительные переменные Решение задач по линейному программированию называют обычно балансовыми.Назовем задачей Решение задач по линейному программированию задачу Решение задач по линейному программированию при условиях Решение задач по линейному программированиюСравнивая задачи Решение задач по линейному программированию нетрудно убедиться в их эквивалентности: любое оптимальное решение задачи Решение задач по линейному программированию дает оптимальное решение задачи Решение задач по линейному программированию если к значениям переменных Решение задач по линейному программированию добавить значения балансовых переменных. Обратно, любое оптимальное решение задачи Решение задач по линейному программированию если отбросить значения балансовых переменных, дает оптимальное решение задачи Решение задач по линейному программированию

В качестве примера сведения стандартной задачи к канонической можно привести задачу о диете.

Введя для первого неравенства системы (7.2) балансовую переменную Решение задач по линейному программированию для второго — Решение задач по линейному программированию для третьего неравенства — Решение задач по линейному программированию получим каноническую задачу:

Покажем теперь, как свести каноническую задачу к стандартной. Чтобы не заслонять суть дела громоздкими записями, рассмотрим пример.

Пусть дана каноническая задача линейного программирования:

Будем считать ее задачей Решение задач по линейному программированию

Применив к системе из двух уравнений (7.8) метод Гаусса, выделим базис неизвестных:

Учитывая эти равенства, можно написать новое выражение для Решение задач по линейному программированиюРассмотрим теперь новую задачу линейного программирования, которую будем считать задачей Решение задач по линейному программированиюЕсли эту стандартную задачу мы захотели бы свести к канонической, то пришлось бы ввести балансовые переменные Решение задач по линейному программированию и заменить систему (7.9) новой системой

но тогда новая задача

ничем, в сущности, не будет отличаться от исходной задачи Решение задач по линейному программированию Таким образом, задача Решение задач по линейному программированию свелась к стандартной задаче Решение задач по линейному программированию с меньшим числом переменных.

Возможно, вас также заинтересует эта ссылка:

Задача 8.7.

Решить задачу линейного программирования

После введения балансовых переменных система ограничений (8.33) принимает вид:

Действуя обычным образом, мы должны были бы ввести две искусственные переменные Решение задач по линейному программированию и рассмотреть вспомогательную функцию Решение задач по линейному программированию минимизируя которую, нашли бы допустимый базис. Однако имеется прием, позволяющий сократить число искусственных переменных в общем случае до Решение задач по линейному программированию где Решение задач по линейному программированию — число ограничений исходной задачи типа уравнений, a Решение задач по линейному программированию если в системе ограничений имеются неравенства вида «больше или равно», и Решение задач по линейному программированию если таковых нет.

А именно среди правых частей неравенств вида «больше или равно» находим неравенство с наибольшей правой частью (в рассматриваемом примере это третье неравенство с правой частью 400). Все остальные неравенства такого типа преобразуются по правилу: в системе уравнений (8.35) из выделенного уравнения

следует вычесть почленно данное и записать вместо последнего. Тогда система (8.35) примет вид Решение задач по линейному программированию Поэтому достаточно ввести только одну искусственную переменную в третье уравнение, чтобы привести систему ограничений (8.36) к допустимому базису. Окончательно задача (8.33), (8.34) преобразуется к следующему виду: Решение задач по линейному программированию Поэтому первой фазой решения данной задачи будет решение (8.37)- (8.38). Начальной симплекс-таблицей будет табл. 8.14. Решение задач по линейному программированиюВ качестве разрешающего элемента удобно взять число 2 в строке Решение задач по линейному программированию и столбце Решение задач по линейному программированию Получим табл. 8.15. Решение задач по линейному программированиюНа втором шаге из базиса исключается искусственная переменная Решение задач по линейному программированию и вспомогательная целевая функция обращается в нуль. Поэтому можно вычеркнуть строку Решение задач по линейному программированию и столбец Решение задач по линейному программированию (табл. 8.16)- Это означает завершение первой фазы.На второй фазе выбираем разрешающие элементы, используя строку целевой функции Решение задач по линейному программированию (табл. 8.17).Таблица 8.18 является заключительной, поскольку в строке коэффициентов целевой функции Решение задач по линейному программированию нет положительных. Окончательно получим

Теорема о конечности симплекс-алгоритма

Во всех рассмотренных нами примерах на симплекс-метод дело обстояло благополучно в том смысле, что процесс после конечного числа шагов заканчивался либо нахождением оптимального решения, либо установлением того факта, что Решение задач по линейному программированию Всегда ли будет так? Поскольку процесс останавливается при наступлении одного из случаев I или II из § 8.1, то поставленный вопрос равнозначен следующему: не может ли случиться, что, производя (по симплекс-методу) шаг за шагом вычисления, мы никогда не окажемся перед одним из случаев I или II? По этому поводу можно высказать следующие соображения.

Предположим теперь, что процесс продолжается без остановки, образуя бесконечную последовательность базисов

для которых

Ввиду того что число всех возможных базисов конечно, в последовательности (8.39) некоторые базисы должны повторяться. Следовательно, должны встречаться цепочки

в которых начальное и конечное звенья совпадают. Такие цепочки называются циклами. Ясно, что тогда и

откуда следует в силу (8.40), что

Таким образом, процесс может продолжаться неограниченно лишь в том случае, когда несколько последовательных шагов приведут к образованию цикла (зацикливанию).

Случаи зацикливания хотя и встречаются, но крайне редко. В литературе по линейному программированию имеется всего несколько примеров такого рода, но и те, как отмечают их авторы, построены не без труда. Как правило, можно несложным путем избежать зацикливания.

Для этого следует в случае появления цикла изменить последовательность вычислений. А именно в той симплекс-таблице, с которой начинается данный цикл (или в любой другой таблице этого цикла), нужно выбрать другой разрешающий элемент (разумеется, в тех столбцах, где такой выбор возможен).

Хотя с практической точки зрения проблема зацикливания не представляет особой важности (ибо случаи зацикливания, как отмечалось, очень редки), но с принципиальной стороны здесь возникают важные вопросы. Основной вопрос состоит в следующем: если данная задача линейного программирования разрешима, то можно ли найти хотя бы одно из ее решений с помощью симплекс-метода, отправляясь от данного базиса системы ограничений?

Другими словами, если задача разрешима, то можно ли получить ее решение, отправляясь от данного базиса и выбирая последовательность разрешающих элементов подходящим образом? Утвердительный ответ на этот вопрос означал бы, что любую задачу линейного программирования можно, по крайней мере, в принципе решить при помощи симплекс-метода, и притом отправляясь от любого заданного базиса.

Ответ и в самом деле оказывается утвердительным. Он содержится в следующей теореме.

Теорема 8.1. Если существует оптимальное решение задачи линейного программирования, то существует и базисное оптимальное решение. Последнее всегда может быть получено с помощью симплекс-метода, причем начинать можно с любого исходного базиса.

Эту теорему часто называют теоремой о конечности симплекс-алгоритма. И действительно, в ней утверждается, что если задача линейного программирования разрешима, то, взяв любой исходный базис и выбирая последовательность разрешающихся элементов подходящим образом, мы всегда придем — после конечного числа шагов — к базисному оптимальному решению.

Доказательство теоремы целесообразно начать с объяснения некоторых понятий, относящихся к векторам. Речь будет идти о своеобразном отношении порядка между векторами с одним и тем же числом координат.

Условимся считать вектор

положительным и записывать это

если Решение задач по линейному программированию и первая из отличных от нуля координат вектора Решение задач по линейному программированию положительна. Если даны два векторато мы скажем, что вектор Решение задач по линейному программированию больше, чем вектор Решение задач по линейному программированию (или что вектор Решение задач по линейному программированию меньше, чем вектор Решение задач по линейному программированию если разность Решение задач по линейному программированию есть положительный вектор. Другими словами, условие Решение задач по линейному программированию означает, что

или же

или же

Очевидно, для любых двух векторов Решение задач по линейному программированию выполняется одно и только одно из соотношенийДалее, если Решение задач по линейному программированиюОбратимся теперь непосредственно к доказательству теоремы. Пусть дана задача линейного программирования, причем система ограничений с самого начала разрешена относительно некоторого базиса, скажем Решение задач по линейному программированию Итак, даны система

и линейная функция

Как обычно, требуется среди неотрицательных решений системы найти такое, которое минимизирует функцию Решение задач по линейному программированиюИсходным данным нашей задачи соответствует некоторая симплекс-таблица. Составим эту таблицу (табл. 8.19), а затем припишем к ней справа еще Решение задач по линейному программированию столбцов. Решение задач по линейному программированию(приписанная часть здесь заключена в пунктирную рамку). Числа Решение задач по линейному программированию могут выбираться как угодно, но с одним условием: матрица Решение задач по линейному программированию должна быть невырожденной.

Условимся называть базис положительным, если все векторы

положительны в указанном ранее смысле. Разумеется, если все свободные члены Решение задач по линейному программированию положительны, то базис будет положительным независимо от того, какие числа стоят в приписанной части табл. 8.19. Однако если какое-либо из чисел Решение задач по линейному программированию равно нулю, то условие положительности базиса накладывает некоторое ограничение на числа Решение задач по линейному программированию первое из них, отличное от нуля, должно быть положительным. Таким образом, свойство базиса быть положительным может зависеть не только от самой системы ограничений (8.41), но и от приписанных чисел Решение задач по линейному программированию

Решение задачи по симплекс-методу сводится к последовательным заменам базиса. При этом над строками симплекс-таблицы производятся определенные действия. Условимся всякий раз, когда совершается какое-либо преобразование над строками симплекс-таблицы, выполнять то же самое преобразование и над приписанной к таблице частью.

Очередной шаг симплекс-метода начинается с выбора разрешающего элемента. Напомним, как производится этот выбор. Находим среди чисел Решение задач по линейному программированию последней строки положительное число Решение задач по линейному программированию после чего просматриваем все числа Решение задач по линейному программированию столбца Решение задач по линейному программированию Для каждого положительного Решение задач по линейному программированию составляем отношение Решение задач по линейному программированию и затем среди этих отношений выбираем наименьшее, допустим Решение задач по линейному программированию Тогда элемент Решение задач по линейному программированию и будет разрешающим. Если минимум отношения Решение задач по линейному программированиюдостигается сразу при нескольких значениях Решение задач по линейному программированию то в качестве Решение задач по линейному программированию мы берем любое из этих значений. Возможность подобного выбора вносит в расчеты некоторый элемент произвола. Теперь мы устраним этот произвол и условимся выбирать разрешающий элемент в соответствии со следующим правилом: сравниваются векторы Решение задач по линейному программированию для всех положительных Решение задач по линейному программированию и берется наименьший из них — в смысле того отношения порядка, о котором говорилось выше. Допустим, что наименьшим является Решение задач по линейному программированию Тогда в качестве разрешающего элемента берется Решение задач по линейному программированию Нетрудно понять, что этим правилом выбор разрешающего элемента определен однозначно. Действительно, средивекторов Решение задач по линейному программированию не может быть равных, в противном случае две строки матрицы Решение задач по линейному программированию оказались бы пропорциональными, что противоречит невырожденности этой матрицы.Введем в рассмотрение еще один вектор Решение задач по линейному программированиюПосле очередного шага симплекс-метода числа, стоящие в приписанной части таблицы, конечно, изменяются; в частности, вектор Решение задач по линейному программированию заменяется другим вектором Решение задач по линейному программированию Докажем, что если исходный базис был положительным, то выполняются следующие утверждения:

1) новый базис снова будет положительным;

2) новый вектор Решение задач по линейному программированию меньше, чем старый вектор Решение задач по линейному программированиюИз этих утверждений будет сразу же следовать справедливость доказываемой нами теоремы. В самом деле, если вектор Решение задач по линейному программированию с каждым шагом уменьшается, то это означает, в частности, что мы не можем (после скольких угодно шагов) вернуться к исходному базису. Тем самым зацикливание исключено, и процесс после конечного числа шагов должен закончиться отысканием оптимального решения.Вспомним, как происходит преобразование симплекс-таблицы. Выбрав разрешающий элемент Решение задач по линейному программированию мы умножаем Решение задач по линейному программированию строку таблицы на Решение задач по линейному программированию Таким образом,Решение задач по линейному программированию и так как Решение задач по линейному программированию Из любой другой строки вычитается подходящее кратное Решение задач по линейному программированию строки, подобранное с таким расчетом, чтобы элемент, стоящий в Решение задач по линейному программированию столбце, обратился в нуль. Таким образом,Если при этом Решение задач по линейному программированию Если же Решение задач по линейному программированию тоРешение задач по линейному программированию Но в силу условия на выбор разрешающего элемента вектор, записанный в скобках, положителен: следовательно, Решение задач по линейному программированию Это

Про бизнес:  Трейдинг или инвестиции – два пути в торговле на бирже: какой выбрать?

показывает, что новый базис является положительным. Наконец, заметим, что

и так как в данном случае Решение задач по линейному программированию то мы получим Решение задач по линейному программированию что и требовалось доказать.

Чтобы завершить доказательство теоремы, нам остается ответить только на один вопрос: как обеспечить положительность исходного базиса. Но это совсем просто: достаточно приписать к исходной симплекс-таблице справа следующие числа:

Решение задач по линейному программированию Здесь матрица Решение задач по линейному программированию — единичная, а все числа последней строки равны нулю. Теорема доказана.

В заключение необходимо подчеркнуть еще раз то обстоятельство, что симплекс-метод всегда приводит к базисному решению.

Если не помнить это обстоятельство, то можно зачастую прийти к курьезам. Один из таких случаев описан в литературе по линейному программированию и связан с рассмотренной нами ранее задачей о диете.

  • Рассчитываемая диета должна была включать 77 видов пищи. Формулировка задачи в терминах линейного программирования включала 9 уравнений с 86 неизвестными, из которых 9 были дополнительными. Оптимальное решение, конечно, удовлетворяло всем требованиям задачи.

Однако, поскольку симплекс-метод дает только базисное решение, оптимальная диета включала лишь 9 различных видов пищи (пшеничную муку, кукурузу, сгущенное молоко, растительное масло, сало, говяжью печень, капусту, картофель и шпинат). Ясно, что подобная диета не вполне отвечала бы требованиям вкуса и разнообразия пищи. Правильная постановка задачи должна, разумеется, учитывать и такие требования.

Возможно, вас также заинтересует эта ссылка:

Одной из областей применения функций нескольких переменных является решение задач оптимизации. математическая дисциплина, которая рассматривает теорию построения математических моделей задач оптимизации и методы их решения, называется математическим программированием.

Примером задач математического программирования являются задачи об оптимальном использовании сырья, о оптимальный состав смеси, транспортная задача, которая предусматривает оптимизацию перевозок, матричная игра, согласно которой осуществляется оптимизация вероятностей применения той или иной стратегии и тому подобное.

Хотя все эти задачи являются задачами на условный экстремум и для их решения можно применять метод Лагранжа, который рассматривался ранее, в рамках математического программирования разрабатываются специальные методы, которые предназначены для решения задач именно этих классов.

Одной из классических задач математического программирования является задача оптимального использования сырья при составлении плана работы предприятия с целью получения максимальной прибыли от реализации продукции.

Задача об использовании сырья. Пусть предприятие выпускает продукцию Решение задач по линейному программированиюРешение задач по линейному программированию

Задача об использовании сырья                                                                                        Таблица 20.4

Составим математическую модель задачи. Пусть Решение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированию

Для решения задачи используются методы математического программирования, но для геометрической интерпретации задачи рассмотрим ее на плоскости, т.е. ограничимся случаем двух переменных. Тогда задача решается на базе известного из школьного курса метода решения системы неравенств и некоторых свойств функции двух переменных.

Пусть рассматривается задача, является моделью задачи об использовании сырья (20.5), составленная относительно только двух переменных, а именно: 

Дадим геометрическую интерпретацию этой задачи. Каждое неравенство (20.6) определяет на плоскости Решение задач по линейному программированию

Рис. 20.3

Если система (20.6) совместима, то сечением этих плоскостей является многоугольник, который и является множеством решений системы ограничений задачи (20.6). На этом многоугольнике необходимо найти точку, в которой функция Решение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированию

Рассмотрим алгоритм графического решении задачи на примере.

Цех имеет возможность производить продукцию двух видов Решение задач по линейному программированиюРешение задач по линейному программированию

Расходы сырья на единицу продукции и ее запасы                                                        Таблица 20.5

Необходимо определить такой план производства, по которому предприятие получит максимальную прибыль.

Решение. Построим математическую модель задачи. Обозначим через Решение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированию

Количество сырья расходуется на изготовление продукции, не может превышать ее запасов, поэтому ограничения по каждому виду сырья можно записать в виде системы неравенств:

Кроме того, количество продукции не может быть отрицательной, то есть существует ограничение на знаки: Решение задач по линейному программированию

Следовательно, математическая модель задачи имеет вид:

Применим к решению задачи графический метод (рис. 20.4). Для построения многоугольника, что определяет множество решений системы ограничений, в первой четверти координатной плоскости построим прямые по уравнениям:

Построим линию уровня функции Решение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированию

Рис. 20.4

Найдем координаты этой вершины, решая систему уравнений, соответствующих линиям Решение задач по линейному программированиюРешение задач по линейному программированию

Для определения решения воспользуемся формулами Крамера:

где

Отсюда имеем: Решение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированиюРешение задач по линейному программированию

Решение общей задачи линейного программирования

Симплекс-метод

Мы уже указывали, что реальные задачи линейного программирования содержат, как правило, большое число ограничений и неизвестных. Естественно, что решение таких задач связано с большим объемом вычислений и проводится на быстродействующих вычислительных машинах.

Алгоритм, лежащий в основе машинной программы, может быть связан со спецификой данного класса задач. Например, для решения транспортной задачи имеются довольно простые алгоритмы, обусловленные особенностями ее системы ограничений. Однако существуют и общие методы, позволяющие найти решение любой задачи линейного программирования за обозримое число шагов. К ним относится прежде всего симплекс-метод.

С самого начала укажем, что симплекс-метод в его непосредственной форме предназначен для решения канонической задачи линейного программирования.

Итак, рассмотрим задачу линейного программирования с ограничениями в форме уравнений. Даны система Решение задач по линейному программированиюРешение задач по линейному программированию линейных уравнений с Решение задач по линейному программированию неизвестными и линейная функция

Среди неотрицательных решений системы (8.1) нужно найти такое, которое минимизирует функцию (8.2).

Для начала работы по симплекс-методу требуется, чтобы заданная система уравнений была приведена к допустимому виду. Это означает, что какие-то из неизвестных должны быть выражены через остальные, причем свободные члены этих выражений неотрицательны.

Пример допустимой системы:

здесь свободные члены равны соответственно 5, 4 и 0. Можно ли привести систему уравнений к допустимому виду и как это сделать, рассмотрим в § 8.2.

Неизвестные в допустимом виде системы, которые выражены через остальные неизвестные, называются базисными, а весь набор этих неизвестных, который мы обозначим для краткости одной буквой Решение задач по линейному программированию — допустимым базисом; остальные неизвестные называются свободными. Например, в системе (8.3) допустимый базис образован неизвестными Решение задач по линейному программированию неизвестные же Решение задач по линейному программированию — свободные.

По поводу самой возможности приведения системы (8.1) к допустимому виду заметим пока только следующее. Если система (8.1) совместна, то метод Гаусса позволяет выделить в ней базис неизвестных. Весь вопрос в том, будет ли этот базис допустимым, т.е. будут ли все свободные члены в правых частях уравнений неотрицательными.

После того как выделен допустимый базис неизвестных, можно в выражении (8.2) для целевой функции заменить каждое базисное неизвестное его выражением через свободные. В итоге функция Решение задач по линейному программированию запишется через одни лишь свободные неизвестные. Например, если

а система ограничений приведена к виду (8.3), то новое выражение для Решение задач по линейному программированию будет

Чтобы упростить дальнейшие записи, будем считать, что имеется всего 5 неизвестных Решение задач по линейному программированию и система ограничений приведена к допустимому виду с базисом Решение задач по линейному программированию

а целевая функция — к виду

Напомним, что решается задача о минимизации Решение задач по линейному программированию при ограничениях (8.4) и условиях Решение задач по линейному программированию

Положим все свободные неизвестные равными нулю

и найдем из системы (8.4) значения базисных неизвестных:

Полученное таким путем решение системы (8.4)

будет неотрицательным; оно называется базисным решением, отвечающим базису Решение задач по линейному программированию Для базисного решения значение функции Решение задач по линейному программированиюравно Решение задач по линейному программированию

Возможны три случая.

I. Все коэффициенты при свободных неизвестных в выражении для Решение задач по линейному программированию неотрицательны: Решение задач по линейному программированию Тогда для любого неотрицательного решения системы (8.4) имеем Решение задач по линейному программированию значит, Решение задач по линейному программированию Таким образом, Решение задач по линейному программированию т.е. базисное решение является оптимальным — задача решена.II. Имеется свободное неизвестное, коэффициент при котором в выражении Решение задач по линейному программированию отрицателен, а все коэффициенты при этом неизвестном в уравнениях (8.4) неотрицательны.Пусть, например, Решение задач по линейному программированию Будем тогда, отправляясь от базисного решения (8.6), наращивать значение Решение задач по линейному программированию (не меняя Решение задач по линейному программированию Значения базисных неизвестных также будут меняться; мы получимт.е. решение Решение задач по линейному программированию будет оставаться неотрицательным. При этом Решение задач по линейному программированию и ввиду того, что Решение задач по линейному программированию значение Решение задач по линейному программированию с ростом Решение задач по линейному программированию будет неограниченно уменьшаться. Таким образом, в этом случае Решение задач по линейному программированию т.е. задача решения не имеет.III. Имеется свободное неизвестное, коэффициент при котором в Решение задач по линейному программированию отрицателен, но и среди коэффициентов при этом неизвестном в уравнениях (8.4) также есть отрицательные.В этом случае производится шагу а именно от базиса Решение задач по линейному программированию мы переходим к новому базису Решение задач по линейному программированию с таким расчетом, чтобы значение Решение задач по линейному программированию уменьшилось или, по крайней мере, не увеличилось: Решение задач по линейному программированию Разумеется, изменение базиса влечет за собой соответствующую перестройку систем (8.4) ограничений и выражения (8.5) для функции Решение задач по линейному программированиюОпишем конкретно содержание шага. Пусть, например, Решение задач по линейному программированию отрицательны, а Решение задач по линейному программированию — положительно или равно 0:Если снова, как в случае II, наращивать значение Решение задач по линейному программированию то будем иметьПоскольку Решение задач по линейному программированию значения Решение задач по линейному программированию будут уменьшаться,а значение Решение задач по линейному программированию будет оставаться неотрицательным (так как попрежнему Решение задач по линейному программированию При наращивании Решение задач по линейному программированию наступит момент, когдаодно из неизвестных Решение задач по линейному программированию или Решение задач по линейному программированию обратится в нуль: для Решение задач по линейному программированию таким моментом будет Решение задач по линейному программированию а для Решение задач по линейному программированию будет Решение задач по линейному программированию Выберем изэтих отношении Решение задач по линейному программированию наименьшее; пусть, например, это будет — Решение задач по линейному программированию Тогда наращивание Решение задач по линейному программированию возможно только от 0 до Решение задач по линейному программированиюПри Решение задач по линейному программированию неизвестное Решение задач по линейному программированию обратится в нуль, а при дальнейшем росте Решение задач по линейному программированию неизвестное Решение задач по линейному программированию станет уже отрицательным, что допускать нельзя. Полагая в системе (8.4) Решение задач по линейному программированию получим неотрицательное решениедля которого значение функции Решение задач по линейному программированию будет Решение задач по линейному программированию (поскольку Решение задач по линейному программированиюТаким образом, с ростом Решение задач по линейному программированию ‘первым» из базисных неизвестных обращается в нуль неизвестное Решение задач по линейному программированию Это служит для нас сигналом к замене базиса Решение задач по линейному программированию а именно: из старого базиса удаляется неизвестное Решение задач по линейному программированию и вместо него в базис вводится неизвестное Решение задач по линейному программированию (из числа прежних свободных).Смена базиса, как уже говорилось, влечет за собой перестройку системы (8.4). Из первого уравнения (для Решение задач по линейному программированию выражаем Решение задач по линейному программированиюи подставляем это выражение для Решение задач по линейному программированию в остальные два уравнения. В итоге получим систему вида

с базисным решением

которое должно совпадать с решением (8.8), поскольку, как видно из самой системы (8.9), двух разных решений с условиями Решение задач по линейному программированию быть не может. Таким образом, базисное решение (8.10) является снова неотрицательным.Что же касается нового значения функции Решение задач по линейному программированию то оно равнои, таким образом, Решение задач по линейному программированию (следует учесть, что Решение задач по линейному программированию и поэтому Решение задач по линейному программированию Итак, с переходом от базиса Решение задач по линейному программированию система ограничений сохранила допустимую форму ((8.10), где Решение задач по линейному программированию а значение функции Решение задач по линейному программированию для базисного решения уменьшилось или осталось прежним.Переход от базиса Решение задач по линейному программированию к новому базису Решение задач по линейному программированию и означает шагу который, напомним, делается в случае III. Разумеется, старое выражение для Решение задач по линейному программированию т.е. (8.5), должно быть теперь заменено новым:которое получается из (8.5) заменой неизвестного Решение задач по линейному программированию по формуле (8.9).Если для полученной задачи (8.10), (8.13) снова имеет место случай III, то делаем следующий шаг, т.е. переходим к новому базису Решение задач по линейному программированию длякоторого Решение задач по линейному программированию

Шаги повторяются до тех пор, пока не придем к одному из случаев I или П. Тогда процесс заканчивается.

Оцените статью
Бизнес Болика