Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Методы решения задач оптимизации. Учебное пособие
.pdf
5.2. Определение базисных решений
51
x2 + 2x4 = 8,
2x2 + x4 = 4.
Решаем систему уравнений. Выражаем из первого уравнения: х2 =
= 8 – 2x4, подставляем это выражение во второе уравнение:
2(8 – 2x4) + x4 = 4 16 – 4x4 + x4 = 4 –3x4 = –12 x4 = 4.
Возвращаемся к первому уравнению: х2 = 8 – 42 = 0.
Результат. Полученное базисное решение (х2 = 0, x4 = 4) является
допустимым и единственным.
7. Нулевые (небазисные) переменные: x1, х3 и x4. Тогда система
преобразуется к следующему виду:
х2 + 3х5 = 8,
2x2 + 6x5 = 4.
Решаем систему уравнений. Выражаем из первого уравнения: х2 =
= 8 – 3x5, подставляем это выражение во второе уравнение:
2(8 – 3x5) + 6x5 = 4 16 – 6x5 + 6x5 = 4 0 –12.
Результат. Решения не существует, так как уравнения несовместны.
8. Нулевые (небазисные) переменные: х1, х2 и x5. Тогда система
преобразуется к следующему виду:
4х3 + 2х4 = 8,
2х3 + х4 = 4.
Решаем систему уравнений. Выражаем из второго уравнения: х4 =
= 4 – 2x3, подставляем это выражение в первое уравнение:
4x3 + 2(4 – 2x3) = 8 4x3 + 8 – 4x3 = 8 0 = 0.
Результат. Единственного решения системы уравнений не существует, так как уравнения зависимы (второе уравнение получается из первого уравнения путем деления на 2). То есть в данном случае система
имеет бесконечное множество решений.
9. Нулевые (небазисные) переменные: х1, х2 и x4. Тогда система
преобразуется к следующему виду:

5. Симплекс–метод
52
4х3 + 3х5 = 8,
2x3 + 6x5 = 4.
Решаем систему уравнений. Выражаем из второго уравнения: х3 =
= (4 – 6x5) / 2 = 2 – 3x5, подставляем это выражение в первое уравнение:
4(2 – 3x5) + 3x5 = 8 8 – 12x5 + 3x5 = 8 –9x5 = 0 x5 = 0.
Возвращаемся ко второму уравнению: х3 = 4 – 0 = 4.
Результат. Полученное базисное решение (х3 = 4, x5 = 0) является
допустимым и единственным.
10. Нулевые (небазисные) переменные: х1, х2 и x3. Тогда система
преобразуется к следующему виду:
2х4 + 3х5 = 8,
x4 + 6x5 = 4.
Решаем систему уравнений. Выражаем из второго уравнения: х4 =
= 4 – 6x5, подставляем это выражение в первое уравнение:
2(4 – 6x5) + 3x5 = 8 8 – 12x5 + 3x5 = 8 –9x5 = 0 x5 = 0.
Возвращаемся ко второму уравнению: х4 = 4 – 0 = 4.
Результат. Полученное базисное решение (х4 = 4, x5 = 0) является
допустимым и единственным.
Ответ. Среди 10 возможных вариантов базисных решений 5 явля-
ются единственными и допустимыми, 2 недопустимыми, в одном случае
система не имеет единственного решения, и еще в одном случае решения
системы не существует.
5.3. Алгоритм симплекс-метода
Подобно графическому методу, симплекс-метод позволяет найти
решений задач линейного программирования. Симплекс-метод также базируется на идее направленного перебора угловых точек области допустимых решений (вершин многоугольника) до момента нахождения точки, соответствующей оптимальному решению задачи. Алгоритм сим-

5.3. Алгоритм симплекс-метода
53
плекс-метода находит оптимальное решение, рассматривая ограниченное
количество допустимых базисных решений [5].
Симплекс-метод начинает решение с некоторого начального допустимого базисного решения, а затем на каждой итерации выполняется
поиск нового базисного решения, которое позволяет улучшить значение
целевой функции.
Как нам уже известно из предыдущего раздела, число базисных
(ненулевых) переменных является постоянным и равно числу ограничений m системы. Поэтому на каждой итерации алгоритма, для того, чтобы
ввести в базис новую переменную, необходимо одну из текущих базисных
переменных сделать нулевой, т.е. перевести в небазисные. В соответствии
с терминологией симплекс-метода выбранная нулевая переменная называется вводимой в базис, а удаляемая базисная переменная – исключаемой
из базиса [5].
Пример 5.3. Используем задачу из примера 4.1 для того, чтобы по-
дробно рассмотреть алгоритм работы симплекс-метода. Эта задача в стандартной форме запишется так.
Максимизировать целевую функцию f = 7x1 + 2x2 + 0x3 + 0x4 + 0x5 +
+ 0x
6
при следующих ограничениях:
3x1 + 2x2 + x3 = 24,
x1 + 2x2 + x4 = 12,
–x1 + x2 + x5 = 3,
4x1 – 3x2 + x6 = 24,
х1, х2, x3, x4, x5, x6, 0.
Здесь x3, x4, x5, x6 – дополнительные (остаточные) переменные, добавленные в неравенства для преобразования их в равенства.
Преобразуем строку целевой функции, для чего перенесем выражение из правой части равенства в левую:
f – 7x1 – 2x2 + 0x3 + 0x4 + 0x5 + 0x6 = 0.
Теперь запишем данную задачу в виде специальной симплекстаблицы. Первая строка симплекс-таблицы соответствует строке целевой

