Методы оптимизации. Учебное пособие-2
.pdf
Затраты каждого вида сырья не должны превышать имеющиеся запасы. Таким образом, мы приходим к следующей задаче линейного программирования: максимизировать величину прибыли предприятия:
c1x1 + c2x2 → max
при следующих ограничениях, записанных в виде неравенств:
a11 x1 + a12x2 ≤ b1 a21 x1 + a22x2 ≤ b2
a31 x1 + a32x2 ≤ b3
x1 ≥ 0, x2 ≥ 0
2. Задача оптимального использования производственных мощностей (производственных ресурсов)
Предприятие выпускает n видов продукции Pj (j = 1, 2,… n), используя m типов оборудования Ei, (i = 1, 2,… m). Известны нормы времени на обработку каждого из n видов продукции Pj на i-ом типе оборудования aij, и общий ресурс времени работы каждого типа оборудования bi. Прибыль предприятия от реализации j-го вида продукции Pj равна cj. Требуется составить план выпуска продукции, при котором прибыль предприятия будет максимальной.
Обозначим через xj количество единиц продукции Pj, которое предприятие планирует выпустить (j = 1, 2,… n). Тогда производственный план выпуска продукции может быть записан как n-мерный вектор x = (x1, x2, … xn).
На изготовление xj единиц Pj продукции на оборудовании Ei будет затрачено aijxj времени. Время работы оборудования Ei для изготовления всех видов продукции равно
ai1 x1 + ai2x2 + ... + ain xn.
Время работы оборудования Ei не может превышать ресурс времени работы i-го типа оборудования bi.
41
ai1 x1 + ai2x2 + ... + ain xn ≤ bi, (i = 1, 2,… m).
Прибыль предприятия будет равна c1 x1 + c2x2 + ... + cn xn.
Таким образом, приходим к следующей задаче линейного программирования:
c1x1 + c2x2 +… + cn xn → max
a11 x1 + a12x2 + ... + a1n xn ≤ b1 a21 x1 + a22x2 + ... + a2n xn ≤ b2
……………………………..
am1 x1 + am2x2 + …+ amn xn ≤ bm x1 ≥ 0, x2 ≥ 0,… xn ≥ 0
среди всех неотрицательных решений системы неравенств найти решение максимизирующее линейную функцию.
Задачу линейного программирования можно записать в матричном виде:
F(X) = CX → max
AX ≤ B
X ≥ 0,
|
a11 |
a12 |
... |
a1n |
b1 |
|
|
||||
|
|
|
|
|
... |
|
|
|
|
|
|
|
a21 |
a22 |
a2n |
b2 |
|
,…, cn), |
|||||
где A |
|
... |
... |
... |
, |
B |
, C = (c1, c2 |
||||
|
... |
|
|
|
|
||||||
|
a |
m1 |
a |
m2 |
... |
a |
|
|
b |
|
|
|
|
|
|
|
mn |
m |
|
||||
x1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 |
|
|
|
|
|
|
|
|
|
|
|
X |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xn |
|
|
|
|
|
|
|
|
|
|
|
42
3.1.2. Различные формы задач линейного программирования
Общей задачей линейного программирования называется следующая задача: минимизировать функцию
F(x) = c1x1 + c2x2 +… + cn xn
при условиях
a11x1 a12x2 ... |
a1n xn b1 |
a21x1 a22x2 ... |
a2n xn b2 |
................................ |
|
am1x1 am2 x2 ... |
an xn bm |
am 11x1 am 12x2 ... am 1n xn bm 1 am 21x1 am 22x2 ... am 2n xn bm 2
................................
ak1x1 ak 2 x2 |
... akn xn bk |
ak 11x1 ak 12x2 ... |
ak 1n xn bk 1 |
ak 21x1 ak 22x2 ... |
ak 2n xn bk 2 |
................................ |
|
al1x1 al 2 x2 ... |
aln xn bl |
Общая задача имеет ограничения в виде неравенств и в виде равенств.
Канонической задачей линейного программирования называется следующая задача: минимизировать функцию
F(x) = c1x1 + c2x2 +… + cn xn
при условиях
43
a11 x1 + a12x2 + ... + a1n xn = b1
a21 x1 + a22x2 + ... + a2n xn = b2
……………………………..
am1 x1 + am2x2 + …+ amn xn = bm x1 ≥ 0, x2 ≥ 0,… xn ≥ 0.
Каноническая задача линейного программирования имеет ограничения в виде равенств (при неотрицательных значениях переменных xk, ≥ 0, k = 1, 2,… n) и является частным случаем общей задачи линейного программирования.
Основной задачей линейного программирования называется следующая задача: минимизировать функцию
F(x) = c1x1 + c2x2 +… + cn xn
при условиях
a11 x1 + a12x2 + ... + a1n xn ≤ b1 a21 x1 + a22x2 + ... + a2n xn ≤ b2
…………………………….....
am1 x1 + am2x2 + …+ amn xn ≤ bm x1 ≥ 0, x2 ≥ 0,… xn ≥ 0.
Основная задача линейного программирования имеет ограничения только в виде неравенств и является частным случаем общей задачи линейного программирования.
44
3.1.3.Графический метод решения задач линейного программирования
Рассмотрим задачи линейного программирования с двумя неизвестными и системой ограничений в виде неравенств. Для решения таких задач может быть применен графический метод. Описание графического метода решения задач линейного программирования проведем на примере следующей задачи.
Пример 18. Решить задачу линейного программирования
F(x) = –6x1 – 5x2 → min
при следующих ограничениях в виде неравенств:
19 – 2x1 – 3x2 ≥ 0 13 – 2x1 – x2 ≥ 0 18 – 3x1 ≥ 0.
x1 ≥ 0, x2 ≥ 0
Введем на плоскости прямоугольную декартову систему координат Ox1x2 и построим область допустимых решений, задаваемую системой неравенств. Геометрическим местом точек, задаваемым системой неравенств, является выпуклый многоугольник, называемый многоугольником решений. Сторонами этого многоугольника будут отрезки прямых, задаваемых следующими уравнениями:
19 – 2x1 – 3x2 = 0 13 – 2x1 – x2 = 0 18 – 3x1 = 0.
x1 = 0, x2 = 0
В результате построений получим пятиугольник (см. рис. 10).
Координаты вершин пятиугольника: (0; 0); (0; 6⅓); (5; 3); (6; 1);(6;0).
45
Геометрическим местом точек, для которых линейная функция F(x1, x2) принимает постоянное значение C, является прямая, уравнение которой имеет вид: –6x1 – 5x2 = C.
Меняя значение C, получим семейство параллельных прямых, перпендикулярных вектору-градиенту целевой функции (–6, –5) .
x2
13
6⅓
(5,3)
6 6,5 |
9,5 |
x1 |
Рис. 10
При переходе от одной прямой к другой в направлении противоположном градиенту (в направлении вектора (6, 5) значение целевой функции уменьшается. Этот процесс можно продолжать до тех пор, пока имеется хотя бы одна точка пересечения прямой и многоугольника решений.
Если у многоугольника решений нет сторон параллельных указанным прямым, то оптимальным решением будет одна из вершин многоугольника. В данном примере это вершина с координатами (5, 3), x1 = 5, x2 = 3, значение линейной функции в этой точке равно F = –45.
46
Пример 19. Решить задачу линейного программирования:
F(x) = 2x1 + x2 → max
при следующих ограничениях в виде неравенств:
x2 ≥ 1
2x1 + x2 ≥ 4 x1 – 2x2 ≤ 4 2x1 + 4x2 ≤ 16 x1 ≥ 0, x2 ≥ 0
Построим область допустимых решений, задаваемую системой неравенств. Геометрическим местом точек, задаваемым системой неравенств является выпуклый многоугольник. Сторонами этого многоугольника будут отрезки прямых, задаваемых следующими уравнениями:
x2 = 1
2x1 + x2 = 4 x1 – 2x2 = 4 2x1 + 4x2 = 16 x1 = 0, x2 = 0
В результате построений получим треугольник ABC (cм. рис. 11). Координаты вершин треугольника: A(1,5; 1), B(0; 4); C(6; 1).
x2
B
A C
x1
Рис. 11
47
Геометрическим местом точек, для которых линейная функция F(x1, x2) принимает постоянное значение C, является прямая, уравнение которой имеет вид: 2x1 + x2 = C. Меняя значение C, получим семейство параллельных прямых, перпендикулярных вектору-градиенту целевой функции (2, 1). При переходе от одной прямой к другой в направлении, задаваемом градиентом (в направлении вектора (2, 1)), значение целевой функции увеличивается. Этот процесс продолжаем до тех пор, пока имеется хотя бы одна точка пересечения прямой и многоугольника решений. В данном примере это вершина с координатами C(6,1), x1 = 6, x2 = 1, значение линейной функции в этой точке равно F = 13.
Графическим методом могут быть решены задачи линейного программирования с двумя или тремя переменными.
3.1.4. Метод жордановых преобразований
Рассмотрим следующую задачу линейной алгебры: переменные y1, y2, y3 выражаются через переменные x1, x2, x3:
y1 = 4x1 + 3x2 + 2x3 y2 = 3x1 + 2x2 + x3 y3 = x1+ x2 + 2x3
Требуется найти выражения для x1, x2, x3 через y1, y2, y3.
Для решения этой задачи выразим из первого уравнения x1 через y1, x2, x3, и подставим это выражение во второе и третье уравнения системы. В результате этих преобразований получим следующую систему:
x1= 0,25y1 – 0,75x2 – 0,5x3 y2 = 0,75y1 – 0,25x2 – 0,5x3 y3 = 0,25y1 + 0,25x2 + 1,5x3
48
Из второго уравнения выразим x2 и подставим найденное выражение в первое и третье уравнения, тогда
x1= –2y1 + 3y2 + x3 x2= 3y1 – 4y2 – 2x3
y3= y1 – y2 + x3
Для решения поставленной задачи достаточно из третьего уравнения выразить x3 через y1, y2, y3 и подставить в первое и второе уравнения системы. Окончательно получим:
x1 = –3y1 + 4y2 + y3 x2 = 5y1 – 6y2 – 2y3
x3 = – y1 + y2 + y3 .
Для решения подобных задач можно применять метод жордановых преобразований таблиц, значительно упрощающий вычисления. При применении указанного метода системе линейных уравнений
y1 = a11x1 + a12x2 + … + a1nxn
y2 = a21x1 + a22x2 + … + a2nxn
………………………………
ym = am1x1 + am2x2 + … + amnxn
сопоставим таблицу:
Т |
x1 |
x2 |
… |
xn |
y1 |
a11 |
a12 |
… |
a1n |
|
|
|
|
|
y2 |
a21 |
a22 |
… |
a2n |
… |
… |
… |
… |
… |
|
|
|
|
|
ym |
am1 |
am2 |
… |
amn |
|
|
|
|
|
Таблица образована коэффициентами при переменных x1, x2,… xn. Первый столбец и первая строка таблицы состоит из символов y1, y2,…, ym и x1, x2,… xn соответственно, остальные элементы являются элементами матрицы A = (aij), i = 1, 2,…m, j = 1, 2,…n, при этом i-ой
49
строке таблицы соответствуют коэффициенты i-го уравнения. Алгоритм жордановых преобразований таблицы состоит в следующем:
1)выбираем какой-либо ненулевой элемент ai0 j0 0 и называем его разрешающим. Строку и столбец, на пересечении которых стоит разрешающий элемент, называем разрешающей строкой
иразрешающим столбцом;
2)заменяем разрешающей элемент единицей;
3)меняем знаки элементов разрешающей строки за исключением разрешающего элемента на противоположные знаки;
4)элементы разрешающего столбца не изменяем;
5)элементы таблицы aij, находящиеся вне разрешающей строки
иразрешающего столбца, пересчитываем по ”правилу
определителя”. Элемент |
aij |
заменяем элементом |
aijai0 j0 ai0 j aij0 .; |
|
|
6)все элементы таблицы делим на разрешающий элемент;
7)меняем местами символы yi0 и x j0 .
Проведение жордановых преобразований таблицы с разрешающим элементом ai0 j0 приводит к новой таблице, которой соответствует линейная система m уравнений, выражающих переменные yi при i ≠ i0 и x j0 через n переменных xj при j ≠ j0 и yi0 .
Применим метод жордановых преобразований для решения сформулированной ранее задачи.
y1 = 4x1 + 3x2 + 2x3 y2 = 3x1 + 2x2 + x3 y3 = x1+ x2 + 2x3
Таблица, соответствующая рассматриваемой системе имеет вид:
50
