1. ПОСТАНОВКА И ОБЩАЯ СХЕМА ... ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

advertisement
1. ПОСТАНОВКА И ОБЩАЯ СХЕМА РЕШЕНИЯ ЗАДАЧ
ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Математическое
программирование
рассматривает
задачи
оптимизации. Сущность таких задач можно выразить следующим
образом: определить значения переменных x1, x2,…,xn, которые
обеспечивают экстремум функции L(x1, x2,…,xn) с учетом ограничений,
наложенных на аргументы этой функции – переменные x1, x2,…,xn (
элементы решения ). Функция L, для которой определяется
экстремум, называется целевой функцией. Содержательный смысл
переменных x1, x2,…,xn и целевой функции L полностью зависит от
решаемой задачи.
Среди задач математического программирования наиболее изучены
задачи линейного программирования, в которых целевая функция L
линейно зависит от элементов решения x1, x2,…,xn, а ограничения,
накладываемые на элементы решения, имеют вид линейных равенств
или неравенств относительно x1, x2,…,xn. Таким образом, в задачах
линейного программирования находится экстремум линейной целевой
функции
при
линейных
ограничениях.
Задача
линейного
программирования в общей форме формулируется следующим
образом: найти значения переменных x1, x2,…,xn, которые доставляют
максимальное (минимальное) значение целевой функции
L  c1x1  c2 x2  ...  cn xn  max(min)
(1.1)
и удовлетворяют системе ограничений
a11x1  a12 x2  ...  a1n xn  b1,

a21x1  a22 x2  ...  a2 n xn  b2 ,

.............................................
a x  a x  ...  a x  b ,
m2 2
mn n
m
 m1 1
 x1  0, x2  0, . . . , xn  0.
(1.2)
Здесь n – количество переменных, m - общее количество
ограничений, знак  обозначает одну из операций отношения {, , } .
В некоторых задачах на все или некоторые переменные может
накладываться требование целочисленности.
Формулировка задачи (1.1) , (1.2) представляет собой
математическую модель задачи, или постановку задачи линейного
программирования в общей форме.
Допустимое решение задачи линейного программирования – это
набор значений переменных x1, x2,…,xn, удовлетворяющих условиям
(1.2). Исторически сложилось, что допустимое решение задачи
линейного программирования называют планом. Множество всех
планов называется областью допустимых решений (ОДР).
Оптимальное решение – это такой план, который максимизирует (или
минимизирует)
функцию
(1.1).
Обычно
задача
линейного
программирования имеет бесконечное множество всех планов и
единственный оптимальный план.
Решение задачи линейного программирования состоит в
нахождении оптимального плана.
Основной метод решения задач линейного программирования –
симплекс-метод. Для решения задачи этим методом она должна быть
приведена к канонической форме. В этой форме задачи все
переменные должны быть неотрицательны, все ограничения имеют
вид равенств:
L  c1x1  c2 x2  ...  cn xn  max(min),
a11x1  a12 x2  ...  a1n xn  b1,

a21x1  a22 x2  ...  a2 n xn  b2 ,

.............................................
a x  a x  ...  a x  b ,
m2 2
mn n
m
 m1 1
 x1  0, x2  0, . . . , xn  0.
