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

Математические основы теории принятия решений

..pdf
Скачиваний:
19
Добавлен:
15.11.2022
Размер:
932.24 Кб
Скачать

них заменяют двумя новыми неотрицательными переменными x+j и xj , полагая

xj = x+j + xj , x+j ≥ 0, xj ≥ 0.

Таким образом, любую задачу линейного программирования удаётся свести к канонической задаче ЛП (6.3)–(6.5).

Система ограничений (6.4), (6.5) задаёт выпуклое множество – многогранник D. В частности, это множество может быть неограниченным.

6.3.2. Базисные и допустимые решения задачи линейного программирования

Рассмотрим систему (6.5) ограничений задачи ЛП:

n

aij xj = bi, i = 1, 2, …, m; m < n .

j = 1

Это прямоугольная система m линейных уравнений с n неизвестными. Если она имеет хотя бы одно решение, она называется совместной. Если одно из уравнений этой системы можно представить в виде линейной комбинации остальных, то система (6.5) называется избыточной. Избыточную систему всегда можно свести к неизбыточной, удалив из неё «лишние» уравнения, то есть те, которые являются линейными комбинациями других. Поэтому далее без ограничения общности будем считать, что система (6.5) неизбыточна, то есть её ранг равен m. Система (6.5) – прямоугольная, так как число m уравнений в этой системе меньше, чем число n неизвестных xi. Тем не менее эта система ограничений может оказаться несовместной.

Согласно известной теореме Кронекера–Капели, система (6.5) совместна в том и только в том случае, когда ранг матрицы

a i j║, i = 1, 2, …, m, j = 1, 2, …, n,

51

этой системы равен рангу её расширенной (с присоединённым столбцом bi) матрицы. Если ранг расширенной матрицы больше ранга матрицы ║ai j║, то система (6.5) несовместна.

Далее предположим, что система (6.5) совместна. Тогда nm переменных являются свободными, а остальные образуют базис решений этой системы. Свободным переменным можно придавать произвольные значения. Если свободные переменные равны нулю, решение системы (6.5) называется базисным. Если все компоненты решения системы (6.5) неотрицательны, то такое решение называется допустимым. Очевидно, если система (6.5) имеет допустимое решение, то она имеет и базисное допустимое решение.

Так как система (6.5) линейна, то любая линейная комбинация её решений также является решением. Следовательно, множество всех допустимых решений системы (6.5) выпукло. Геометрически каждое из уравнений системы (6.5) представляет собой плоскость в n-мерном пространстве переменных x1, x2, …, xn (гиперплоскость). Поэтому вся совокупность допустимых решений – это выпуклый многогранник D в этом пространстве, а каждое базисное допустимое решение соответствует какой-либо из крайних точек этого выпуклого многогранника, то есть его грани или вершине. В каждой вершине многогранника D восстановим «столб», высота которого равна значению целевой функции F в этой вершине. Так как целевая функция задачи ЛП, будучи линейной, геометрически также представляет собой гиперплоскость в пространстве переменных x1, x2, …, xn, то, по построению, эта гиперплоскость пройдёт через вершины «столбов».

При этом, очевидно, максимальное и минимальное значения целевой функции будут достигаться либо в вершине, либо на грани выпуклого многоугольника D. Эти соображения указывают на то, что решение задачи (6.3)–(6.5) линейного программирования можно найти, поочерёдно вычисляя значения целевой функции в вершинах многогранника D, определяемого условиями (6.4) и (6.5).

52

Этот алгоритм требует решения

Cnm

=

n !

 

 

систем

 

 

 

m ! (n m)

!

 

 

 

 

уравнений, а это число велико даже при небольших значениях числа n и стремительно возрастает при его увеличении. Между тем многие практические задачи линейного программирования содержат сотни переменных. Потому потребовался более рациональный метод решения задач ЛП. Один из наиболее распространённых в настоящее время методов решения задач ЛП – это так называемый симплекс-метод.

