
4 курс / 4 Дист. м. математическое программирование
.pdfМАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
1 Общая характеристика линейного программирования
Линейное программирование – направление математики, изучающее методы решения экстремальных (на поиск максимума или минимума) задач, которые характеризуются линейной зависимостью между переменными и линейным критерием оптимальности. Полученное решение должно соответствовать ограничениям, установленным в задаче. Это наиболее разработанный и широко применяемый раздел математического программирования. Программирование при этом понимается как «программа действий».
К математическим задачам линейного программирования относят исследования определенных производственных ситуаций, которые в том или ином виде интерпретируются как задачи об оптимальном использовании ограниченных ресурсов.
Линейное программирование может использоваться для решения широкого круга задач, в частности:
1)оптимальное использование производственных ресурсов;
2)планирование оптимальной номенклатуры продукции, рациональной загрузки транспортных средств;
3)нахождение оптимальной комбинации различных видов продукции (управление товарно-материальными запасами);
4)транспортные задачи.
2 Транспортная задача
Транспортной задачей (ТЗ) в классическом понимании является задача распределения объемов перевозок по возможным маршрутам доставки грузов от пунктов производства к пунктам потребления, исходя из условия обеспечения минимума суммарных транспортных расходов. При этом должен выполняться ряд условий перевозок, которые определяют тип конкретной ТЗ и способ ее решения. Существует несколько основных типов транспортных задач, они будут рассмотрены ниже.
Результатом решения любой транспортной задачи является составление оптимального плана перевозок. В качестве критерия оптимальности обычно принимают суммарные расходы, связанные с доставкой груза от пунктов отправления к пунктам назначения. Очевидно, что оптимальным планом перевозок будет тот, который обеспечивает минимальное значение функции суммарных транспортных расходов. Могут быть и другие критерии оптимизации, например суммарный пробег транспортных единиц в процессе перевозок и т. п.
В зависимости от выбранного критерия оптимизации целью процесса решения транспортной задачи будет достижение максимального, минимального или некоторого конкретного значения этого критерия. Функция изменения значения критерия оптимизации в зависимости от прочих условий задачи называется целевой функцией транспортной задачи.
Классическая транспортная задача − задача об оптимальном плане перевозок однородного груза или полностью взаимозаменяемых грузов из пунктов производства в пункты потребления. В качестве пунктов производства и пунктов потребления, могут рассматриваться, например, железнодорожные станции отправления и назначения.
Для решения транспортных задач используются специальные методы (метод потенциалов, северо-западного угла, минимального элемента и др.) которые достаточно подробно описаны в литературе. Целесообразность их
использования в варианте «ручного» расчета при решении прикладных задач, с учетом развития программно-вычислительных возможностей компьютерной техники, представляется дискуссионной. Многие из таких задач могут быть решены с использованием распространенных программ, в
частности, Microsoft Excel.
Задача формулируется следующим образом. Имеется т пунктов производства (A1,…,Am) однородного продукта или взаимозаменяемых продуктов и п пунктов потребления (B1,…,Bn). Заданы объемы производства ai каждого пункта производства и размеры спроса bj каждого пункта потребления в одних и тех же единицах (в штуках, тоннах, вагонах и т.п.). Известны также «транспортные издержки» cij, связанные с перевозкой единицы продукта из пункта Ai в пункт Bj. В качестве «транспортных издержек» может рассматриваться стоимость перевозки 1 единицы груза по соответствующему маршруту, доход от его перевозки, расстояние, время, расход топлива и др.
В транспортной задаче требуется составить план перевозок, обеспечивающий оптимальным способом удовлетворение спроса всех пунктов потребления за счет продукции пунктов производства.
ТЗ называется задачей закрытого (замкнутого) типа, если выполняется условие баланса производства и потребления:
n
∑bj = ∑m ai .
j =1 i=1
Пусть Xij − количество единиц продукта, поставленное из пункта Ai в пункт Bj. Суммарные затраты (суммарные транспортные издержки) на перевозку продуктов из m пунктов производства в n пунктов потребления выражаются суммой:
m |
n |
Z= ∑∑cij xij , |
|
i=1 |
j=1 |
где Z – целевая функция ТЗ, которая, в зависимости от физического смысла cij, должна стремиться к минимуму или максимуму.
При решении задачи должны выполняться следующие условия:
А) Полное удовлетворение потребностей каждого пункта потребления:
m
∑xij =bj ,i =1,2,...,n.
j=1
Б) Полный вывоз груза из каждого пункта производства:
∑n xij = ai , j =1,2,..., m.
i=1
Объемы перевозок − неотрицательные числа, поэтому перевозки из пунктов потребления в пункты производства исключены. При формальном решении задачи в систему ограничений должно быть включено условие:
xij ≥ 0,i =1,2,...,m; j =1,2,...,n.
Транспортная задача сводится, таким образом, к минимизации суммарных затрат при обозначенных выше условиях.
Во многих задачах не нужно требовать, чтобы весь произведенный продукт в каждом пункте производства был реализован или (в других терминах), чтобы весь накопленный на станциях отправления продукт был вывезен на станции назначения. В таких случаях баланс производства и потребления может быть нарушен и условия-равенства заменяются ограниче- ниями-неравенствами, например:
∑n xij ≤ ai , j =1,2,...,m ,
i=1
означающими, что из каждого пункта производства (с каждой станции отправления) не может быть вывезено больше груза, чем его там имеется.
Если в задаче отсутствует баланс производства и потребления, то имеет место транспортная задача открытого типа. В зависимости от того,
m
какой объем больше (суммарный объем производства ∑ai или суммарный
i=1
n
объем потребления ∑bj ), открытую модель можно свести к замкнутой
j=1
(закрытой), если ввести компенсирующий разницу фиктивный пункт:
– |
потребления |
Bn+1 |
с |
объемом |
«потребления» |
||
m |
n |
|
|
|
|
|
|
bn+1 = ∑ai −∑bj ; |
|
|
|
|
|
|
|
i=1 |
j=1 |
|
|
|
|
|
|
|
|
|
|
|
|
n |
m |
– производства Am+1 |
с объемом «производства» am+1 = ∑bj −∑ai . |
||||||
|
|
|
|
|
|
j=1 |
i=1 |
Величина bn+1 |
определяет суммарный объем не вывезенного из |
||||||
пунктов производства груза. При этом ci,n+1 |
можно |
рассматривать как |
|||||
расходы по хранению избыточной продукции в i-м пункте производства. |
|||||||
Величина am+1 |
соответствует суммарному объему груза, которого не |
хватило для полного удовлетворения потребностей получателей. Тогда cm+1, j это убытки j-го пункта потребления из-за недопоставки в него груза.
Условия транспортной задачи удобно задавать в табличном виде (таблица 1).
Основная часть таблицы 1 заполнена величинами транспортных издержек cij . В нижней строке таблицы помещены объемы потребления в пунктах B1, B2, ..., Bn , а в последнем столбце – объемы производства в пунктах
A1, A2, ..., Am .
Таблица 1 – Форма представления классической задачи линейного программирования транспортного типа
Пункты |
|
Пункты потребления, j |
|
Итого |
||
производства, i |
B1 |
|
B2 |
|
Bn |
производство |
A1 |
c11 |
|
c11 |
|
c11 |
a1 |
A2 |
c21 |
|
c22 |
|
c2n |
a2 |
|
|
|
|
|
|
|
Am |
cm1 |
|
cm2 |
|
cmn |
am |
Итого |
b1 |
|
b2 |
|
bn |
|
потребление |
|
|
|
|||
|
|
|
|
|
|