(1.3)
При сведении задачи, заданной в общей (произвольной) форме
(1.1), (1.2), к канонической форме (1.3) количество переменных, как
правило, изменяется, поэтому значения n для (1.1), (1.2) и (1.3)
обычно разные.
Для приведения задачи к канонической форме требуется привести
ограничения-неравенства к ограничениям-равенствам. Для перехода
от ограничений-неравенств к равенствам вводятся дополнительные
(свободные) переменные. Такие переменные вычитаются из левых
частей ограничений «не меньше» и прибавляются к левым частям
ограничений «не больше».
Общая схема решения задач линейного программирования с
использованием симплекс-метода следующая:
1. По содержательной постановке задачи строится ее
математическая модель в общей форме.
2. Задача приводится к канонической форме (1.3).
3. Если система основных ограничений задачи (1.3) находится в
предпочтительном виде, то выполняется переход к шагу 7.
Обычно это возможно для задач, в постановке которых
имеются только ограничения вида «не больше».
4. Строится
вспомогательная
задача
линейного
программирования.
5. C
помощью
симплекс-метода
находится
решение
вспомогательной задачи и, тем самым, начальный базисный
план исходной задачи.
Производится переход от вспомогательной задачи линейного
программирования к исходной (в задачу возвращается
исходная целевая функция).
7. С помощью симплекс-таблиц находится оптимальный план
исходной задачи.
8. Выполняется анализ на чувствительность, т. е. анализ
зависимости результатов от изменений в постановке задачи
(если это требуется).
9. Находятся интервалы устойчивости оптимального решения к
изменениям правых частей.
10. Находится целочисленное решение (если это требуется по
содержанию задачи). Для этого применяется метод ветвей и
границ или метод Гомори.
11. Производится интерпретация результатов решения задачи, т.
е. определяется их содержательный смысл.
6.
2. ПРИМЕРЫ ФОРМАЛИЗАЦИИ ЗАДАЧ ЛИНЕЙНОГО
ПРОГРАММИРОВАНИЯ
2.1. Задача о распределении ресурсов (или производственная
задача)
Имеется m видов ресурсов (под ресурсами понимается сырье,
энергия, рабочее время, потребительский спрос и т.д.). Известны
запасы каждого ресурса: bi, i=1,...,m. Ресурсы можно использовать для
выпуска n видов продукции. Известна прибыль от выпуска единицы
каждого вида продукции: cj, j=1,...,n. Известны расходы каждого
ресурса на единицу каждого вида продукции: ai j , i=1,...,m, j=1,...,n;
здесь aij - расход i-го ресурса на выпуск единицы j-го вида продукции
(возможно, что некоторые коэффициенты ai j равны 0, если i-ый ресурс
для выпуска j-ой продукции не используется). Требуется составить
оптимальный план производства, т.е. найти, сколько продукции
каждого вида требуется выпускать, чтобы получить максимальную
прибыль (при соблюдении ограничений на ресурсы).
Введем в рассмотрение неизвестные переменные x1, x2, …, xn.
Переменная xj будет обозначать план выпуска продукции j-го типа,
j  1,n . Тогда cjxj – ожидаемая прибыль предприятия от реализации
продукции j-го типа, выражение
с1x1 +c2x2 + . . . +cnxn
представляет собой общую прибыль предприятия от реализации всей
продукции, произведенной в соответствии с планом x1, x2, …, xn.
Максимизации прибыли – цель настоящей задачи. Поэтому можно
записать целевую функцию:
L(x)= с1x1 +c2x2 + . . . +cnxn→max.
Сформулируем ограничения, вытекающие из постановки задачи.
Во-первых, для производства продукции используется сырье,
запасы которого небезграничны. Рассмотрим более подробно первый
вид сырья. a11 – норма расхода этого сырья на производство единицы
(штуки, килограмма, литра и т.п.) продукции первого вида. Поэтому
a11x1 – расход сырья 1-го вида на весь выпуск продукции 1-го вида.
Аналогично a12x2 – расход сырья 1-го вида на выпуск продукции 2-го
вида, a13x3 – 3-го вида и т.д. Для реализации всего плана x1, x2, …, xn
выпуска продукции потребуется
a11x1 + a12x2 + . . . + a1nxn
единиц сырья 1-го вида. Естественно эта величина не может
превосходить b1 – количества сырья 1-го вида, имеющегося в запасах
у предприятия. Т.о. возникает ограничение
a11x1 + a12x2 + . . . + a1nxn ≤ b1.
Рассуждая подобным образом для 2-го, 3-го, . . . , n-го вида сырья,
получим ограничения
a11x1 + a12x2 + . . . + a1nxn ≤ b1,
a21x1 + a22x2 + . . . + a2nxn ≤ b2,
.........................
am1x1 + am2x2 + . . . + amnxn ≤ bm.
Во-вторых, необходимо учесть, что искомые переменные не могут
принимать отрицательных значений, т.е.
x1 ≥0, x2 ≥0, . . . , xn ≥0.
Таким образом, окончательно математическая модель задачи
принимает вид:
L( x )  c1x1  c2 x2  ...  cn x n  max,
a1. x1  a12 x2  ...  a1n xn  b1,

a21x1  a22 x2  ...  a2n xn  b2,

