Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Исследование операций. Лабораторный практикум
.pdf
Данное преобразование не изменит баланса. А вот общая
Поставщик
Потребитель
Запас
B1
B2
B3
B4
A1
5 8
3
5
5 2
10
A2 4 10 1
5 6
7
15
A3 1 9
15 4
10 3
25
A4 0 0
0
10 0
10
Потребность
5
10
20
25
A1B1 :
v1 + u1 = 8
v1 = 8 – 0 = 8
A1B4 :
v4 + u1 = 2
v4 = 2 – 0 = 2
A3B4 :
v4 + u3 = 3
u3 = 3 – 2 = 1
A4B4 :
v4 + u4 = 0
u4 = 0 – 2 = –2
A3B3 :
v3 + u3 = 4
v3 = 4 – 1 = 3
A2B3 :
v3 + u2 = 6
u2 = 6 – 3 = 3
A2B2 :
v2 + u2 = 1
v2 = 1 – 3 = –2
Поставщик
Потребитель
U
B1
B2
B3
B4
A1
5 8
3
5
5 2
u1 = 0
A2
4
10 1
5 6
7
u2 = 3
A3 1 9
15 4
10 3
u3 = 1
A4 0 0
0
10 0
u4 = –2
V
v1 = 8
v2 = -2
v3 = 3
v4 = 2
стоимость доставки продукции изменится на величину:
2 ∙5–3∙5+1∙5–6∙5+4∙5–3∙5=(2–3+1–6+4–3)∙5=–5∙5 ден. ед.
Вы правильно заметили, что –5 ∙ 5 = Δ14 ∙ 5
В отрицательных клетках из 3 значений выбираем число 5
(поскольку оно самое маленькое), которое отнимаем, где знак
«–» и прибавляем где знак «+».
Получим новое решение (табл. 6).
Таблица 6
Итерация 5
Общую сумму доставки продукции, для данного решения,
легко посчитать:
S = 205 + Δ14 ∙ 5 = 205 – 5 ∙ 5 = 180 ден. ед.
Проверим оптимальность данного решения (табл. 7.):
Таблица 7
Итерация 6
61

Найдем оценки незадействованных маршрутов.
A1B2 :
Δ12 = c12 – (u1 + v2) = 3 – (0 + –2) = 5
A1B3 :
Δ13 = c13 – (u1 + v3) = 5 – (0 + 3) = 2
A2B1 :
Δ21 = c21 – (u2 + v1) = 4 – (3 + 8) = –7
A2B4 :
Δ24 = c24 – (u2 + v4) = 7 – (3 + 2) = 2
A3B1 :
Δ31 = c31 – (u3 + v1) = 1 – (1 + 8) = –8
A3B2 :
Δ32 = c32 – (u3 + v2) = 9 – (1 + –2) = 10
A4B1 :
Δ41 = c41 – (u4 + v1) = 0 – (–2 + 8) = –6
A4B2 :
Δ42 = c42 – (u4 + v2) = 0 – (–2 + –2) = 4
A4B3 :
Δ43 = c43 – (u4 + v3) = 0 – (–2 + 3) = –1
Поставщик
Потребитель
Запас
B1
B2
B3
B4
A1
5 – 8
3
5
5 2
10
A2 4 10 1
5 6
7
15
A3
–8 1
9
15 4
10 3
25
A4 0 0
0
10 0
10
Потребность
5
10
20
25
Есть отрицательные оценки, следовательно, возможно получить новое решение, как минимум, не хуже имеющегося.
ШАГ 2. Выберем ячейку A3B1, ее оценка отрицательная.
Поставьте курсор мыши в выбранную ячейку A3B1.
Используя горизонтальные и вертикальные перемещения
курсора, соедините непрерывной линией заполненные ячейки
так, чтобы вернуться в исходную ячейку.
Ячейки, расположенные в вершинах построенной ломаной
линии, образуют цикл для выбранной ячейки.
Он единственный. Направление обхода не имеет значения.
Таблица 8
Итерация 7
Данное преобразование не изменит баланса. А вот общая
стоимость доставки продукции изменится на величину
1∙5–3∙5+2∙5–8∙5=(1–3+2–8) ∙ 5 = –8 ∙ 5 ден. ед.
Вы правильно заметили, что –8 ∙ 5 = Δ31 ∙ 5
В отрицательных клетках из 2 значений выбираем число
5 (поскольку оно самое маленькое), которое отнимаем, где
знак «–», и прибавляем, где знак «+».
62

