[Назад] [Содержание] [1] [2] [3] [4] [5]

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

Теоретическая часть

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


2.1. Задачи линейного программирования

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

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

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

Все задачи линейного программирования можно разделить на следующие группы:

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

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

Дана система из m линейных уравнений и неравенств с n переменными:
формула 2.1
(2.1)

и линейная функция
формула 2.2
(2.2)

Необходимо найти такое решение (план) системы
формула 2.3
(2.3)

где
формула 2.4
(2.4)

при котором линейная функция F (2.2) принимает оптимальное (то есть максимальное или минимальное в зависимости от задачи) значение. При этом система (2.1) - система ограничений, а функция F (2.2) - целевая функция (функция цели).

Геометрически область допустимых решений такой задачи можно представить как многогранник в n мерном пространстве (2.5).

рисунок 2.5
Пример геометрического представления области допустимых решений задачи, где F - линия целевой функции, F=0 начальное положение функции, F=Fmax оптимальное положение функции, A, B, C, D, E - вершины многоугольника.
(2.5)

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


2.2. Решение задач симплексным методом

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

Для решения задач симплексным методом надо освоить три основных элемента:

Кроме того, для решения задачи симплексным методом, она должна быть представлена в канонической форме (все неравенства должны быть заменены уравнениями). Для этого, если в неравенстве стоит знак "" или "", надо ввести дополнительную переменную в левую часть уравнения, со знаком "-" при её коэффициенте, иначе со знаком "+". И так заменяются все неравенства.
Далее, на примере, показано как ищется оптимум в симплексной задаче, в алгебраическом виде.
Дана следующая функция цели:
формула 2.6
(2.6)

при ограничениях
формула 2.7
(2.7)

Надо найти максимум в этой задачи.
Сначала надо с помощью дополнительных переменных привести задачу к каноническому виду:
формула 2.8
(2.8)

Далее надо выбрать m - 4 основных переменных. Они выбираются по следующему правилу: каждая из этих переменных должна входить в какое-либо уравнение один раз, при этом не должно быть такого уравнения, где не было бы ни одной из них (определитель этих переменных не должен быть нулевым). Исходя из этого правила, нам подходят x3, x4, x5, x6. Так как их знаки совпадают со знаком соответствующего свободного члена уравнения, то данное решение системы является допустимым, иначе надо искать первоначальное допустимое решение (смотрите следующий подраздел). Далее выражаем основные переменные через неосновные.
формула 2.9
(2.9)

первое полученное решение выглядит как X1=(0,0,18,16,5,21) - цифры это свободные члены в уравнении, где находится основная переменная (все переменные идут по порядку), если данная переменная неосновная, то пишем ноль. Так как в этом решении нет отрицательных компонент оно допустимо, о чём говорилось ранее. Но, глядя на функцию цели (2.6) мы видим, что в ней есть положительные переменные, а значит, её значение можно увеличить (за счёт любой из них). Выбираем для её увеличения, например, x2. Сперва, надо определить границу роста этой переменной в каждом уравнении, при этом надо следовать следующим правилам:

В данном примере получаем: x2=min{18/3; 16/1; 5/1; ?}=5, выбирается самая маленькая граница, она и определяет разрешающее уравнение. В данном случае это третье уравнение. Теперь в разрешающем уравнении переводим x2 в основные переменные (а значит x5 в дополнительные). И выражаем x2 во всех уравнениях через его значение (уравнение).
формула 2.10
(2.10)

Второе базисное решение так же допустимо и равно X2=(0; 5; 3; 11; 0; 21) . Теперь, надо выразить функцию через неосновные переменные.
формула 2.11
(2.11)

Как видите, есть ещё положительная переменная x1, а значит, текущее значение функции (F=15) можно увеличить. Повторяем все шаги, в итоге у вас должно получится значение 24. Из вышесказанного можно сделать вывод, что максимум функции цели достигнут тогда, когда в её уравнении нет ни одной положительной переменной, для минимума наоборот (задача на минимум решается так же, но надо убирать не положительные, а отрицательные переменные из уравнения функции).

Вот так выглядит решение задачи симплексным методом. Но есть особые случаи симплексного метода.

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

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

Отсутствие конечного оптимума. Это когда на очередном шаге решения все границы роста равны бесконечности или минус бесконечности. Графически это выглядит, как отсутствие какое-то стороны многогранника области допустимых решений и функция может двигаться в эту сторону до бесконечности.

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


2.3. Двойственные задачи

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

Экономическая интерпретация двойственных задач.

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