5. Симплекс–метод
54
функции задачи, а остальные строки – уравнениям ограничений. Столбцы
симплекс-таблицы соответствуют переменным задачи, кроме того есть
отдельный столбец, где указаны текущие базисные переменные, а также
столбец, соответствующий правым частям уравнений. Числа в ячейках
симплекс-таблицы соответствуют коэффициентам при переменных. В
итого нашу задачу можно представить в виде следующей симплекстаблицы.
Базис
x1
x2
x3
x4
x5
x6
Решение
f
–7
–2 0 0 0 0 0 f-строка
x3 3 2 1 0 0 0
24
x3-строка
x4 1 2 0 1 0 0
12
x4-строка
x5
–1 1 0 0 1 0 3
x5-строка
x6 4 –3 0 0 0 1
24
x6-строка
Как видно из таблицы, начальное допустимое базисное решение
составляют дополнительные переменные x3, x4, x5, x6. Их значения автоматически отображаются в столбце "Решение": x3 = 24, x4 = 12, x5 = 3 и x6 =
= 24. Значение целевой функции при этом решении равно нулю.
Очевидно, что данное решение не является оптимальным, посколь-
ку переменные x1 и х2 здесь являются небазисными и, следовательно, равны нулю. Формально определение того, является ли текущее решение
оптимальным, осуществляется проверкой коэффициентов при переменных в строке целевой функции. Если в строке целевой функции симплекстаблицы есть отрицательные (для задачи максимизации) или положительные (для задачи минимизации) коэффициенты, то текущее базисное решение не является оптимальным и, следовательно, его необходимо улучшать. Для этого в текущее базисное решение необходимо ввести новую
переменную. В качестве вводимой в базис переменной среди множества
небазисных выбирается переменная, имеющая наибольший отрицательный (положительный – для задачи минимизации) коэффициент в f-строке.
Если имеется несколько переменных с одинаковым значением, то вводимая переменная выбирается среди них случайным образом. В нашем случае наибольший отрицательный коэффициент (–7) имеет переменная x1,
она и будет вводимой в базис переменной.
При этом число базисных переменных должно оставаться постоян-
ным (равно m), поэтому необходимо какую-то переменную из базиса ис-

5.3. Алгоритм симплекс-метода
55
ключить. Для того чтобы определить какую из базисных переменных,
необходимо исключить из базиса, для каждой базисной переменной мы
находим отношение коэффициента в столбце «Решение» и коэффициента
в столбце, соответствующем вводимой переменной. Например, для нашего случая, это можно представить в виде следующей таблицы.
Базис
x1
Решение
Отношение (точка пересечения)
x3 3 24
24 / 3 = 8
x4 1 12
12 / 1 = 12
x5
–1 3 3 / (–1) = –3 (Не подходит)
x6 4 24
24 / 4 = 6 (Минимум)
Среди полученных результатов мы выбираем минимальный положительный. Нас будут интересовать только неотрицательные результаты, так как они соответствуют направлению возрастания переменной
х1. Минимальное неотрицательное отношение соответствует переменной
x6, следовательно, именно эту переменную мы должны исключить из
базиса на следующей итерации. Столбец, соответствующий вводимой в
базис переменной, будем далее называть ведущим столбцом, строку,
соответствующую исключаемой из базиса переменной, – ведущей строкой, а элемент, находящийся на пересечении ведущей строки и столбца,
– ведущим элементом.
Вычисление нового базисного решения основывается на методе исключения переменных (методе Гаусса-Жордана). Согласно данному методу, для построения симплекс-таблице, соответствующей новому базисному решению мы должны выполнить ряд действий. Во-первых, определим
новую ведущую строку.
Базис
x1
x2
x3
x4
x5
x6
Решение
f
–7
–2 0 0 0 0 0
x3
3 2 1 0 0 0 24
x4
1 2 0 1 0 0 12
x5
–1 1 0 0 1 0 3
x6
4
–3 0 0 0 1
24
Ведущая
строка
Ведущий
столбец