Пример транспортной задачи закрытого типа.
Данная транспортная задача является одноэтапной (доставка груза от производителей к получателям осуществляется в один этап) и линейной (параметры целевой функции и ограничения линейны, т.е. участвуют в процессе решения в первой степени).
Условие задачи.
Пусть имеется три пункта производства A1 , A2 и A3 с объемами производства а1 = 220 т продукции,
а2 = 160 т, а 3 = 180 т. Необходимо составить оптимальный план перевозки продукции в три пункта потребления B1 , B2 и B3 с потребностями b1 = 250 т, b2 = 120 т и b3 = 190 т. Стоимость доставки 1 т груза из i – го пункта производства в j – й пункт потребления приведена в таблице 2 .
Таблица 2 – Стоимости перевозки 1 т груза
Пункты производства, i |
|
Пункты потребления, j |
|
||
B1 |
|
B2 |
|
B3 |
|
|
|
|
|||
A1 |
7 |
|
6 |
|
9 |
A2 |
5 |
|
7 |
|
3 |
A3 |
4 |
|
8 |
|
6 |
Математическая модель задачи:
1)Цель модели: определение оптимального плана перевозок.
2)Критерий оптимизации: суммарная стоимость перевозок грузов от грузоотправителей к грузополучателям.
3)Параметры управления: Xij – количество единиц груза, перевозимого из i– го
пункта производства в j – й пункт потребления. |
|
4) Постоянные параметры: |
|
Cij – стоимость перевозки одной единицы груза из i – го пункта |
производства в j – й пункт |
потребления (см. таблицу 4.2); |
|
ai – объем производства в i – м пункте; |
|
bj – объем потребления в j – м пункте. |
|
5) Ограничения: |
|
a) из пунктов производства должна быть вывезена вся продукция: |
|
X11 + X12 + X13 = 220
X 21 + X 22 + X 23 =160
X 31 + X 32 + X 33 =180
b) потребности пунктов потребления должны быть удовлетворены полностью:
X11 + X 21 + X 31 = 250
X12 + X 22 + X 32 =120
X13 + X 23 + X 33 =190

