Автор работы: Пользователь скрыл имя, 11 Апреля 2014 в 16:20, курсовая работа
Каждый человек ежедневно, не всегда осознавая это, решает проблему: как получить наибольший эффект, обладая ограниченными средствами. Наши средства и ресурсы всегда ограничены. Жизнь была бы менее интересной, если бы это было не так. Не трудно выиграть сражение, имея армию в 10 раз большую, чем у противника. Чтобы достичь наибольшего эффекта, имея ограниченные средства, надо составить план, или программу действий. Раньше план в таких случаях составлялся “на глазок” (теперь, впрочем, зачастую тоже). В середине XX века был создан специальный математический аппарат, помогающий это делать “по науке”.
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .3
1 Транспортная задача. Общая постановка, цели, задачи. Основные типы, виды моделей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Методы составления начального опорного плана . . . . . . . . . . . . .11
3 Методы решения транспортной задачи
3.1Диагональный метод, или метод северо-западного угла . . . . . . 12
3.2 Метод наименьшей стоимости . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Метод потенциалов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
4. Транспортная задача с избытком заявок . . . . . . . . . . . . . . . . . . . 22
5. Пример решения транспортной задачи . . . . . . . . . . . . . . . . . . . . .24
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
Список использованных источников . . . . . . . . . . . . . . . . . . . . . . . . .32
Сумма всех затрат, т. е. стоимость реализации данного плана перевозок, является линейной функцией переменных xij:
Требуется в области допустимых решений системы уравнений (2.1) и (2.1.1) найти решение, минимизирующее линейную функцию (2.4).
Таким образом, мы видим, что транспортная задача является задачей линейного программирования. Для ее решения применяют также симплекс-метод, но в силу специфики задачи здесь можно обойтись без симплекс-таблиц. Решение можно получить путем некоторых преобразований таблицы перевозок. Эти преобразования соответствуют переходу от одного плана перевозок к другому. Но, как и в общем случае, оптимальное решение ищется среди базисных решений. Следовательно, мы будем иметь дело только с базисными (или опорными) планами. Так как в данном случае ранг системы ограничений-уравнений равен m+n-1 то среди всех mn неизвестных xij выделяется m+n-1 базисных неизвестных, а остальные (m-1)*(n-1) неизвестных являются свободными. В базисном решении свободные неизвестные равны нулю. Обычно эти нули в таблицу не вписывают, оставляя соответствующие клетки пустыми. Таким образом, в таблице перевозок, представляющей опорный план, мы имеем m+n-1 заполненных и (m-1)*(n-1) пустых клеток.
Для контроля надо проверять, равна ли сумма чисел в заполненных клетках каждой строки таблицы перевозок запасу груза на соответствующей базе, а в каждом столбце — потребности заказчика [этим подтверждается, что данный план является решением системы (2.1)].
Замечание 1. Не исключаются здесь и вырожденные случаи, т. е. возможность обращения в нуль одной или нескольких базисных неизвестных. Но эти нули в отличие от нулей свободных неизвестных вписываются в соответствующую клетку, и эта клетка считается заполненной.
Замечание 2. Под величинами cij, очевидно, не обязательно подразумевать только тарифы. Можно также считать их величинами, пропорциональными тарифам, например, расстояниями от баз до потребителей. Если, например, xij выражены в тоннах, а cij в километрах, то величина S, определяемая формулой (2.4), является количеством тонно-километров, составляющих объем данного плана перевозок. Очевидно, что затраты на перевозки пропорциональны количеству тонно-километров и, следовательно, будут минимальными при минимуме S. В этом случае вместо матрицы тарифов мы имеем матрицу расстояний.
Как и в общем случае, решение транспортной задачи начинается с отыскания первого опорного плана (исходного базиса). Мы рассмотрим два наиболее распространенных метода построения такого базиса. Суть обоих этих методов состоит в том, что базисный план составляется последовательно, в несколько шагов (точнее, m+n-1 шагов). На каждом из этих шагов заполняется одна клетка, притом так, что, либо полностью удовлетворяется один из заказчиков (тот, в столбце которого находится заполняемая клетка), либо полностью вывозится весь запас груза с одной из баз (с той, в строке которой находится заполняемая клетка).
В первом случае мы можем исключить столбец, содержащий заполненную на этом шаге клетку, и считать, что задача свелась к заполнению таблицы с числом столбцов, на единицу меньшим, чем было перед этим шагом, но с тем же количеством строк и с соответственно измененным запасом груза на одной из баз (на той базе, которой был удовлетворен заказчик на данном шаге).
Во втором случае исключается строка, содержащая заполняемую клетку, и считается, что таблица сузилась на одну строку при неизменном количестве столбцов и при соответствующем изменении потребности заказчика, в столбце которого находится заполняемая клетка.
Начиная с первоначально данной таблицы и повторив m+n-2 раз описанный шаг, мы придем к “таблице”, состоящей из одной строки и одного столбца (иначе говоря, из одной пустой клетки). Другими словами, мы пришли к задаче с одной базой и с одним потребителем, причем потребности этого единственного заказчика равны запасу груза на этой единственной базе. Заполнив последнюю клетку, мы освобождаем последнюю базу и удовлетворяем потребность последнего заказчика. В результате, совершив m+n-1 шагов, мы и получим искомый опорный план.
Замечание. Может случиться, что уже на некотором (но не на последнем!) шаге потребность очередного заказчика окажется равной запасу груза на очередной базе. Тогда после заполнения очередной клетки объем таблицы как бы одновременно уменьшается на одни столбец и на одну строку. Но и при этом мы должны считать, что уменьшение объема таблицы происходит либо на один столбец, а на базе сохраняется “остаток” равный нулю, либо на одну строку, а у заказчика еще осталась неудовлетворенная “потребность” в количестве нуля единиц груза, которая и удовлетворяется на одном из следующих шагов. Этот нуль (“запас” или “потребностью” – безразлично) надо записать в очередную заполняемую клетку на одном из последующих шагов. Так как при этом оказывается равной нулю одна из базисных неизвестных, то мы имеем дело с вырожденным случаем. Различие методов отыскания первого опорного плана состоит в различии способов набора заполняемой клетки.
3 Методы решения транспортной задачи
3.1 Диагональный метод, или метод северо-западного угла
При этом методе на каждом шаге построения первого опорного плана заполняется левая верхняя клетка (северо-западный угол) оставшейся части таблицы. При таком методе заполнение таблицы начинается с клетки неизвестного x11 и заканчивается в клетке неизвестного xmn, т. е. идет как бы по диагонали таблицы перевозок.
Пример.
Пункты Отправления |
Пункты назначения |
Запасы | |||||||||
70 |
50 |
15 |
80 |
70 |
300 | ||||||
170 |
110 |
20 |
- |
- | |||||||
80 |
90 |
40 |
60 |
85 |
150 | ||||||
- |
- |
80 |
70 |
- | |||||||
50 |
10 |
90 |
11 |
25 |
250 | ||||||
- |
- |
- |
50 |
200 | |||||||
Потребности |
170 |
110 |
100 |
120 |
200 |
700 |
Заполнение таблицы начинается с ее северо-западного угла, т. е. клетки с неизвестным x11. Первая база A1 может полностью удовлетворить потребность первого заказчика B1 (a1=300,b1=170,a1>b1). Полагая x11=170, вписываем это значение в клетку x11 и исключаем из рассмотрения первый столбец. На базе A1 остается измененный запас a’=130. В оставшейся новой таблице с тремя строками A1,A2,A3 и четырьмя столбцами B2,B3,B4,B5; северо-западным углом будет клетка для неизвестного x12. Первая база с запасом a’1=130 может полностью удовлетворить потребность второго заказчика B2 (a’1=130,b2=110,a’1>b2). Полагаем x12=110, вписываем это значение в клетку x12 и исключаем из рассмотрения второй столбец. На базе A1 остается новый остаток (запас) a’’1=20. В оставшейся новой таблице с тремя строками A1,A2,A3 и тремя столбцами B3,B4,B5 северо-западным углом будет клетка для неизвестного x13. Теперь третий заказчик B3 может принять весь запас с базы A1 (a’’1=20,b3=100,a’’1<b3). Полагаем x13=20, вписываем это значение в клетку x13 и исключаем из рассмотрения первую строку. У заказчика из B3 осталась еще не удовлетворенной потребность b’3=80.
Теперь переходим к заполнению клетки для неизвестного x23 и т.д.
Через шесть шагов у нас останется одна база A3 с запасом груза (остатком от предыдущего шага) a’3=200и один пункт B5 с потребностью b5=200. Соответственно этому имеется одна свободная клетка, которую и заполняем, положив x35=200. План составлен. Базис образован неизвестными x11,x12,x13,x23,x24,x34,x35. Правильность составленного плана легко проверить, подсчитав суммы чисел, стоящих в заполненных клетках по строкам и столбцам.
Общий объем перевозок в тонно-километрах для этого плана составит
3.2 Метод наименьшей стоимости
При этом методе на каждом шаге построения опорного плана первою заполняется та клетка оставшейся части таблицы, которая имеет наименьший тариф. Если такая клетка не единственная, то заполняется любая из них.
Пример.
Пункты Отправления |
Пункты назначения |
Запасы | |||||||||
70 |
50 |
15 |
80 |
70 |
300 | ||||||
20 |
- |
100 |
- |
180 | |||||||
80 |
90 |
40 |
60 |
85 |
150 | ||||||
150 |
- |
- |
- |
- | |||||||
50 |
10 |
90 |
11 |
25 |
250 | ||||||
- |
110 |
- |
120 |
20 | |||||||
Потребности |
170 |
110 |
100 |
120 |
200 |
700 |
В данном случае заполнение таблицы начинается с клетки для неизвестного x32, для которого мы имеем значение c32=10, наименьше из всех значений cij. Эта клетка находится на пересечении третьей строки и второго столбца, соответствующим третьей базе A3 и второму заказчику B2. Третья база A3 может полностью удовлетворить потребность второго заказчика B2 (a3=250,b2=110,a3>b2). Полагая x32=110, вписываем это значение в клетку x32 и исключаем из рассмотрения второй столбец. На базе A3 остается изменённый запас a’3=140. В оставшейся новой таблице с тремя строками A1,A2,A3 и четырьмя столбцами B1,B3,B4,B5 клеткой с наименьшим значением cij клетка, где c34=11. Заполняем описанным выше способом эту клетку и аналогично заполняем следующие клетки. В результате оказываются заполненными (в приведенной последовательности) следующие клетки:
.
На пятом шаге клеток с наименьшими значениями cij оказалось две (c11=c15=70). Мы заполнили клетку для x15, положив x15=180. Можно было выбрать для заполнения другую клетку, положив x11=170, что приведет в результате к другому опорному плану. Общий объем перевозок в тонно-километрах для этого плана составит
.
Замечание. В диагональном методе не учитываются величины тарифов, в методе же наименьшей стоимости эти величины учитываются, и часто последний метод приводит к плану с меньшими общими затратами (что и имеет место в нашем примере), хотя это и не обязательно.
Кроме рассмотренных выше способов иногда используется, так называемый, метод Фогеля. Суть его состоит в следующем: В распределительной таблице по строкам и столбцам определяется разность между двумя наименьшими тарифами. Отмечается наибольшая разность. Далее в строке (столбце) с наибольшей разностью заполняется клетка с наименьшим тарифом. Строки (столбцы) с нулевым остатком груза в дальнейшем в расчет не принимаются. На каждом этапе загружается только одна клетка. Распределение груза производится, как и ранее.
3.3 Метод потенциалов
Для перехода от одного базиса к другому при решении транспортной задачи используются так называемые циклы.
Циклом пересчета или короче, циклом в таблице перевозок называется последовательность неизвестных, удовлетворяющая следующим условиям:
Одно из неизвестных последовательности свободное, а все остальные – базисные.
Каждые два соседних в последовательности неизвестных лежат либо в одном столбце, либо в одной строке.
Три последовательных неизвестных не могут находиться в одном столбце или в одной строке.
Если, начиная с какого-либо неизвестного, мы будем последовательно переходить от одного к следующему за ним неизвестному то, через несколько шагов мы вернемся к исходному неизвестному.
Второе условие означает, что у двух соседних неизвестных в цикле либо первые, либо вторые индексы одинаковы.
Если каждые два соседних неизвестных цикла соединить отрезком прямой, то будет получено геометрическое изображение цикла – замкнутая ломаная из чередующихся горизонтальных и вертикальных звеньев, одна из вершин которой находится в свободной клетке, а остальные - в базисных клетках.
Можно доказать, что для любой свободной клетки таблицы перевозок существует один и только один цикл, содержащий свободное неизвестное из этой клетки, и что число вершин в цикле всегда четно.
Так, например, в таблице перевозок, составленной по диагональному методу при решения задачи из предыдущего пункта, неизвестному x21 соответствует цикл x21,x23,x13,x11,x21 и т.д.
Пусть теперь мы имеем некоторую свободную клетку с соответствующим ей циклом. Если мы изменим значение свободного неизвестного, увеличив его на некоторое число , то, переходя последовательно от одной вершины цикла к другой, мы должны будем в силу неизменности сумм по строкам и по столбцам поочередно уменьшать и увеличивать значения неизвестных в цикле на то же число . Например, в указанном выше цикле для свободного неизвестного получим:
старые значения: x21=0,x32=80,x13=20,x11=170,x2
новые значения: x’21=x,x’32=80-x,x’13=20+x,x’1
Очевидно, если снабдить вершины цикла поочередно знаками “+” и “–“, приписав вершине в свободной клетке знак “+”, то можно сказать, что в вершинах со знаком “+” число прибавляется к прежнему значению неизвестного, находящегося в этой вершине, а в вершинах со знаком “–“ это число вычитается из прежнего значения неизвестного, находящегося в этой вершине.
Замечание. Так как число вершин в цикле всегда четно, то, возвращаясь в свободную клетку, мы должны будем приписать ей знак “+”, т. е. тот знак, который ей уже приписан при выходе из нее. Это очень существенное обстоятельство, так как иначе мы пришли бы к противоречию. Безразлично также, в каком направлении обходится цикл при “означивании” вершин.
Если в качестве выбрать наименьшее из чисел, стоящих в вершинах, снабженных знаком “–“, то, по крайней мере, одно из прежних базисных неизвестных примет значение нуль, и мы можем перевести его в число свободных неизвестных, сделав вместо него базисным то неизвестное, которое было свободным.
Так, например, в рассмотренном выше цикле имеем отрицательные вершины x23 и x11; следовательно, выбрав x=min(80;170)=80, мы получаем:
старые значения: x21=0,x32=80,x13=20,x11=170,x2
новые значения: x’21=80,x’32=,x’13=100,x’11=