Использование инструментов Excel для решения задач оптимизации

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 25.04.2015
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ РЕСПУБЛИКИ БЕЛАРУСЬ

Учреждение образования

«ВЫСШИЙ ГОСУДАРСТВЕННЫЙ КОЛЛЕДЖ СВЯЗИ»

ФАКУЛЬТЕТ ЭКОНОМИКИ И ПОЧТЫ

КАФЕДРА ИНФОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

Пояснительная записка к курсовому проекту

«Использование инструментов Excel для решения задач оптимизации»

по дисциплине

«Основы алгоритмизации и программирования»

Выполнила студентка гр. ПС-161

Д.Д.Одинцова

Руководитель преподаватель

Е.В. Новиков

  • Минск 2013
  • ВВЕДЕНИЕ

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

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

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

Линейное программирование - один из первых и наиболее подробно изученных разделов математического программирования.

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

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

В настоящее время линейное программирование является одним из наиболее употребительных аппаратов математической теории оптимального принятия решения. Для решения задач линейного программирования разработано сложное программное обеспечение, дающее возможность эффективно и надежно решать практические задачи больших объемов. В частности, и программный пакет Excel снабжен развитыми системами подготовки исходных данных, средствами их анализа и представления полученных результатов.

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

1. ИССЛЕДОВАНИЕ ФУНКЦИИ

Дана следующая функция:

X изменяется в пределах от 100 до 500, А = 127

Производная функции:

Решение задачи нужно реализовать с помощью табличного редактора Microsoft Excel.

Все необходимые данные занесем в таблицу. В столбце «B» внесем значения х с шагом равным 5. В столбце «C» находиться сама функция F(x). В столбце «D» будет находиться производная данной функции, т. е. в ячейку «D4» запишем формулу

«=(80*5,5*ПИ()/180*COS(5,5*B4*ПИ()/180)+120*6,5*ПИ()/180*

*COS(6,5*B4*ПИ()/180))*5»

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

Найдем произведение двух соседних значений производной. Если полученное произведение будет меньше нуля, то на данном интервале будет находиться экстремум функции. В ячейку E5 запишем формулу «=D4*D5». Для нахождения минимумов функции в ячейку F5 запишем формулу =ЕСЛИ(E5>0;" ";ЕСЛИ(D5<0;" ";"МИНИМУМ")). Т. е. если произведение двух соседних значений производной больше нуля, то на данном интервале функция монотонно убывает или возрастает, иначе, если значение производной меньше или равно нулю, то на данном интервале находится минимум функции.

В столбце «B» (Х) внесем значения x, x изменяется от 100 до 500 с шагом равным 5. Следовательно, в первую строку столбца «B» введем значение 100, а в следующую сроку этого же столбца введем значение 105, выделим эти два значения и растянем до 500.

В столбце «С» запишем функцию F(x). Это значит, что в первую строку этого столбца запишем формулу:

,

где “В4” - это ссылка на ячейку, содержащую «х».

В столбце «D» вносим значение постоянной производной.

В столбце «E5» записываем формулу, представляющую собой произведение строк производной D4*D5.

Для нахождения экстремума функции - минимум в строку «F5» записываем соответствующую формулу с помощью логической функции «ЕСЛИ». =ЕСЛИ(E5>0;"-";ЕСЛИ(D5<0;"-";"МИНИМУМ"))

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

Таблица 1 - Исследование функции F(x)

Исследование функции

А

X

F(x)

F'(X)

ПРОИЗВЕДЕНИЕ

ЭКСТРЕМУМ

127

100

-126,65

-14,53

127

105

-121,75

23,54

-342,10

МИНИМУМ

127

110

-82,96

51,58

1214,19

-

127

115

-24,51

62,05

3200,72

-

127

120

34,64

53,23

3303,17

-

127

125

76,90

29,41

1565,83

-

127

130

91,33

-0,79

-23,27

-

127

135

76,54

-27,41

21,68

-

127

140

40,45

-42,35

1160,97

-

127

145

-2,97

-41,87

1773,48

-

127

150

-38,64

-27,56

1153,85

-

127

155

-55,46

-5,47

150,79

-

127

160

-49,77

16,06

-87,89

МИНИМУМ

127

165

-26,11

29,42

472,47

-

127

170

4,83

30,24

889,48

-

127

175

30,25

18,84

569,76

-

127

180

40,00

0,00

0,00

-

127

185

30,25

-18,84

0,00

-

127

190

4,83

-30,24

569,76

-

127

195

-26,11

-29,42

889,48

-

127

200

-49,77

-16,06

472,47

-

127

205

-55,46

5,47

-87,89

МИНИМУМ

127

210

-38,64

27,56

150,79

-

127

215

-2,97

41,87

1153,85

-

127

220

40,45

42,35

1773,48

