Теорема 2 (вторая теорема двойственности)
Теорема 1 (первая теорема двойственности)
Если одна из пары двойственных задач I и II разрешима, то разрешима и другая, причем значения целевых функций на оптимальных планах совпадают, F(x*)=G(y*), где х*, у* - оптимальные решения задачи I и II
Теорема 2 (вторая теорема двойственности)
Планы х* и у* оптимальны в задачах I и II тогда и только тогда, когда при подстановке их в систему ограничений задачи I и II соответственно, хотя бы одно из любой пары сопряженных неравенств обращается в равенство.[7]
1.2. Постановка задачи линейного программирования.
Линейное программирование — раздел математического программирования, применяемый при разработке методов отыскания экстремума линейных функций нескольких переменных при линейных дополнительных ограничениях, налагаемых на переменные. По типу решаемых задач его методы разделяются на универсальные и специальные. С помощью универсальных методов могут решаться любые задачи линейного программирования (ЗЛП). Специальные методы учитывают особенности модели задачи, ее целевой функции и системы ограничений.
Особенностью задач линейного программирования является то, что экстремума целевая функция достигает на границе области допустимых решений. Классические же методы дифференциального исчисления связаны с нахождением экстремумов функции во внутренней точке области допустимых значений. Отсюда — необходимость разработки новых методов.
Формы записи задачи линейного программирования:
Общей задачей линейного программирования называют задачу
max(min)Z= (2.1)
При ограничениях:
(i=1,...,m1) (2.2)
(i=m1+1,..,m2) (2.3)
(i=m2+1,..,m) (2.4)
(2.5)
(2.6)
где - заданные действительные числа; (2.1) – целевая функция; (2.1) – (2.6) –ограничения; x=(x1,..., )- план задачи.
Пусть ЗЛП представлена в следующей записи:
max=Z=cx (2.7)
(2.8)
(2.9)[8]
Чтобы задача (2.7) – (2.8) имела решение, системе её ограничений (2.8) должна быть совместной. Это возможно, если r этой системы не больше числа неизвестных n. Случай r>n вообще невозможен. При r=n система имеет единственное решение, которое будет при оптимальным. В этом случае проблема выбора оптимального решения теряет смысл. Выясним структуру координат угловой точки многогранных решений. Пусть r<n. В этом случае система векторов A1,A2…An содержит базис — максимальную линейно независимую подсистему векторов, через которую любой вектор системы может быть выражен как ее линейная комбинация. Базисов, вообще говоря, может быть несколько, но не более . Каждый из них состоит точно из r векторов. Переменные ЗЛП, соответствующие r векторам базиса, называют, как известно, базисными и обозначают БП. Остальные n – r переменных будут свободными, их обозначают СП. Не ограничивая общности, будем считать, что базис составляют первые m векторов A1,A2…An . Этому базису соответствуют базисные переменные X1,X2,…,Xm а свободными будут переменные Xm+1,Xm+2,…Xn.
Если свободные переменные приравнять нулю, а базисные переменные при этом примут неотрицательные значения, то полученное частное решение системы (8) называют опорным решением (планом).[9]
Теорема.Если система векторов A1,A2…An содержит m линейно независимых векторов A1,A2…Am, то допустимый план =X1,X2,…,Xm,n-m (2. 10) является крайней точкой многогранника планов.
Теорема. Если ЗЛП имеет решение, то целевая функция достигает экстремального значения хотя бы в одной из крайних точек многогранника решений. Если же целевая функция достигает экстремального значения более чем в одной крайней точке, то она достигает того же значения в любой точке, являющейся их выпуклой линейной комбинацией.
1.3.Симплекс – метод решения задач линейного программирования
Симплекс – метод решения задач линейного программирования.
Симплекс-метод является основным в линейном программировании. Решение задачи начинается с рассмотрений одной из вершин многогранника условий. Если исследуемая вершина не соответствует максимуму (минимуму), то переходят к соседней, увеличивая значение функции цели при решении задачи на максимум и уменьшая при решении задачи на минимум. Таким образом, переход от одной вершины к другой улучшает значение функции цели. Так как число вершин многогранника ограничено, то за конечное число шагов гарантируется нахождение оптимального значения или установление того факта, что задача неразрешима. Этот метод является универсальным, применимым к любой задаче линейного программирования в канонической форме. Система ограничений здесь – система линейных уравнений, в которой количество неизвестных больше количества уравнений. Если ранг системы равен r, то мы можем выбрать r неизвестных, которые выразим через остальные неизвестные.
К такому виду можно привести любую совместную систему, например, методом Гаусса. Правда, не всегда можно выражать через остальные первые r неизвестных (мы это сделали для определенности записи). Однако такие r неизвестных обязательно найдутся. Эти неизвестные (переменные) называются базисными, остальные свободными.
Придавая определенные значения свободным переменным и вычисляя значения базисных (выраженных через свободные), мы будем получать различные решения нашей системы ограничений. Таким образом, можно получить любое ее решение. Нас будут интересовать особые решения, получаемые в случае, когда свободные переменные равны нулю. Такие решения называются базисными, их столько же, сколько различных базисных видов у данной системы ограничений. Базисное решение называется допустимым базисным решением или опорным решением, если в нем значения переменных неотрицательны. Если в качестве базисных взяты переменные X1, X2,…, Xr, то решение {b1, b2,…, br, 0,…, 0} будет опорным при условии, что b1, b2,…, br = 0.
Симплекс-метод основан на теореме, которая называется фундаментальной теоремой симплекс-метода. Среди оптимальных планов задачи линейного программирования в канонической форме обязательно есть опорное решение ее системы ограничений. Если оптимальный план задачи единственен, то он совпадает с некоторым опорным решением. Различных опорных решений системы ограничений конечное число. Поэтому решение задачи в канонической форме можно было бы искать перебором опорных решений и выбором среди них того, для которого значение F самое большое. Но, во-первых, все опорные решения неизвестны и их нужно находить, a, во-вторых, в реальных задачах этих решений очень много и прямой перебор вряд ли возможен. Симплекс-метод представляет собой некоторую процедуру направленного перебора опорных решений. Исходя из некоторого, найденного заранее опорного решения по определенному алгоритму симплекс-метода мы подсчитываем новое опорное решение, на котором значение целевой функции F не меньше, чем на старом. После ряда шагов мы приходим к опорному решению, которое является оптимальным планом.[10]
1.4.Графический метод решения задач линейного программирования
Графический метод довольно прост и нагляден для решения задач линейного программирования с двумя переменными. Он основан на геометрическом представлении допустимых решений и целевой функции задачи.
Графический метод, несмотря на свою очевидность и применимость лишь в случае малой размерности задачи, позволяет понять качественные особенности задачи линейного программирования, характерные для любой размерности пространства переменных и лежащие в основе численных методов ее решения.
Каждое из неравенств задачи линейного программирования определяет на координатной плоскости некоторую полуплоскость, а система неравенств в целом – пересечение соответствующих плоскостей. Множество точек пересечения данных полуплоскостей называется областью допустимых решений (ОДР). ОДР всегда представляет собой выпуклую фигуру, т.е. обладающую следующим свойством: если две точки А и В принадлежат этой фигуре, то неограниченной выпуклой многоугольной областью, отрезком, лучом, одной точкой. В случае несовместимости системы ограниченной задачи ОДР является пустым множеством.[11]
Все вышесказанное относится и к случаю, когда система ограничений включает равенства, поскольку любое равенство можно представить в виде систем двух неравенств.
Целевая функция (ЦФ) при фиксированном значении определяет на плоскости прямую линию. Изменяя значения L, мы получим семейство параллельных прямых, называемых линиями уровня.
Это связано с тем, что изменение значения L повлечет изменения лишь длины отрезка, отсекаемого линией уровня на оси (начальная ордината), а угловой коэффициент прямой останется постоянным. Поэтому для решения будет достаточно построить одну из линий уровня, произвольно выбрав значение L.[12]
Вектор с координатами из коэффициентов целевой функции при n перпендикулярен к каждой из линий уровня. Направление вектора совпадает с направлением возрастания целевой функции, что является важным моментом для решения задач. Направление убывания целевой функции противоположно направлению вектора.
Суть графического метода заключается в следующем. По направлению (против направления) вектора в ОДР производится поиск оптимальной точки. Оптимальной считается точка, через которую проходит линия уровня, соответствующая наибольшему (наименьшему) значению функции. Оптимальное решение всегда находится на границе ОДР, например в последней вершине многоугольника ОДР, через которую пройдет целевая прямая, или на всей его стороне.
При поиске оптимального решения задач линейного программирования возможны следующие ситуации: существует единственное решение задачи; существует бесконечное множество решений (альтернативный оптиум); целевая функция не ограничена; область допустимых решений – единственная точка; задача не имеет решений.
Методика решения задачи линейного программирования графическим методом. В ограничениях задачи заменить знаки неравенств знаками точных равенств и построить соответствующие прямые. Найти и заштриховать полуплоскости, разрешенные каждым из ограничений- неравенств задачи. Для этого нужно подставить в конкретное неравенство координаты какой – либо точки [например, (0,0)], и проверить истинность полученного неравенства.[13]
Если неравенство истинное, то надо заштриховать полуплоскость, содержащую данную точку.
Поскольку n должны быть неотрицательными, то их допустимые значения всегда будут находится выше оси и правее оси, т.е в I-м квадранте.
Ограничения – равенства разрешают только те точки, которые лежат на соответствующей прямой. Поэтому необходимо выделить на графике такие прямые.
Определить ОДР как часть плоскости, принадлежащую одновременно всем разрешенным областям, и выделить ее.
При отсутствии ОДР задача не имеет решений.
Если ОДР – не пустое множество, то нужно построить целевую прямую, т.е. любую из линий уровня (где L – произвольное число, например кратное и , т.е. удобное для проведения расчетов). Способ построения аналогичен построению прямых ограничений.
Построить вектор, который начинается в точке (0,0) и заканчивается в точке. Если целевая прямая и вектор построены верно, то они будут перпендикулярны.
При поиске максимума целевой функции необходимо передвигать целевую прямую в направлении вектора, при поиске минимума целевая функция – против направления вектора. Последняя по ходу движения вершина ОДР будет точкой максимума или минимума целевой функции. Если такой точки (точек) не существует, то можно сделать вывод о неограниченности целевой функции на множестве планов сверху ( при поиске максимума) или снизу (при поиске минимум).[14]
II. Венгерский метод решения задачи о назначениях
2.1 Суть Венгерского метода
При обсуждении постановки задачи о назначениях было отмечено, что эта задача является частным случаем классической транспортной задачи и, как следствие, является задачей транспортного типа. Применительно к задаче о назначениях симплексный метод не эффективен, так как любое ее допустимое базисное решение является вырожденным. Специфические особенности задачи о назначениях позволили разработать эффективный метод ее решения, известный как венгерский метод. [15]
Частным случаем транспортной задачи является задача о назначениях, в которой число пунктов производства равно числу пунктов назначения, т.е. транспортная таблица имеет форму квадрата. Кроме того, в каждом пункте назначения объем потребности равен 1, и величина предложения каждого пункта производства равна 1. Любая задача о назначениях может быть решена с использованием методов линейного программирования или алгоритма решения транспортной задачи. Однако ввиду особой структуры данной задачи был разработан специальный алгоритм, получивший название Венгерского метода.
Венгерский метод является одним из интереснейших и наиболее распространенных методов решения транспортных задач.
Рассмотрим основные идеи венгерского метода на примере решения задачи выбора (задачи о назначениях), которая является частным случаем Т-задачи, а затем обобщим этот метод для произвольной Т-задачи.
Постановка задачи. Предположим, что имеется различных работ и механизмов, каждый из которых может выполнять любую работу, но с неодинаковой эффективностью. Производительность механизма при выполнении работы обозначим, i = 1,...,n; j = 1,...,n. Требуется так распределить механизмы по работам, чтобы суммарный эффект от их использования был максимален. Такая задача называется задачей выбора или задачей о назначениях.[16]
Формально она записывается так. Необходимо выбрать такую последовательность элементов из матрицы ,чтобы сумма была максимальна и при этом из каждой строки и столбца С был выбран только один элемент.
Введем следующие понятия.
Нулевые элементы матрицы С называются независимыми нулями, если для любого, строка и столбец, на пересечении которых расположен элемент , не содержат другие такие элементы .
Две прямоугольные матрицы С и D называются эквивалентными (C ~ D), если для всех i,j . Задачи о назначениях, определяемые эквивалентными матрицами, являются эквивалентными (т.е. оптимальные решения одной из них будут оптимальными и для второй, и наоборот).[17]