Экономическая интерпретация задачи, двойственной задаче об использовании ресурсов.
Ранее рассмотрена задача об использовании ресурсов (экономико-математическая модель и содержательная интерпретация этой задачи I представлены в левой части табл. 6.1). В приведенной модели bi (i = 1, 2, ..., m) обозначает запас ресурса Si , aij - число единиц ресурса Si потребляемого при производстве единицы продукции Pj(j = 1, 2, ..., n); Cj - прибыль (выручка) от реализации единицы продукции Pj (или цена продукции Pj).
Предположим, что некоторая организация решила закупить ресурсы S1, S2, ..., Sm предприятия и необходимо установить оптимальные цены на эти ресурсы у1, у2, ..., ym
Очевидно, что покупающая организация заинтересована в том, чтобы затраты на все ресурсы Z в количествах b1, b2, ..., bm по ценам соответственно у1, у2, ..., ym были минимальны, т.е
Z = b1у1 + b2 у2 + ... + bm уm min .
С другой стороны, предприятие, продающее ресурсы, заинтересовано в том, чтобы полученная выручка была не менее той суммы, которую предприятие может получить при переработке ресурсов в готовую продукцию. На изготовление единицы продукции Р1 расходуется a11 единиц ресурса S1, a21 единиц ресурса S2, ..., ai1 единиц ресурса Si ..., аm1 единиц ресурса Sm по цене соответственно у1, у2, ..., уi ..., ym. Поэтому для удовлетворения требований продавца затраты на ресурсы, потребляемые при изготовлении единицы продукции Р1 должны быть не менее ее цены c1, т.е.
a11 у1 + a21 у2 +:+ am1 уm>= c1
Аналогично можно составить ограничения в виде неравенств по каждому виду продукции Р1, Р2, ..., Рm. Экономико-математическая модель и содержательная интерпретация полученной таким образом двойственной задачи II приведены в правой части табл. 6.1.

Задача I (исходная) Задача II (двойственная)
F=c1x1+c2x 2+...+cnxnmax                              (6.1)
при ограничениях
a11x1 + a12x2+...+ a1nxn <= b1
a21x1 + a22x2+...+ a 2nxn <= b2
                              (6.2)
am1x1 + am2x2+...+ amnxn <= bm
и условии неотрицательности
x1>= 0; x2>= 0;: xn>= 0
Составить такой план выпуска продукции
Х = 1, х2, ..., хn),
при котором прибыль (выручка) от реализации продукции будет максимальной при условии, что потребление ресурсов по каждому виду продукции не превзойдет имеющихся запасов.
Z=b1y1+b2y2+...+bm ym min                              (6.4)
при ограничениях
a11у1 + a21у2+...+ am1уm >= c1
a12у1 + a22у2+...+ am2уm >= c2
                              (6.5)
a1nу1 + a2nу2+...+ amnуm >= cn
и условии неотрицательности.
y1>= 0; y2>= 0;: ym>= 0
Найти такой набор цен (оценок) ресурсов
Y
= 1, y2, ..., уm),
при котором общие затраты на ресурсы будут минимальными при условии, что затраты на ресурсы при производстве каждого вида продукции будут не менее прибыли (выручки) от реализации этой продукции

Цены ресурсов у1, у2, ..., уm в экономической литературе получили различные названия: учетные, неявные, теневые. Смысл этих названий состоит в том, что это условные, "ненастоящие" цены. В отличие от "внешних" цен c1, с2, ..., cn на продукцию, известных, как правило, до начала производства, цены ресурсов у1, у2, ..., уn являются внутренними, ибо они задаются не извне, а определяются непосредственно в результате решения задачи, поэтому их чаще называют оценками ресурсов.

Свойства двойственных задач.

Рассмотрим формально две задачи I и II линейного программирования, представленные в табл. 6.1, абстрагируясь от содержательной интерпретации параметров, входящих в их экономико-математические модели. Обе задачи обладают следующими свойствами:
1. В одной задаче ищут максимум линейной функции, в другой - минимум.
2. Коэффициенты при переменных в линейной функции одной задачи являются свободными членами системы ограничений в другой.
3. Каждая из задач задана в стандартной форме, причем в задаче максимизации все неравенства вида "<=", а в задаче минимизации - все неравенства вида
">=".
4. Матрицы коэффициентов при переменных в системах ограничений обеих задач являются транспонированными друг к другу:
для задачи I A =

для задачи II А' = 

5. Число неравенств в системе ограничений одной задачи совпадает с числом переменных в другой задаче.
6. Условия неотрицательности переменных имеются в обеих задачах.
Две задачи I и II линейного программирования, обладающие указанными свойствами, называются симметричными взаимно двойственными задачами.
В дальнейшем для простоты будем называть их просто двойственными задачами.
Исходя из определения, можно предложить следующий алгоритм составления двойственной задачи.
1. Привести все неравенства системы ограничений исходной задачи к одному смыслу: если в исходной задаче ищут максимум линейной функции, то все неравенства системы ограничений привести к виду "<=", а если минимум - к виду ">=". Для этого неравенства, в которых данное требование не выполняется, умножить на -1.
2. Составить расширенную матрицу системы А1 в которую включить матрицу коэффициентов при переменных А, столбец свободных членов системы ограничений и строку коэффициентов при переменных в линейной функции.
3. Найти матрицу А'1, транспонированную к матрице А1.
4. Сформулировать двойственную задачу на основании полученной матрицы A'1 и условия неотрицательности переменных.