-

127

225

76,54

27,41

1160,97

-

127

230

91,33

0,79

21,68

-

127

235

76,90

-29,41

-23,27

-

127

240

34,64

-53,23

1565,83

-

127

245

-24,51

-62,05

3303,17

-

127

250

-82,96

-51,58

3200,72

-

127

255

-121,75

-23,54

1214,19

-

127

260

-126,65

14,53

-342,10

МИНИМУМ

127

265

-93,10

51,35

746,33

-

127

270

-28,28

75,28

3865,94

-

127

275

50,32

78,00

5872,06

-

127

280

119,83

57,30

4469,06

-

127

285

158,67

18,06

1034,88

-

127

290

153,35

-28,87

-521,41

-

127

295

102,95

-69,79

2014,67

-

127

300

20,00

-92,20

6434,83

-

127

305

-72,71

-88,63

8172,17

-

127

310

-148,52

-59,10

5238,66

-

127

315

-184,78

-11,35

671,10

-

127

320

-169,60

41,23

-468,19

МИНИМУМ

127

325

-105,79

83,47

3441,92

-

127

330

-10,35

102,84

8584,15

-

127

335

90,13

93,23

9587,21

-

127

340

167,10

56,89

5303,28

-

127

345

198,29

3,87

220,31

-

127

350

174,29

-50,79

-196,70

-

127

355

101,42

-91,47

4645,63

-

127

360

0,00

-106,47

9738,00

-

127

365

-101,42

-91,47

9738,00

-

127

370

-174,29

-50,79

4645,63

-

127

375

-198,29

3,87

-196,70

МИНИМУМ

127

380

-167,10

56,89

220,31

-

127

385

-90,13

93,23

5303,28

-

127

390

10,35

102,84

9587,21

-

127

395

105,79

83,47

8584,15

-

127

400

169,60

41,23

3441,92

-

127

405

184,78

-11,35

-468,19

-

127

410

148,52

-59,10

671,10

-

127

415

72,71

-88,63

5238,66

-

127

420

-20,00

-92,20

8172,17

-

127

425

-102,95

-69,79

6434,83

-

127

430

-153,35

-28,87

2014,67

-

127

435

-158,67

18,06

-521,41

МИНИМУМ

127

440

-119,83

57,30

1034,88

-

127

445

-50,32

78,00

4469,06

-

127

450

28,28

75,28

5872,06

-

127

455

93,10

51,35

3865,94

-

127

460

126,65

14,53

746,33

-

127

465

121,75

-23,54

-342,10

-

127

470

82,96

-51,58

1214,19

-

127

475

24,51

-62,05

3200,72

-

127

480

-34,64

-53,23

3303,17

-

127

485

-76,90

-29,41

1565,83

-

127

490

-91,33

0,79

-23,27

МИНИМУМ

127

495

-76,54

27,41

21,68

-

127

500

-40,45

42,35

1160,97

-

По данным столбцов «А», «F(x)», «F'(x)» построим график функции и ее производной.

координата компьютерный оптимизационный решение

Рисунок 1 - График функции и ее производной

Имеется 8 пересечений в интервалах (100;105); (155;160); (200;205); (255;260); (315;320); (370;375); (430;435); (485;490). Для нахождения точек пересечения воспользуемся методом половинного деления. Для этого для каждого интервала создадим таблицу состоящую из столбцов: Xн, Хк, Хср, F'(Xн), F'(Xк),F'(Xср), F'(Xср),F(Xср).

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

Для первого интервала (100;105) в таблицу заносим данные. В первые строки столбца «Xн» заносим значение 100, столбца «Хк» - 105, столбца «Хср» - формулу среднего арифметического значений столбцов «Xн» и «Хк». В столбцы F'(Xн), F'(Xк),F'(Xср) заносим производную соответственно от Xн, Хк, Хср .

Значения второй и последующих строк столбцов «Xн» и «Хк» будут зависеть от того, в какой половине будет точка пересечения. Поэтому в эти строки заносим формулы, созданные с помощью логической функции «ЕСЛИ», суть которых заключается в следующем: если произведение F'(Xн) и F'(Xср) будет меньше или равно 0, то точка пересечения будет находиться на первой половине. Исходя из этого, начальной точкой будет начальная точка всего интервала, а конечной точкой уже станет среднее значение предыдущего интервала.

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

Таблица 2 - Метод половинного деления для интервала (100;105)

Xср

F'(Xн)

F'(Xк)

F'(Xср)

F(Xср)

ПОГРЕШНОСТЬ

100,00

105,00

102,50

-2,91

4,71

1,02

-128,99

-0,34

100,00

102,50

101,25

-2,91

1,02

-0,93

-129,05

-0,28

101,25

102,50

101,88

-0,93

1,02

0,05

-129,33

0,00

101,25

