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

Posobie1

.pdf
Скачиваний:
102
Добавлен:
05.06.2015
Размер:
1.02 Mб
Скачать

17.На участке производства зубчатых колес имеются два станка — зубофрезерный и зубодолбежный. Требуется изготовить три вида зубчатых колес в следующих количествах: первого вида — 80 штук, второго

итретьего — 110 и 140 штук соответственно. Каждое зубчатое колесо может быть изготовлено на любом из станков. Для выпуска одного колеса первого вида на зубофрезерном станке требуется затратить 20 мин, а на зубодолбежном — 34 мин. Для выпуска одного колеса второго вида на зубофрезерном станке требуется затратить 12 мин, а на зубодолбежном — 14 мин. Для выпуска одного колеса третьего вида требуется затратить 10

и8 мин соответственно. Ресурс работы зубофрезерного станка без смены инструмента (фрезы) позволяет выпустить всего 180 колес, а ресурс работы зубодолбежного станка без смены инструмента (долбяка) позволяет выпустить всего 150 зубчатых колес. Определить оптимальную загрузку станков, обеспечивающую минимальное общее время их работы без смены инструмента.

18.Автотранспортное предприятие получило заказ на укомплектование трех строящихся объектов стройматериалами, производимыми на двух заводах. На первом заводе подготовлено к отправке 120 т стройматериалов, на втором — 180 т. На первый объект необходимо доставить 70 т строительных материалов. Второй и третий объекты нуждаются в получении 140 и 90 т указанного материала. Матрицей

8

12

5

 

 

 

 

 

 

3

7

9

 

 

 

задано:

а) доход от перевозки одной тонны стройматериалов с каждого завода к каждому строящемуся объекту;

б) стоимость перевозки одной тонны стройматериалов с каждого завода к каждому строящемуся объекту.

Составить оптимальный план перевозок, а) максимизирующий доход; б) минимизирующий стоимость.

Ответы

В ответах на задачи 1—10 приведено только оптимальное значение целевой функции, этого достаточно для проверки.

1.Lmax = 2. 2. Lmin = –∞. 3. Lmin = 5. 4. Lmax = 8/3. 5. Lmin = 4.

6.Lmax = +∞. 7. Lmin = 0. 8. Lmax = 6. 9. Lmin = –162/3. 10. Lmax = 20/3.

11. X опт = (4 000; 7 000), Lmax = 590 000 (руб.). 12. а) X опт = (11,688; 0), Lmax= 11,688 (шт.); б) X опт = (1,2; 8,448), Lmax = 676 046,4 (тыс. руб.);

в) X опт = (1,2; 0), Lmin = 41 592 (тыс. руб.). 13. X опт = (0; 3),

51

Lmax= 600 (руб.). 15. X опт = (27 – 27 ; 48 + 15 ), 0 1,

Lmax = 453 600 (руб.). 16. X опт = (2; 3), Lmin = 26 (усл. ден. ед.).

17. На зубофрезерном станке надо выпустить 80 колес первого вида и 100 колес второго вида, а на зубодолбежном — 10 колес второго вида и 140

колес третьего вида, Lmin = 4 060 (мин).

 

 

 

 

18. а)

 

70 70

50 70

0

 

 

1, Lmax= 2

600;

 

 

X опт =

 

 

 

, 0

 

 

 

 

70

90 70

90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30 30

30

90

 

 

 

 

 

 

 

 

 

б)

 

 

 

 

 

 

, 0

1, Lmin= 1

790.

X опт =

40 30

140 30

0

 

 

 

 

 

 

 

 

 

52

§3. Симплексный метод

1.Каноническая задача линейного программирования

Графический метод решения задачи линейного программирования применяется только в случае двух или трех переменных. Симплексный метод (или симплекс-метод) в отличие от него является универсальным, так как позволяет решить общую задачу линейного программирования (ОЗЛП) практически с любым количеством переменных. Но для этого она должна быть приведена к каноническому виду или к канонической задаче линейного программирования (КЗЛП). Множество канонических задач является подмножеством всех задач линейного программирования. Перечислим отличительные черты КЗЛП:

1.Все ограничения в системе ограничений являются равенствами.

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

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