Получим новое решение (табл. 9).
Поставщик
Потребитель
Запас
B1
B2
B3
B4
A1
8
3
5
10 2
10
A2 4 10 1
5 6
7
15
A3
5 1
9
15 4
5 3
25
A4 0 0
0
10 0
10
Потребность
5
10
20
25
A3B1 :
v1 + u3 = 1
v1 = 1 – 0 = 1
A3B3 :
v3 + u3 = 4
v3 = 4 – 0 = 4
A3B4 :
v4 + u3 = 3
v4 = 3 – 0 = 3
A4B4 :
v4 + u4 = 0
u4 = 0 – 3 = –3
A1B4 :
v4 + u1 = 2
u1 = 2 – 3 = –1
A2B3 :
v3 + u2 = 6
u2 = 6 – 4 = 2
A2B2 :
v2 + u2 = 1
v2 = 1 – 2 = –1
Поставщик
Потребитель
U
B1
B2
B3
B4
A1
8
3
5
10 2
u1 = –1
A2 4 10 1
5 6
7
u2 = 2
A3
5 1
9
15 4
5 4
u3 = 0
A4 0 0
0
10 0
u4 = –3
V
v1 = 1
v2 = -1
v3 = 4
v4 = 3
A1B1 :
Δ11 = c11 – (u1 + v1) = 8 – (–1 + 1) = 8
A1B2 :
Δ12 = c12 – (u1 + v2) = 3 – (–1 + –1) = 5
A1B3 :
Δ13 = c13 – (u1 + v3) = 5 – (–1 + 4) = 2
A2B1 :
Δ21 = c21 – (u2 + v1) = 4 – (2 + 1) = 1
Таблица 9
Итерация 8
Общую сумму доставки продукции, для данного решения,
легко посчитать
S = 180 + Δ31 ∙ 5 = 180 – 8 ∙ 5 = 140 ден. ед.
Проверим на оптимальность:
Итерация 9
Найдем оценки незадействованных маршрутов.
63
Таблица 10

A2B4 :
Δ24 = c24 – (u2 + v4) = 7 – (2 + 3) = 2
A3B2 :
Δ32 = c32 – (u3 + v2) = 9 – (0 + –1) = 10
A4B1 :
Δ41 = c41 – (u4 + v1) = 0 – (–3 + 1) = 2
A4B2 :
Δ42 = c42 – (u4 + v2) = 0 – (–3 + –1) = 4
A4B3 :
Δ43 = c43 – (u4 + v3) = 0 – (–3 + 4) = –1
Есть отрицательные оценки, следовательно, возможно по-
Поставщик
Потребитель
Запас
B1
B2
B3
B4
A1 8 3
5
10 2
10
A2 4 10 1
5 6 7 15
A3
5 1
9
15 – 4
5 3
25
A4 0 0
–1 0
10 0
10
Потребность
5
10
20
25
Поставщик
Потребитель
Запас
B1
B2
B3
B4
A1
8
3
5
10 2
10
лучить новое решение, как минимум, не хуже имеющегося.
ШАГ 3. Выберем ячейку A4B3, ее оценка отрицательная.
Поставьте курсор мыши в выбранную ячейку A4B3. Используя
горизонтальные и вертикальные перемещения курсора, соедините непрерывной линией заполненные ячейки так, чтобы
вернуться в исходную ячейку. Ячейки, расположенные в вершинах построенной ломаной линии, образуют цикл для выбранной ячейки. Он единственный. Направление обхода не
имеет значения (табл. 11).
Таблица 11
Итерация 10
Данное преобразование не изменит баланса. А вот общая
стоимость доставки продукции изменится на величину:
0 ∙ 10 – 0 ∙ 10 + 3 ∙ 10 – 4 ∙ 10 = (0 – 0 + 3 – 4) ∙ 10 = –1 ∙ 10 ден. ед.
Вы правильно заметили, что –1 ∙ 10 = Δ43 ∙ 10
В отрицательных клетках из 2 значений выбираем число
10 (поскольку оно самое маленькое), которое отнимаем, где
знак «–», и прибавляем, где знак «+». Получим новое решение (табл. 12).
Таблица 12
Итерация 11
64