101,88

101,56

-0,93

0,05

-0,44

-129,27

-0,06

101,56

101,88

101,72

-0,44

0,05

-0,19

-129,32

-0,01

101,72

101,88

101,80

-0,19

0,05

-0,07

-129,33

0,00

101,80

101,88

101,84

-0,07

0,05

-0,01

-129,33

0,00

101,84

101,88

101,86

-0,01

0,05

0,02

-129,33

0,00

101,84

101,86

101,85

-0,01

0,02

0,00

-129,33

0,00

101,84

101,85

101,84

-0,01

0,00

0,00

-129,33

0,00

101,84

101,85

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

101,84

101,84

101,84

0,00

0,00

0,00

-129,33

0,00

График изменения погрешности при нахождении первой точки пересечения будет иметь следующий вид:

Рисунок 2 - Погрешность от количества шагов при нахождении первой точки пересечения

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

Таблица 3 - Метод половинного деления для интервала (155;160)

Xср

F'(Xн)

F'(Xк)

F'(Xср)

F(Xср)

ПОГРЕШНОСТЬ

155,00

160,00

157,50

-1,09

3,21

1,18

-55,33

-0,78

155,00

157,50

156,25

-1,09

1,18

0,06

-56,11

0,00

155,00

156,25

155,63

-1,09

0,06

-0,52

-55,97

-0,14

155,63

156,25

155,94

-0,52

0,06

-0,23

-56,08

-0,03

155,94

156,25

156,09

-0,23

0,06

-0,08

-56,11

0,00

156,09

156,25

156,17

-0,08

0,06

-0,01

-56,11

0,00

156,17

156,25

156,21

-0,01

0,06

0,02

-56,11

0,00

156,17

156,21

156,19

-0,01

0,02

0,01

-56,11

0,00

156,17

156,19

156,18

-0,01

0,01

0,00

-56,11

0,00

156,18

156,19

156,19

0,00

0,01

0,00

-56,11

0,00

156,18

156,19

156,18

0,00

0,00

0,00

-56,11

0,00

156,18

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

156,19

156,19

156,19

0,00

0,00

0,00

-56,11

0,00

Рисунок 3 - Погрешность от количества шагов при нахождении первой точки пересечения

И так для каждого интервала.

Правильность нахождения координат точек можно проверить с помощью «Подбора параметра». Подбор параметра - это способ поиска определенного значения ячейки путем изменения значения в другой ячейке. Для этого из пункта меню «Сервис» выбираем «Подбор параметра». В открывшемся окне в поле «Установить в ячейке» ссылаемся на ячейку с данной нам функцией. В поле «Значение» указываем значение необходимого нам параметра. В поле «Изменяя значение ячейки» ссылаемся на ячейку со значением переменной, где указано ближайшее значение найденного интервала.

Проверка правильности нахождения точек пересечения по средствам «Подбора параметра» показала, что координаты точек, найденные методом половинного деления, оказались правильными.

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

2. РЕШЕНИЕ ТРАНСПАРТНОЙ ЗАДАЧИ С ПОМОЩЬЮ СРЕДСТВ EXCEL

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

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

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

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

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

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

Сущность задач оптимизации: определить значение переменных х1, х2,..., хn, которые обеспечивают экстремум целевой функции Е, с учетом ограничений, наложенных на аргументы этой функции.

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

Условие задачи:

На складах w1, w2, w3 хранятся соответственно 15, 25, 20 кроватей, которые должны быть распределены по четырем магазинам ml, m2, m3, m4, где требуется 20, 12, 5 и 9 кроватей. Пусть стоимость перевозки одной кровати со склада в магазин задается следующей таблицей в условных единицах:

Склад

Магазин

ml

m2

m3

m4

W1

2

2

2

4

W2

3

1

1

3

W3

3

6

3

4

Как следует планировать перевозку для минимизации стоимости?

Обозначим искомые объемы перевозок от поставщиков к потребителям следующим образом:

а11 - количество кроватей, перевезенных с первого склада первому магазину;

а12 - количество кроватей, перевезенных с первого склада второму магазину;

а13 - количество кроватей, перевезенных с первого склада третьему магазину;

а14 - количество кроватей, перевезенных с первого склада четвертому магазину;

а21 - количество кроватей, перевезенных со второго склада первому магазину;

а22 - количество кроватей, перевезенных со второго склада второму магазину;

а23 - количество кроватей, перевезенных со второго склада третьему магазину;

а24 - количество кроватей, перевезенных со второго склада четвертому магазину;

а31 - количество кроватей, перевезенных с третьего склада первому магазину;

а32 - количество кроватей, перевезенных с третьего склада второму магазину;

а33 - количество кроватей, перевезенных с третьего склада третьему магазину;

а34 - количество кроватей, перевезенных с третьего склада четвертому магазину.

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