Покажем, что любая задача линейного программирования может быть приведена к каноническому виду. Для этого необходимо выполнить следующие преобразования ОЗЛП:

1.

Всякое условие вида

n

 

asj x j bs

, где s = 1 или 2, или …, или n

 

 

 

j 1

 

 

заменяется условием n

asj x j

ys bs , ys 0.

 

j 1

 

 

 

 

 

2.

Всякое условие вида

n

 

asj x j bs

, где s = 1 или 2, или …, или n

 

 

 

j 1

 

 

заменяется условием n

asj x j

ys bs , ys 0.

 

j 1

 

 

 

 

 

3. Все переменные xp, на которые не наложены требования неотрицательности, подставляются в равенства, полученные на двух предыдущих

шагах, и в целевую функцию в виде xp = wp – vp, wp ≥ 0, vp ≥ 0.

После преобразований 1—3 все новые переменные удобно обозначить буквой x, пронумеровав их по порядку введения, начиная с номера m + 1. Причем на шаге 3 переменную wp удобно обозначить xp, а vp — буквой x с первым свободным номером. Возможно, за счет введения новых переменных на шаге 3 изменится и целевая функция. Новую целевую функцию обозначим L1(X).

4. В случае оптимизации вида L1(X)→max воспользуемся равенством max L1(X) = –min(–L1(X)). Поэтому введем новую целевую функцию

53

L (X) = –L1(X), решим задачу при условии L (X)→min, после чего сделаем

замену max L1(X) = –min(– L (X)).

Пример 1. Общая задача линейного программирования

x1 x2 x3 7,

 

2x1 x2 x3

3,

 

 

 

 

 

x1 x2 9x3

16,

 

 

x1 0,

 

 

 

 

L( X ) x1

x2 x3 max

приводится к каноническому виду согласно шагам 1—4. x1 x2 x3 y1 7, y1 0.

2x1 x2 x3 y2 3, y2 0.

x2 = w2 – v2, w2 ≥ 0, v2 ≥ 0; x3 = w3 – v3, w3 ≥ 0, v3 ≥ 0.

Теперь обозначим y1 как x4, y2 x5, w2 x2, v2 x6, w3 x3, v3 x7. Задача оптимизации при этом примет вид:

L1 (X ) x1 (x2 x6 ) (x3 x7 ) max .

L(X ) x1 x2 x3 x6 x7 min.

Пример 2. Из общей задачи линейного программирования

x1 x2 x3 x4 x5 7,

 

2x1 x2 x3 x4 x5

3,

 

x

x

2

9x

3

x

4

8x

5

16,

 

1

 

 

 

 

 

 

 

 

x j 0, j 1,...,5,

 

 

 

 

 

L( X ) x1

x2 x3 x4 x5 min

путем введения новых неотрицательных переменных получаем каноническую задачу:

x1 x2 x3 x4 x5 x6

7,

 

 

x2 x3 x4 x5 x7 3,

2x1

 

x

x

2

9x

x

4

8x 16,

 

1

 

3

 

5

 

 

 

 

x j 0, j 1,..., 7,

 

 

 

 

 

L( X )

x1

x2 x3 x4 x5

min .

Ясно, что новые переменные можно сразу обозначать буквой x.

Легко показать, что в результате преобразований 1—4 из общей задачи линейного программирования получается каноническая задача, решение которой тесно связано с решением исходной задачи. Действительно, пусть количество переменных при переходе к КЗЛП с n увеличилось до

54

n + t и пусть Z = ( x1, x2 ,..., xn , xn 1,..., xn t ) — какое-нибудь решение КЗЛП. Ясно, что после отбрасывания из Z последних t компонент, согласно правилу их введения, получается решение исходной задачи линейного программирования. Поскольку в целевую функцию отброшенные компоненты не входят вообще или разность двух из них в точности равна значению некоторой исходной переменной, то значения

L ( x1, x2 ,..., xn , xn 1,..., xn t ) и L( x1, x2 ,..., xn ) равны по модулю. И наоборот, располагая каким-нибудь решением ( x1, x2 ,..., xn ) исходной задачи, можно вычислить и соответствующее решение КЗЛП ( x1, x2 ,..., xn , xn 1,..., xn t ), посчитав, согласно правилам ввода, значения

