Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга_МО.pdf
Скачиваний:
551
Добавлен:
05.06.2015
Размер:
12.36 Mб
Скачать

ГЛАВА 8.

Линейное программирование

8.1. Определения. Примеры задач линейного программирования

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

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

Пример 8.1. Для изготовления трех видов сплавов A , B и C используется медь, олово и цинк. Данные о сплавах приведены в табл. 8.1. В ней же указано общее количество метала каждого типа, а так же стоимость реализации одного кг сплава каждого типа.

Процентное содержание и общая масса компонентов

Таблица 8.1.

 

 

 

 

 

 

Компоненты сплава

Содержание компонентов в %

Общая масса данной

 

A

B

C

компоненты сплава, т.

 

Медь

20

10

30

 

120

 

Олово

10

80

60

 

280

 

Цинк

70

10

10

 

240

 

Стоимость 1кг.

10

14

12

 

 

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

□ Предположим, что будет изготовлено x1 кг сплава A , x2 кг сплава B и x3 кг сплава C . Тогда для производства такого количества сплавов потребуется затратить 20x1 +10x2 +30x3 кг меди.

151

Так как общая масса меди не может превышать 120 т, то должно выполняться неравенство 20x1 +10x2 +30x3 120000 .

Аналогичные рассуждения относительно возможности использования олова и цинка приведут к неравенствам

10x1 +80x2 + 60x3 280000, 70x1 +10x2 +10x3 240000.

При этом, так как масса сплавов не может быть отрицательной, то

x1

0, x2 0, x3 0.

(8.1)

Если будет изготовлено

x1 кг сплава A , x2 кг сплаваB

и x3 кг сплава C , то

стоимость продукции составит F =10x1 +14x2 +12x3 .

Таким образом, приходим к следующей математической задаче. Дана система

20x

+ 40x

2

+50x

3

120000

 

 

1

 

 

280000

 

10x1 +80x2

+ 60x3

(8.2)

 

 

+10x2

+10x3

240000

70x1

 

из четырех линейных неравенств (8.1) − (8.2) с тремя неизвестными и линейная функция относительно этих же переменных

F =10x1 +14x2 +12x3 .

(8.3)

Требуется среди всех неотрицательных решений системы неравенств (8.2) найти такое, при котором функция (8.3) принимает максимальное значение.

Так как функция (8.3) линейная, а система (8.2) содержит только линейные неравенства, то задача (8.1)−(8.3) является задачей линейного программирования. ■ Пример 8.2. Продукцией молочного завода являются молоко, кефир и сметана. На производство 1 т молока, кефира и сметаны требуется соответственно 1010, 1010 и 9450 кг молока. При этом затраты рабочего времени при разливе 1 т молока и кефира составляют 0,18 и 0,19 машино-часов. На расфасовке 1 т сметаны заняты специальные автоматы, работающие в течение 3,25 ч. Всего для производства цельномолочной продукции завод может использовать 136 т молока. Основное оборудование может быть занято в течение 21,4 машино-часа, а автоматы по расфасовке сметаны − в течение 16,25 ч. Прибыль от реализации 1 т молока,

152

кефира и сметаны соответственно равна 30000, 26000 и 150000 руб. Завод должен ежедневно производить не менее 100 т молока, расфасованного в пакеты. Требуется определить, какую продукцию и в каком количестве следует ежедневно изготовлять заводу, чтобы прибыль от ее реализации была максимальной.

□ Предположим, что молочный завод будет ежедневно производить x1 тонн молока, x2 тонн кефира и x3 тонн сметаны. Тогда для производства этой продукции необходимо 1010x1 +1010x2 + 9450x3 кг молока.

Так как завод может использовать ежедневно не более 136000 кг молока, то должно выполняться неравенство 1010x1 +1010x2 +9450x3 136000.

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

0,18x1 +0,19x2 21,4

3,25x3 16,25.

Так как ежедневно должно вырабатываться не менее 100т молока, тоx1 100.

По своему экономическому смыслу переменные x2 и x3 могут принимать лишь

неотрицательные значения

x2

0, x3 0.

Общая прибыль от реализации x1 тонн

молока, x2 тонн кефира и

x3

тонн сметаны равна 30000x1 + 22000x2 +150000x3 руб.

Таким образом, приходим к следующей задаче.

Дана система

 

 

 

 

 

 

1010x1 +1010x2

+9450x3

136000

 

0,18x1

+

0,19x2

21,4

 

 

 

 

(8.4)

 

3,25x3

16,25

 

 

 

 

 

 

 

x1 100, x2 0,

x3

0.

 

из четырех линейных неравенств и линейная функция относительно переменных,

x1 , x2 и x3

F = 30000x1 + 22000x2 +150000x3 .

(8.5)

Так как система (8.4) представляет собой систему линейных неравенств и функция (8.5) линейная, то эта задача является задачей линейного программирования. ■

153

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

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

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

n

(8.6)

F = c j x j

 

j=1

 

при выполнении условий

(8.7)

n

aij x j bi (i =1,..., k)

 

j=1

(8.8)

n

aij x j = bi (i = k +1,..., m)

 

j=1

 

xj 0 ( j =1,..., l ; l n)

(8.9)

где aij , bi и c j − заданные постоянные величины и k m .

Определение. Функция (8.6) называется целевой функцией задачи (8.6) − (8.9), а условия (8.7) − (8.9) − ограничениями данной задачи.

Определение. Канонической задачей линейного программирования называется задача, которая состоит в определении максимального значения функции (8.6) при выполнении условий (8.8) и (8.9), где k = 0 и l = n .

Определение.

Вектор

X = (x1 , x2 , , xn )T ,

удовлетворяющий ограничениям

задачи (8.7) − (8.9), называется допустимым решением, или планом.

Определение.

План

X = (x1 , x2 , , xn )T ,

при котором целевая функция

принимает свое максимальное (минимальное) значение, называется оптимальным. Чтобы перейти от одной формы записи задачи линейного программирования к другой, нужно в общем случае уметь, во-первых, сводить задачу минимизации функции к задаче максимизации; во-вторых, переходить от ограничений-

154

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

В том случае, когда требуется найти минимум функции F = с1 x1 + с2 x2 +…+ сn xn ,

можно перейти к нахождению максимума функции F1 = −F = −с1 x1 с2 x2 −…−сn xn ,

поскольку min F = max(F ) .

Нестрогое ограничение-неравенство общей задачи линейного программирования можно преобразовать в ограничение-равенство добавлением к его левой части дополнительной неотрицательной переменной. Таким образом, ограничение-неравенство

ai1 x1 + ai2 x2 +…+ ain xn bi

преобразуется в ограничение-равенство

ai1 x1 + ai2 x2 +…+ ain xn + xn+1 = bi , xn+1 0,

а ограничение-неравенство

ai1 x1 + ai2 x2 +…+ ain xn bi

преобразуется в ограничение-равенство

ai1 x1 + ai2 x2 +…+ ain xn xn+1 = bi , xn+1 0.

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

Наконец, если переменная xk по условию задачи отрицательна, то ее следует заменить двумя неотрицательными переменными uk и vk , приняв xk = uk vk .

Пример 8.3. Записать в форме канонической задачи линейного программирования задачу нахождения максимума функцииF = 3x1 2x2 5x4 + x5

при условиях

2x1 + x3 x4 + x5 2,x1 x3 + 2x4 + x5 3,2x1 + x3 x4 + 2x5 6,

x1 + x4 +5x5 8, x1 , x2 , x3 , x4 , x5 0

155

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