c) продукция может перевозиться только из пунктов производства в пункты потребления (а не наоборот):
X ij ≥ 0 | i =1,3; j =1,3
Составим целевую функцию данной задачи:
Z = C11 X11 +C12 X12 +C13 X13 +C21 X 21 +C22 X 22 +C23 X 23 +C31 X 31 +C32 X 32 +C33 X 33 (4.16)
Транспортная задача разрешима, если сведена к задаче закрытого типа, т.е. выполняется условие баланса производства и потребления:
m |
n |
∑ai = ∑bj |
|
i=1 |
j=1 |
Проверка: ∑3 ai = 560 , ∑3 bj = 560 . Данная транспортная задача – закрытого типа.
i=1 |
j=1 |
|
|
|
|
|
Исходные данные для решения задачи представлены в таблице 3. |
|
|
||||
Таблица 3 – Представление исходных данных |
|
|
||||
|
|
|
|
|
|
|
Пункты |
|
Пункты потребления, j |
|
Объемы |
||
производства, i |
B1 |
|
B2 |
|
B3 |
производства, ai |
|
|
|
||||
A1 |
7 |
|
6 |
|
9 |
220 |
A2 |
5 |
|
7 |
|
3 |
160 |
A3 |
4 |
|
8 |
|
6 |
180 |
Объемы |
250 |
|
120 |
|
190 |
|
потребления, bj |
|
|
|
|||
|
|
|
|
|
|
Задача может быть легко решена при помощи надстройки «Поиск решения» Microsoft Excel (см. Приложение Б).
Оптимальное решение транспортной задачи для принятых условий приведено в таблице 4. Таблица 4 – Решение транспортной задачи
Пункты |
|
Пункты потребления, j |
|
Объемы |
||
B1 |
|
B2 |
|
B3 |
производства, ai |
|
производства, i |
|
|
||||
|
|
|
||||
A1 |
100 |
|
120 |
|
0 |
220 |
A2 |
0 |
|
0 |
|
160 |
160 |
A3 |
150 |
|
0 |
|
30 |
180 |
Объемы |
250 |
|
120 |
|
190 |
|
потребления, bj |
|
|
|
|||
|
|
|
|
|
|
В центральной части таблицы приведено количество единиц груза, доставляемого из i – го пункта производства в j – й пункт потребления ( Xij ) при обеспечении минимума целевой функции:
m |
n |
|
Z = ∑∑Cij |
X ij = 7 100 +6 120 +9 0 +5 0 +7 0 +3 160 +4 150 +8 0 +6 30 = 2680 |
|
i=1 j=1 |
|
|
.Можно |
легко |
проверить, что любой другой вариант распределения перевозок, отличающийся от |
представленного в таблице 4, будет приводить к увеличению затрат на перевозки.
3 Общая характеристика динамического программирования
Динамическое программирование (ДП) определяет оптимальное решение n-мерной задачи путем ее декомпозиции на n этапов, каждый из которых представляет собой подзадачу относительно одной переменной. Вычислительное преимущество такого подхода состоит в том, что мы занимаемся решением одномерных оптимизационных задач (подзадач) вместо большой n-мерной задачи.
Фундаментальным принципом ДП, составляющим основу декомпозиции задачи на этапы, является оптимальность. Так как природа каждого этапа решения зависит от конкретной оптимизационной задачи, ДП не предлагает вычислительных алгоритмов непосредственно для каждого этапа. Вычислительные аспекты решения оптимизационных подзадач на каждом этапе проектируются и реализуются по отдельности (но это не исключает того, что может быть применен единый алгоритм для всех этапов).
Вычисления в ДП выполняются рекуррентно в том смысле, что оптимальные решения одной подзадачи используются в качестве исходных данных для следующей подзадачи. Способ выполнения рекуррентных вычислений зависит от того, как выполняется декомпозиция исходной задачи. В данной ситуации возможны несколько вариантов. Первый из них это проводить вычисления последовательно от первого до последнего этапа, такая последовательность известна как алгоритм прямой прогонки. Также задача может быть решена с помощью алгоритма обратной прогонки, в соответствии с которым вычисления проводятся от последнего этапа до первого. Очевидно, что алгоритмы прямой и обратной прогонки приводят к одному и тому же решению. Обычно более логичным представляется использовать алгоритм прямой прогонки, но в общем случае алгоритм обратной прогонки может быть более эффективным с вычислительной точки зрения.