.............................................
a x  a x  ...  a x  b ,
m2 2
mn n
m
 m1 1
 x1  0, x2  0, . . . , xn  0.
В задачу о распределении ресурсов часто входят и другие
ограничения. Например, если задано условие, что изделий k-го вида
необходимо выпустить не менее sk единиц, то вводится следующее
ограничение:
xk >= sk.
Если задано, что изделия видов p и q должны выпускаться в
соотношении sp / sq , то вводится следующее ограничение:
xp/ xq = sp/ sq,
которое приводится к стандартной форме следующим образом:
sq xp – sp xq = 0.
2.2. Задача о загрузке оборудования
Имеется m станков, на каждом из которых можно выпускать любые
из n деталей. Известно максимально возможное время работы
каждого станка: bi , i=1,…, m. Известна длительность изготовления
каждой детали на каждом из станков: ai j, i=1,…, m, j=1, …, n, т.е. ai j длительность обработки j–ой детали, если она изготавливается на iом станке. Заданы также затраты на выпуск каждой детали на каждом
из станков uij , i=1, …,m, j=1, …, n, и цены, по которым продаются
детали: cj , j=1, …,n. Требуется найти, сколько деталей каждого вида
следует изготовить на каждом из станков, чтобы получить
максимальную прибыль.
Обозначим через xij количество деталей j–го вида, которые
требуется выпустить на i–ом станке. Тогда a11x11 – время работы 1-го
станка над производством 1-ой детали, a12x12 – над производством 2ой детали и т.д. Общее время работы 1-го станка над
запланированной для него программой выпуска деталей составит
a11x11+ a12x12+ . . . + a1nx1n.
Поскольку время работы 1-го станка ограничено величиной b1,
возникает ограничение
a11x11+ a12x12+ . . . + a1nx1n≤ b1.
Понятно, что аналогичные ограничения возникают для 2-го, 3-го, . . .
, m-го станка:
ai1xi1+ ai2xi2+ . . . + ainxin≤ bi, i=2,3, . . . ,m.
Рассмотрим целевую функцию задачи. Количество деталей j-го вида
составит x1j+ x2j+ . . . + xmj штук; cj(x1j+ x2j+ . . . + xmj) – выручка от их
продажи. Затраты на производство деталей j-го вида составят u1j x1j +
u2j x2j+ . . . + umj xmj. Поэтому прибыль от производства деталей j-го
вида, будет определяться формулой
m
m
m
i 1
i 1
i 1
cl  xij   uij xij   (c j  uij )xij
Суммируя по всем видам деталей, получаем целевую функцию
задачи:
n
m
 (c
J 1 i 1
j
 uij )xij  max .
C учетом неотрицательности искомых переменных математическая
модель задачи формулируется следующим образом:
n
m
 ( c
J 1 i 1
j
 uij )xij  max,
a11x11  a12 x12   a1n x1n  b1,

a21x21  a22 x22   a2 n x2 n  b2 , .


a x  a x   a x  b ,
m2 m2
mn mn
m
 m1 m1
 xij  0, i  1,m, j  1,n.

Если также задано условие, что деталей k-го вида необходимо
выпустить не менее Sk единиц, то вводится следующее ограничение:
x1k + x2k … + xmk > = Sk.
2.3. Задача о рационе
В рацион для откорма сельскохозяйственных животных должны
входить m питательных веществ. Известны величины минимально
необходимого потребления каждого из этих веществ: bi, i=1, …, m.
Рацион составляется из n видов продуктов. Содержание питательных
веществ в единице каждого из продуктов известно: ai j , i=1, …, m, j =1,
…, n, где aij – содержание i-го питательного вещества в единице j-го
продукта. Известны цены на продукты, которые могут входить в
рацион: cj, j=1,…, n. Требуется составить рацион минимальной
стоимости, обеспечивающий выполнение всех требований к
содержанию питательных веществ.
Обозначим через xj количество единиц j-го продукта, которое
должно входит в рацион минимальной стоимости. Тогда
математическая модель задачи формулируется следующим образом:
L( x )  c1x1  c2 x2  ...  cn x n  min,
a11x1  a12 x2  ...  a1n xn  b1,

a21x1  a22 x2  ...  a2 n xn  b2 ,