5. Симплекс–метод
56
Для этого делим каждый коэффициент ведущей строки (x6-строка)
на ведущий элемент.
Новая ведущая строка = Текущая ведущая строка / Ведущий элемент.
В нашем примере каждый элемент ведущей строки необходимо
разделить на 4 (ведущий элемент). Полученную таким образом новую
ведущую строку записываем в новую симплекс-таблицу.
Базис
x1
x2
x3
x4
x5
x6
Решение
f
x3
x4
x5
x1 1 –3/4 0 0 0 1/4
24/4 = 6
Новая ведущая строка
После определения новой ведущей строки переходим к вычисле-
нию всех остальных строк новой симплекс-таблицы. Для этого используем следующую формулу:
Новая строка = Текущая строка – Ее коэффициент в ведущем
столбце Новая ведущая строка.
Разберем процесс пересчета коэффициентов симплекс-таблицы для
нашего примера. Вычисляем элементы остальных строк новой симплекстаблицы.
1. f-строка. Коэффициент строки целевой функции в ведущем
столбце текущей симплекс-таблицы равен –7. Умножим каждый элемент
новой ведущей строки на (–7):
1(–7) = –7; (–3/4)(–7) = (21/4); 0; 0; 0; 1/4(–7) = (–7/4); 6(–7) = –42.
Теперь отнимем от текущей f-строки полученную в результате
умножения строку-произведение:
Новая f-строка: –7 – (–7) = 0; –2 – 21/4 = –29/4; 0; 0; 0; 0 – (–7/4) =
= 7/4; 0 – 42 = 42.
Вносим полученные значения в f-строку новой симплекс-таблицы.
Аналогично рассчитываем значения коэффициентов в строках x3,
x4, x5.

5.3. Алгоритм симплекс-метода
57
Базис
x1
x2
x3
x4
x5
x6
Решение
f 0 –29/4
0 0 0
7/4
42 x3
x4
x5
x1
1
–3/4
0 0 0
1/4
24/4 = 6
Новая ведущая строка
2. x3-строка. Коэффициент строки x3 в ведущем столбце текущей
симплекс-таблицы равен 3. Умножим каждый элемент новой ведущей
строки на 3:
13 = 3; (–3/4)3 = (–9/4); 0; 0; 0; (1/4)3 = 3/4; 63 = 18.
Теперь отнимем от текущей x3-строки полученную в результате
умножения строку-произведение:
Новая x3-строка: 3 – 3 = 0; 2 – (–9/4) = 17/4; 1 – 0 = 1; 0; 0; 0 – 3/4 =
= –3/4; 24 – 18 = 6.
3. x4-строка. Коэффициент строки x4 в ведущем столбце текущей
симплекс-таблицы равен 1. Умножим каждый элемент новой ведущей
строки на 1:
11 = 1; (–3/4)1 = (–3/4); 0; 0; 0; (1/4)1 = 1/4; 61 = 6.
Теперь отнимем от текущей x4-строки полученную в результате
умножения строку-произведение:
Новая x4-строка: 1 – 1 = 0; 2 – (–3/4) = 11/4; 0; 1 – 0 = 1; 0; 0 – 1/4 =
= –1/4; 12 – 6 = 6.
4. x5-строка. Коэффициент строки x5 в ведущем столбце текущей
симплекс-таблицы равен (–1). Умножим каждый элемент новой ведущей
строки на (–1):
1(–1) = (–1); (–3/4)(–1) = 3/4; 0; 0; 0; (1/4)(–1) = –1/4; 6(–1) = (–6).
Теперь отнимем от текущей x5-строки полученную в результате
умножения строку-произведение:
Новая x5-строка: (–1) – (–1) = 0; 1 –3/4 = 1/4; 0; 0; 1 – 0 = 1;
0 – (–1/4) = 1/4; 3 – (–6) = 9.
В результате проведенных вычислений получим новую симплекс-
таблицу, соответствующую новому базисному решению (х3, x4, x5, x1).