6.3.3. Симплекс-метод решения задач линейного программирования

Симплекс-метод – универсальный метод решения задач линейного программирования. Это итерационный метод, то есть оптимальное решение ищется с помощью последовательных приближений.

Рассмотрим алгоритм симплекс-метода на примере.

Пример 6.2.

Постановка задачи. Пусть предприятие производит три вида продукции: G1, G2, G3. От продажи единицы продукции вида G1 предприятие получает прибыль в размере c1 = 1 у.е., от продажи единицы продукции вида G2 – в размере c2 = 2 у.е., а от продажи продукции вида G3 – в размере c3 = 3 у.е.

Для выпуска продукции предприятие располагает тремя видами ресурсов: R1, R2 и R3 в количестве, заданном вектором ограничений

b = (b1, b2, b3) = (800, 600, 1000).

Объемы затрат ресурсов на производство продукции представлены технологической матрицей A =║ai j║ (i = 1, 2, 3; j = 1, 2, 3), которая в данном случае является квадратной:

4

2

4

 

 

 

 

 

 

A =

7

5

1

.

 

2

4

3

 

 

 

53

Требуется определить план производства, максимизирующий прибыль предприятия от производства продукции с учетом указанных ограничений.

Решение задачи симплекс-методом. Математическая постановка данной задачи имеет следующий вид:

y = x1 +2x2 +3x3 max

 

4x1

+2x2 +4x3 800;

 

 

 

+5x2 + x3 600;

(6.8)

7x1

2x

+4x

+3x 1000;

 

 

1

2

3

 

x , x , x 0.

 

 

1

2 3

 

 

Задача (6.8) – это задача линейной оптимизации. Для решения с помощью симплекс-метода её необходимо преобразовать к каноническому виду. С этой целью выполним следующие преобразования.

Введем новые (дополнительные) переменные z1, z2, z3. Их число равно размерности вектора b ограничений (условия неотрицательности переменных x1, x2 , x3 не учитываются).

После этих преобразований задача (6.8) примет канонический

вид:

y = −x1 2x2 3x3 +0z1 +0z2 +0z3 min

4x1 +2x2 +4x3 + z1 =800;

 

 

 

 

 

+5x2

+ x3 + z2 = 600;

 

 

(6.9)

7x1

 

 

2x

+4x

+3x

 

+ z

=1000;

 

 

 

 

1

 

2

 

 

 

 

3

3

 

 

 

 

 

x , x , x , z , z

2

, z 0.

 

 

 

 

 

1

2

3

 

1

 

 

3

 

 

 

 

 

Технологическая матрица преобразованной задачи запишется

в следующем виде:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

2

4

1

0

0

 

 

 

 

=

 

7

5 1 0 1 0

 

 

 

 

A

 

 

.

 

 

 

 

 

 

 

2

4

3

0

0

1

 

 

 

 

 

 

 

 

 

54

Собственно сам симплекс-метод отыскания максимального значения целевой переменной y начинается с построения так называемой симплекс-таблицы. Число строк в этой таблице на две единицы больше числа вновь введенных переменных, а число столбцов в ней на две единицы больше, чем общее число всех входных переменных.

Первая строка в симплекс-таблице – это строка, состоящая из обозначений БП, СЧ и обозначений переменных x1, x2, x3, z1, z2, z3. Таким образом, в нашем примере в таблице ожидается восемь столбцов.

Сначала опишем первый столбец симплекс-таблицы – это столбец, обозначенный БП. Он содержит обозначения базисных переменных z1, z2, z3, а также целевой переменной y. В качестве базисных обычно принимают новые переменные (в данном случае z1, z2, z3).

Второй столбец таблицы имеет обозначение СЧ: он составляется из свободных членов b1, b2, b3 линейных неравенств системы ограничений и свободного члена целевой функции (который в нашем примере равен нулю).

Последующие столбцы и строки симплекс-матрицы (кроме последней строки) составляются из соответствующих коэффициентов aij при входных переменных модели и заполняются на основе но-