A2 4 10 1
5 6
7
15
A3
5 1
9
5 4
15 3
25
A4 0 0
10 0
0
10
Потребность
5
10
20
25
A3B1 :
v1 + u3 = 1
v1 = 1 – 0 = 1
A3B3 :
v3 + u3 = 4
v3 = 4 – 0 = 4
A3B4 :
v4 + u3 = 3
v4 = 3 – 0 = 3
A4B3 :
v3 + u4 = 0
u4 = 0 – 4 = –4
A1B4 :
v4 + u1 = 2
u1 = 2 – 3 = –1
A2B3 :
v3 + u2 = 6
u2 = 6 – 4 = 2
A2B2 :
v2 + u2 = 1
v2 = 1 – 2 = –1
Поставщик
Потребитель
U
B1
B2
B3
B4
A1
8
3
5
10 2
u1 = –1
A2 4 10 1
5 6
7
u2 = 2
A3
5 1
9
5 4
15 3
u3 = 0
A4 0 0
10 0
0
u4 = –4
V
v1 = 1
v2 = –1
v3 = 4
v4 = 3
A1B1 :
Δ11 = c11 – (u1 + v1) = 8 – (–1 + 1) = 8
A1B2 :
Δ12 = c12 – (u1 + v2) = 3 – (–1 + –1) = 5
A1B3 :
Δ13 = c13 – (u1 + v3) = 5 – (–1 + 4) = 2
A2B1 :
Δ21 = c21 – (u2 + v1) = 4 – (2 + 1) = 1
A2B4 :
Δ24 = c24 – (u2 + v4) = 7 – (2 + 3) = 2
A3B2 :
Δ32 = c32 – (u3 + v2) = 9 – (0 + –1) = 10
A4B1 :
Δ41 = c41 – (u4 + v1) = 0 – (–4 + 1) = 3
A4B2 :
Δ42 = c42 – (u4 + v2) = 0 – (–4 + –1) = 5
A4B4 :
Δ44 = c44 – (u4 + v4) = 0 – (–4 + 3) = 1
Общую сумму доставки продукции, для данного решения,
легко посчитать.
S = 140 + Δ43 ∙ 10 = 140 – 1 ∙ 10 = 130 ден. ед.
Проверим на оптимальность (табл. 13).
Таблица 13
Итерация 12
Найдем оценки незадействованных маршрутов.
65

Нет отрицательных оценок, следовательно, уменьшить об-
01000
15505
05100
10000
опт
Х
Поставщик
Потребитель
Запас
B1
B
2
B3
B4
A1 8 3 5 2
10
A2 4 1 6 7
20
A3 1 9 4 3
25
Потребность
5
10
20
15
Поставщик
Потребитель
Запас
B1
B2
B3
A1 6 5 2 250
A2 3 7 4 100
A3 7 8 1 80
A4 2 2 3 80
Потребность
150
150
250
щую стоимость доставки продукции невозможно.
Ответ:
Задание 2. Решить транспортную задачу с фиктивным
потребителем
Таблица 14
Условие задачи
Задание 3. Решить транспортную задачу с фиктивным
поставщиком
Таблица 15
Условие задачи
дачи?
Контрольные вопросы
1. Алгоритм метода наименьшего (наибольшего) элемента.
2. Метод потенциалов и его алгоритм.
3. Какой план транспортной задачи называется опорным?
4. Какой критерий оптимальности плана транспортной за-
Литература: 1–5.
Интернет-ресурсы: 1–3.
66

8. ЦЕЛОЧИСЛЕННОЕ ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ
Цель работы – научится использовать специальные мето-
ды для класса задач целочисленного линейного программирования.
Формируемые компетенции или их части: ПК-18 –
способность использовать соответствующий математический
аппарат и инструментальные средства для обработки, анализа
и систематизации информации по теме исследования
Теоретическая часть
Многие задачи линейного программирования, если рас-
смотреть их содержательную постановку (экономическое значение), например, задача о производстве столов, шкафов и
кроватей с максимальным доходом при ограниченных ресурсах, являются на самом деле целочисленными задачами линейного программирования (трудно ведь представить, что компания может произвести и продать 1/3 стола или 11/4 шкафа).
Таким образом, мы берем обычные задачи линейного про-
граммирования (см. примеры на графический метод, симплексный метод, двойственные задачи) и всего лишь добавляем ограничение: все переменные должны принимать целые значения. Но,
несмотря на такое, казалось бы, небольшое усложнение, само
решение задачи становится куда более объемным. Если речь
идет о задаче с двумя переменными, проще всего по-прежнему
применить графический метод, если же переменных больше,
приходится использовать специальные методы для этого класса
задач: метод Гомори или метод ветвей и границ.
Метод ветвей и границ
Метод ветвей и границ заключается в упорядоченном пе-
реборе вариантов и рассмотрении лишь тех из них, которые
оказываются по определенным признакам перспективными, и
отбрасывании бесперспективных вариантов.
Метод ветвей и границ состоит в следующем: множество
допустимых решений (планов) некоторым способом разбивается на подмножества, каждое из которых этим же способом
снова разбивается на подмножества. Процесс продолжается до
тех пор, пока не получено оптимальное целочисленное решение исходной задачи.
67