4 Математическая модель задачи распределения однородных ресурсов
Задачи оптимального распределения ресурсов, а также задачи, которые при определенных допущениях могут рассматриваться в качестве таковых, достаточно актуальны при оптимизации транспортных процессов и систем. Это, например, распределение парка маневровых локомотивов по железнодорожным станциям, обоснование решений по укладке дополнительных путей на ряде станций, распределение перегонных времен хода при сохранении заданного времени хода поезда по участку, определение рациональной этапности развития транспортных объектов и т.п.
Пусть имеется ограниченное количество однородных ресурсов. Эти ресурсы необходимо распределить по N объектам таким образом, чтобы получить наибольший эффект от их использования.
Пусть y – общий запас ресурсов. x1 – количество ресурсов, выделяемых на 1 – й объект; x2 – на второй объект; xN – на N – й объект. При этом обозначим как gi(xi) эффект, получаемый на i – м объекте при выделении ему xi ресурсов. i =1, N .
При решении данной задачи руководствуются следующими предположениями:
1)эффект, получаемый на различных объектах, измеряется в одинаковых единицах;
2)эффект, получаемый на каждом объекте, не зависит от того, какое количество ресурсов было выделено другим объектам;
3)общий эффект по всем объектам равен сумме эффектов, полученных на каждом из них: z(x1 , x2 ,.., xN ) = g1 (x1 ) + g2 (x2 ) +... + gN (xN ) .
Математическая модель задачи:
•Целевая функция, выражающая эффект, получаемый при распределении заданного объема ресурсов по N объектам:

N
z = ∑gi (xi ) max(min) ;
i=1
• Ограничения, накладываемые на переменные:
a) Суммарное количество ресурсов, выделяемых на объекты не может превышать общий имеющийся запас этих ресурсов:
N
∑xi ≤ y ;
i=1
b)Количество ресурсов, выделяемых на объект не может быть отрицательным:
xi ≥ 0,i =1, N .
При использовании алгоритма динамического программирования, как было показано в п. 5.2, вместо одной задачи с N неизвестными переходят к рассмотрению N задач, в каждой из которых имеется только одно неизвестное.
Пусть max z(x1 , x2 ,.., xN ) = fN (y) , где f N ( y) - максимальный эффект от распределения y ресурсов по N объектам при условии, что N – й (последний) объект получит xN ресурсов. Выразим f N ( y) через максимальный эффект, получаемый при распределении оставшегося количества ресурсов ( y − xN ) между остальными N-1 объектами: fN (y) = z(x1 , x2 ,.., xN −1 ) + gN (xN ) .
Допустим, что max z(x1 , x2 ,.., xN −1 ) известен и равен по аналогии fN −1 (y − xN )
. Тогда общий положительный эффект, полученный на N объектах можно записать в следующем виде:
z = fN (y) = max[ fN −1 (y − xN ) + gN (xN )],где xN = 0, y.
Уравнение (5.13) – основное функциональное уравнение динамического программирования, или рекуррентное уравнение, которое последовательно связывает два этапа расчетов: распределение ресурсов по N-1 объектам и распределение ресурсов по N объектам.
Основным принципом динамического программирования является принцип Беллмана: «Оптимальное поведение обладает тем свойством, что каковы бы ни были первоначальное состояние и решение в первоначальный