недостающих t компонент. Так как выполняется равенство | L | = |L|, то

оптимальное решение Z* КЗЛП Z*= ( x1* , x2* ,..., xn* , xn* 1,..., xn* t ) после отбрасывания последних t компонент даст оптимальное решение исходной задачи: X*= ( x1* , x2* ,..., xn* ).

Таким образом, преобразования (1)—(4) приводят к КЗЛП, которую в общем виде можно записать:

n t

 

 

 

b ,

i 1,..., m;

 

 

a x

j

 

ij

i

 

j 1

 

 

 

 

 

 

x

j

0,

j 1,..., n t;

 

 

 

 

 

 

n t

L( X ) c0 c j x j min .

j 1

(1)

(2)

(3)

Пусть ранг системы линейных уравнений (1) в этой задаче равен r. Это означает, что r переменных этой системы, называемых базисными, могут быть выражены через остальные n + t – r переменных, называемых свободными. Напомним, что решение, в котором все свободные переменные равны нулю, а базисные принимают соответствующие неотрицательные значения, называется опорным планом.

В теории линейного программирования доказано, что оптимальное значение целевая функция (3) принимает на множестве опорных планов (решений) КЗЛП, которое конечно. Таким образом, перебрав все опорные решения, можно указать то из них, на котором целевая функция оптимальна. Но даже при небольшом числе переменных, количество опорных планов может быть очень велико, и полный их перебор займет много времени. Идея же симплексного метода, или метода последовательного улучшения плана, заключается в том, что начиная с некоторого исходного опорного решения (плана) осуществляется последовательное целенаправ-

55

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

2. Жордановы исключения

Поскольку переход от одного опорного плана к другому означает перевод некоторой базисной переменной в свободные, а соответствующей свободной переменной в базисные, рассмотрим отдельно эту процедуру в общем виде и запишем ее алгоритм. Для понимания сути преобразований возьмем систему двух линейных алгебраических уравнений с пятью переменными, имеющую ранг 2. Это означает, что две базисные переменные могут быть выражены через три свободные. Для того, чтобы удобно было следить за перемещением базисной переменной в свободную и наоборот, обозначим свободные переменные x1, x2, x3, а базисные — y1, y2:

y1 a11x1 a12x2 a13x3 ,y2 a21x1 a22 x2 a23x3.

Переведем базисную переменную y1 в свободные, а свободную переменную x2 — в базисные, то есть выразим x2, y2 через x1, y1, x3. При этом новую базисную переменную будем писать на месте старой, то есть в первой строке системы, и новую свободную — на месте старой, то есть во втором столбце. Пусть коэффициент a12 при свободной переменной x2 отличен от нуля.

1.Все независимые (свободные) переменные запишем со знаком «–»:

y1 ( a11)( x1 ) ( a12 )( x2 ) ( a13)( x3 ),y2 ( a21)( x1 ) ( a22 )( x2 ) ( a23)( x3 ).

2.Для удобства обозначим aij = αij:

y

 

( x )

 

( x )

 

( x ),

 

 

 

 

1

11

1

 

12

 

 

2

13

 

3

 

 

 

y2 21( x1 ) 22 ( x2 ) 23( x3 ).

 

 

 

3. Поделим первую строчку на α12:

 

 

 

 

 

 

 

y1

11 (x ) 1 (x

) 13

(x ) .

 

 

 

 

 

 

 

 

12

12

1

 

2

 

12

3

 

 

 

 

 

 

 

 

 

4. Выразим из этого уравнения x2:

 

 

 

 

 

 

x

11 (x )

1

( y ) 13

(x ) .

 

 

 

 

 

 

 

2

 

 

1

 

 

12

1

12

3

 

 

 

 

 

 

 

 

12

 

 

 

 

5. Сделаем преобразования во втором уравнении, заменив в нем x2 на указанное выше выражение:

56

 

 

 

 

 

 

 

 

11

 

 

 

 

 

22

 

 

 

 

 

 

 

 

13

 

 

y

 

 

 

 

 

 

 

(x )

 

 

 

( y )

 

 

 

 

 

(x ) .

2

21

22

 

 

 

 

23

22

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

3

 

 

 

 

 

 

 