Название метода ветвей и границ исходит из того, что в
процессе решения задача последовательно «ветвится», заменяясь более простыми. Процесс решения можно продолжать в
виде дерева, цифры в узлах (вершинах) которого обозначают
план решения задачи (искомые переменные).
Графический метод решения задач
целочисленного программирования
При наличии в задаче линейного программирования двух
переменных, а в системе ограничения – неравенств она может
быть решена графическим методом без требований целочисленных переменных.
Если оптимальное решение этой задачи является целочис-
ленным, то оно и является оптимальным для исходной задачи.
Если же полученное оптимальное решение не целочислен-
ное, то строится дополнительное линейное ограничение. Оно
обладает следующими свойствами:
• оно должно быть линейным;
• должно отсекать найденный оптимальный, нецелочислен-
ный план;
• не должно отсекать ни одного целочисленного плана.
Алгоритм графического решения задачи
целочисленного программирования
1. Построить систему координат x10х2 и выбрать масштаб.
2. Найти область допустимых решений (ОДР) системы
ограничений задачи.
3. Построить целевую функцию, являющуюся линией
уровня и на ней указать направление нормали.
4. Переместить линию целевой функции по направлению
нормали через ОДР, чтобы она из секущей стала касательной
к ОДР и проходила через наиболее удаленную от начала координат точку. Эта точка будет являться точкой экстремума,
т. е. решением задачи. Если окажется, что линия целевой
функции параллельна одной из сторон ОДР, то в этом случае
экстремум достигается во всех точках соответствующей стороны, а задача линейного программирования будет иметь бесчисленное множество решений.
5. Найти координаты, точки экстремума и значение целе-
вой функции в ней. Если полученные значения не целочисленные, то перейти к следующему шагу.
68

6. Выделить у этих координат область с целочисленными
целыеxx
xx
xx
xxZ
,0,
,83
,2175
2max
21
21
21
21
12
12
12
12
2 max
5 7 21,
3 8,
, 0.
Z x x
xx
xx
xx
12
1 2 3
1 2 4
1,2,3,4
2 max
5 7 21,
3 8,
0.
Z x x
x x x
x x x
x
Базис
План
x1
x2
x3
x4
x3
21
5
7
1
0
x4
8
–1
3
0
1
Z
0
–1
–2
0
0
значениями.
7. Определить новые координаты и построить граф.
8. Найти точки с целыми значениями искомых перемен-
ных, подставить в уравнение целевой функции и найти её
значение. Максимальное из полученных значений целевой
функции и будет решением задачи.
Оборудование и материалы (перечень используемого
оборудования) – соответствующее программное обеспечение.
Задание 1. Решить задачу методом Гомори:
Решение
Сначала решаем задачу симплекс-методом без ограничений
целочисленности.
Приводим задачу к каноническому виду
Строим симплекс-таблицу:
Таблица 1
Итерация 1
69

В последней оценочной строке есть отрицательные оцен-
Базис
План
x1
x2
x3
x4
x3
7/3
22/3
0 1 -7/3
X2
8/3
-1/3 1 0
1/3
Z
16/3
-5/3
0
0
2/3
Базис
План
x1
x2
x3
x4
X1
7/22
1 0 3/22
-7/22
X2
61/22
0 1 1/22
5/22
Z
129/22
0
0
5/22
3/22
.2
22
61
,0
22
7
.
22
17
2
22
61
22
61
,
22
7
0
22
7
22
7
234
3 4 5
1 5 17
0 ,
22 22 22
1 5 17
откуда .
22 22 22
x x x
x x x
ки, поэтому нужно делать шаг симплекс-метода. Выбираем
столбец с наименьшей оценкой (x2), а затем разрешающий
элемент – по наименьшему отношению свободных членов к
коэффициентам столбца (x4). Результат шага запишем в таблицу. Аналогично будем повторять шаги.
Таблица 2
Итерация 2
Таблица 3
Итерация 3
В последней строке нет отрицательных оценок, поэтому
оптимальное решение найдено:
x1 = 7 / 22, x2 = 61 / 22, Z
= 129 / 22.
max
Продолжим решение, используя алгоритм Гомори. Найдем
целые части оптимального решения:
Дробные части
Выбираем переменную с наибольшей дробной частью, то
есть x2 (дробная часть 17/22).
Вводим дополнительное ограничение целочисленности:
Добавляем это ограничение к симплекс-таблице и получаем:
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