.............................................
a x  a x  ...  a x  b ,
m2 2
mn n
m
 m1 1
 x1  0, x2  0, . . . , xn  0.
2.4. Задача о раскрое
Для изготовления изделий m типов выполняется раскрой
одинаковых заготовок материала. Имеется n способов раскроя. Для
каждого способа раскроя известно количество изделий каждого типа,
получаемых из одной заготовки: aij, i=1,…,m, j=1,…, n; здесь aij –
количество изделий i-го типа, получаемых из одной заготовки при ее
раскрое j-м способом. Известны величины отходов для каждого
способа раскроя: cj, j=1, … , n. Задано количество изделий каждого
типа, которые требуется получить при раскрое: bi, i=1,…,m. Требуется
составить оптимальный план раскроя материала, т.е. найти сколько
заготовок требуется раскроить каждым из способов, чтобы получить
заданное количество изделий при минимальных отходах.
Обозначим количество заготовок, раскраиваемых по j–му способу,
как xj. Тогда математическая модель задачи формулируется
следующим образом:
L( x )  c1x1  c2 x2  ...  cn x n  min,
a11x1  a12 x2  ...  a1n xn  b1,

a21x1  a22 x2  ...  a2 n xn  b2 ,

.............................................
a x  a x  ...  a x  b ,
m2 2
mn n
m
 m1 1
 x1  0, x2  0, . . . , xn  0.
2.5. Задача о смеси
Требуется составить смесь, в которою должны входить m
компонентов. Заданы нижние (di) и верхние (Di) ограничения на
содержание компонентов в смеси, i=1,…,m. Для составления смеси
могут использоваться n веществ. Известно содержание каждого
компонента в каждом из веществ: aij, i=1,..,m, j=1,...,n; здесь aijсодержание i-го компонента в j-м веществе (в долях или процентах ).
Заданы также цены единицы каждого из веществ: cj, j=1,…,n.
Требуется определить состав смеси, стоимость которого была бы
минимальной.
Обозначим через xj содержание j-го вещества в единице смеси.
Тогда математическая модель задачи формулируется следующим
образом:
L( x )  c1x1  c2 x2  ...  cn x n  min,
a11x1  a12 x2  ...  a1n xn  d1,

a21x1  a22 x2  ...  a2 n xn  d 2 ,
.............................................

am1x1  am 2 x2  ...  amn xn  d m ,
a x  a x  ...  a x  D ,
11 1
12 2
1n n
1

a21x1  a22 x2  ...  a2 n xn  D2 ,
.............................................

am1x1  am 2 x2  ...  amn xn  Dm ,
 x  x  ...  x  1,
2
n
 1
 x1  0, x2  0, . . . , xn  0.
2.6. Транспортная задача.
Имеется m поставщиков однотипной продукции. Каждый из
поставщиков обладает запасами в ai единиц этой продукции, i=1,…,m.
Эту продукцию потребляют n потребителей. При этом каждый
потребитель может использовать bj единиц продукции, j=1,…,n.
Доставка единицы продукции от i-го поставщика к j-му потребителю
обходится cij денежных единиц.
Необходимо составить план доставки продукции от поставщиков к
потребителям, который бы обладал минимальными транспортными
издержками.
Введем в рассмотрение переменные xij — план поставки продукции
от i-го поставщика к j-му потребителю. Тогда cijxij - транспортные
затраты, связанные с этой поставкой. Общая сумма транспортных
затрат будет представлять целевую функцию транспортной задачи:
m
n
 c x
i 1 j 1
ij
ij
 min .
Рассмотрим вопрос об ограничениях. Во-первых, каждый поставщик
обладает ограниченными запасами продукции. Поэтому общая сумма
выполняемых им поставок не может превышать имеющихся у него
запасов:
n
x
j 1
ij
 ai , i  1,m.
Во вторых, необходимо обеспечить потребности каждого потребителя.
Сумма поставок от всех поставщиков должна соответствовать его
потребностям:
m
x
i 1
ij
 b j , j  1,n.
С учетом естественных ограничений (xij≥0) математическая модель
задачи принимает вид:
m n
 cij xij  min,
 i 1 j 1
n
 xij  ai , i  1,m,
 j 1
m
 xij  b j , j  1,n,
 i 1
 x  0, i  1,m, j  1,n.
 ij
Download