12

 

 

 

12

 

 

 

 

 

 

12

 

В результате проделанных шагов 1—5 мы выразили x2, y2 через x1, x3, y1. Причем новые свободные переменные записаны со знаком «–», то есть полученная система

 

 

 

 

 

x

 

11

( x )

1

 

( y ) 13

( x ),

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

1

12

1

12

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

11

 

 

 

22

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

( x )

 

 

 

( y )

 

 

 

 

 

( x )

 

 

 

 

 

 

 

 

 

 

 

 

2

 

21

 

22

 

 

12

 

1

 

 

 

 

 

 

1

 

 

23

 

22

 

12

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

снова готова к описанным преобразованиям типа 3—5. Проделанная процедура называется жордановыми преобразованиями, или исключениями.

Жордановы исключения очень удобно проводить с помощью специальных таблиц. Количество строк в таблице равно количеству базисных переменных (т. е. рангу системы), а количество столбцов — числу свободных переменных. Если справа от знака равенства имеются свободные члены, то появляется еще один столбец и для них. Преобразуются они, очевидно, по тем же правилам, что и остальные коэффициенты. Все клетки исходной таблицы, содержащие числовые величины, делятся по диагонали (таблица 5).

 

 

 

 

Таблица 5

 

 

разрешающий столбец

 

 

Свободные

 

 

 

 

Базисные

x1

x2

x3

 

 

 

 

 

y1

11

12

13

 

 

 

 

(10)

 

21

22

23

строка

 

разрешающая

y2

 

 

 

 

 

 

 

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

57

стрелками. На пересечении разрешающих строки и столбца находится разрешающий элемент. В таблице он обведен кружком.

В алгоритме жордановых исключений запишем последовательность преобразований коэффициентов системы на шагах 3—5.

Преобразование исходной таблицы (таблица 5):

1)Разрешающий элемент заменяется обратной величиной и записывается внизу.

2)Остальные элементы разрешающей строки делятся на разрешающий элемент и записываются внизу.

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

4)Обозначим буквой в — верхний элемент, буквой н — нижний элемент, буквой k — номер разрешающей строки, буквой s — номер разрешающего столбца. В остальных, не заполненных внизу, клетках таблицы

с

номерами i,

j

рассчитывается

величина

нij

=

вkj

нis.

Например,

н21 = в11 н22 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

22

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ниже приведена таблица 6 — исходная таблица, для которой выпол-

нены преобразования (1)—(4):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 6

 

 

 

 

 

 

 

 

 

разрешающий столбец

 

 

 

 

 

 

 

 

 

 

 

Свободные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базисные

 

 

 

 

 

 

x1

 

 

x2

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y1

 

 

 

11

 

 

 

 

12

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

1

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

разрешающая

строка

 

 

 

 

 

 

 

 

12

 

 

12

 

 

 

12

 

y2

 

 

 

21

 

 

 

 

22

 

 

 

 

23

 

 

 

 

 

 

 

 

 

 

 

 

22

 

 

22

 

 

 

22

 

 

 

 

 

 

 

 

 

11

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

12

 

 

12

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

ибазисную переменные. Затем выполнить указанные ниже шаги.

1)Нижние элементы разрешающей строки записываются вверху.

2)Остальные элементы разрешающего столбца записываются вверху.

58

3)В остальных клетках верхние и нижние элементы складываются

изаписываются вверху.

 

 

 

разрешающий столбец

 

 

Таблица 7

 

 

 

 

 

 

 

Свободные

 

 

 

 

 

 

 

 

 

Базисные

 

 

x1

 

y1

 

x3

 

 

 

 

 

 

 

 

 

 

x2

11

 

1

13

 

 

 

12

 

12

12

 

 

 

 

 

 

 

строка

 

21

11

22

 

22

23

13

22

разрешающая

y2

12