Затраты на перевозку составят:

Z=2*а11 + 2*а12 + 2*a13 + 4*а14 + 3*а21 + 1*а22 + 1*a23+ 3*а24 + 3*а31 + 6*а32 + 3*a33+ 4*а34.

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

Вводим формулы в ячейки:

В ячейку I15: =C15+D15+E15+F15+G15. Это объемы поставок с первого склада.

В ячейку I16: =C16+D16+E16+F16+G16. Это объемы поставок со второго склада.

В ячейку I17: =C17+D17+E17+F17+G17. Это объемы поставок с третьего склада.

В ячейку С19: =C15+C16+C17. Это суммарная потребность первого магазина в кроватях.

В ячейку D19: =D15+D16+D17. Это суммарная потребность второго магазина в кроватях.

В ячейку E19: =E15+E16+E17. Это суммарная потребность третьего магазина в кроватях.

В ячейку F19: =F15+F16+F17. Это суммарная потребность четвертого магазина в кроватях.

В ячейку G19: =G15+G16+G17. Это сумма всех невостребованных кроватей.

Тогда в ячейку C20 запишем формулу для нахождения минимальных затрат на перевозку: =C6*C15+C7*C16+C8*C17+D7*D16+D6*D15+D8*D17+

+E6*E15+E7*E16+E8*E17+F6*F15+F7*F16+F8*F17+G15*G6+G7*G16+G8*G17

После создания целевой ячейки для решения задачи воспользуемся поиском решения. В поле «Установить целевую» дается ссылка на ячейку с функцией, для которой будет находиться минимум.

В поле «Изменяя ячейки» выделяем диапазон ячеек (C15;G17).

Далее составляем ограничения на потребность в кроватях:

- для первого магазина: а11 + а21 + a31 =20

- для второго магазина: a12 + а22 + а32 =12

- для третьего магазина: а13 + а23 + a33 =5

- для четвертого магазина: а14 + а24 + a34 =9

- количество невостребованных кроватей: а15 + а25 + a35 =14.

Составляем ограничения на вместимость складов:

- для первого склада: а11 + а12 + a13+ а14 + а15 =15

- для второго склада: а21 + а22 + a23+ а24 + а25 =20

- для третьего склада: а31 + а32 + a33+ а34 + a35 =25

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

После этого нажимаем кнопку «Выполнить» и на экране отображается оптимальное решение данной задачи.

Полученный результат представлен в таблице 4.

Таблица 4 - Результат решения задачи

Из таблицы видно, что потребности магазинов были полностью удовлетворены. А затраты на перевозку кроватей оказались минимальными и составили 95 условных единиц.

Проверим найденный план на оптимальность. Для этого найдем потенциалы строк и столбцов.

Склады

Магазины

Вместимость складов

U

m1

m2

m3

m4

Остатки

w1

15

0

0

0

0

15

0

w2

0

12

5

3

0

20

0

w3

5

0

0

6

14

25

1

Потребность

20

12

5

9

14

60

V

2

1

1

3

-1

Найдем оценки пустых ячеек:

S12 =2-(0+1)=1

S13 =2-(0+1)=1

S14 =4-(0+3)=1

S15 =0-(0-1)=1

S21 =3-(0+2)=1

S25 =0-(0-1)=1

S32 =6-(1+1)=4

S33 =3-(1+1)=1

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

ЗАКЛЮЧЕНИЕ

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

В ходе решения первой задачи был построен график функции F(x) в заданном диапазоне значений переменной Х. Были найдены интервалы значений переменной Х, в пределах которых функция принимает минимальные значения. С использованием метода половинного деления были найдены значения переменной, при которых функция принимает минимальные значения, в соответствии с заданной точностью вычислений, равной 0,0001. Проверка правильности вычислений была осуществлена с помощью «Подбора параметра».

Решение второй задачи осуществлялось с помощью «Поиска решений» средствами Excel. Была составлена целевая функция и ограничения (соответствующие условию задачи). В результате был найден оптимальный план решения задачи.

ЛИТЕРАТУРА

1. Новиков Е.В., Лавшук О.А. Решение оптимизационных задач средствами Excel. Методическое пособие по дисциплине «Вычислительная техника и программное обеспечение» для студентов специальностей 1-45 01 04 - Почтовая связь.

2. Левкович О.А., Шелкоплясов Е.С., Шелкоплясова Т.Н. Основы компьютерной грамотности. Учебное пособие. - М.: «Тетрасистемс»,2005 -514с.

3. 3. Е.К. Овчаренко, О.П. Ильина, Е.В. Балыбердин. Финансово-экономические расчеты в Excel. Издание 2-е, дополненное - М.: Информационно-издательский дом «Филинъ», 1998.-184 с.

Размещено на Allbest.ur


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.