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

Методы решения задач оптимизации. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
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

 
. Те-
кущее базисное решение является оптимальным, поскольку в строке целе­вой функции не осталось отрицательных коэффициентов. Данное решение совпадает с решением, полученным с помощью графического метода.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]