Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет. опт. решений, пособие.doc
Скачиваний:
201
Добавлен:
22.03.2016
Размер:
5.2 Mб
Скачать

2.5. Вырожденный план

При решении ТЗ методом потенциалов на некоторых итерациях текущий план может оказаться вырожденным.

Рассмотрим сбалансированную транспортную задачу:

Найдем начальный допустимый план методом северо-западного угла.

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

Заметим, что «потеря» базисной клетки происходит при заполнении клетки . Пункт производстваисчерпан, и потребности пункта потреблениявыполняются полностью одновременно. В данном случае необходимо к базисным клеткам добавить клетку с нулевым значением, расположенную рядом с только что заполненной, которая обусловила потерю. Для нашей задачи базисной можно считать клеткуили. Иногда в эту клетку помещают бесконечно малое число.

.

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

20

100

3

50

9

15

35

150

14

10

20

12

130

20

0

46

150

25

11

16

16

110

48

90

200

100

70

130

110

90

Построим систему потенциалов и найдем решение системы:

, ,.

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

2.4. Задачи для самостоятельного решения

1. Пусть имеется три склада и четыре пункта потребления.

Запасы товара на складах: . Потребности пунктов потребления:.

Стоимость перевозки единицы товара со склада в пунктзадана матрицей:

.

Составить наиболее экономичный план перевозок товара со складов в пункты потребления.

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

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

.

Глава 3. Целочисленное программирование

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

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

    1. Задача о назначении

Имеется работ икандидатов на эту работу. Назначениюого кандидатанаую работусоответствует число— эффективность или затраты такого назначения. Каждого кандидата можно назначать только на одну работу, на каждую работу должен быть подобран один кандидат. Распределение кандидатов по работам должно обеспечить максимум эффективности или минимум затрат.

Математическая модель задачи о назначении.

Найти максимум (минимум) целевой функции , где— элементы матрицы эффективности (затрат):

.

при заданных ограничениях:

где — искомые переменные, могут принимать значения только 0 или 1:

если й кандидат назначается наю работу,

в противном случае.

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

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

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

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

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

, когда индекс совпадает с индексом;

во всех остальных случаях.

Условия ,, в силу не повторения составляющих индексов, выполнены.

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

Алгоритм решения задачи о назначении, то есть поиск , венгерским методом имеет несколько шагов.

Шаг 1. Дана матрица эффективности (затрат):

.

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

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

Шаг 2.

2.1. Рассматривается одна из строк матрицы , имеющая наименьшее число нулей, отмечают знаком «*» один из нулей этой строки и зачёркивают все остальные нули этой строки и того столбца, в котором стоит отмеченный знаком «*» нуль — 0*.

2.2. Аналогичная операция выполняется для всех строк, при выполнении каждой следующей операции уже зачёркнутые нули игнорируются.

2.3. Если после выполнения операций в каждой строке и каждом столбце стоит отмеченный знаком «*» нуль, то оптимальное решение найдено. В противном случае переходят к шагу 3.

Шаг 3.

3.1. В матрице отмечают знаком «^».

      1. все строки, в которых нет ни одного нуля 0*;

      2. все столбцы, содержащие перечеркнутый нуль хотя бы в одной из отмеченных знаком «^» строчек;

      3. все строки, содержащие отмеченные нули 0* хотя бы в одном из отмеченных «^» столбцов.

3.2. Шаги 3.1.2. и 3.1.3. повторяют до тех пор, пока есть что отмечать.

3.3. Зачёркивают все неотмеченные строки и каждый отмеченный столбец в матрице . В остатке после зачёркивания нет ни одного нулевого элемента. Запоминаютнаибольший (наименьший) из них.

Шаг 4.

4.1. Вычитают из всех элементов, не вычеркнутых столбцов матрицы. Получают матрицу.

4.2. Прибавляют ко всем элементам строк матрицы, которые соответствуют строкам, вычеркнутым в. Получают матрицу.

Если в каждой строке и каждом столбце матрицы стоит нуль (отмеченный 0* или неотмеченный, перечёркнутый или нет), то оптимальное решение найдено. Иначе цикл повторяют, начиная с шага 2.

Пример 1.

Пусть для монтажа четырёх объектов требуется четыре крана. Известна матрица затрат , где— время монтажаым краномого объекта:

.

Распределить краны по объектам так, чтобы суммарное время монтажа было минимальным.

Математическая постановка задачи:

Найти

при условиях:

. . .

. . .

для или.

Заметим, что исходная матрица является матрицей затрат.

Шаг 1. Модифицируем исходную матрицу затрат.

    1. В каждой строке матрицы найдем наименьший элемент и вычтем его из всех элементов данной строки. От элементов первой строки отнимем число 2. От элементов первой строки отнимем число 3. От элементов первой строки отнимем число 2. От элементов первой строки отнимем число 3. Получим матрицу.

    2. В каждом столбце матрицы найдем наименьший элемент и вычтем его из всех элементов данного столбца. От элементов второго столбца отнимем число 2, от элементов четвёртого столбца отнимем число 3. Получим матрицу.

.

Шаг 2.

2.1. Выбираем вторую строку матрицы , в ней всего один нуль, отмечаем его знаком «*». Так как отмеченный нуль находится в первом столбце, зачеркиваем все остальные нули в этом столбце. Для зачеркнутых нулей будем использовать символ.

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

.

Если после выполнения в каждой строке и каждом столбце стоит отмеченный нуль, то оптимальное решение найдено. В нашем примере это условие не выполнено, потому перейдем к шагу 3.

Шаг 3.

      1. Отметим четвертую строку знаком «^», так как в ней нет ни одного отмеченного нуля 0*.

      2. Отметим третий столбец, содержащий перечеркнутый нуль в четвертой отмеченной знаком «^» строчке.

      3. Отметим третью строку, содержащую 0* в третьем, отмеченном знаком «^» столбце.

Больше вычеркивать нечего, получаем матрицу с помеченными строками и столбцами.

    1. Вычеркнем все неотмеченные строки и каждый отмеченный столбец в матрице , остаток после зачёркивания строк (1), (2). и столбца (3) имеет вид:

,

наименьший из элементов полученной матрицы .

Шаг 4.

4.1. Вычтем значение из всех элементов, не вычеркнутых столбцов матрицы. Это будут элементы всех столбцов, за исключением третьего. Получим матрицу.

4.2. Прибавим ко всем элементам строк матрицы, которые соответствуют строкам, вычеркнутым в. Получим матрицу.

.

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

Ответ: , т.е первый кран направляется на монтаж второго объекта, второй кран — на монтаж первого, третий кран монтирует третий объект, и четвертый кран — объект с номером четыре.