Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Максимизировать z = бде, + 2х2 + 8х3 + 4xt + 2xs + 10х6 при ограничениях
8х, +х2 + 8х3 + 2xt + 2хъ + 4х6 < 13, 0<x<l,j = l,2,...,6.
Глава 7. Теория линейного программирования
3. Решите следующие задачи ЛП методом решения задач с ограниченными переменными.
a) Минимизировать z = бдс, - 2х2 - Зх3 при ограничениях
2х, + 4х2 + 2х3<8, х,-2х2 + 3х3<7, О < х, < 2, 0 < х2 < 2, 0 < х3 < 1.
b) Максимизировать z = Зх, + Ъх2 + 2х3 при ограничениях
х, + 2х2 + 2х3<10, 2х, +4х2 + 3х3< 15, О < х, < 4, 0 < х2 < 3, 0 < х3 < 3.
4. В следующих задачах некоторые переменные имеют положительные нижние границы. Решите эти задачи методом решения задач с ограниченными переменными.
a) Максимизировать z = Зх, + 2х2 - 2х3 при ограничениях
2х,+ х2 + х3<8, х, + 2х2 - х3 > 3, 1<х,<3, 0<х2<3, 2<х3.
b) Максимизировать z = xl + 2х2 при ограничениях
-х, + 2х2>0, Зх, +2х2< 10, -х, + х2< 1, 1<х,<3,0<х2<1.
c) Максимизировать z = 4х, + 2х2 + 6х3 при ограничениях
4х, - х2 < 9, -х, +х2 + 2х3<8, -Зх,+ х2 + 4х3<12, 1<х,<3,0<х2<5, 0<х3<2.
5. Рассмотрим матричное представление задачи с ограниченными переменными. Разобьем вектор X на две части (Хг, Хц), где элементами вектора Хц являются переменные, к которым в процессе выполнения алгоритма будет применена подстановка, эквивалентная их верхнему пределу. Тогда задачу ЛП с ограниченными переменными можно записать следующим образом.
f 7 ^
1 -с; -с,Л
0 D, D.
7.3. Алгоритм решения задач с ограниченными переменными
Пусть В (и Хв) — базисное решение текущей симплексной итерации, полученное после подстановки Хц = Uu - Х'и, где U„ — подмножество элементов вектора значений верхних границ U, соответствующего переменным Хц. Покажите, что в данном случае симплекс-таблица имеет следующий вид.
Базис | К | Решение | |
z | CSB_1DZ-CZ | — СвВ 1Du + Си | CsB-1 ь' + с„иц |
Xs | B"1D; | -В_1Оц | В"1 Ь' |
Здесь b' = b - DUUU.
6. В задаче из примера 7.3.1 выполните следующее.
a) На этапе итерации 1, используя матричные представления, проверьте, что Хв = (х4, х1)г = (5/2,3/2)г.
b) На этапе итерации 2 покажите, как на основе исходных данных задачи можно вычислить В"1. Затем, используя матричные представления, проверьте вычисленные в примере значения переменных х4 и х,.
7. Решите задачу из упражнения 3.1 с помощью модифицированного (использующего матричные представления) симплекс-метода.
8. Двойственный симплекс-метод решения задач с ограниченными переменными. Двойственный симплекс-метод (раздел 4.4) также можно модифицировать для учета явных ограничений, налагаемых на переменные. Для этого после подстановок xt = u;- x't (uj — верхняя граница переменной х-, если uf
бесконечна, заменяем ее достаточно большим положительным числом М) исходная задача записывается в двойственной форме. Далее выполняются следующие действия.
Шаг 1. Если значение какой-либо базисной переменной (Хв), превышает ее верхнюю границу, выполняем замену (ХД = (UB), - (Х6).'.
Шаг 2. Если базисное решение допустимо, вычисления заканчиваются.
В противном случае среди базисных переменных определяем исключаемую из базиса переменную хг как имеющую наибольшее отрицательное значение.
Шаг 3. В соответствии с условием оптимальности двойственного симплекс-метода определяем вводимую в базис переменную.
Шаг 4. Выполняем пересчет базиса. Переходим к шагу 1.
Примените описанный алгоритм к следующим задачам.
а) Минимизировать г = -Зх, - 2х2 + 2х3
при ограничениях
2х, + х2 + х3 < 8, -х, + 2х2 + х3> 13, 0<х,<2, 0<х2<3, 0<х3<1.
Глава 7. Теория линейного программирования
Ь) Максимизировать г = хг + Ъх2 - 2х3 при ограничениях
4x1 + 2х2 + 2х3 < 26, + Здс2 + 4х3> 17, О < х, < 2, 0 < х2 < 3, 0 < х3 (х3 сверху не ограничена).
7.4. МЕТОД ДЕКОМПОЗИЦИИ
Рассмотрим разработку производственного плана предприятия, состоящего из нескольких подразделений. Хотя каждое подразделение имеет собственные производственные возможности и соответствующие ограничения, производственные планы отдельных подразделений обобщаются на уровне управления предприятием. Таким образом, результирующая модель рассматриваемого предприятия будет содержать ограничения двух типов: общие, соответствующие уровню всего предприятия, и независимые, отображающие производственные ограничения отдельных подразделений. На рис. 7.5 показана структура ограничений для л подразделений. Отсутствие общих ограничений означает, что все подразделения независимы.
Метод декомпозиции предлагает эффективный вычислительный алгоритм решения задач со структурой ограничений, подобной показанной на рис. 7.5, путем разбиения исходной задачи на л подзадач, которые решаются независимо друг от друга. Вместе с тем отметим, что применение этого метода особенно оправдано, когда расчеты выполняются на вычислительном устройстве с ограниченной скоростью выполнения операций и ограниченным объемом памяти. Сегодня, когда вычислительная техника имеет огромную (по сравнению с недавним прошлым) производительность, необходимость в методе декомпозиции не так очевидна. Несмотря на это мы рассмотрим данный метод, поскольку он представляет интерес в теоретическом плане.
Общие ограничения
Независимые ограничения'
Подразделение 1
Подразделение 2
Подразделение л
Рис. 7.5. Структура декомпозиции задачи линейного программирования
Математическую модель, к которой применяется метод декомпозиции, запишем в следующем виде.
Максимизировать г = С,Х, + С2Х2 +... + СлХп
при ограничениях
7.4. Метод декомпозиции
+ АпХл = bo
= Ь,
= ь2
D„Xn = Ьл
Х;>0,; = 1,2.....п.
При необходимости ограничения в виде неравенств с помощью дополнительных переменных преобразуются в равенства.
Метод декомпозиции основан на определении крайних точек множеств {Xj DyXy = b;, Ху > 0}, / = 1, 2, п. Для этого необходимо, чтобы каждое множество {Xj^X^b,, X.>0} было ограниченным. Это требование выполнимо всегда, поскольку при необходимости для любого множества / можно добавить искусственное ограничение IX. < М, где М — достаточно большое положительное число.
Обозначим через Yyt, k=l, 2, KJt крайние точки множества {X. |DyX. = Ь>, X. > 0}. Тогда можно записать
ху=ЕРЛ' У-1,2,..., и,
Ki
где Р>4 > 0 для всех k и /*, причем = 1.
Теперь переформулируем исходную задачу в терминах крайних точек и получим так называемую главную задачу, определяемую следующим образом.
*1 к. к.
Максимизировать z = XCiyi*Pu +ZC2Y2*p2* + - + Zc»y«'p«4 при ограничениях
z a.y.»p.* +i a^*p^+-+i a»y»»p»*=ь° -
4=1 4=1 4 = 1
4=1
IP- =1-
4 = 1
P^ > 0 для всех k и j.
В главной задаче новыми переменными являются pJt. После того как будет найдено оптимальное решение Рд этой задачи, оптимальное решение исходной задачи
вычисляется путем обратных подстановок по следующей формуле.
Х,=1Р"Л, / = 1,2,...,п.
4 = 1
AiXi + D,X,
АгХ2 + D2X2
Глава 7. Теория линейного программирования
Может показаться, что для решения главной задачи необходимо предварительно найти все крайние точки Ylk, что является очень трудной задачей. К счастью, это не так.
При решении главной задачи с использованием модифицированного симплекс-метода (раздел 7.2) на каждой итерации нам необходимо определить вводимую и исключаемую переменные. Начнем с определения вводимой переменной. Зная текущий базис главной задачи (и, следовательно, матрицы Св и В"1), для любой небазисной переменной pyt. имеем
z.
где
■^-СвВ"Р^-Сд,
j Х1к
О
Напомним: чтобы определить, какая из небазисных переменных Рук должна войти в базис, следует найти
z,..,.-crt. = min {zjk-cjt\.
по всем] и к
Если z.к. -сгк. <0, тогда в соответствии с условием оптимальности задачи максимизации переменная р t, должна войти в базис. При выполнении обратного нера-
с;,4.. "Секрет" вычисле-
венства считаем, что оптимальное решение достигнуто. Теперь покажем, как можно вычислить разность zr
ний заключается в равенстве
mi" -cjt) = min{min{z;< -с,}} ■
>bccm;hAj 1; L * L ' 1 i
Это равенство вытекает из того, что каждое выпуклое множество, определяемое ограничениями DXy = Ьу, Ху > 0, имеет собственное независимое множество крайних точек. В соответствии с этим равенством мы можем найти разность z.j,k. - cJ4. за два этапа.
1. Для каждого выпуклого множества {XjD^X^b^, Ху>0} определяем крайнюю точку Y.t„ на которой достигается минимум разностей zjk - cjk, т.е. zjk, -<:^ = mmk{zik-cjk}.
2. Далее определяем zt.k,-сгк. = min^,, - с)к.}.
Из теории линейного программирования мы знаем, что конечное оптимальное решение ассоциируется с крайней точкой пространства решений. Поскольку каждое из множеств {X. | DyX. = bjt X. > 0} ограничено по определению, действия, выполняемые в п. 1, математически эквивалентны решению л задач линейного программирования вида
минимизировать ш. = {г; - с, | D.X. = Ь., Ху > 0}.
Фактически здесь целевая функция шу является линейной функцией от Ху (см. упражнение 7.4.1.8).
Таким образом, определение вводимой переменной pfk, в главной задаче сведено к решению л задач линейного программирования (меньшего размера) для вычис
7.4. Метод декомпозиции
ления "вводимых" крайних точек Yy,t„. Такой подход не требует определения всех крайних точек всех п выпуклых множеств. После того как требуемая крайняя точка определена, нетрудно определить все элементы вектора Р. На основе этой информации мы можем определить исключаемую переменную. Далее с помощью модифицированного симплекс-метода вычисляем следующую обратную матрицу В"1.
Пример 7.4.1
Решим с помощью метода декомпозиции следующую задачу ЛП.
Максимизировать z = 3xt + 5х2 + х3 + х4
при ограничениях
я, + х2 + х3 + х4 < 40, Ъх, + х2<\2, х3 + х4> 5, х3 + 5х4 < 50, х2, х3, х4 — 0.
Данную задачу можно разбить на две подзадачи, которым будут соответствовать следующие множества переменных:
X, = (xv х2), Х2 = (х3, х4).
Основную задачу можно записать следующим образом.
Подзадача 1 | Подзадача 2 | Начальное базисное решение |
Р" Р«- Р„, | Р21 Рг2 - Р2А:, | Х5 Хв х7 |
C,Yn C,Y12 C,YlK, | C2Y21 C2Y22... C,Y,, | 0 -М -М |
AiY,, A,Y12... A,Y,X] 1 1... 1 0 0... 0 | AoY21 AoY22... A2Y2JCi 0 0... 0 1 1... 1 | 1 0 0 =40 0 1 0 =1 0 0 1 =1 |
С, = (3, 5), A, = (1, 1). Пространство решений D1X1 < Ьь 5xi +х2 < 12, xi, х2 >0. | С2 = (1, 1), Аа = (1, 1). Пространство решений 02Хг < Ь2: Хз + Х4 > 5, хз + 5х* < 50, Хз, Х4 > 0. |
Отметим, что дополнительная переменная х5 введена для преобразования общего ограничения к виду равенства
л;, + х2 + х3 + х4 + хь = 40.
Эта переменная не входит ни в одну подзадачу, ее значение находится как часть решения главной задачи. Другие переменные в начальном базисе, хе и х7, являются искусственными переменными.
Глава 7. Теория линейного программирования
Итерация 0
Х„ = (*5, хе, х7)т = (40, 1, if, Св = (0, -М, -М), В = В 1 = I.
Итерация 1
Подзадача 1 (j = 1). Имеем
z,-c,=CeB1
0.1)
-с,х,=
= {о,-м,-м)
-(3.5)
= -Зх, - 5х, - М.
Таким образом, соответствующая задача ЛП имеет следующий вид.
Минимизировать ш, - -Здс, - 5хг - М
при ограничениях
5х1 + х2< 12, Яр х2>0.
Решив эту задачу (обычным симплекс-методом), получаем
yu = (o, i2f, z;-c; = w;=-6o-m.
Подзадача 2 (j — 2). Соответствующая задача ЛП имеет следующий вид.
Минимизировать г, -с, =С6В
= (0,-Af,-Af)
(U)
С,Х, =
-(1.1)
= ~хъ ~хА-М.
при ограничениях
х3 + х4> 5, х3 + 5х4 < 50 *4^0.
Находим оптимальное решение этой задачи.
y21 = (50,0f, z;-c;=-50-Af.
Поскольку главная задача — задача максимизации и z* - с' < z* - с], а также г,*-с*<0, следовательно, переменная Рп, соответствующая крайней точке Y,,, должна быть введена в базисное решение.
7.4. Метод декомпозиции
Для определения исключаемой переменной запишем
f (о"
Р„ =
A,Y„ 1 О
'12} 1
Отсюда В"'РП = (12, 1, 0)т. Имея Хв = (х6, х6, х7)т = (40, 1, 1)г, делаем вывод, что из базисного решения следует исключить переменную хе (искусственную переменную).
Новый базис получается путем удаления из базиса вектора, соответствующего переменной х9, и введения в базис вектора Р„. Получим (проверьте!)
(\ 12 0\
В =
1 О О 1
-12 0} 1 о
0 1
и новое базисное решение
Хв = (х„ рп, х7)т = В'(40, 1, 1)г = (28, 1, 1)т, Св = (0, C.Y,,, -М) = (0, 60, -М).
Итерация 2
Подзадача 1 (j = 1). Вы должны проверить, что соответствующая задача ЛП останется такой же, как и на первой итерации (это простое совпадение, а не общее правило). Ее оптимальное решение дает г,* -с\ = wt = 0. Отсюда следует, что никакая из
оставшихся крайних точек пространства решений подзадачи 1 не может улучшить решение главной задачи. (Оптимальным решением этой подзадачи будет крайняя точка Y,,, которой соответствует переменная Рп, уже входящая в состав базиса. Именно поэтому z' -с[ = 0.)
Подзадача 2 (j = 2). Снова вы должны проверить, что соответствующая задача ЛП такая же (опять совпадение), как и на первой итерации. Ее оптимальное решение
Y22 = (50, Of, z;-c;=-50-Af.
Отметим, что точка Y22 фактически совпадает с крайней точкой Y21, но мы используем нижний индекс 2, чтобы показать, что эта точка соответствует второй итерации.
Из решений обеих подзадач следует, что zj - с\ < 0. Это указывает на то, что переменная р22, соответствующая крайней точке Y22, должна войти в базисное решение. Для определения исключаемой переменной запишем
р,, =
о 1
(1,1)
о
о
,1
Глава 7. Теория линейного программирования
Отсюда В"'Р22 = (50, 0, if. Поскольку Хв = (х5, рп, х7)т — (28, 1, if, из базисного решения следует исключить переменную х5.
Находим новый базис и новую обратную матрицу В"1 (проверьте!)
'50 | 0" | ||
в = | |||
ч 1 | 1, | ||
Г 1 | _п | ||
в' = | |||
V 50 |
Новое базисное решение равно
Хв = (р22, рп, х7)т = В",(40, 1, If = (14/25, 1, 11/25)', Св = (C2Y22, C,YU, -М) - (50, 60, -М).
Итерация 3
Подзадача 1 (j = 1). Вы должны проверить, что на этой итерации целевая функция для данной подзадачи имеет следующий вид.
(М А (М Л \2М ло
Минимизировать w=\--2 \х, + \--4\х,---1-48.
' 150 J 1.50 J " 50
Соответствующее оптимальное решение дает
Y13 = (o,of, z;-c; =
12 М 50
•48.
Подзадача 2 (j = 2). Здесь целевая функция имеет следующий вид (проверьте!).
М
Минимизировать w1=—(xi+xi)-M.
Находим оптимальное решение:
Y23 = (5,0f, ^.-с\=~
Небазисная переменная хь. Исходя из вида главной задачи, разность z; - cj для переменной л:й необходимо вычислять отдельно.
= f1+^.48-^-,-MV,0,0f-0=l + ^. I 50 50 Г 50
Отсюда вытекает, что переменная хь не может улучшить решение.
Из приведенных вычислений следует, что вводимой в базис будет переменная Р23, соответствующая крайней точке Y23. Для определения исключаемой переменной вычисляем следующее.
Рз =
0 1 (1,1)
5 0
7.4. Метод декомпозиции
Отсюда В"'Р23 = (1/10, 0, 9/10). Поскольку Хв = (р22, р„, = (14/25, 1, 11/25)7", из базисного решения следует исключить искусственную переменную х7.
Находим новый базис и новую обратную матрицу В"1 (проверьте!).
В =
г | 5Ч | ||
V | К | ||
/ | |||
V |
Новое базисное решение равно
Хв = (Р22, Р„, Р2/ = В'(40, 1, If = (23/45, 1, 22/45f, Св = (C2Y22, C.Y,,, C2Y23) = (50, 60, 5).
Итерация 4
Подзадача 1 (j = 1). w1 = -2хг - 4х2 + 48. Получаем z* -с[ = wt = 0. Подзадача 2 (j = 2). w2 = 0x4 + 0х5 + 48 = 48.
Небазисная переменная хь. г5 - с5 = 1. Отсюда следует, что решение, полученное на третьей итерации, оптимально.
С помощью обратной подстановки вычисляем оптимальное решение исходной задачи, х; = (*„ */ = puYu = 1(0, 12f = (0, 12f, X, = (х3, х4) = P22Y22 + p23Y23 =
= — (50. Of +—(5, Of = (28, 0)T. 45 45
Все остальные переменные равны нулю. Оптимальное значение целевой функции получим путем прямой подстановки в ее выражение значений соответствующих переменных.
УПРАЖНЕНИЯ 7.4.1
1. В каждой из следующих систем ограничений графически найдите допустимые крайние точки и определите пространство допустимых решений как функцию этих крайних точек. Если пространство решений не ограничено, добавьте необходимое искусственное ограничение.
а)
х, + 2х2 < 6, 2хх + хг < 8, -х, +х2< 1, *2<2, xv х2>0.
Глава 7. Теория линейного программирования
Ь)
2*! + х2 < 2, Зх, + 4х2> 12, ХрХ2>0.
с)
х,-х2<10,
2x^40,
ХрХ2>0.
2. В примере 7.4.1 крайние точки подпространств {X, | = b„ Х,>0) и {Х21 D2X2 = b2, Х2 > 0} можно найти графически. Используйте эту информацию, чтобы сформулировать в явном виде главную задачу. Затем покажите, что применение к главной задаче модифицированного симплекс-метода порождает такую же последовательность вводимых в базис переменных pVs, как и последовательное решение отдельных подзадач 1 и 2.
3. Дана следующая задача линейного программирования.
Максимизировать z = х, + Зх2 + 5х3 + 2х4
при ограничениях
2^ + х2 < 9,
х, + 4х2 < 8,
5Х; + Зх2 + 4х3 > 10,
х3 - 5х4 < 4,
х3 + х4<10,
"^1* x2j XZ7 Xi — ^"
Постройте в явном виде главную задачу (для этого используйте крайние точки подпространств, найденные графически) и затем решите ее модифицированным симплекс-методом.
4. Решите задачу из предыдущего упражнения методом декомпозиции и сравните процесс решения при использовании разных алгоритмов.
5. Примените метод декомпозиции к следующей задаче.
Максимизировать z = 6х, + 7х2 + Зх3 + 5х4 + х5 + х6 при ограничениях
Xj + х2 + х3 + х4 + х5 + х6 < 50,
Xj + х2< 10,
х2<8,
5х3 + х4<12,
х5 + х6>5,
х5 + 5х6 < 50,
Хр х2, х3, х4, х5, х6 > 0.
6. Продумайте необходимые изменения в применении метода декомпозиции к задаче минимизации, затем решите следующую задачу.
Минимизировать z = 5Xj + Зх2 + 8х3 - 5х4
7.5. Двойственность
при ограничениях
х, + х2 + х3 + х4 > 25, ох, + х2 < 20, 5л:, - х2> 5, х3 + х4 = 20, Л-J, л:2, л:3, л:4 ^ 0.
7. Решите следующую задачу методом декомпозиции.
Минимизировать z = 10yi + 2у2 + 4у3 + 8(/4 + уъ при ограничениях
Ух + 4(/2 - у3 > 8, 2у, + jy2 + i/a > 2, Зу, + г/4 + i/5 > 4, ^ + 2у4-(/6>Ю,
<Л.</2> #3> У4>У^0-
(Совет. Рассмотрите сначала задачу, двойственную к данной.)
8. Пусть при применении метода декомпозиции количество общих ограничений в исходной задаче равно г. Покажите, что целевую функцию для подзадачи j можно записать следующим образом.
Минимизировать wj = zl-cJ = (CsRAy - С;)Х; + С^У^
Здесь матрица R состоит из первых г столбцов матрицы В"1, а V — ее (г + у')-й столбец.
7.5. ДВОЙСТВЕННОСТЬ
Двойственные задачи и соотношения двойственности на элементарном уровне мы изучали в главе 4. В этом разделе рассмотрим теорию двойственности на более строгом (доказательном) уровне, в частности, представим доказательства соотношений двойственности, которые являются основой анализа чувствительности (см. главу 4). Эти теоретические построения послужат фундаментом для описанных далее методов параметрического программирования.
7.5.1. Матричное представление двойственной задачи
Пусть прямая задача ЛП с т ограничениями и п переменными уже записана в стандартной форме.
Максимизировать z = СХ
при ограничениях
АХ = Ь, Х>0.
Обозначим через Y = (yv у2, ут) вектор переменных двойственной задачи. В соответствии с правилами, представленными в табл. 4.2, получаем следующую двойственную задачу.
Минимизировать w = Yb
Глава 7. Теория линейного программирования
при ограничениях
YA>C,
Y — вектор свободных переменных (т.е. не имеющих ограничений в знаке). УПРАЖНЕНИЯ 7.5.1
1. Докажите, что задача, двойственная к двойственной задаче, совпадает с исходной (прямой) задачей.
2. Пусть прямая задача имеет вид: минимизировать z = {СХ | АХ > b, X > 0}. Сформулируйте соответствующую двойственную задачу.
7.5.2. Оптимальное решение двойственной задачи
В этом разделе устанавливаются соотношения между прямой и двойственной задачами и показывается, как определить оптимальное решение двойственной задачи на основе оптимального решения прямой задачи. Обозначим через В оптимальный базис прямой задачи, через Св — вектор коэффициентов целевой функции, соответствующих оптимальным базисным переменным Хв.
Теорема 7.5.1. Первая теорема двойственности. Для любой пары допустимых решений (X, Y) прямой и двойственной задач значение целевой функции в задаче минимизации ограничивает сверху значение целевой функции в задаче максимизации. Для пары оптимальных решений (X*, Y) значения целевых функций совпадают.
Доказательство. Пара допустимых решений (X, Y) удовлетворяет всем ограничениям обеих задач. Умножая слева обе части ограничений задачи максимизации на вектор (свободных) переменных Y, получим
YAX = Yb = ш.
Аналогично, умножая справа ограничения задачи минимизации на вектор (неотрицательных) переменных X, будем иметь
YAX>CX = 2.
(Неотрицательность вектора X здесь существенна, так как определяет "направленность" неравенства.) Комбинируя последние два выражения, получаем неравенство z<w, доказанное для пары любых допустимых решений (X, Y).
Отметим, что теорема не указывает, какая задача прямая, а какая — двойственная. Это очень важно при нахождении оптимальных решений обеих задач.
Из доказанной части теоремы (z < w для пары любых допустимых решений) следует, что максимум функции z и минимум функции w будут достигнуты только тогда, когда обе эти функции примут одинаковое значение. Исходя из этого, можно построить оценку близости полученных допустимых решений к оптимальным путем сравнения разности 2 - w и величины (2 + и>)/2. Чем меньше отношение 2(2 - w)/(z + w), тем ближе данные решения к оптимальным. Но, конечно, из этого эмпирического правила не следует, что оптимальные значения целевых функций равны (2 + w)/2.
Дата публикования: 2014-11-18; Прочитано: 545 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!