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

книги / Экономические задачи линейного программирования и их решение с использованием Microsoft Excel

..pdf
Скачиваний:
2
Добавлен:
20.11.2023
Размер:
2.22 Mб
Скачать

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

На рисунке показано, что каждое неравенство определяет некоторую полуплоскость. Соответствующие области для каждого ограничения отмечены штрихами. Пересечение данных полуплоскостей (т.е. множество точек, которые одновременно принадлежат каждой их них) является областью определения D (допустимых планов задачи). Поведение целевой функции z(x) = c1х1 + c2х2 в рамках двумерной иллюстрации может быть охарактеризовано с помощью линий уровня.

Линией уровня функции называется множество точек из ее области определения, в которых функция принимает одно и то же фиксированное значение. Градиентом функции z(x) называется вектор, перпендикулярный линиям уровня и указывающий направление возрастания функции.

Рис. 1.4.1. Решение задачи линейного программирования графическим методом (единственное решение)

21

Если придать целевой функции конкретное постоянное значение , то прямая c1x1 + c2x2 = перпендикулярна вектору n = (с1, с2). Для различных будем иметь семейство параллельных прямых, перпендикулярных вектору n , причем значение увеличивается внаправление вектора n .

Геометрическая интерпретация целевой функции z

прямая, перпендикулярная нормальному вектору n , где она принимает постоянное значение, в направлении вектора n целевая функция увеличивается.

Геометрическая интерпретация системы ограниче-

ний (это неравенства (1.4.2) и (1.4.3)) – полуплоскости. Область определения (D) – общая часть всех полу-

плоскостей.

С геометрической точки зрения задача максимизации сводится к определению такой точки области D, через которую проходит линия уровня, соответствующая наибольшему из возможных значений. Последнее означает, что для нахождения точки экстремума мы должны сначала построить линию уровня для некоторого произвольного значения целевой функции , затем осуществлять ее параллельное передвижение (так, чтобы она оставалась перпендикулярной вектору n ) до тех пор, пока она не достигнет такой точки области допустимых планов D, из которой смещение в направлении вектора n было бы невозможно. Такой метод решения получил название графического. На рис. 1.4.1 в точке А целевая функция принимает наибольшее значение и она принадлежит области D, т.е. точка А соответствует оптимальному решению. Заметим, что решение задачи поиска минимума линейной функции осуществляется аналогично, с той лишь разницей, что движение по линиям уровня должно производиться в направлении, обратном градиенту целевой функции, т.е. по вектору (n ).

22

Рис. 1.4.2. Решение задачи

Рис. 1.4.3. Решение задачи

линейного программирования

линейного программирования

графическим методом

графическим методом

(множество решений)

(бесконечноемножестворешений)

Рис. 1.4.4. Решение задачи линейного программирования графическим методом (нет решения)

Возможновозникновениеразличныхситуацийрешения:

1)единственное решение – оптимальное решение совпадает с вершиной D (см. рис. 1.4.1);

2)множество решений – оптимальное решение совпадает со стороной многоугольника (рис. 1.4.2);

3)оптимальное решение достигается в бесконечности z = ∞. Область определения не замкнута (рис. 1.4.3);

4)нет решения – область определения пуста, нет ни одной общей точки полуплоскостей (рис. 1.4.4).

23

1.5. Симплекс-метод

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

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

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

Опорное решение задано, если среди коэффициентов системы ограничений можно выделить единичный минор порядка m, где m – число уравнений. Допустим, что условия выполнены: задача имеет n переменных, m ограничений, и при первых m переменных коэффициенты составляют единичный минор (m < n).

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

z cm 1xm 1 cm 2 xm 2 ...

cn xn max;

 

(1.5.1)

x1 ...

a1,m 1xm 1 ...

a1 j xj

...

a1n xn b1;

 

 

x2 ...

a2,m 1xm 1 ...

a2 j xj ...

a2n xn b2

;

(1.5.2)

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

 

 

 

 

 

 

 

 

 

 

 

x ...

a

x

...

a x

j

...

a x b

;

m