Соответствие переменных
Переменные исходной задачи
Первоначальные Дополнительные
Дополнительные Первоначальные
Переменные двойственной задачи


2.4. Решение задач с помощью симплексных таблиц

В этом разделе описано использование симплексных таблиц для решения задач. Использование симплексных таблиц весьма удобно для ручного расчёта задач. Для заполнения первой симплексной таблицы надо привести систему к каноническому виду. Затем если надо ищется первоначальное допустимое решение или задачу надо решать M-методом. Кроме того, систему представляют в расширенном виде.
формула 2.19
(2.19)

Обратите внимание, что коэффициенты при переменных в функции меняют знак! Все введённые переменные имеют тот же знак, что и свободные члены иначе надо использовать M-метод (или заранее отыскать ПДБР). Далее эти данные заносятся в первую симплексную таблицу, общий вид которой представлен ниже.

Базис
Свободный член
Переменные
Оценочное отношение
x1
...
xj
...
xs
...
xn+m
x1
b1
a11
...
a1j
...
a1s
...
a1n+m
g1
...
...
...
...
...
...
...
...
...
...
xi
bi
ai1
...
aij
...
ais
...
ain+m
gi
...
...
...
...
...
...
...
...
...
...
xq
bq
aq1
...
aqj
...
aqs
...
aqn+m
gq
...
...
...
...
...
...
...
...
...
...
xm
bm
am1
...
amj
...
ams
...
amn+m
gm
F
c0
c1
...
cj
...
cs
...
cn+m
MAX/MIN
(2.20)

Теперь, поясним, что есть что. Каждая строка - это уравнение в расширенной системе (смотрите формулу 2.19). В столбце "Базис" перечисляются все базисные (основные) переменные, их число равно числу уравнений в системе ограничений. Следующий столбец, "Свободные член" заполняется значениями свободных членов уравнения. В самую верхнюю строку (под надписью "переменные") выписываются все переменные. Самая нижняя строка, начиная с c1, заполняется значениями коэффициентов при переменных, которые написаны вверху таблицы, из уравнения функции (с обратным знаком, как в расширенной системе), если в уравнении функции такой переменной нет, то пишем ноль. Ячейки "a" заполняются так. Если вверху столбца написана основная переменная, то на пересечении этого столбца со строкой, в которой написана та же переменная ставим 1, во все остальные ячейки столбца пишем 0. Если же вверху столбца неосновная переменная, то в ячейки записываются её коэффициенты из соответствующего уравнения, если её нет в этом уравнении, то пишем 0. В ячейку c0, на первом шаге просто пишем ноль.

Далее надо провести проверку на оптимальность решения. Это делается легко, если задача на минимум то решение оптимально, если все c, кроме c0, имеют отрицательные знаки, если же задача на максимум, то когда положительные знаки.

Если решение не оптимально, ищем разрешающий столбец (индекс s), он определяется коэффициентом при переменной в уравнении функции, то есть нижней строкой начиная c1. Для задачи на минимум это любой столбец, где c максимальный, положительный элемент, а для задачи на максимум, минимальный, отрицательный элемент. Далее проводим расчёт оценочных отношений и заполняем соответствующий столбец. Расчет производится в соответствии со следующим правилом:

После того, как столбец с g заполнен. Выбирается разрешающая строка (индекс q). Это строка, в которой самое минимальное оценочное отношение (но не ноль и не бесконечность). На пересечении разрешающих строки и столбца находится разрешающий элемент - aqs.

Теперь составляется новая таблица. В столбце "Базис" вместо старой переменной - xq пишем новую - xs. Опять на пересечении основных переменных ставим 1, а остальные клетки в столбцах основных переменных заполняем нулями (включая нижнюю строку). Далее, новую строку с номером q получаем путём деления старой строки на разрешающий элемент (aqs), при этом считаем только пустые клетки (те которые в столбцах неосновных переменных).

Остальные клетки считаем по следующим формулам:

Клетка c0 заполняется как старая c0-cs*gq.

Затем снова проверяем решение на оптимальность, если оно не оптимально ищем разрешающий элемент и так далее, пока не найдём оптимума.

Но возможны и другие ситуации - особые случаи симплексного метода. Например, задача не имеет решения, если все оценочные отношения gi равны нулям и бесконечностям. Кроме того, задача так же может зациклится. Эти случаи тоже следует учитывать.

[Назад] [Содержание] [1] [2] [3] [4] [5] [Наверх страницы]