вой (преобразованной) технологической матрицы A.

Последняя строка симплекс-таблицы состоит из свободного члена преобразованной целевой функции (см. систему (6.9)), уже поставленного ранее во второй столбец, и коэффициентов при переменных x1, x2, x3, z1, z2, z3, то есть из коэффициентов cj и нулей.

Cоставленная таким образом симплекс-таблица рассматриваемой задачи примет следующий вид:

55

Далее начинается процесс последовательного преобразования симплекс-таблицы. При этом каждый шаг итерационного процесса (каждая итерация) состоит из нескольких этапов.

1.На первом этапе определяется так называемый «разрешающий» столбец симплекс-таблицы.

Разрешающим называется столбец, у которого последний элемент удовлетворяет двум условиям:

1) элемент отрицателен;

2) элемент наибольший по модулю.

Если таких элементов оказывается несколько, то произвольным образом выбирается один из них.

2.На втором этапе определяется «разрешающая» строка. Разрешающей называется строка, которая удовлетворяет двум

условиям:

1)элемент разрешающего столбца в этой строке положителен;

2)частное от деления элемента столбца свободных членов на элемент разрешающего столбца в этой строке минимально.

Если таких строк оказывается несколько, то выбирается любая из них.

56

3. На третьем этапе определяется «разрешающий» элемент сим- плекс-таблицы.

Разрешающим называется элемент, находящийся на пересечении разрешающей строки и разрешающего столбца.

Перейдём к рассмотрению нашего примера.

Первая итерация. Начнём выполнять первую итерацию. 1. Определим разрешающий столбец.

Впоследней строке симплекс-таблицы стоят три отрицательных элемента: 1; 2; 3. Максимальный по модулю – это элемент –3.

Следовательно, столбец, соответствующий переменной x3, является разрешающим.

2. Определим разрешающую строку.

Вразрешающем столбце стоят три положительных элемента:

4; 1; 3.

Рассмотрим частные от деления элемента столбца свободных членов на элемент разрешающего столбца:

для элемента 4: 800/4 = 200; для элемента 1: 600/1 = 600;

для элемента 3: 1000/3 ≈ 333,3.

Для элемента 4 частное оказалось минимальным. Следовательно, строка, соответствующая переменной z1, является разрешающей.

3. Элемент, находящийся на пересечении разрешающей строки

иразрешающего столбца, – это разрешающий элемент 4. Полученные результаты представлены в следующей симплекс-

таблице:

БП

СЧ

x1

X2

x3

z1

z2

z3

z1

800

4

2

4

1

0

0

z2

600

7

5

1

0

1

0

z3

1000

2

4

3

0

0

1

y

0

1

2

3

0

0

0

 

 

 

 

 

 

 

 

57

Теперь можно приступать к итерационной процедуре.

Для получения первой итерации симплекс-таблицу необходимо преобразовать следующим образом. Сначала необходимо все элементы разрешающей строки разделить на разрешающий элемент. Теперь на место переменной, обозначающей разрешающую строку (z1), необходимо поставить переменную, обозначающую разрешающий столбец (x3):

БП

СЧ

x1

x2

x3

z1

z2

z3

x3

800/4 = 200

4/4 = 1

2/4 = 1/2

4/4 = 1

1/4 = 1/4

0/4 = 0

0/4 = 0

z2

600

7

5

1

0

1

0

z3

1000

2

4

3

0

0

1

Y

0

1

2

3

0

0

0

 

 

 

 

 

 

 

 

Затем в разрешающем столбце «обнуляются» все элементы, за исключением разрешающего. Эта процедура достаточно трудоёмка и требует особой внимательности. Опишем её подробно.

Сначала определим, на какое число надо умножить разрешающий элемент, чтобы при сложении полученного произведения с другим элементом разрешающего столбца получить нуль.

Для второго элемента разрешающего столбца, то есть для элемента 1, имеем равенство: 1 · M + 1 = 0. Здесь M – искомое число (множитель). Очевидно, что М = 1.