m,m 1

m 1

 

mj

 

mn n

m

 

 

x1, x2 ,..., xn 0.

 

 

(1.5.3)

24

Исходный опорный план: х1 = b1, x2 = b2, xm = bm, xm+1 = = 0, xn = 0. Ненулевые переменные называют базисными.

На практике для решения задач симплекс-методом используют С-таблицы (каждой таблице соответствует свое опорное решение). Составим симплекс-таблицу

(табл. 1.5.1):

Таблица 1.5.1

Симплексная таблица

Базисные переменные x1

x2

xi

xm j

 

 

 

 

 

 

 

 

 

 

 

 

 

План

 

 

 

 

P1

 

Pm

Pm 1

 

C1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

xm

xm+1

b1

0

 

1

 

0

a1, m+1

b2

0

 

0

 

0

a2, m+1

 

bi

0

 

0

 

0

ai, m+1

 

bm

0

 

0

 

1

am, m+1

0

0

 

0

 

0

–cm+1

 

 

 

 

 

 

 

 

Pj

Pn

 

xj

xn

bi/aij

a1j

a1n

 

a2j

a2n

 

[aij]

ain

 

amj

amn

 

–cj

–cn

 

j

 

 

 

 

(1.5.4)

PjC cj .

Алгоритм симплекс-метода состоит в следующем:

1. Анализ опорного плана на оптимальность. Если все оценки ∆j 0, то план оптимален. Если хотя бы одна оценка ∆j < 0, то необходим переход к другому плану, т.е. пересчет всех коэффициентов.

2. Выбор разрешающего элемента. Решаем вопрос о том, какую переменную ввести, а какую вывести из базиса: вводим переменную, у которой ∆j < 0. Если таких много, то наибольшую по модулю. Допустим, это переменная xj. Рассматриваем отношение элементов вектора

25

плана к соответствующим положительным коэффициен-

там вводимой переменной: b1/a1j ; b2/a2j ; … bm/amj. Минимальное отношение покажет строку выводимой

переменной, например b2/a2j – min, тогда выводим х2,

а вводим хj.

а2j – разрешающий элемент, находится на пересече-

нии хj и х2.

3. Пересчет симплекс-таблицы. В новой таблице записываем новые базисные переменные (заменяем х2 на хj)

и новый столбец-вектор ci . Вектор-план P и векторыкоэффициенты Pj пересчитываются. Строка с разрешаю-

щим элементом делится на этот элемент, записывается соответствующая строка в новой таблице. Все остальные элементы таблицы пересчитываются по мнемоническому правилу прямоугольника. Оценочная строка пересчитывается двумя способами: по формуле (1.5.4) или по мнемоническому правилу прямоугольника. Затем переходим к п. 1 данного алгоритма.

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

разрешающий элемент:

a

kl

a

ail akj

, k i,

l j ,

 

 

kl

aij

 

 

 

 

 

где akl – старое значение элемента; akl – новое значение элемента.

26

Возможновозникновениеразличныхситуацийрешения:

1)единственное решение: если в оптимальном плане для всех небазисных переменных оценки больше нуля;

2)множество решений: если все оценки неотрицательны, но для небазисных переменных есть хотя бы одна оценка равная нулю, тогда эту переменную можно вводить в базис и получить другое оптимальное решение;

3)оптимальное значение достигается в бесконечности: если только одна переменная имеет отрицательную оценку, но среди коэффициентов нет ни одного положительного, т.е. мы не можем делить.

1.6. Двойственная задача линейного программирования

Дана задача линейного программирования в стандартной форме (ограничения в виде неравенств, направленных в одну сторону):

z c1x1 ...

 

 

cj xj cj 1xj 1

...

cn xn max;

(1.6.1)

a x a x ...

a x b ;

 

 

 

 

11

1

12

2

 

1n

n

1

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai1x1 ai2 x2 ...

ain xn bi ;

 

 

 

(1.6.2)

a

 

 

x a

x

 

... a

x

b

;

i 1,1

 

1 i 1,2 2

 

 

i 1,n n

 

