Учебное пособие 999
.pdf
|
|
|
bi |
|
|
|
y1 |
|
y2 |
y3 |
|
y4 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L2 |
0 |
|
-10 |
-10 |
|
-8 |
-8 |
|
-6 |
|
|
-10 |
|
||
|
|
100 |
|
|
|
|
|
4 |
|
-10 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y5 |
-15 |
|
-1 |
-1 |
|
0 |
0 |
|
0 |
|
|
-1 |
|
||
|
|
-5 |
|
|
|
|
|
1 |
|
-1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y6 |
-10 |
|
-1 |
-1 |
|
0 |
0 |
|
-1 |
|
|
0 |
|
||
|
|
10 |
|
|
|
|
|
1 |
|
0 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y7 |
-6 |
|
0 |
0 |
|
-1 |
-1 |
|
-1 |
|
|
0 |
|
||
|
|
-6 |
|
|
|
|
|
-1 |
|
0 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y8 |
-11 |
|
0 |
0 |
|
-1 |
-1 |
|
0 |
|
|
-1 |
|
||
|
|
-11 |
|
|
|
|
|
0 |
|
-1 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Делаем замену y1 |
↔ y6 |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
bi |
|
|
|
y6 |
|
y2 |
|
y3 |
|
|
y4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
L2 |
|
100 |
|
|
-10 |
0 |
-8 |
-8 |
|
4 |
|
-10 |
|
||
|
|
|
150 |
|
|
|
|
-6 |
|
-10 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y5 |
|
-5 |
5 |
|
-1 |
1 |
0 |
0 |
|
1 |
|
-1 |
|
||
|
|
|
|
|
|
|
|
|
-1 |
|
-1 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y1 |
|
10 |
|
|
-1 |
-1 |
0 |
0 |
|
1 |
|
0 |
|
||
|
|
|
10 |
|
|
|
|
1 |
|
0 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y7 |
|
-6 |
-6 |
0 |
0 |
-1 |
-1 |
|
-1 |
|
0 |
|
|||
|
|
|
|
|
|
|
|
-1 |
|
0 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y8 |
|
-11 |
-6 |
0 |
1 |
-1 |
-1 |
|
0 |
|
-1 |
|
|||
|
|
|
|
|
|
|
|
-1 |
|
-1 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
Еще раз заменяем y4 ↔ y5
|
|
bi |
y6 |
|
y2 |
|
|
y3 |
y5 |
|
|
|
|
|
|
|
|
|
|
|
|
L2 |
|
150 |
0 |
0 |
-8 |
-2 |
-6 |
6 |
-10 |
|
|
|
186 |
|
|
|
-10 |
|
|||
y4 |
|
5 |
1 |
1 |
0 |
1 |
-1 |
-1 |
-1 |
|
|
|
11 |
|
|
|
-1 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
y1 |
|
10 |
-1 |
-1 |
0 |
-1 |
1 |
1 |
0 |
|
|
|
4 |
|
|
|
0 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
y7 |
|
-6 |
0 |
0 |
-1 |
1 |
-1 |
-1 |
0 |
|
|
|
6 |
|
|
|
0 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
y8 |
|
-6 |
1 |
1 |
-1 |
0 |
-1 |
1 |
-1 |
|
|
|
0 |
|
|
|
-1 |
|
|||
|
|
|
|
|
|
|
|
|
||
Отсюда |
имеем: |
L =186 |
при |
y1 = |
4; |
y2 = 0; |
y3 = 6; |
|
||
y4 =11. |
Следовательно, |
минимум |
пробега |
транспорта в |
горизонтальном и вертикальном направлениях составляет
L =144 +186 = 330 км.
3. РАСЧЕТ ОПТИМАЛЬНОГО ЧИСЛА РАБОТНИКОВ НА ПРЕДПРИЯТИИ
1 °. Характерной особенностью ряда предприятий является неравномерность поступления нагрузки по часам суток, дням
недели и месяцам года. В условиях постоянного штата необходимо, с одной стороны, обеспечить выполнение всей работы, а с другой — обеспечить выполнение работы минимальным количеством работников.
Обозначим через x j — число работников, работающих
по j − му графику, bi − |
нагрузку в |
i −й рабочий день, |
выраженную в числе |
требуемых |
работников; aij − |
11
коэффициент, равный единице, если по j −му графику
предусматривается работа в i −й день, и нулю, если в тот день предусматривается выходной. Задача может быть сформулирована так: требуется найти минимум целевой функции L = x1 + x2 +... + xn при выполнении следующих
ограничений
a11 x1 + a12 x2 +... + a1n xn ≥ b1 ;
a21 x1 + a22 x2 +... + a2n xn ≥ b2 ;
……………………………….
am1 x1 + am2 x2 +... + amn xn ≥ bm .
2°. Для простоты вычислений рассмотрим пример четырехдневной рабочей недели с двумя выходными, исходные данные для которого приведены в таблице
Число |
|
|
Дни недели |
|
|
работников |
|
|
|
|
|
1 |
2 |
|
3 |
4 |
|
|
|
|
|
|
|
x1 |
В |
|
В |
|
|
|
|
|
|
|
|
x2 |
|
|
|
В |
В |
|
|
|
|
|
|
x3 |
В |
|
|
|
В |
|
|
|
|
|
|
x4 |
|
|
В |
В |
|
|
|
|
|
|
|
x5 |
В |
|
|
В |
|
|
|
|
|
|
|
x6 |
|
|
В |
|
В |
|
|
|
|
|
|
bi |
100 |
|
80 |
40 |
60 |
|
|
|
|
|
|
Запишем задачу линейного программирования следующим образом
12
L = x1 + x2 + x3 + x4 + x5 + x6
при следующих ограничениях |
|
|
|
|
|
||||
|
|
x2 + x4 + x6 ≥100; x2 |
+ x3 + x5 |
≥ 80; |
|
||||
|
|
x1 + x3 + x6 |
≥ 40; x1 + x4 |
+x5 ≥ 60; |
x j |
≥ 0. |
|
||
Введем базисные переменные и перепишем ограничения в |
|||||||||
виде, удобном для использования симплекс-метода |
|
||||||||
y1 |
= −100 −(−x2 − x4 |
− x6 ); |
y2 = −80 −(−x2 |
− x3 − x5 ); |
|
||||
|
y5 = −40 −(−x1 − x3 − x6 ); y4 = −60 −(x1 − x4 − x5 ); |
|
|||||||
|
|
L = 0 −(−x1 − x2 − x3 − x4 − x5 − x6 ). |
|
||||||
Запишем решение в виде таблицы |
|
|
|
|
|||||
|
bi |
x1 |
x2 |
x3 |
|
|
x4 |
x5 |
x6 |
|
0 |
-1 |
-1 |
-1 |
|
-1 |
|
-1 |
-1 |
L |
60 |
0 |
-1 |
|
-1 |
|
-1 |
0 |
-1 |
|
-100 |
0 |
0 |
-1 |
|
-1 |
|
0 |
-1 |
y1 |
-40 |
1 |
0 |
|
-1 |
|
-1 |
0 |
-1 |
|
-80 |
0 |
-1 |
-1 |
|
0 |
|
-1 |
0 |
y2 |
-80 |
0 |
-1 |
|
-1 |
|
0 |
-1 |
0 |
|
-40 |
-1 |
0 |
-1 |
|
0 |
|
0 |
-1 |
y3 |
-40 |
-1 |
0 |
|
-1 |
|
0 |
0 |
-1 |
|
-60 |
-1 |
0 |
0 |
|
|
|
-1 |
0 |
y4 |
60 |
1 |
0 |
|
0 |
-1 |
1 |
0 |
Выбираем разрешающий элемент, находим λ = −1и
переводим базисную переменную y4 в разряд свободной x4 .Перепишем таблицу заменяя y4 ↔ x4 .
13
|
bi |
|
x1 |
|
x2 |
|
x3 |
y4 |
|
x5 |
|
x6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
L |
60 |
0 |
|
-1 |
|
-1 |
|
-1 |
|
0 |
|
-1 |
|
120 |
|
1 |
|
-1 |
|
-1 |
|
0 |
|
1 |
0 |
y1 |
-40 |
1 |
1 |
-1 |
-1 |
-1 |
-1 |
-1 |
-1 |
0 |
1 |
-1 |
|
40 |
|
|
|
|
|
-1 |
|||||
y2 |
-80 |
0 |
1 |
-1 |
-1 |
-1 |
-1 |
0 |
0 |
-1 |
-1 |
0 |
|
-40 |
|
|
|
|
|
0 |
|||||
y3 |
-40 |
-1 |
1 |
0 |
0 |
|
-1 |
0 |
0 |
0 |
0 |
-1 |
|
40 |
|
|
|
|
|
1 |
|||||
x4 |
60 |
1 |
1 |
0 |
0 |
1 |
-1 |
-1 |
-1 |
1 |
1 |
0 |
|
60 |
|
|
|
|
|
0 |
Выберем разрешающий элемент и перепишем таблицу, заменяя y3 ↔ x3
|
bi |
|
|
x1 |
x2 |
|
y3 |
|
y4 |
|
x5 |
|
x6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L |
100 |
|
|
1 |
-1 |
|
-1 |
|
0 |
|
1 |
|
0 |
|
|
140 |
|
|
1 |
|
|
|
|
|
|
|
|
y1 |
-40 |
0 |
|
1 |
-1 |
|
0 |
|
-1 |
|
1 |
|
-1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
y2 |
-40 |
40 |
1 |
-1 |
-1 |
-1 |
1 |
0 |
|
0 |
-1 |
-1 |
0 |
|
|
|
|
|
|
|
0 |
||||||
x3 |
40 |
40 |
|
1 |
0 |
|
-1 |
|
0 |
|
0 |
|
1 |
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
x4 |
60 |
60 |
|
1 |
0 |
|
0 |
|
-1 |
|
1 |
|
0 |
|
|
|
|
0 |
|
|
|
|
|
|
|
|
Выберем разрешающий элемент и перепишем таблицу, заменяя y2 ↔ x2
14
|
bi |
|
x1 |
y2 |
y3 |
|
y4 |
|
x5 |
x6 |
|
|
|
|
|
|
|
|
|
|
|
L |
140 |
|
2 |
1 |
0 |
|
0 |
|
2 |
0 |
y1 |
0 |
|
2 |
1 |
1 |
|
-1 |
|
1 |
-1 |
x2 |
40 |
|
-1 |
- 1 |
- 1 |
|
0 |
|
-1 |
0 |
x3 |
40 |
|
1 |
0 |
-1 |
|
0 |
|
1 |
1 |
x4 |
60 |
|
1 |
0 |
0 |
|
- 1 |
|
1 |
0 |
Целевая |
функция |
Lmin =140 при |
x2 = 40, |
x3 |
= 40, |
x4 = 60, x1 = x5 = x6 =0.
4. ЗАДАЧА НАХОЖДЕНИЯ КРАТЧАЙШЕГО ПУТИ
1°. Граф задается конечным множеством вершин или узлов ( a1 , a2 ,..., an ) и множеством дуг или ребер ( l1 ,l2 ,...,lm ),
соединяющих некоторые или все вершины. Если ребра ориентированы, что обычно показывают стрелками, то они называются дугами, а граф с такими ребрами называется
ориентированным графом. Если ребра графа не имеют ориентации, то граф называют неориентированным. Каждая дуга может быть задана упорядоченной парой вершин (ai a j ) ,
где ai - называется начальной, а a j — конечной вершиной дуги.
Сетью называется граф, каждой дуге которого поставлено в соответствие некоторое неотрицательное число. Эти числа могут выражать длину, пропускную способность, стоимость перевозки и т.п. Иногда сеть ассоциируется с транспортной сетью или сетью связи.
Путем в графе называют последовательность дуг или вершин, в которой каждая конечная вершина является начальной вершиной следующего ребра. Простым путем называется путь, в котором каждая вершина обходится не более одного раза. Если в простом пути ориентации дуг не
15
совпадают, то такой путь называется простой цепью. Граф, в котором каждая пара вершин соединена некоторой цепью, называется связным. Задача нахождения кратчайшего пути между двумя заданными вершинами представляет одну из главных задач теории сетей.
2°. Пусть требуется найти кратчайшие пути от одной вершины ко всем остальным вершинам сети.
Алгоритм Флойда. 1) Введем матрицу Cij , в которой записаны длины всех дуг сети
0, если i=j
С = длине дуги между вершинами ai и a j
∞, если дуги между ai и a j нет.
Положим κ =1 .
2)Для всех i ≠ κ и j ≠ k осуществить операцию
Cij := {Cij ,Cik +Ckj }.
3)Если k = m, вычисления закончены, иначе перейти к
п. 4.
4) k := k +1 и перейти к шагу 2.
Алгоритм применим и для отрицательных длин ребер.
3°. Алгоритм Дейкстры. Алгоритм позволяет найти кратчайшие пути от заданной вершины до всех остальных. Обозначим: Сij −расстояние от узла ai до a j ;
li′ — временная пометка для вершины ai , li —
постоянная пометка для вершины ai ; |
m — число вершин |
в сети. |
|
Полагаем: |
|
1. ls = 0, li = ∞ для i =1,..., m; i ≠ s; |
k =1; p = s. |
2. Для всех соседей вершины a p с временными пометками
16
изменить пометки по формуле
li′ = min(li′,l p +C pi ).
3. Для всех вершин, имеющих временные пометки, найти lr = min li′.
4. Положить p = r, k := k +1. Если k = m , вычисления
закончены, иначе перейти к шагу 2.
4.1. Пусть дана сеть (рис. 31.3). Найти кратчайшие пути между всеми узлами.
Рис. 3 Решение. Составим исходную матрицу
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
0 |
1 |
∞ |
∞ |
∞ |
5 |
2 |
1 |
0 |
3 |
∞ |
6 |
2 |
3 |
∞ |
3 |
0 |
5 |
1 |
3 |
4 |
∞ |
∞ |
5 |
0 |
1 |
∞ |
5 |
∞ |
6 |
1 |
1 |
0 |
3 |
6 |
5 |
2 |
3 |
∞ |
3 |
0 |
При k =1 матрица не меняется, поэтому рассмотрим случай, когда k = 2.
C13 = min(C13 ,C12 +C23 ) = min(∞,1 +3) = 4; C14 = min(C14 ,C12 +C24 ) = min(∞,1 + ∞) = ∞; C15 = min(C15 ,C12 +C25 ) = min(∞,1 + 6) = 7; C16 = min(C16 ,C12 +C26 ) = min(5,1 + 2) = 3.
Найдем элементы матрицы во второй строке матрицы
C21 = min(C21 ,C22 +C21 ) = min(1,1) =1;
C22 = 0;
17
C23 = min(C23 ,C22 +C23 ) = min(3,3) = 3; C24 = min(C24 ,C22 +C24 ) = min(∞, ∞) = ∞; C25 = min(C25 ,C22 +C25 ) = min(6,6) = 6; C26 = min(C26 ,C22 +C26 ) = min(2,2) = 2.
Для третьей строки найдем
C31 |
= min(C31 ,C32 |
+C21 ) = min(∞,3 +1) = 4; |
C32 |
= min(C32 ,C32 |
+C22 ) = min(3,3) = 3; |
C33 = 0 ; |
|
|
C34 |
= min(C34 ,C32 +C24 ) = min(5,3 +∞) = 5; |
|
C35 |
= min(C35 ,C32 |
+C25 ) = min(1,3 + 6) =1; |
C36 |
= min(C36 ,C32 |
+C26 ) = min(3,3 + 2) = 3; |
Для четвертой строки |
||
C41 |
= min(C41 ,C42 |
+C21 ) = min(∞, ∞ +1) = ∞; |
C42 |
= min(C42 ,C42 |
+C22 ) = ∞; |
C43 |
= min(C43 ,C42 |
+C23 ) = min(5, ∞ +3) = 5; |
C44 |
= 0; |
|
C45 |
= min(C45 ,C42 |
+C25 ) = min(1, ∞ + 6) =1; |
C46 |
= min(C46 ,C42 |
+C26 ) = min(∞, ∞ + 2) = ∞. |
Пятая строка примет вид |
||
C51 |
= min(C51 ,C52 |
+C21 ) = min(∞,6 +1) = 7; |
C52 |
= min(C52 ,C52 |
+C22 ) = min(6,6) = 6; |
C53 |
= min(C53 ,C52 |
+C23 ) = min(1,6 +3) =1; |
C54 |
= min(C54 ,C52 |
+C24 ) = min(1,6 + ∞) =1; |
C55 |
= 0; |
|
C56 |
= min(C56 ,C52 |
+C26 ) = min(3,6 + 2) = 3. |
Элементы шестой строки
C61 = min(C61 ,C62 +C21 ) = min(5,2 +1) = 3; C62 = min(C62 ,C62 +C22 ) = min(2,2) = 2; C63 = min(C63 ,C62 +C23 ) = min(3,2 +3) = 3;
18
C64 = min(C64 ,C62 +C24 ) = min(∞,2 + ∞) = ∞; C65 = min(C65 ,C62 +C25 ) = min(3,2 + 6) = 3;
C66 = 0.
Матрица, полученная после второй итерации, имеет вид
|
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
0 |
1 |
4 |
∞ |
7 |
3 |
2 |
|
1 |
0 |
3 |
∞ |
6 |
2 |
3 |
|
4 |
3 |
0 |
5 |
1 |
3 |
4 |
|
∞ |
∞ |
5 |
0 |
1 |
∞ |
5 |
|
7 |
6 |
1 |
1 |
0 |
3 |
6 |
|
3 |
2 |
3 |
∞ |
3 |
0 |
Рассмотрим случай, когда k = 3 |
|
|
|
||||
C12 |
= min(C12 ,C13 +C32 ) = min(1,4 +3) =1; |
|
|
||||
C13 |
= min(C13 ,C13 +C33 ) = 4; |
|
|
|
|||
C14 |
= min(C14 ,C13 +C34 ) = min(∞,4 +5) = 9; |
|
|
||||
C15 |
= min(C15 ,C13 +C35 ) = min(7,4 +1) = 5; |
|
|
||||
C16 |
= min(C16 ,C13 +C36 ) = min(3,4 +3) = 3. |
|
|
||||
Для второй строки получим |
|
|
|
||||
C23 |
= min(C23 ,C23 +C33 ) = 3; |
|
|
|
|||
C24 |
= min(C24 ,C23 +C34 ) = min(∞,3 +5) = 8; |
|
|
||||
C25 |
= min(C25 ,C23 +C34 ) = min(6,3 +1) = 4. |
|
|
||||
Приведем теперь расчет элементов, которые меняют свои |
|||||||
значения |
|
|
|
|
|
||
C34 |
= min(C34 ,C33 +C34 ) = min(5,5) = 5; |
|
|
||||
C41 |
= min(C41 ,C13 +C31 ) = min(∞,5 + 4) = 9; |
|
|
||||
C42 |
= min(C42 ,C43 +C32 ) = min(∞,5 +3) = 8; |
|
|
||||
C43 |
= min(C43 ,C43 +C33 ) = 5; |
|
|
|
|||
C46 |
= min(C46 ,C43 +C36 ) = min(∞,5 +3) = 8; |
|
|
||||
C51 |
= min(C51 ,C53 +C31 ) = min(7,1 + 4) = 5; |
|
|
||||
C52 |
= min(C52 ,C53 +C32 ) = min(6,1 +3) = 4; |
|
|
19