12

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выше приведена таблица 7 — новая таблица, в которой выполнены преобразования (1)—(3). Она готова к дальнейшим преобразованиям, то есть снова можно менять местами какие-нибудь базисную и свободную переменные при условии, что соответствующий числовой коэффициент при свободной переменной отличен от нуля. К тому же, если вести заполнение исходной таблицы карандашом, стирая величины, в которых уже нет необходимости, то для всех расчетов можно использовать один и тот же табличный шаблон. Это свойство симплекс-таблиц очень удобно при программировании: все расчеты идут в пределах одного двумерного массива, верхние элементы исходной таблицы представляют собой старые значения коэффициентов (элементов массива), а верхние значения преобразованной таблицы — новые значения коэффициентов с теми же номерами. К этому вопросу мы еще вернемся при рассмотрении программы симплекс-метода.

3. Алгоритм симплекс-метода для расчетов вручную

Мы приводим этот алгоритм, не рассматривая подробно теорию сим- плекс-метода, но там, где это возможно, будем давать обоснование проводимым действиям.

1.Начало. Общая задача линейного программирования приводится

кканоническому виду (1)—(3), то есть путем введения новых дополнительных неотрицательных переменных все неравенства, входящие в математическую модель, превращаются в равенства, а все переменные, на

которые не наложены требования неотрицательности, представляются в виде разности новых неотрицательных переменных. Целевая функция при этом минимизируется. Алгоритм такого перехода изложен выше.

59

2. Определяется

 

ранг

 

матрицы

 

 

 

 

A

системы

 

 

уравнений

n t aij x j

bi , i 1,...,m;

 

канонической задачи:

пусть rank A = k.

После

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

этого базисные переменные выражаются через свободные. Как правило,

базис образуют вновь введенные переменные, но это не обязательно. До-

пустим, базис образуют первые k переменных. Выразим их через свобод-

ные, записывая, как и при реализации алгоритма жордановых исключений,

свободные переменные со знаком «–». Получим систему:

 

 

 

 

 

 

 

 

 

x

b

 

b

x

k 1

b

 

x

k 2

... b

x

n t

,

 

 

 

 

 

1

10

1,k 1

 

 

 

1,k

2

 

 

 

1,n t

 

 

 

 

 

 

 

x2

b20

b2,k 1xk 1

b2,k 2 xk 2

... b2,n t xn t

,

 

(4)

 

.......................................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

k

b

 

b

 

x

k 1

b

 

 

x

k 2

... b

 

x

n

t

.

 

 

 

 

k 0

k ,k 1

 

 

 

k ,k 2

 

 

 

k ,n t

 

 

 

 

 

Подставим выражения для базисных переменных в целевую функцию.

После этого в ней будут только свободные переменные с некоторыми

коэффициентами перед ними. В целевой функции также запишем свобод-

ные переменные со знаком «–»:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L (X)= c0 ck 1 ( xk 1 ) ck 2 ( xk 2 ) ... cn t ( xn t ).

 

 

Для полученной системы и целевой функции составляется таблица для

жордановых исключений, т. н. симплекс-таблица (таблица 8):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 8

Свободные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bi0

 

 

 

xk+1

 

 

 

 

 

xk+2

 

 

 

 

 

 

 

 

 

 

xn+t

Базисные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

b10

 

 

b1, k+1

 

 

 

 

 

b1, k+2

 

 

 

 

 

 

 

 

 

 

 

 

b1, n+t

 

x2

b20

 

 

b2, k+1

 

 

 

 

 

b2, k+2

 

 

 

 

 

 

 

 

 

 

 

 

b2, n+t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xk

bk0

 

 

bk, k+1

 

 

 

 

 

bk, k+2

 

 

 

 

 

 

 

 

 

 

 

 

bk, n+t

 

L( X )

c0

 

 

ck 1

 

 

 

 

 

ck 2

 

 

 

 

 

 

 

 

 

 

 

 

 

cn t

 

3. Выясняется, имеются ли в последней строке таблицы 8 положи-

тельные элементы,

кроме c0 .

 

Пусть, например, коэффициент ck 1 0.

Значит,

увеличивая

переменную

xk+1,

 

 

мы

уменьшаем

слагаемое

ck 1 ( xk 1 ) , а значит, и целевую функцию. Следовательно, опорный план,

в котором переменная xk+1 имеет нулевое значение, поскольку является

свободной, не оптимален. Но ненулевое значение переменная xk+1

может

принять,

если будет базисной.

 

Значит,

ее надо перевести в базисные.

 

 

 

 

 

 

 

 

 

 

 

60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]