i 1

 

 

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

 

 

 

 

 

x

 

a

x

 

a

x b

 

;

 

 

a

 

 

 

 

 

 

m1

1

m2

2

 

mn n

m

 

 

 

 

 

 

 

 

x1,..., xj 0,

 

 

 

 

(1.6.3)

где переменные xj, j = 1, …, n означают выпуск продукции различных наименований;

cj – коэффициент эффективности от единицы произведенной продукции;

27

aij – норма расхода i-го ресурса на единицу продукции j-го вида;

bi – объем i-го ресурса.

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

Составим другую задачу линейного программирования, число переменных которой равно числу ограничений данной задачи, т.е. m, каждая переменная соответствует неравенству прямой задачи. Обозначим их буквами y1, y2, …, ym. Эта задача имеет вид

g( y) b1 y1 ... bi yi bi 1 yi 1 ... bm ym min; (1.6.4)

a y a y

2

...

 

a

y

n

c ;

 

 

 

 

11 1

 

12

 

 

 

 

1n

 

 

 

1

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai2 y2

 

 

ain yn cj ;

 

 

 

 

ai1 y1

 

 

 

 

(1.6.5)

a

 

y a

 

 

y

2

 

... a

 

 

y

n

c

j 1

;

i 1,1

 

1

i 1,2

 

 

 

 

i 1,n

 

 

 

 

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

 

 

 

 

 

y

 

a

y

 

 

 

a y

 

c ;

 

 

 

a

 

2

...

n

 

 

 

 

m1 1

 

m2

 

 

 

 

mn

 

 

 

n

 

 

 

 

 

 

 

 

y1,..., yi 0.

 

 

 

 

 

 

 

(1.6.6)

Вторая задача называется двойственной для первой, а первая – прямой задачей.

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

Пропишем правила построения двойственной задачи: 1. Коэффициенты системы ограничений двойственной задачи есть матрица, полученная путем транспонирования матрицыкоэффициентовсистемыограниченийпрямойзадачи.

28

2.Если прямая задача на max, то двойственная на min,

инаоборот.

3.Неравенства в системе ограничений двойственной

задачи направлены в противоположную сторону, чем

впрямой задаче.

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

5.Между переменными прямой и двойственной задач есть соответствие: дополнительные переменные прямой задачи соответствуют основным переменным двойственной, и наоборот.

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

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

Покажем взаимосвязь прямой и двойственной задач.

Прямая задача

z(x) n cj xj max; (1.6.7)

j 1

n

 

aij xj bi ,i

 

;

 

1, m

(1.6.8)

j 1

 

xj 0;

(1.6.9)

Двойственная задача

m

 

 

 

 

g( y) bi yi

min; (1.6.10)

i 1

 

 

 

 

m

 

 

 

 

aij yi cj , j

 

;

 

1, n

(1.6.11)

i 1

 

 

 

 

yi 0.

 

 

 

(1.6.12)

29

Фундаментальные свойства, которыми обладают взаимно двойственные задачи линейного программирования, могут быть сформулированы в виде приводимых ниже утверждений. Их обычно называют теоремами двойст-

венности.

Теорема 1. Для взаимно двойственных задач линейного программирования возможно два случая:

1.Если прямая задача имеет оптимальное решение, то

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

падают: z(x* ) g( y* ) .

2. Если прямая задача не имеет решения, то и двойственная задача не имеет решения.

Теорема 2. Если для двух взаимно двойственных задач линейного программирования x* – допустимое решение прямой задачи, а y* – допустимое решение двойст-

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

m

 

x*j ( aij yi* cj ) 0 ;

(1.6.13)

i 1

 

n

 

yi* ( aij x*j bi ) 0 .

(1.6.14)

j 1

Из теоремы 2 вытекает четыре условия дополняющей нежесткости:

1. Если в оптимальном плане переменная прямой задачи равна нулю (xj* = 0), то соответствующее ограничение двойственной задачи из условия (1.6.13) выполняется как

строгое неравенство aij yi* cj , т.е. если изделие невы-

30