Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Исследование операций. Лабораторный практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
Данное преобразование не изменит баланса. А вот общая
Поставщик
Потребитель
Запас
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. Какой критерий оптимальности плана транспортной за-
Литература: 15. Интернет-ресурсы: 13.
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]