Для третьего элемента разрешающего столбца, то есть для элемента 3, имеем равенство: 1 · M + 3 = 0, отсюда М = 3.

Для четвёртого элемента разрешающего столбца, то есть для элемента 3, имеем равенство: 1 · M + (3) = 0, отсюда М = +3.

Запишем полученные множители в дополнительный столбец и проведем с их помощью следующие вычисления.

Умножим каждый элемент разрешающей строки на первый множитель (1) и сложим полученное произведение с соответствующим элементом второй строки. Разрешающую строку при этом не меняем.

58

Умножим каждый элемент разрешающей строки на второй множитель (3) и сложим полученное произведение с соответствующим элементом третьей строки.

Умножим каждый элемент разрешающей строки на третий множитель (3) и сложим полученное произведение с соответствующим элементом четвёртой строки.

Полученная в результате вычислений симплекс-таблица будет иметь следующий вид:

БП

СЧ

x1

x2

x3

z1

z2

z3

x3

200

1

1/2

1

1/4

0

0

z2

400

6

9/2

0

1/4

1

0

z3

400

1

5/2

0

3/4

0

1

y

600

1

1/2

0

3/4

0

0

На этом первая итерация симплексного метода завершена

иможно записать первый промежуточный результат.

Врезультате вычислений мы получили первое приближение к оптимальному плану производства. Виды продукции, которые предприятие должно выпускать, находятся в первом столбце сим-

плекс-таблицы, обозначенном БП. Соответствующие переменным x3, z2, z3 значения выпуска каждого вида продукции, то есть (200, 400, 400) находятся во втором столбце симплекс-таблицы, обозначенном СЧ. Остальные виды продукции в соответствии с планом производства предприятие выпускать не должно.

Сам план производства формально выглядит следующим обра-

зом: x = (0, 0, 200, 0, 400, 400), то есть x1 = 0, x2 = 0, x3 = 200, z1 = 0, z2 = 400, z3 = 400.

Отметим, что в этот план (в первую итерацию искомого плана) входят новые переменные, которых не было в исходной постановке задачи, поэтому в первом приближении фактически предлагается следующий план производства: x1 = 0, x2 = 0, x3 = 200, то есть x = = (0, 0, 200).

59

Отметим, что при таком плане будут выполнены все ограничения задачи, а целевая функция (прибыль предприятия) составит 600 у.е. (значение целевой функции – это последний элемент в столбца СЧ свободных членов).

После завершения первой итерации можно сделать проверку правильности вычислений, подставив план производства x = (0, 0, 200) в систему (6.9). При этом все ограничения задачи должны быть выполнены, а целевая функция должна оказаться равной 600.

Математически первый промежуточный результат задачи (результат первой итерации) записывается следующим образом:

y = F(x) = F (0, 0, 200, 0, 400, 400) = 600.

Вторая итерация. Теперь переходим к следующей (второй) итерации симплекс-метода.

На первом этапе определяется разрешающий столбец симплекстаблицы. В последней строке симплекс-таблицы только один отрицательный элемент (1/2), следовательно, разрешающим столбцом будет столбец, соответствующий переменной x2.

На втором этапе определяется разрешающая строка. В разрешающем столбце три положительных элемента (1/2; 9/2; 5/2).

Рассмотрим частные от деления элемента столбца свободных членов на элемент разрешающего столбца:

для элемента 1/2: 200/(1/2) = 400; для элемента 9/2: 400/(9/2) ≈ 88,9; для элемента 5/2: 400/(5/2) ≈ 160.

Частное для элемента 9/2 минимально, следовательно, строка, соответствующая переменной z2, является разрешающей.

На третьем этапе определяется разрешающий элемент сим- плекс-таблицы как элемент, находящийся на пересечении разрешающей строки и разрешающего столбца. Тогда получаем, что разрешающий элемент – 9/2.

Полученные результаты представлены в следующей симплекстаблице:

60