5. Симплекс–метод
58
Базис
x1
x2
x3
x4
x5
x6
Решение
f
0
–29/4 0 0 0 7/4
42
x3
0
17/4 1 0 0 –3/4 6 x4
0
11/4 0 1 0 –1/4 6 x5
0
1/4 0 0 1 1/4 9 x1
1
–3/4 0 0 0 1/4
6
Как мы видим, полученное новое базисное решение (x3 = 6, x4 = 6,
x5 = 9, х1 = 6, f = 42) позволило улучшить значение целевой функции (было
f = 0, стало f = 42). Однако текущее базисное решение еще не является
оптимальным, поскольку в строке целевой функции имеется отрицательный коэффициент. Этот коэффициент (–29/4) соответствует переменной
x2. Следовательно, переменная x2 будет вводимой в базис переменной на
следующей итерации симплекс-метода.
Определим теперь исключаемую из базиса переменную.
Базис
x2
Решение
Отношение (точка пересечения)
x3
17/4 6 6 / (17/4) = 24/17 (Минимум)
x4
11/4 6 6 / (11/4) = 24/11
x5
1/4
9
9 / 1/4 = 36
x1
–3/4 6 6 / (–3/4) = –8 (Не подходит)
Минимальное неотрицательное отношение соответствует перемен-
ной x6, следовательно, именно эту переменную мы должны исключить из
базиса на следующей итерации.
Определим новую ведущую строку. Для этого делим каждый коэф-
фициент ведущей строки на ведущий элемент (17/4). Полученную таким
образом новую ведущую строку записываем в новую симплекс-таблицу.
Базис
x1
x2
x3
x4
x5
x6
Решение
f
x2 0 1
4/17 0 0
–3/17
24/17
Новая ведущая строка
x4
x5
x1
1. f-строка. Коэффициент строки целевой функции в ведущем
столбце текущей симплекс-таблицы равен (–29/4). Умножим каждый элемент новой ведущей строки на (–29/4):

5.3. Алгоритм симплекс-метода
59
0; 1(–29/4) = (–29/4); 4/17(–29/4) = (–29/17); 0; 0; (–3/17)(–29/4) =
= 87/68; (24/17)(–29/4) = (–696/68).
Теперь отнимем от текущей f-строки полученную в результате
умножения строку-произведение:
Новая f-строка: 0; (–29/4) – (–29/4) = 0; 0 – (–29/17) = (29/17); 0; 0;
(7/4) – (87/68) = (32/68 или 8/17); 42 – (–696/68) =
16
52
68
или
4
52
17
.
2. x4-строка. Коэффициент строки x4 в ведущем столбце текущей
симплекс-таблицы равен 11/4. Умножим каждый элемент новой ведущей
строки на 11/4:
0; 1(11/4) = (11/4); (4/17)(11/4) = (11/17); 0; 0; (–3/17) (11/4) =
= (–33/68); (24/17)(11/4) = (66/68).
Теперь отнимем от текущей x4-строки полученную в результате
умножения строку-произведение:
Новая x4-строка: 0; (11/4) – (11/4) = 0; 0 – (11/17) = (–11/17); 1 – 0 =
= 1; 0; (–1/4) – (–33/68) = 16/68 (или 4/17); 6 – (66/68) =
2
5
68
.
3. x5-строка. Коэффициент строки x5 в ведущем столбце текущей
симплекс-таблицы равен 1/4. Умножим каждый элемент новой ведущей
строки на 1/4:
0; 1(1/4) = (1/4); (4/17)(1/4) = (1/17); 0; 0; (–3/17)(1/4) = (–3/68);
(24/17)(1/4) = (6/17).
Теперь отнимем от текущей x5-строки полученную в результате
умножения строку-произведение:
Новая x5-строка: 0; (1/4) – (1/4) = 0; 0 – (1/17) = (–1/17); 0; 1 – 0 = 1;
(1/4) –– (–3/68) = (20/68 или 5/17); 9 – (6/17) =
9
8
17
.
4. x6-строка. Коэффициент строки x6 в ведущем столбце текущей
симплекс-таблицы равен (–3/4). Умножим каждый элемент новой ведущей строки на (–3/4):
0; (1)(–3/4) = (–3/4); (4/17)(–3/4) = (–3/17); 0; 0; (–3/17)(–3/4) = (9/68);

5. Симплекс–метод
60
(24/17)(–3/4) = (–18/17).
Теперь отнимем от текущей x6-строки полученную в результате
умножения строку-произведение:
Новая x6-строка: 1 – 0 = 1; (–3/4) – (–3/4) = 0; 0 – (–3/17) = (3/17); 0;
0; (1/4) – (9/68) = 8/68 (или 2/17); 6 – (–18/17) =
1
7
17
.
Эти вычисления приводят к следующей таблице.
Базис
x1
x2
x3
x4
x5
x6
Решение
f 0 0
29/17 0 0
8/17
4
52
17
x2 0 1
4/17 0 0
–3/17
24/17
x4 0 0
–11/17
1 0 4/17
2
5
68
x5 0 0
–1/17 0 1
5/17
9
8
17
x1 1 0
3/17 0 0
2/17
1
7
17
После второй итерации симплекс-метода, мы получили новое ба-
зисное решение
2 4 5 1
24 1 9 1 4
, 5 , 8 , 7 , 52
17 34 17 17 17
x x x x f
. Те-
кущее базисное решение является оптимальным, поскольку в строке целевой функции не осталось отрицательных коэффициентов. Данное решение
совпадает с решением, полученным с помощью графического метода.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
