BookPDF Available

Abstract and Figures

Монография посвящена вопросам использования распределенных и параллельных вычислений в среде MATLAB и Simulink. Изложена технология настройки кластера для использования MATLAB. Приведены основные изменения в программной реализации средств создания и отладки параллельных программ. Показано применение платформы Simulink как среды для разработки динамических экономических моделей. На примере задачи идентификации системы, показана процедура определения параметров эндогенной модели роста экономики России (с применением технологии распределённых вычислений). Приведены результаты сценарного моделирования. Монография будет полезна как пользователям компьютерных систем, так и исследователям экономистам. Работа выполнена при финансовой поддержке РНФ (номер проекта 14-11-00432). Верстка выполнена с использованием пакета LaTeX. The monograph is devoted to use of distributed and parallel computing in MATLAB and Simulink environment. It is presented a technology of cluster configuration for use MATLAB on the cluster. The main changes in the software implementation tools for creating and debugging of parallel programs are provided. An application of Simulink environment as a platform for the development of dynamic economic models is shown. As an example for procedure for parameter determination a parameter identification problem for an endogenous growth model of the Russian economic system is presented (using distributed computing technologies). The results of the scenario modeling are shown. The book will be useful both for users of computer systems and for researchers in economics. The work was supported by the Russian scientific foundation (project number 14-11-00432). Layout is made using Latex package.
No caption available
… 
Content may be subject to copyright.
ISBN 978-5-91601-126-5
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
УЧРЕЖДЕНИЕ НАУКИ
ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР ИМ. А.А. ДОРОДНИЦЫНА
РОССИЙСКОЙ АКАДЕМИИ НАУК
Н.Н. ОЛЕНЁВ, Р.В ПЕЧЁНКИН, А.М. ЧЕРНЕЦОВ
ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ В
MATLAB И SIMULINK С ПРИЛОЖЕНИЯМИ К
МОДЕЛИРОВАНИЮ ЭКОНОМИКИ
ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР ИМ. А.А. ДОРОДНИЦЫНА
РОССИЙСКОЙ АКАДЕМИИ НАУК
МОСКВА 2015
УДК 512.643 + 519.86
Ответственный редактор
член-корр. РАН И.Г. Поспелов
Монография посвящена вопросам использования рас-
пределенных и параллельных вычислений в среде
MATLAB c
и Simulink c
. Изложена технология настройки
кластера для использования MATLAB. Приведены основ-
ные изменения в программной реализации средств созда-
ния и отладки параллельных программ. Показано приме-
нение платформы Simulink как среды для разработки ди-
намических экономических моделей. На примере задачи
идентификации системы показана процедура определения
параметров эндогенной модели роста экономики России
(с применением технологии распределенных вычислений).
Приведены результаты сценарного моделирования. Моно-
графия будет полезна как пользователям компьютерных
систем, так и исследователям экономистам. Работа выпол-
нена при финансовой поддержке РНФ (номер проекта 14-
11-00432).
Ключевые слова: параллельные вычисления,
MATLAB, Simulink, модель экономики России, иден-
тификация.
Рецензенты: В.В. Дикусар,
А.В. Арутюнов
Научное издание
c
Федеральное государственное бюджетное учреждение
науки Вычислительный центр им. А.А. Дородницына
Российской академии наук, 2015
c
Н.Н. Оленев, Р.В. Печенкин, А.М. Чернецов
Оглавление
Введение 5
I. Администрирование и конфигурирование 15
1.1. Основные обновления и изменения . . . . . 15
1.2. Пакет параллельных вычислений . . . . . . 22
1.2.1. Режим pmode . . . . . . . . . . . . . . 22
1.2.2. Режим matlabpool . . . . . . . . . . . 25
1.2.3. Объектный режим при создании па-
раллельных задач . . . . . . . . . . . 31
II. Моделирование экономических систем
в среде имитационного моделирования
Simulink 37
2.1. Реализация модели экономики с производ-
ственной функцией CES в среде Simulink . . 38
2.2. Базовые понятия и объекты Simulink . . . . 40
2.3. Управление моделью . . . . . . . . . . . . . 46
2.4. Анализ сценарных и фактических данных . 48
III.Идентификация эндогенной производ-
ственной функции 53
3.1. Распределение производственных мощностей 58
3
3.2. Моделирование износа производственных
мощностей в среде Simulink . . . . . . . . . . 61
3.2.1. Реализация блоков износа и фондо-
емкости в Simulink . . . . . . . . . . . 67
3.3. Производительность . . . . . . . . . . . . . . 71
3.3.1. Загрузка производственных мощно-
стей трудом . . . . . . . . . . . . . . . 72
3.4. Формализация модели и ее идентификация 75
3.4.1. Идентификация системы . . . . . . . 77
3.4.2. Результаты идентификации . . . . . 78
3.4.3. Оптимальность идентификации . . . 83
3.4.4. Использование Simulink в различных
режимах параллельных вычислений 88
3.4.5. Сценарные расчеты . . . . . . . . . . 98
Заключение 110
4
Введение
Компьютерные технологии бурно развиваются. Теоре-
тически производительность квантовых компьютеров, на-
пример, может достигать квадрильона операций в секунду.
Однако есть и трудности в развитии. Не все новые техно-
логии быстро удается освоить. Производительность совре-
менных процессоров достигла потолка, поэтому произво-
дители, привыкшие работать в условиях удвоения произ-
водительности компьютеров за два года, стали использо-
вать параллельные и распределенные технологии не толь-
ко в суперкомпьютерах, но и в пользовательской технике.
В условиях свершившегося перехода производителей
процессоров к многоядерным архитектурам параллельное
программирование становится насущным инструментом
каждого продвинутого программиста и научного исследо-
вателя. Стандартом де-факто параллельного программи-
рования является интерфейс передачи сообщений (MPI),
но освоить его удается не всем. Поэтому создатели матема-
тических пакетов программ, среди которых MathWorks c
,
озаботились внедрением параллельных и распределенных
вычислений в свои пакеты. Для осуществления техниче-
ских вычислений в параллельной среде часто выбирают
пакет MATLAB, поскольку он популярен и дружелюбен к
5
пользователю.
Популярность MATLAB необычайно высока, посколь-
ку он является мощным и универсальным пакетом обра-
ботки многомерных данных. Сама структура пакета дела-
ет его удобным средством для проведения матричных вы-
числений. Спектр проблем, исследование которых может
быть осуществлено при помощи MATLAB, не ограничен,
он охватывает, в частности, матричный анализ, обработку
сигналов и изображений, нейронные сети, научные иссле-
дования.
MATLAB — это язык высокого уровня с открытым ко-
дом. Встроенный язык программирования позволяет легко
создавать собственные алгоритмы. За много лет использо-
вания MATLAB создано огромное количество функций и
ToolBox (пакетов специализированных средств), включая
теперь и программные средства высокоскоростных парал-
лельных и распределенных вычислений.
Одним из довольно самостоятельных приложений к па-
кету MATLAB является программа Simulink. При исполь-
зовании Simulink модель строится по принципу визуаль-
ного программирования, когда пользователь на экране из
библиотеки стандартных блоков создает модель динами-
ческой системы и осуществляет расчеты. Доступ к функ-
циям MATLAB и другим его инструментам, включая па-
раллельные, остается открытым и их можно использовать
в Simulink.
Наше решение продолжить начатые в монографии [1]
исследования по применению параллельных вычислений
в MATLAB вызвано не только техническими причинами
(изменились параллельные средства и технологии в паке-
те MATLAB), но и рядом неформальных обстоятельств,
6
среди которых можно выделить три основных:
1. Повышенный интерес читателей к первой нашей сов-
местной работе по параллельному программирова-
нию в MATLAB [1] (на данный момент число ци-
тирований в РИНЦ достигло девятнадцати, а число
скачиваний превысило двадцать тысяч).
2. Получены новые результаты исследования динами-
ческой модели эндогенного роста экономики России
[2-4] и ее множеств идентификации [4-7].
3. В списке приоритетных технологий, поддерживае-
мых Правительством России, стоят параллельное
программирование и моделирование комплексных
систем (см., соответственно, пп. 20 и 41 распоряже-
ния Правительства РФ [8] «О порядке осуществле-
ния иностранных инвестиций в хозяйственные обще-
ства»), имеющие стратегическое значение для обес-
печения обороны страны и безопасности государства.
Монография [1] была первой публичной работой, по-
священной вопросам использования распределенных и па-
раллельных вычислений в среде MATLAB. Технология
апробирована на стандартных задачах линейной алгебры.
Был предложен промышленный подход идентификации
математических моделей сложных систем на основе парал-
лельных средств MATLAB. Подход рассмотрен на примере
простейшей динамической модели экономики современной
России, что позволяет освоить его большому числу потен-
циальных пользователей. Дана экономическая интерпре-
тация полученным результатам идентификации модели и
ее использования в сценарных расчетах.
7
После девальвации курса доллара в результате дефол-
та 1998 г. начался рост валового внутреннего продукта
(ВВП), который продолжался и в год издания моногра-
фии [1] (2007). Однако соответствующие факторы произ-
водства – труд и капитал – согласно данным статистики
практически не менялись. Это поставило вопрос о при-
чинах роста. С помощью высокопроизводительной техни-
ки и параллельных вычислений в MATLAB решена зада-
ча идентификации простейшей модели экономики по дан-
ным России 2000-2006 гг. Определен эффективный капи-
тал, реально используемый в производстве, рост которого
и определял рост ВВП. Оказалось, однако, что рост ка-
питала обусловлен по большей части не новыми инвести-
циями, а вовлечением старых производственных фондов,
доставшихся нашей экономике от советских времен. Но их
источник не безграничен. Он иссякнет.
В результате применения предложенной техники ин-
дентификации параметров модели экономики России по-
лучен важный побочный результат. Найдена оценка вре-
мени окончания процесса вовлечения незагруженных про-
изводственных мощностей в конце 2008 г., т.е. получен про-
гноз кризиса российской экономики 2008 г., который свя-
зан с внутренними проблемами исчерпания резерва произ-
водственных мощностей, созданных еще в советское вре-
мя. Несмотря на грубость модели прогноз оказался точ-
ным. Кризис мировой экономики совпал по времени, од-
нако из развивающихся стран БРИКС только российская
экономика испытала такой значительный спад. Таков был
базовый (пессимистический) сценарий развития россий-
ской экономики, рассмотренный в [1].
Для полноты картины был рассмотрен и оптимистиче-
8
ский сценарий развития российской экономики. Оптими-
стический сценарий построен из предположения, что нач-
нется рост на основе научно-технического прогресса, на ос-
нове замены старых советских производственных фондов
на новые, более производительные, на основе сокращения
времени от получения заказа до его оплаты. Формально
это можно выразить повышенной отдачей на используе-
мые факторы производства. К сожалению, такой рост сам
собой не начнется, а соответствующие экономические ме-
ханизмы лицами, принимающими решения, не были задей-
ствованы до сих пор.
Устойчивость прогнозирования на модели экономики
зависит от качества идентификации модели. Вопрос об
устойчивости прогнозирования был исследован в 2010-
2015 гг. на идентифицированной модели типа Рамсея с
помощью разработанного в ВЦ РАН оригинального ме-
тода множеств идентификации [5,7]. В методе множеств
идентификации исследуются многомерные график и над-
график функции ошибок, а также поведение этого мно-
жества в окрестности оптимальных параметров. Визуа-
лизация множества идентификации позволяет исследова-
телю выбирать параметры модели, сочетая результаты
наблюдений с собственным неформализованным опытом.
Неустойчивость решения задачи идентификации модели
может приводить к принципиально разным прогнозам при
кризисных изменениях в экономике [5,6].
Критерием качества идентификации служит миними-
зация некоторой выбранной свертки ошибок идентифика-
ции. Визуализация множеств идентификации для указан-
ной модели показала, что небольшой сдвиг по параметрам
начальной точки дает совершенно разные траектории раз-
9
вития экономической системы, то есть спад экономики не
является неизбежным. Ручное управление здесь дает воз-
можность сдвига состояния экономики в положение, кото-
рое обеспечивает устойчивый экономический рост.
Использованная в [1,5,7] модель экономики не да-
ет возможности однозначно ответить на вопрос, по како-
му сценарию будет развиваться экономика России. Мож-
но только сделать вывод, что дальнейшее развитие суще-
ственно зависит от экономической политики, которая бу-
дет проводиться в ближайшее время. Если не предприни-
мать никаких усилий, то рост за счет вовлечения старых
фондов скоро прекратится. Если экономическая политика
будет основываться на использовании достижений научно-
технического прогресса, то возможен благоприятный про-
гноз. Итак, одним из результатов анализа устойчивости
прогнозирования по множествам идентификации для мо-
дели экономики типа Рамсея является вывод о возможно-
сти перехода за счет продуманных решений из неустойчи-
вого положения к режиму экономического роста.
Значит, надо продолжать исследование российской эко-
номики с помощью математических моделей, описываю-
щих возможность структурных изменений [2]. В [2] пока-
зано, что для описания идущих в экономике России про-
цессов надо строить математические модели с дифферен-
цированными по возрасту производственными фондами.
Итоги исследовательско-преподавательской работы по
применению MATLAB при изучении паралельного про-
граммирования были изложены в работах [9-11].
Дальнейшее исследование задачи идентификации эко-
номики России и методическая работа по вопросам парал-
лельного программирования продолжены в работах [7,12].
10
Задача идентификации модели экономики типа Рамсея по
данным России [1] используется в качестве образца в зада-
чах идентификации подобных моделей по статистическим
данным других стран в домашних, курсовых и выпускных
работах студентов МФТИ(ГУ), РУДН и ВятГУ [7, 13-15].
Применение функционала параллельного программи-
рования в MATLAB также нашло отражение в работе
[16], изданной в рамках серии «Суперкомпьютерное обра-
зование». В этой работе представлены вопросы разработ-
ки технологий программного обеспечения, такие как теку-
щий статус, приложения и параллельные алгоритмы, про-
граммное обеспечение и программные инструменты, язы-
ки и компиляторы, вычислительные среды и визуализация
расчетов.
Отдельно стоит упомянуть проект использования па-
раллельного функционала MATLAB на кластере «Уран»
института математики и механики им. Н.Н. Красовского
(ИММ УрО РАН) см. [17]. На сайте этого института при-
ведена краткая инструкция по использованию параллель-
ного MATLAB, даны примеры параллельной программы,
ее запуска и применения параллельного профилирования.
Порядок изложения материала в настоящей работе на-
поминает работу [1]. Как и прежде, изложение начинается
с первоначального знакомства с основополагающими объ-
ектами MATLAB, позволяющими настроить среду испол-
нения параллельных и распределенных программ. В рам-
ках первой главы приводятся примеры простейших про-
грамм для параллельного исполнения.
Вторая глава посвящена реализации средствами
Simulink экономической модели, рассмотренной нами в ра-
боте [1]. Такой выбор обусловлен желанием расширить
11
необоснованно узкий круг книг на русском языке, кото-
рые посвящены практическим примерам использования
Simulink в экономических исследованиях. Здесь, кроме ра-
боты И.Ф. Цисаря [18], процитировать в общем-то нечего.
Из работ, изданных на аглийском языке, стоит упомянуть
[19], содержащую примеры финансовых моделей, реали-
зованных в Simulink. Связано это, по нашему мнению, с
тем, что за Simulink прочно закрепился статус эталонной
среды для моделирования динамических систем техниче-
ской направленности, что в какой-то мере отпугивает по-
тенциальных пользователей, работающих над социально-
экономическими моделями. В то же время, работая над
моделями, описанными в данной книге, мы ловили се-
бя на мысли, что язык Simulink очень напоминает язык
dynamo, изобретенный и используемый Д. Форрестером
[20].
Третья глава посвящена описанию и идентификации
экономической модели, основанной на учете дифферен-
циации производственных фондов по моментам создания.
Основой служит математическая модель производствен-
ной функции, представимой распределением производ-
ственных мощностей по технологиям [21]. В [21] производ-
ственная мощность и ее технология (трудоемкость) опре-
деляются в момент создания и медленно меняются с воз-
растом по заданному закону. Решая задачу построения мо-
дели российской экономики и ее идентификации на реаль-
ных статистических данных, мы старались сопроводить
изложение примерами технической реализации с исполь-
зованием как MATLAB, так и Simulink. При этом методы
паралелльного и распределенного программирования бы-
ли специально применены нами в задаче идентификации
12
параметров модели конкретной экономики, чтобы нагляд-
ным образом продемонстрировать применимость средств
распределенных вычислений при решении практической
(“не лабораторной”) задачи.
Задачи, решаемые известными мировыми исследовате-
ли в прикладных областях экономики [22], а также иссле-
дователями, работающими в глобальных инвестиционных
банках [23-25], несомненно являются ресурсоемкими в вы-
числительном плане (о чем эти исследователи сами гово-
рят в своих работах1. Тот факт, что в своих работах они
не раскрывают своих моделей и не указывают технических
средств их реализации, не говорит о том, что в решении
своих задач они не используют многопроцессорную архи-
тектуру для прироста производительности.
Сценарные расчеты, приведенные нами в заключитель-
ном разделе (стр. 98), показывают возможные траектории
развития (в рамках рассматриваемой модели) суммарной
производственной мощности экономики России, обе траек-
тории являются достижимыми (достижимыми в том смыс-
ле, что обе являются следствием воздействия на систему
1Лоренс Котликофф: “Создание и настройка динамической ими-
тационной модели жизненного цикла требует большой работы, на
которую обычно уходит целый год или даже больше. Программный
код, которым можно наполнить небольшую книжку, нужно тщатель-
но проверить.. И хотя сегодняшние мощные компьютеры работают
поразительно быстро, на вычисления могут потребоваться дни, по-
тому что модели должны нащупать траекторию перехода к новому
общему равновеcию (считаем необходимым напомнить читателям,
что Л. Коткликофф был привлечен в качестве эксперта к пенсион-
ной реформе, проводимой Правительством РФ)”.
Автор акронима БРИК Джим О’Нил использует в своей моде-
ли восемнадцать переменных (в индексе GES - Global Environment
Score).
13
определенных управляющих параметров), при этом одна
из траекторий есть формализация на уровне модели так
называемых «майских указов» Президента РФ В.В. Пути-
на, подписанных им в мае 2012 г. [26].
Основная часть работы по представленному здесь ис-
следованию была выполнена в период 2013-2014 гг., по-
этому анализ эффекта вхождения новых субъектов в со-
став России ни на уровне анализа статистических данных,
ни на уровне оценки влияния взаимных санкций, после-
довавших за этими событиями, не был проведен и не на-
шел отражения в исследовании рассмотренной модели, но
несомненно эти события могут и должны являться темой
отдельного исследования.
14
I. Администрирование и
конфигурирование
Данный раздел построен по структуре аналогичным
образом, что и соответствующий раздел нашей первой ра-
боты [1], и содержит в себе перечень основных обновлений
в программной реализации параллельных вычислений в
MATLAB. Здесь описаны также приемы, которые помо-
гут пользователям оптимальным образом запускать необ-
ходимые службы, создавать объекты, управлять класте-
ром, исключив проблемы, связанные с операционной си-
стемой.
Цель данного раздела – описать принципиальную схе-
му работы двух пакетов MATLAB, которые реализуют
технологию распределенных и параллельных вычислений.
1.1. Основные обновления и изменения
В 2005 г. для того, чтобы занять определенный сегмент
рынка инженерного программного обеспечения, предна-
значенного для программирования распределенных за-
дач, компанией MathWorks были разработаны и вы-
15
пущены на рынок два новых продукта под названи-
ем Distributing Computing Toolbox (DCT) и MATLAB
Distributing Computing Engine (MDCE). На момент появ-
ления эти два пакета расширений нельзя было рассматри-
вать отдельно друг от друга, и применялись они только
в связке. Оба эти toolbox изначально были предназначе-
ны для решения одной задачи – увеличения производи-
тельности (сокращения времени счета) при использовании
нескольких компьютеров, объединенных в сеть, вместо од-
ного. Однако с момента выхода [1] произошли некоторые
изменения в функционалах данных пакетов.
Прежде всего, начиная с версии MATLAB 2007b,
компания Mathworks переименовала toolbox, отвеча-
ющие за возможности параллельного программирова-
ния: вместо Distributing Computing Toolbox и MATLAB
Distributing Computing Engine они получили новые на-
звания: Parallel Computing Toolbox иMATLAB
Distributing Computing Server. По мнению авторов,
это было сделано, вероятно, в маркетинговых целях для
выделения в функционале направленности параллельно-
го программирования. Во-вторых, было снято требование
совместного использования тулбоксов. Теперь для много-
ядерных систем с числом ядер до четырех не требова-
лось приобретать лицензию на MDCS. Далее, после вы-
хода matlab R2009b количество ядер было увеличено до
восьми, а по мере развития вычислительной техники это
число было еще увеличено. Более подробная информация
представлена далее в данной главе. Документация по обо-
им пакетам в части инсталляции и настройки в настоящее
время объединена.
Также необходимо отметить возможность запуска ра-
16
бочих процессов MATLAB на клиентской рабочей станции,
используя локальный планировщик; важным ограничени-
ем, однако, является максимальное количество запускае-
мых рабочих процессов. В таблице ниже приведены срав-
нительные характеристики различных версий.
Версия Число рабочих
процессов
Соответствие с
характеристиками
процессоров
2006B 1 одноядерные системы
2007A 4 четырехъядерные
2009A 8 двухпроцессорные
четырехъядерные
2011B 12 двухпроцессорные
шестиядерные
2014A не ограничено
по умолчанию задается
число физических
ядер процессора
При использовании промышленного кластера в каче-
стве MATLAB клиента может выступать любой компью-
тер, подключенный к сети и имеющий доступ к кластеру,
для scheduler обычно выделяют один из узлов кластера, на
всех остальные узлах кластера можно запустить по одно-
му процессу. Запускать на одном узле несколько процессов
имеет смысл только в случаях, когда узел многопроцессор-
ный либо многоядерный. Ниже на рис.1приведена офици-
альная блок-схема, иллюстрирующая логику, положенную
в основу функционирования Parallel Computing Toolbox.
17
Рис. 1. Две технологические реализации механизма рас-
пределенных вычислений
Следует отметить, что несмотря на то, что на офици-
альной диаграмме MathWorks в левой части блок-схемы
на рис. 1(Parallel Computing Toolbox) отсутствует изоб-
ражение планировщика, в действительности он запуска-
ется автоматически, и именно планировщик осуществляет
взаимодействие рабочих процессов, запущенных на ядрах
локальной станции.
На странице MathWorks [27] представлены некоторые
функции MATLAB, параллелизм которых реализован на
уровне самих функций и не требует оптимизации.
В силу того, что промышленные многопроцессорные
системы не доступны широкому кругу пользователей, а
также в силу того, что за последние годы многоядерные
настольные системы получили достаточно широкое рас-
пространение, считаем целесообразным начать знакомство
18
с технологией параллельных вычислений именно с пакета
Parallel Computing Toolbox (левая часть рис. 1).
Отсутствие необходимости настраивать кластер и со-
здавать объекты делает Parallel Computing Toolbox неза-
менимым для целей первоначального знакомства1.
Требования к аппаратному и программному обеспече-
нию
Аппаратная платформа (общие требования):
Для некоторых типов лицензий FlexLm Manager вер-
сии 11.1.1.12 (поставляется вместе с MATLAB).
В случае использования Flexlm требуется примене-
ние протокола TCP/IP на всех платформах исполь-
зующих сервер лицензий.
Для лицензий, использующих аппаратный ключ,
требуется наличие USB порта.
Минимальные требования к объему оперативной памя-
ти и дисковому пространству изложены в таблице ниже.
Параметр Минимум Рекомендовано
Дисковое пространство 1 Гб 3-4 Гб
Оперативная память 1 Гб на ядро 2 Гб на worker
Минимальное дисковое пространство 460 Мб требуется
для инсталляции ядра и справочной системы.
Для 32-битной архитектуры возможна работа на сле-
дующих микропроцессорах фирм Intel и AMD:
1Все примеры в данной работе выполнены на ноутбуке: Intel(R)
CoreTM M480 @2.67 GHz, ОЗУ 8ГБ, под управлением ОС Windows 7
Professional и на Apple MacBook Pro 13 Mid 2013, Core i5, ОЗУ 8ГБ.
19
Фирма Микропроцессор
Intel Любой МП с поддержкой набора
инструкций SSE2
AMD Любой МП с поддержкой набора
инструкций SSE2
Для 64-битной архитектуры можно использовать мик-
ропроцессоры: EM64T у Intel, AMD64 у AMD.
Macintosh: любой Intel-Based Мас с процессором Intel
Core 2 и более поздних версий.
Операционная система:
Для Windows – Windows XP SP3/2003 R2 SP2/Vista
SP2/Windows 7/8/8.1.
Для Linux – начиная с ядра версии 2.6.x и GLIBC
2.11.
Для Solaris – начиная с версии R2010b не поддержи-
вается.
Для Macintosh – Intel-Rased Mac OS X 10.7.4 (Lion),
10.7 (Mountain Lion), 10.8 (Mavericks).
Минимальные требования к характеристикам системы
для работы Parallel Computing Toolbox изложены в табли-
це ниже.
Параметр Минимум Рекомендовано
Дисковое пространство 10 Гб 15 Гб
Оперативная память 1 Гб на ядро 2 Гб на worker
Общие требования к аппаратной платформе и операци-
онной системе определены. Это позволяет запускать ядро
MATLAB.
20
Для обеспечения бесперебойной работы сервисов паке-
та параллельных вычислений рекомендуем на время ра-
боты выключить брандмауэр Windows, хотя уже версия
R2011B позволяет настраивать брандмауэр таким образом
чтобы не прерывать исполнение соответствующих функ-
ций пакета.
Дополнительно стоит отметить, что при использовании
Win 7 home premium раньше возникали проблемы, связан-
ные с запуском служб, из-за отсутствия полноценных прав
администратора. После обновления системы до выпуска
Professional эти проблемы исчезли.
Все дальнейшие работы, связанные с настройкой кла-
стера, проводились уже под учетной записью администра-
тора.
Требования к MPI
MATLAB R2014a поставляется с реализацией MPI-2
[28] mpich2 v. 1.4.1p1. Вместо стандартной библиотеки
можно подключить собственную реализацию MPI. Для
этого она должна удовлетворять следующим условиям:
Быть собранной как динамическая библиотека.
Иметь заголовочный файл mpi.h, полностью совме-
стимый с mpich2.
Более подробно о подключении собственных реализаций
MPI можно прочитать в документации MathWorks [29].
21
1.2. Пакет параллельных вычислений
1.2.1. Режим pmode
Самое первое знакомство с параллельными вычисле-
ниями рекомендуем начинать с интерактивного режима
pmode. Данный режим запускает окно приложения, в ко-
тором пользователь в командной строке может вводить
команды, которые будут исполняться одновременно все-
ми сессиями (рабочими), причем приложение реализовано
таким образом, что каждое окно, по сути, есть окно про-
смотра пространства переменных рабочих.
Следующая команда запускает режим pmode с двумя
рабочими процессами.
>> pmode start local 2
Результатом исполнения данной команды будет окно при-
ложения (см. рис.2). Следует отметить, что несмотря на
то, что пользователь в явном виде не указывает имя пла-
нировщика, хост-имена, где должны быть запущены ра-
бочие процессы, MATLAB по умолчанию запускает пред-
определенный планировщик. После выполнения данной
команды в списке процессов диспетчера задач Windows по-
мимо имени процесса, отвечающего за работу локальной
сессии MATLAB, будут показаны еще два системных про-
цесса MATLAB, по умолчанию объем оперативной памя-
ти, зарезервированный под данные процессы – 100 Мбайт
(механизм изменения параметров запускаемых процессов
не изменился и производится через изменение файла на-
стройки).
Запуск команды pmode с параметром числа рабо-
чих, отличного от двух, вызовет ошибку с предложени-
22
Рис. 2. Окно приложения запускаемое в режиме pmode
ем настроить конфигурационный файл. Настройка кон-
фигурационных файлов теперь может быть осуществле-
на с помощью специальных GUI, расположенных в ме-
ню Parallel панели инструментов. Так, например, выбрав
команду Parallel-> Configurations Manager -> local,
можно определить число рабочих, запускаемых при стар-
те конфигурации local (Number of workers available for
scheduler (cluster size), допустим 4). Теперь выполнение ко-
манды:
>> pmode start local
приводит к запуску консоли pmode с четырьмя рабочими
процессами.
Несмотря на продвижения в плане удобства конфигу-
рирования и просмотра текущих статусов кластера авто-
ры продолжают считать режим pmode своего рода “про-
смотрщиком” рабочего пространства (пространства пере-
менных) рабочих процессов. Выполнять большие с точ-
23
ки зрения листинга программы в таком режиме крайне
затруднительно. Однако исключительно для целей ил-
люстрации работы некоторых функций mpi (таких, как
labindex, numlabs, labBroadcast) данный режим являет-
ся достаточно иллюстративным. Так, например, на рис.
2приведен пример исполнения каждым рабочим двух ко-
манд:
>> labindex,
>> labindex*ones(3).
Выполнение следующей команды в консоли pmode
>> A=labindex*ones(3)
создает соответствующие переменные Aв сессиях рабо-
чих. Для копирования переменных из пространств рабо-
чих в рабочую область локальной сессии MATLAB нуж-
но воспользоваться командой pmode lab2client A 1 (где
1- номер рабочего). Для копирования переменных из ло-
кальной сессии в сессии рабочих используется функция
client2lab, ввод данной функции также осуществляется
в локальном командном окне:
>> pmode client2lab X 1:2,
где X– переменная, определенная в локальной сессии, 1:2
– диапазон индексов рабочих, в сессии которых должна
быть скопирована переменная.
После окончания работы в режиме pmode необходимо
окончить сессиию, введя команду: >>pmode close в ло-
кальной сессии, в противном случае при повторном запус-
ке режима возникнет сообщение об ошибке.
24
1.2.2. Режим matlabpool
Более высокоуровневым с точки зрения разработ-
ки и отладки параллельных программ является режим
matlabpool. Данный режим так же, как и pmode, запускает
кластер с предопределенными параметрами на локальной
машине, однако общение с кластером (рабочими процесса-
ми) производится не через консоль, позволяющую вводить
команды только через командную строку, а через привыч-
ный каждому пользователю MATLAB редактор m файлов.
Запуск режима matlabpool производится аналогичным
с pmode образом (за исключением того, что команда запус-
ка указывается в m файле сценария). Однако сам по себе
запущенный режим matlabpool не позволяет обращаться к
ресурсам кластера. Для этой цели служит команда spmd
(от англ. Single Program Multiple Data) – конструкция –
одна программа, много данных (входных и выходных).
Общий вид файла-сценария для работы с кластером
посредством режима matlabpool выглядит следующим об-
разом:
matlabpool
spmd
statements
end
matlabpool close,
где внутри окружения spmd содержатся выражения, кото-
рые будут выполняться каждым рабочим.
25
Использование mpi функций в режиме matlabpool
Даже при наличии в пакете параллельных вычислений
большого количества функций, режимов, объектов, облег-
чающих работу математиков – программистов по уско-
рению решения широкого спектра задач, не следует за-
бывать, что в первую очередь отличительной особенно-
стью данного пакета является возможность использования
функций mpi, именно навыкам работы с этими функциями
будут посвящены следующие разделы.
В разделе, посвященном режиму pmode, был приведен
пример использования mpi функции labindex, эта функ-
ция так же, как и функция numlabs, – функция-примитив.
Без функций-примитивов использование параллельных
технологий вычислений просто невозможно. В режиме
matlabpool становится возможным работать с более слож-
ными mpi функциями, такими как labSend,labReceive,
labProbe.
Задача о «жонглировании» переменными: си-
стема состоит из двух рабочих процессов, рабочий 1
создает некую матрицу A1,рабочий 2 в конечном цикле
переопределяет матрицу A2.
Необходимо написать программу, выполняющую
перечисленные ниже задачи.
1. Рабочий 1 должен отправить матрицу A1 рабочему 2
после того, как тот закончит цикл.
2. Рабочий 2 должен отправить матрицу A2, получен-
ную на финальной итерации, рабочему 1.
26
3. После окончания программы жонглирования необхо-
димо удостовериться, что в пространстве перемен-
ных рабочего 1 определена матрица A2, а в про-
странстве переменных рабочего 2 определена мат-
рица A1.
При написании процедур с использованием mpi функ-
ций следует помнить, что файл-программа будет испол-
няться рабочими одновременно на нескольких процессо-
рах (spmd логика), эта особенность автоматически приво-
дит к тому, что структура файл-программы должна отли-
чаться от обычной линейной, последовательной програм-
мы.
27
Листинг файла сценария juggling1.m
1 mat la bp oo l ( 2 )
2 %%
3 spmd
4 i f la bi nde x==1
5 A1=o ne s ( 2 ) ;
6 l ab Se nd ( A1 , 2 ) ;
7 dat a_f rom_2_l ab=l a bR e ce i ve ( 2 ) ;
8 e l s e
9 f o r i = 1: 10^ 5
10 A2=r an d ( 2 ) ;
11 end
12 la bS en d ( A2 , 1 ) ;
13 d ata _fr om_1_la b=l a bR e ce i ve ( 1 ) ;
14 end
15 end
16 %%
17 m at la bp o ol c l o s e
Программаjuggling1.m выполняет сформулирован-
ную выше задачу. Прокомментируем ее структуру. Стро-
ки 1, 17 открывают параллельную сессиию и закрывают
ее. Структура if else разделяет программу на две ветви
первого и второго рабочего процесса. Следует отметить,
что если рабочих процессов, участвующих в решении за-
дачи много, то распределить задачу между ними довольно
легко с помощью структуры for i=1:numlabs.
Как указано в задаче, рабочий 1 после создании мат-
рицы A1 отправляет ее рабочему 2 с помощью команды
labsend (строка 6). При этом следует помнить, что если в
программе стоит команда labsend, то где-то должна сто-
28
ять команда labrecieve (в нашем случае это строка 13).
Второй рабочий переопределяет матрицу A2, после чего
отправляет ее рабочему 1 (строка 12), рабочий 1 прини-
мает матрицу A2 (строка 7).
Результатом выполнения данной программы сценария
будут четыре переменные, определенные в локальной сес-
сии, а именно A1,A2,data_from_1_lab,data_from_2_lab
иi. Тип этих переменных – copmosite, данный тип пере-
менных появился начиная с версии 2007b и представляет
из себя, по сути, ссылочный тип данных. Следующие ко-
манды выполнены в локальной сессии.
>> data_from_2_lab
data_from_2_lab =
Lab 1 : c l a s s = d ou b le , s i z e = [ 2 2 ]
Lab 2 : No d at a
>> da ta_f rom_ 2_l ab {1 }
ans =
0.8993 0.4407
0.4037 0.6615
>> da ta_f rom_ 2_l ab {2 }
E rr o r u s in g Co mp os it e/ s u b sr e f ( l i n e 6 7)
An i n v a l i d i n d ex i ng r e q ue s t wa s made
Caused by :
E rr o r u s i ng C om po si te / s u b s r e f
>i C he c kV a lu es E xi s t ( l i n e 8 6 )
The Composite h as no val u e on t he
f o l l o w i n g l a b ( s ) : 2 .
Сообщение об ошибке при обращении к переменной
data_from_2_lab{2} вполне обоснованно, так как пере-
менная с таким именем в пространстве имен рабочего 2
29
не определена. Таким образом, тип данных composite, по
сути, представляет из себя ссылки на переменные с оди-
наковыми именами во всех сессиях рабочих.
Остается открытым вопрос №3 задачи о «жонглирова-
нии», а именно надо убедиться, что в пространстве пере-
менных рабочего 1 определена матрица A2, а в простран-
стве рабочего 2 определена матрица A1.
На данный вопрос ответ можно получить, воспользо-
вавшись доступом к переменным рабочих, посредством
ссылочного типа данных composite, а можно просто рас-
комментировать выражение (удалить оператор ;) в стро-
ках 7 и 13.
На достаточно простом примере (не имеющем под со-
бой прикладной задачи) были продемонстрированы базо-
вые приемы: разделения задачи на разные рабочие про-
цессы, отправка/получение сообщений.
Вопросы, которые логично могут возникнуть при реа-
лизации данной задачи:
1. Очевидно, что рабочий 1 быстрее рабочего 2 дости-
гает строки программы, к которой он отправляет пе-
ременную A1 (в момент отправки переменной, оче-
видно, что рабочий 2 еще выполняет в цикле пере-
определение матрицы), в связи с чем возникает во-
прос, что физически происходит с отправленной пе-
ременной A2?
2. Прием переменной A1 в сессии второго рабочего про-
исходит только на строке 13. Если перенести стро-
ку с приемом на уровень выше, чем начало цикла,
уменьшит ли это общее время выполнения задачи?
Снизит ли это транзакционные издержки, вызван-
30
ные тем, что переменная A1 не может быть переме-
щена в пространство второго рабочего и на время
исполнения цикла вынуждена находиться в проме-
жуточном пространстве между рабочими.
3. И, наконец, третий вопрос, существуют ли функции
mpi, позволяющие «пинговать» (тестировать) неко-
торому рабочему состояние другого рабочего? Про-
верить выполняет ли он какие-либо вычисления или
простаивает и, следовательно, ему можно послать со-
общение с данными. Насколько трудоемок данный
процесс, насколько оправданы затраты времени на
такое тестирование занятости?
1.2.3. Объектный режим при создании парал-
лельных задач
Ниже будет описан ряд процедур, необходимых для
конфигурирования кластера, и затем будут продемонстри-
рованы процедуры создания параллельных задач посред-
ством объектного программирования. Методологически
раздел, посвященный запуску кластера и настройке соот-
ветствующих служб планировщиков, можно было выне-
сти перед разделами pmode и matlabpool, так как запуску
данных режимов предшествует запуск планировщика, ра-
бочих, объединенных в кластер в автоматическом режи-
ме (без непосредственного участия пользователя). Одна-
ко при такой последовательности представления инфор-
мации, как нам кажется, у пользователей может возник-
нуть ощущение, что параллельное программирование в
MATLAB сопряжено с большими трудностями по настрой-
ке и конфигурированию кластера, что на самом деле не
31
так. Именно поэтому материал, посвященный службам,
планировщикам, рабочим, объединен нами в разделе объ-
ектного программирования параллельных задач.
Настройка кластера
Ниже будет рассмотрен сквозной пример по настройке
клаcтера на четырехъядерном ноутбуке. С момента выхо-
да первого релиза пакетов для параллельных и распре-
деленных задач парадигма (концепция) функционирова-
ния кластера существенно не поменялась. С точки зрения
MathWorks кластер на основе MATLAB должен выглядеть
следующим образом (см. рис.1).
Локальный планировщик
Служба mdce необходима для запуска в ней (вообще го-
воря, для восприятия удобно понимать под службой mdce
некую среду) планировщиков и рабочих; если по какой-то
причине произошел сбой в работе планировщика, то служ-
ба восстановит его резервную копию с сохраненными на-
стройками (с ассоциированными с ним рабочими снова).
Именно так была реализована технология создания кла-
стера в первых релизах. Текущая версия 2014B позволя-
ет, используя Parallel Computing toolbox, создавать кла-
стер на локальной многоядерной станции без использова-
ния службы mdce.
Для запуска локального кластера достаточно вы-
брать в главном меню режим Parallel и в разделе
Select Configuration выбрать local. В разделе Manage
Configuration необходимо указать количество задействуе-
мых рабочих, ассоциированных с планировщиком (в на-
32
шем сквозном примере это 4). Ключевой и самой важной
особенностью планировщика local является то, что он су-
ществует “внутри” клиентской сессии MATLAB (см рис.3)
и не требует наличия запущенной службы mdce на локаль-
ной станции.
Рис. 3. Схема кластера реализованного на локальной ра-
бочей станции
При создании и отправке параллельной задачи на счет
планировщик local запускает то количество рабочих про-
цессов, которое пользователь определил для данной за-
33
дачи и в момент отправки активирует необходимое чис-
ло системных процессов MATLAB. В этом объектный ре-
жим работы с кластером несколько отличается от режима
matlabpool, где запускаемые командой matlabpool(n) n ра-
бочих существуют (отображаются в диспетчере задач) до
тех пор, пока не поступает команда прервать данный ре-
жим matlabpool close.
По сути, минимальная настройка кластера может быть
выполнена через меню Manage Configuration.
Будем считать, что минимальный кластер с четырьмя
рабочими процессами на нашем ноутбуке запущен. Воз-
можность работы кластера с указанным количеством уз-
лов проверяется кнопкой start validation, результаты про-
гонки показаны на рис.4.
Рис. 4. Результат прогонки локального кластера
34
Иерархия объектов и последовательность их создания
Первым в иерархии объектов пакета параллельных
вычислений стоит планировщик, именно через него
посредством его свойств и методов происходит обще-
ние с рабочими процессами. Универсальная команда
findResource возвращает ссылку на системный процесс
локального планировщика:
>> all_managers =
findResource(’scheduler’,’type’,’local’)
Local Scheduler Information
===========================
Type : local
ClusterOsType : pc
ClusterSize : 2
DataLocation : C:\Users\
\AppData\MathWorks
\MATLAB\local_scheduler_data\R2011b
HasSharedFilesystem : true
- Assigned Jobs
Number Pending : 0
Number Queued : 0
Number Running : 0
Number Finished : 1
- Local Specific Properties
ClusterMatlabRoot : Y:\R2011B
Планировщик целесообразно рассматривать как некий
инструмент (конструктор) для создания новых объектов -
задач (параллельных или распределенных).
35
Из-за трудностей перевода у русскоязычных читателей
может возникнуть ошибочное восприятие названий объ-
ектов, речь идет об объекте Task и дочернем ему объ-
екте Job. Дословный перевод обоих терминов подразуме-
вает некую вычислительную задачу. Однако в концепции
иерархии объектов MATLAB данным терминам приписы-
вается разная смысловая нагрузка.
Начиная с версии R2012a (см. [30]) произошло переиме-
нование привычных к тому времени названий.
Старое наименование Наименование с R2012a
MathWorks job manager MATLAB job scheduler (MJS)
Third-party or local scheduler Common job scheduler (CJS)
Configuration Profile
Scheduler Cluster
В основном перешли от отдельных функций к объектно-
ориентированному представлению, и все стало методами и
свойствами класса Parallel. Например, управление класте-
ром “переехало” в parallel.cluster.xxx, управление задания-
ми – в parallel.job, рабочие процессы – в Parallel.cluster.xxx.
36
II. Моделирование
экономических систем в среде
имитационного моделирования
Simulink
В предыдущей работе [1], посвященной параллельным
вычислениям в MATLAB и их приложениям, мы рассмот-
рели открытую модель российской экономики типа Рам-
сея, в которой производство единственного однородного
продукта описывается производственной функцией с по-
стоянной эластичностью замещения (CES-функцией). Ре-
ализация модели и ее идентификация были произведены в
среде MATLAB, в этой же среде были проведены сценар-
ные расчеты на основе идентифицированной системы.
В настоящей работе предлагается не просто сравнить
полученные результаты с фактическими результатами, до-
стигнутыми экономикой России за последние три года, а
реализовать задачу сценарных расчетов по уже иденти-
фицированной модели (разд. 3.3 [1]) на основе платфор-
мы имитационного моделирования Simulink. Это потребу-
ет реализации, создания модели на языке (посредством
37
блоков) Simulink.
Таким образом, мы, во-первых, заново представим опи-
сание модели в несколько иной форме, во-вторых, обсудим
базовые приемы моделирования в среде Simulink, что в
свою очередь понадобится нам в следующей главе, в кото-
рой приведена модифицированная модель с учетом дина-
мики износа основных фондов, задействованных в эконо-
мике (Vintage Capital Model). Идентификация модифици-
рованной модели, реализованной на платформе Simulink,
будет проведена уже с использованием параллельных вы-
числений соответствующего пакета.
2.1. Реализация модели экономики с производ-
ственной функцией CES в среде Simulink
В базовом варианте модели экономики из работы
[1] ВВП Y(t)определяется однородной производственной
функцией с постоянной эластичностью замещения (CES-
функцией) следующего вида (2.1)-(2.5).
Производственная функция (верхний уровень систе-
мы) задается следующим соотношением:
Y(t) = Y0"aL(t)
L0b
+ (1 a)K(t)
K0b#1
b
,(2.1)
где Y0, L0, K0– значения соответственно выпуска (ВВП),
труда и капитала в 2000 г., а 0< a < 1, b > 1– па-
раметры производственной функции CES для российской
экономики.
Динамика роста народонаселения определена по статисти-
38
ке эконометрической формулой
L(t) = 64.84e0.01124(t2000).(2.2)
Взаимосвязь эффективного капитала и инвестиций задана
обычным макроэкономическим уравнением
Kt+1 = (1 µ)Kt+Jt, K (0) = K0.(2.3)
Динамика импорта, экспорта, инвестиций и потребления
связаны с динамикой выпуска эконометрическими соотно-
шениями, полученными при анализе статистики 2000-2006
гг.: Et=δYt
πE
t,
It=ρ(1δ)Yt
πI
t,
Jt=σ(1+ρ(1δ))Yt
πJ
t,
Qt= ((1 σ)(1 + ρ(1 δ)) δ)Yt
(2.4)
при относительных индексах цен на экспорт, импорт и ин-
вестиции, заданных следующими ниже эконометрически-
ми соотношениями:
πE(t) = aE+ (1 aE)ebE(t2000),
πI(t) = 1 aI(t2000)2ebI(t2000),
πJ(t) = aJ+ (1 aJ)(1 + t2000)ebJ(t2000).
(2.5)
Данная система уравнений (2.1)-(2.5), описывающая
модель открытой экономики типа Рамсея, была идентифи-
цирована целиком (были определены ее параметры) на ос-
новании статистической информации с 2000 г. по 2006 г. на
основе сравнения близости макроэкономических показате-
лей, рассчитанных по модели с их статистическими анало-
гами. Для сравнения близости всех макропоказателей с их
39
статистическими аналогами использовалась свертка кри-
териев близости каждого из макропоказателей.
Реализация самой модели, ее идентификация произ-
водились с помощью средств MATLAB, глобальный по-
иск (перебор) был осуществлен с использованием техноло-
гии параллельного программирования (область значений,
идентифицируемых переменных, была разделена на рав-
ные части, после чего параллельные рабочие ветви вычис-
ляли значения функционала близости на выделенной ему
части области определения). В следующем разделе будет
показано, как эту же модель можно реализовать в среде
Simulink.
2.2. Базовые понятия и объекты Simulink
В литературе дано множество определений, что такое
Simulink, на наш взгляд верно следующее: Simulink – это
среда моделирования динамических систем – дифферен-
циальных уравнений посредством графических объектов.
Объекты в свою очередь можно объединять в подсистемы,
а подсистемы в систему.
При всех преимуществах работы с Simulink, пользова-
телю, не работавшему с данной средой, в первое время
может быть трудно в части понимания логики системы,
однако осознав принципы работы Simulink, он по достоин-
ству оценит все преимущества имитационного моделиро-
вания.
Ниже описаны типовые объекты, ситуации, которые
могут возникнуть при моделировании системы соответ-
ствующего уровня сложности. Приведем для начала реа-
лизацию верхнего вида системы уравнений (2.1)-(2.5) (см.
40
To Workspace5
J_simout
To Workspace4
Q_simout
To Workspace3
I_simout
To Workspace2
E_simout
To Workspace1
K_simout
To Workspace
Y_simout
K_t second term
L_t first term
Y_t
Q_t
uv
K_t
J_t
K_t
Y0
1/b
L_t
J_t
Y_t
J_t
Y_t
I_t
Y_t
E_t
Y_t
J_t
K_t K_t
E_t
I_t
Q_t
Рис. 5. Верхний уровень системы
риc.5). Под термином “реализация” подразумевается реа-
лизация, т.е. расположение и взаимосвязь блоков в среде
Simulink.
41
Время. Следует помнить, что внутримодельное время яв-
ляется основополагающей частью системы, поэтому объ-
ект Clock доступен в любой ее части. Говоря языком про-
граммистов – “вызвать переменную” можно в любой части
модели, переместив блок “время” из библиотеки блоков
Simulink Library Browser->Common->Sources->Clock.
Реализация описанной уравнением на L(t)подсистемы
“труд” изображена на рис.6. Подсистема реализована с
помощью блока Clock, двух усилителей Gain1, которые
имеют вид треугольников, блока Math Function, реа-
лизующего возведение в степень, и блока Out, который
ответственен за вывод сигнала из подсистемы на верхний
уровень. На диаграмме верхнего уровня системы рис.
5выход сигнала из блока L_t обусловлен наличием в
подсистеме блока Out.
L_t
1
eu
Clock
64.84
0.01124
L_t
Рис. 6. Подсистема L_t, реализующая уравнение L(t)
Построив систему, изображенную на рис. 6, необходимо
выделить все ее элементы и выбрать в меню команду
Edit->Create Subsystem, в результате чего будет создан
блок “подсистема”, изображенный на рис.5как L_t. Ана-
логичным образом созданы все подсистемы pi_i, являю-
щиеся подсистемами систем J,E,I,Qс одним небольшим
1По своей сути блок Gain не отличается от операции умножения
на константу, т.е. операции, которая реализуется двумя блоками –
блоком умножения и блоком константы.
42
отличием в том, что в них использован блок In – вход,
необходимый для того, чтобы ввести в подсистему внеш-
ний сигнал Y_t.
Алгебраическая петля (от англ.Algebraic loop). Си-
туация алгебраической петли возникает в случае, когда
необходимо реализовать в Simulink уравнение вида yt+1 =
yt+ft, где ft– некая функция. В случае модели с непре-
рывным временем Simulink, начиная моделирование, ком-
пилируя модель, не может определить для нее начальные
условия. Данная проблема разрешается использованием
вспомогательной, т.е. искусственной подсистемы Atomic
subsystem. Это стандартный прием, описанный в техни-
ческой помощи (Help ->Simulink -> How Simulink Works
-> Algebraic Loops).
В случае с моделированием системы уравнений (2.1)-
(2.5) нужно помнить, что создаваемая система – система с
дискретным временем и использование Atomic Subsystem
приведет к возникновению ошибки. В системах с дискрет-
ным временем проблема Algebraic Loops решается исполь-
зованием блока Memory из раздела Discrete библиотеки
блоков. На рис. 7показано использование данного блока.
Блок Switch необходим для того, чтобы на нулевом ша-
ге системы (в момент времени, равный нулю) подать на
выход K_t фиксированное значение капитала, как это обу-
словлено уравнением K(t). В настройках блока Switch
определены его свойства, гарантирующие прохождение
сигнала, идущего ко второму порту при t= 0, в осталь-
ных случаях (при t > 0) – прохождение сигнала, идущего
к первому порту. Блок Memory вызывает запоздание сиг-
нала на один шаг, т.е. на первом шаге (в момент времени,
43
K_t
1
Switch
Memory
K0
1−mu
J_t
1
Рис. 7. Подсистема K_t, реализующая уравнение (2.3)
равный единице) к блоку Gain идет значение K0, которое
затем умножается на константу (усиливается коэффици-
ентом 1µ), затем добавляется значение сигнала, идуще-
го от подсистемы J_t, после чего сигнал проходит через
Switch и подается на выход Memory.
44
Изменение значения константы в процессе модели-
рования. Довольно часто при работе с системой возника-
ет потребность динамического изменения значения некой
константы. Конечно, данную задачу можно решить с по-
мощью блока Switch, однако это приводит к загроможде-
нию модели, что может привести к снижению качества ее
восприятия. Поэтому в этом случае рекомендуется исполь-
зовать блок Matlab_fuction, т.е. блок, в котором на языке
mфайлов будут описаны условия, при которых происхо-
дит переопределение значений необходимых переменных.
При моделировании сценариев с использованием рис.
5для рассматриваемой нами системы уравнений (2.1)-
(2.5), необходимо в процессе имитации (работы системы)
переопределять значение константы µ, которая использу-
ется в блоке K_t (при моделировании “пессимистическо-
го” сценария после 2008 г. происходит изменение значения
константы µс -0.185 на 0.188). Для упрощения примера в
подсистеме на рис. 7заменен блок Gain со значением 1µ
на равносильные блоки с константами 1иµ, после че-
го параллельно с этой подсистемой на одном с ней уровне
размещен блок Matlab_function, на вход которому пода-
ется сигнал от блока Clock. Выходного сигнала (значения
функции) у блока Matlab_fuction нет, так как этот блок
выполняет сценарий, описанный в mфайле. Ниже показа-
но содержимое этого mфайла.
1function update_mu(Clock)
2if Clock==9
3block_mu = find_system(gcs, ’Name’, ’mu’);
4ModelName=block_mu{1};
5set_param(ModelName, ’Value’, ’mu2’)
6else;end
45
Структура файла update_mu.m очевидна, на шаге t= 9
происходит изменение значения блока константы mu. Сле-
дует отметить, что в качестве входных параметров в функ-
цию передается только сигнал от блока Clock, который
вообще говоря не несет в себе информации о системе. Од-
нако так как пространство имен, в котором исполняется
данная функция – это пространство самой модели, то с
помощью функции gcs (аналогичной функциям gcf иgca
в MATLAB) можно получить ссылку на объект работа-
ющей системы и на сам блок константы mu. Затем с по-
мощью метода set_param производится замена значения
этого блока.
Выше были описаны три технических момента (созда-
ние подсистемы, алгебраическая петля и изменение зна-
чения константы), реализация которых может вызвать
у начинающего пользователя небольшие затруднения, в
остальном модель системы (2.1) достаточна очевидна. В
следующем разделе будет показано, как управлять по-
строенной системой непосредственно из рабочей сессии
MATLAB с помощью mфайлов сценариев.
2.3. Управление моделью
Управление моделью Simulink из рабочей сессии
MATLAB выполняется непосредственно с помощью мето-
дов, которые доступны у объекта модели после ее загрузки
в рабочую область.
Ниже в листинге файла pessimistic_scenario.m по-
казана инициализация необходимых переменных (строки
2-6), затем – загрузка модели base_model в рабочую сес-
сию с помощью функции open_system (строка 8), после
46
чего – задание блоку mu значения µ1, которое по условиям
пессимистического сценария в 2009 г. изменит свое значе-
ние на µ2. Команда sim запускает имитацию модели.
1%------- pessimistic_scenario.m --------------
2%% Начальные значения и другие параметры-константы
3L0=64.8406; Y0=7305.6; gamma=0.01124; sigma=0.1346;
4delta=0.3511; rho=0.3532; beta=0.1569;
5a = 0.892; b= -0.81; mu1= -0.185; mu2=0.188;
6alpha=1.2; K0=Y0/alpha;
7%-------- Run Simulink model --------------------
8open_system(’base_model’);
9block_mu = find_system(gcs, ’Name’, ’mu’)
10 ModelName=block_mu{1};
11 set_param(ModelName, ’Value’, ’mu1’)
12 sim(’base_model’);
13 %------ Extract Simulation result ----------------
14 Ysim=Y_simout.signals.values;
15 Ksim=K_simout.signals.values;
16 Jsim=J_simout.signals.values;
17 Isim=I_simout.signals.values;
18 Esim=E_simout.signals.values;
19 Qsim=Q_simout.signals.values;
20 %---- End pessimistic_scenario.m ----------------
Следует отметить, что экспорт результатов имитации пе-
ременных в сессию MATLAB производится в формате
структуры, поэтому для удобства требуется переопреде-
ление переменных (строки 14-19).
Результаты имитации пессимистического сценария, ко-
нечно, совпадают с результатами, полученными исклю-
чительно средствами MATLAB в работе [1]. Однако, ис-
47
пользуя платформу Simulink, полученная модель выгля-
дит более компактно, отсутствуют многочисленные вспо-
могательные mфункции, наглядно представлена обратная
связь, присутствующая в модели, что, конечно, располага-
ет к более естественному восприятию ее физической сути.
Рассмотренный выше пример не претендует на широ-
кий охват всех возможностей Simulink, однако, по нашему
мнению, он достаточен для первого знакомства и работы
с моделями сопоставимой сложности. Для более глубокого
изучения приемов и методов работы с Simulink рекомен-
дуем ознакомиться с работой [31], в ней дано достаточ-
но подробное описание практически всех базовых блоков
Simulink, продемонстрированы основные приемы модели-
рования технических систем.
К работе с Simulink мы вернемся в разделе 3.2.1, где
с его помощью будет реализована модифицированная мо-
дель макроэкономической системы (3.1), для идентифика-
ции параметров которой мы воспользуемся средствами па-
раллельных и распределенных вычислений, а также будет
показано, как модель, созданная в Simulink, может выпол-
няться одновременно несколькими рабочими процессами.
2.4. Анализ сценарных и фактических данных
В целях сравнения результатов расчетов по модели со
статистикой результаты моделирования системы (см. рис.
5) были сопоставлены со статистическими данными за пе-
риод с 2000 г. по 2006 г., именно эти данные использовались
для идентификации модели в работе [1].
Напомним, что пессимистический сценарий развития с
2007 г. по 2020 г. в 2007 г. характеризовался нами в [1]
48
следующим образом:
1. Источник вовлечения производственных фондов из
наследства, доставшегося от советских времен, вот-
вот будет исчерпан.
2. Производственные фонды, используемые в производ-
стве, сильно изношены, доля производственных фон-
дов, которые скоро выйдут из строя и которые по-
этому надо срочно менять, в большинстве отраслей
народного хозяйства превысила 50%.
3. Прирост числа занятых, наблюдавшийся в период
оценки, в прогнозный период практически невозмо-
жен, начнет сказываться демографический кризис, в
который Россия попала в начале 90-х гг. XX в.
4. Считаем, что параметры a, b, α, δ, σ, ρ остаются по-
стоянными, принимающими определенные ранее зна-
чения для 2000-2006 гг.: a= 0.892, b =0.81, α =
1.2, δ = 0.3511, σ = 0.1346, ρ = 0.3532, так что β=
0.1569.
5. Параметр µрезко меняет свое значение и экономи-
ческий смысл с 2009 г.: µ=0.175 <0до 2008 г.,
а начиная с 2009 г. он становится положительным
µ=αβ =J0/K0= 0.188 >0и означает темп вы-
бытия мощностей вследствие износа. Предполагаем,
что источник, из которого в производство вовлека-
лись бесплатные производственные фонды, к началу
2009 г. иссякнет.
49
0 5 10 15 20
×104
0.7
0.8
0.9
1
1.1
1.2
1.3 Y stat and sim
0 5 10 15 20
×104
0
1
2
3
4
5K sim
0 5 10 15 20
1000
1500
2000
2500 J stat and sim
0 5 10 15 20
1000
2000
3000
4000
5000
6000
7000 I stat and sim
0 5 10 15 20
2000
3000
4000
5000
6000
7000 E stat and sim
0 5 10 15 20
4000
5000
6000
7000
8000
9000 Q stat and sim
Рис. 8. Результаты имитационного моделирования системы
уравнений (2.1)-(2.5) по пессимистическому сценарию
Графики на рис. 8демонстрируют сценарный расчет
по пессимистическому сценарию.
В заключение раздела считаем целесообразным срав-
нить прогноз развития экономики, полученный нами в ре-
зультате моделирования в предыдущей работе [1], с фак-
тически реализованной траекторией экономики России за
период 2007-2014 гг. На рис.9показано сравнение нашего
прогноза и фактической траектории ВВП, сложившейся
в период кризиса 2008-2009 гг. и в посткризисный период
2009-2014 гг.
Основной вывод, который можно сделать на основе
имитационных запусков системы, как нам кажется, заклю-
50
2000 2002 2004 2006 2008 2010 2012 2014 2016 2018 2020
4000
5000
6000
7000
8000
9000
10000
11000
12000
13000 Y stat and Y sim
Рис. 9. Сравнение траектории, полученной при моделировании
пессимистического сценария с фактической траекторий ВВП
Росиии за период 2000 – 2014 гг.
чается в следующем: несмотря на разразившиийся в 2008
г. международный финансовый кризис экономика России
системно была готова погрузиться в рецессию и без внеш-
него воздействия. Напомним, что работа была написана в
2006 г., а издана в 2007 г., т.е. прогноз был сделан на осно-
ве предкризисных данных. Основной причиной при этом
является моральное устаревание, износ производственных
фондов. Политика, проводимая руководством страны в
предкризисные и кризисный период – федеральные це-
левые программы модернизации жилищно комунального
хозяйства, здравоохранения – были направлены, как нам
кажется, на то, чтобы погасить те проблемные участки,
на которых износ основных фондов наиболее заметен для
населения. Ни в коей мере не умаляя значения этих целе-
вых программ, мы все же относим их к категории перво-
очередных, направленных на быстрые дивиденды в виде
благодарности избирателей.
К сожалению, выделить из экономических данных кри-
51
зисного и посткризисного периодов влияние международ-
ного финансового кризиса пока никому не удалось. Нам
представляется, что влияние международного финансово-
го кризиса на российскую экономику преувеличено. Ос-
новную роль играют внутренние причины. Простаивавшие
в 90-е гг. производственные мощности в настоящее время
загружены до экономически обоснованного уровня, поэто-
му дальнейший экономический рост невозможен за счет
дозагрузки имеющихся производственных мощностей при
снижении курса рубля, он требует увеличения объема са-
мих мощностей за счет нового строительства и закупок
фондообразующих продуктов.
В следующей главе рассмотрена модель производства,
которая явно учитывает распределение призводственных
мощностей по технологиям, а полученная производствен-
ная функция эндогенна.
52
III. Идентификация
эндогенной производственной
функции
Напомним, что в третьей главе работы [1] была предло-
жена и идентифицирована открытая динамическая модель
типа Рамсея для экономики России по статистическим
данным 2000-2006 гг. В модели производственный про-
цесс представлен производственной функцией, описываю-
щей зависимость выпуска валового внутреннего продук-
та (ВВП) от производственных факторов. Для описания
использовалась экзогенная производственная функция с
постоянной эластичностью замещения (CES-функция) с
двумя производственными факторами – трудом, измеряю-
щимся числом занятых в экономике, и эффективным капи-
талом, измеряющимся объемом задействованных в эконо-
мике производственных фондов в постоянных ценах 2000
г. Идентификация этой динамической модели экономики
позволила предсказать кризис в реальном секторе рос-
сийской экономики 2008 г. Идентифицированная модель
использовалась для сценарных прогнозных расчетов. Од-
нако эта модель в чистом виде не годится для детально-
53
го прогнозирования посткризисного развития, так как не
учитывает структурные изменения [2].
К счатью, модель экономики, позволяющая описать
структурные изменения в нашем распоряжении имеется
[21]. В этой модели производство описывается эндогенной
производственной функцией, представимой распределени-
ем производственных мощностей по технологиям. В дан-
ной модели производственная мощность у каждой произ-
водственной единицы задается максимально возможным
выпуском в текущий период времени, а технология – тру-
доемкостью, то есть нормой затрат живого труда на вы-
пуск единицы продукции. В качестве периода времени
здесь будем рассматривать календарный год, а продукцию
будем считать однородной. Суммарный объем выпущен-
ной продукции дает ВВП страны. Итак, в качестве базо-
вой модели экономики можно взять ту же самую модифи-
кацию модели Рамсея для открытой экономики, которая
была представлена в работе [1], но заменить экзогенную
производственную функцию CES на экзогенную производ-
ственную функцию, численно рассчитываемую на основе
динамики производственных мощностей. При этом вместо
рассмотрения динамики эффективных производственных
фондов будет рассмотрена динамика суммарной производ-
ственной мощности.
В соответствии с [21] считаем, что начальная производ-
ственная мощность и начальная трудоемкость у каждой
производственной единицы определяются в момент созда-
ния. В этот же момент определяется число рабочих мест
на производственной единице, которое в соответствии с ос-
новным предположением [21] не меняется с течением вре-
мени, то есть с момента создания до ликвидации произ-
54
водственной единицы это постоянное число рабочих мест
равно произведению начальной мощности на начальную
трудоемкость.
С возрастом производственная мощность падает с по-
стоянным темпом – темпом деградации, тогда трудоем-
кость должна с тем же темпом расти, чтобы сохранилось
число рабочих мест. Отсюда следует [21], что производ-
ственные мощности дифференцированы по моментам со-
здания (или возрасту), можно найти закон изменения про-
изводственных мощностей по времени и трудоемкости, ди-
намику суммарной мощности, динамику загрузки мощно-
стей трудовыми ресурсами, а значит, и динамику ВВП,
т.е. численно рассчитать производственную функцию, за-
дающую зависимость выпуска (ВВП) от производствен-
ных факторов – суммарной производственной мощности
и суммарного объема использованных трудовых ресур-
сов (труда). В [21] получено и аналитическое выражение
для данной эндогенной производственной функции, прав-
да, только для частного случая с постоянной долей вновь
созданных мощностей, характерного для режима сбалан-
сированного роста экономики. В общем случае производ-
ственную функцию можно рассчитать численно. Проце-
дура численного рассчета производственной функции и
процедура идентификации параметров производственно-
го блока экономической системы в системе MATLAB и
в пакете Simulink описана ниже по статистическим дан-
ным современной российской экономики. Выводы, пред-
ставленные в заключении разд. 2.4, привели нас к вопросу:
“А какие именно качественные характеристики производ-
ственных мощностей наиболее значимым образом влияют
на динамику роста нашей экономики?”
55
Основная задача, которую мы постарались решить –
это ответить на вопрос: “На сколько сильно мешает (или
помогает) нашей экономике “тяжелый хвост” в распределе-
нии производственных мощностей по технологиям, унасле-
дованный от CCCР и ранних 90–х 1, каким путем, по какой
траектории провести модернизацию, ускоренным (посред-
ством различных программ утилизации) или эволюцион-
ным (посредством естественного выбытия морально уста-
ревших мощностей и методов их управления)”.
Переводя качественные вопросы в количественные и
динамические характеристики, мы сформулировали сле-
дующие вопросы, на которые должна отвечать модель:
Какими производственными мощностями обладала
экономика в 1990 г., 2000 г., 2012 г.?
Какие значения параметров, характеризующие дина-
мику системы, имеют место в нашей экономике:
какова скорость выбытия производственных
мощностей (темп деградации)?
1Несомненно, что наша промышленность, например ВПК, обла-
дает разработками, начало которых положено в CCCР и которые на
сегодняшний день являются перспективными и новаторскими, одна-
ко, к сожалению не эти разработки определяют сегодня динамику
производства в развитых и развивающихся странах, а относительно
новые технологии 90-х и 2000-х гг. Как показывает история развер-
тывания системы ГЛОНАС, например, наша проблема даже не в
том, чтобы вывести спутник на орбиту (хотя и в этом тоже наблю-
даются определенные трудности), а в том, какая компонентная база
используется в этом проекте (база, разработанная в иностранных
государствах в 90-х гг. и практически отсутствующая в России как
технология).
56
каково значение коэффициента фондоемкости
нашей экономики?
каков уровень наименьшей трудоемкости в на-
шей экономике?
Идентифицировав систему по перечисленным выше па-
раметрам, мы сможем ответить на следующие вопросы:
1. Достигли ли вновь создаваемые каждый год про-
изводственные мощности России уровня производ-
ственных мощностей, созданных в РСФСР?
2. Каким должен быть ежегодный объем инвестиций
для удвоения ВВП России за двадцать пять лет?
3. Каким будет профиль распределения производствен-
ных мощностей через двадцать пять лет в случае ин-
вестирования в производственные фонды объема, до-
статочного для удвоения ВВП?
4. Какой должен быть объем инвестиций для роста
ВВП в 6% годовых2?
5. Какими управляющими воздействиями на управля-
ющие переменные достичь перечисленных выше за-
дач? Что лежит за этими воздействиями?
За базовую модель для ответов на поставленные во-
просы мы выбрали модель процесса изменения производ-
2По мнению Джима О’Нила [25], Россия в блоке БРИКС отно-
сится к тому типу стран, для которых не нужен двузначный рост
ВВП
57
ственной мощности, изложенную в работе [21]. В формаль-
ном изложении формулировка модификации данной моде-
ли приведена в разд. 3.4, в разд. 3.1-3.3 приведены описа-
ния объектов, без которых понимание модели невозможно.
3.1. Распределение производственных мощностей
Основные производственные фонды дифференцирова-
ны по возрасту, их значения в постоянных ценах непо-
средственно определяются вектором прошлых инвестиций
в производственные фонды и темпами амортизации.
Производственные мощности также дифференцирова-
ны по возрасту и также определяются вектором инвести-
ций, но их значения не совпадают, поскольку производ-
ственные мощности измеряются в других единицах (они
показывают максимально возможный выпуск в год, в то
время как производственные фонды показывают объем
неамортизированных инвестиций).
Для пересчета стоимости капиталоемких продуктов
в инвестициях (новых основных производственных фон-
дах) в стоимость производимой продукции новыми про-
изводственными мощностями используется коэффициент
приростной фондоемкости. Кроме того, производственные
мощности и основные производственные фонды выбывают
с разными темпами: с темпом деградации для мощностей
и с темпом амортизации для фондов.
Амортизация производственных фондов зависит от
бухгалтерских коэффициентов амортизации, принятых
законодательными органами в данной стране, а деграда-
ция мощностей (максимальных выпусков) зависит от есте-
ственных процессов старения. По мере старения мощность
58
все чаще ломается, а рабочая сила простаивает в ожида-
нии окончания ремонта. При рассмотрении современной
российской экономики в данной работе мы абстрагируем-
ся от процессов возрастания мощностей по мере обучения
рабочих и менеджмента, которые имеют место в услових
бурного роста за счет инноваций (см., например, [32]).
Итак, обсуждение вопроса, связанного с динамикой
возрастного распределения производственных мощностей,
следует начать с рассмотрения вектора прошлых инвести-
ций.
1970 1975 1980 1985 1990 1995 2000 2005 2010
1
2
3
4
5
6
7
Billions of ROUBLES
RSFSR and Russian Federation investments, 2005 constant price
Рис. 10. Динамика инвестиции РСФСР и Российской Федера-
ции с 1970 г. по 2012 г., в постоянных ценах 2005 г. Данные
ООН и оценка авторов (в части доли инвестиций РСФСР в
объеме инвестиций СССР)
В целях сопоставимости данных вектор инвестиций до
1991 г. был очищен экспертным путем от объема инвести-
ций в союзные республики во времена СССР; таким об-
разом, представленный график на рис.10 отражает про-
шлые инвестиции именно РСФСР и Российской Федера-
59
ции. Несмотря на качественную информацию3, которую
несет в себе данный график инвестиций, для ответа на во-
просы, поставленные в начале главы, его не достаточно.
Для ответа на эти вопросы здесь представлена модель, в
которой используется не только динамика объема инве-
стиций, т.е. фондообразующего продукта, но и ее преоб-
разование в динамику производственных мощностей, т.е.
максимально возможных выпусков.
Структурой распределения производственных
мощностей будем называть функционал над областью
производственных мощностей в область положительно
определенной функции ϕ(t), заданной на промежутке
[0, T ], где T– максимальный возраст используемой в
производстве производственной мощности, при этом
RT
0ϕ(dt) = 1. (т.е. в экономике в момент времени tне
может быть задействовано больше производственных
мощностей, чем есть в наличии на данный момент. При
этом, ϕ(∆t)есть доля производственных мощностей в
экономике с возрастом из интервала [t, t + ∆t].
По сути, для дискретного случая величина загрузки
суммарной мощности PT
0ϕ(t)будет определять выпуск
системы (иными словами, ВВП системы есть совокупность
всех использующихся в данный момент времени производ-
ственных мощностей). Несмотря на кажущуюся очевид-
ность и важность такого показателя, официальной стати-
стики данного измерения, достоверных и, что самое глав-
ное, агрегированных данных по экономике России нет. По-
этому динамику распределения производственных мощно-
3В том плане, что провал графика в 90-е годы ярко иллюстрирует
ту геополитическую катастрофу, которая имела место с развалом
СССР.
60
стей по возрасту пришлось смоделировать, а параметры
этого распределения идентифицировать косвенным путем.
3.2. Моделирование износа производственных
мощностей в среде Simulink
Информация, содержащаяся в векторе инвестиций на
рис.10, не отвечает на следующие вопросы:
1. Как выглядит распределение производственных
мощностей, задействованных в экономике в конкрет-
ном году? Так как статистика ОЕСD ведется с 1970
г., то мы не видим на графике даже объем инвести-
ций в основные фонды в более ранние годы (а эти
средства тем не менее и в 2012 г. были задействова-
ны в производстве и давали в ВВП свою долю).
2. График динамики инвестиций не дает представления
о динамике профиля производственных мощностей.
Он не дает ответы на вопрос: “Какова, например, до-
ля производственных мощностей (и даже основных
фондов) возрастом 0-10 лет сейчас и пять лет на-
зад?”. А ведь для устойчивого экономического роста
именно самое современное оборудование должно да-
вать наибольший вклад в ВВП страны.
Для ответа на эти вопросы, рассмотрим сначала про-
цесс износа (устаревания) производственных мощностей
на простом примере. Предположим, что в момент времени
t=t0в экономике были задействованы производственные
мощности распределенные по возрасту, так как это показа-
но на левой части рис.11, где ось x– возраст, ось y– объем
61
мощностей, выраженный в денежном эквиваленте. Пред-
положим также, что те мощности, возраст которых более
пяти лет, не задействованы в экономике и утилизируются.
1 2 3 4
0
100
200
300
400
500
600
700
800
900 t=t0
1 2 3 4
0
100
200
300
400
500
600
700
800
900 t=t0+1
Рис. 11. Пример устаревания, изменения объема производ-
ственных мощностей, µ= 0.1. Ось x- возраст производствен-
ных мощностей, ось y- объем производственных мощностей
(выраженый в денежном эквиваленте)
Пусть процесс устаревания задан формулой
m(a+ 1) = m(a)·eµ,(3.1)
где m(a+ 1) - объем производственных мощностей в сле-
дующем временном интервале, µ- некая константа (0,1),
процесс износа может быть задан и линейной функцией,
однако более распространенным является использование
экспоненциальной функции.
Очевидно, что с течением времени производственные
мощности устаревают, теряя свою стоимость и степень
влияния на ВВП.
62
По прошествии одного года модельного времени, те
мощности, которые были расположены в диапазоне 0-1 го-
да и так далее, переместились по оси возраста вправо, по-
теряв при этом объем согласно уравнению (3.1). При этом,
очевидно, что выражение (3.1) не позволяет оценить объем
мощностей с возрастом 0-1 года (так как это формула опи-
сывает износ, а не ввод новых мощностей). Очевидно, что
объем мощностей в диапазоне 0-1 на второй части рисунка
есть не что иное, как инвестиции производимые в эконо-
мике в течение года, деленные на коэффициент фондоем-
кости (коэффициент пересчета вновь созданных основных
производственных фондов во вновь созданные производ-
ственные мощности).
Так, например, если инвестиции не осуществляются в
течение пяти лет, то в рассматриваемой на рис.11 экономи-
ке не окажется основных средств для производства возрас-
том младше (менее) пяти лет, произойдет процесс полного
выбытия мощностей.
Как мы уже упомянули, статистическая информация
по распределению производственных мощностей и даже
основных фондов в российской экономике крайне скуд-
на. Поэтому для оценки профиля мощностей возрастом не
старше тридцати лет4, задействованных в экономике на
начало 2000 г., был использован следующий алгоритм:
1. Для начальной оценки профиля на 1970 г., может
быть положена некая константа, равная, например,
4В рассматриваемой нами модели было использовано допущение,
что мощности, возраст которых более 30 лет, не принимают участия
в создании добавленной стоимости. Как следствие, инвестиции в ос-
новные фонды, произведенные до 1970 г., на начало 2000 г.а не будут
задействованы в модели
63
объему инвестиций 1970 г., однако в целях нагляд-
ности был использован равномерно убывающий про-
филь (вектор) размерностью 30 (лет), значения ко-
торого убывают от объема инвестиций 1970 г. до 05.
2. Подставив начальное приближение, полученное на
первом шаге, последовательно была применена фор-
мула (3.1), при этом на каждом новом шаге в каче-
стве инвестиций i–го года использовалось i–е значе-
ние вектора инвестиций рис.10.
Результат работы данного алгоритма представлен на
рис.12, для сравнения приведены профили трех лет, эти
годы важны, с нашей точки зрения, для понимания глу-
бинных трансформаций, произошедших и происходящих в
экономике России:
1991 г. Окончание эры Советского Союза – трагическое
геополитическое событие на евразийском континенте
и в мире. По сути, профиль 1991 г. на рис.12 есть
то промышленное наследие, которое Советский Союз
оставил новой России.
2000 г. Начало второй декады России – наследство, ко-
торое Б.Н. Ельцин оставил новому президенту В.В.
Путину.
5В неявном виде данное допущение по профилю 1970 г. предпола-
гает, что после окончаний Второй мировой войны экономика Совет-
ского Союза была полностью разрушена, поэтому профиль основных
фондов на начало 1970 г. есть отражение тех инвестиций, которые
были произведены в период 1945-1970 гг. Советским Союзом (в част-
ности, РСФСР) в экономику.
64
2012 г. Наши дни – производственные мощности, пред-
ставляющие собой частично наследие СССР, России
при Б.Н. Ельцине и России при В.В. Путине.
0 5 10 15 20 25 30
0
2
4
6
8Capacity power. Legacy RSFSR to Russian Federation
M1991
M2000
0 5 10 15 20 25 30
0
2
4
6
8Capacity comparison. Legacy B.N. Eltsin left to V.V. Putin
M2000
M2012
0 5 10 15 20 25 30
0
2
4
6
8
Capital formation age in years.
Capacity comparison. RSFSR and Russia today.
M1991
M2012
Рис. 12. Сравнительные профили производственных мощно-
стей, задействованных в экономике России на 1991 г., 2000 г. и
2012 г.
Даже на основании представленных данных на рис. 12
без учета влияния параметров – при темпе износа µ= 0
и при коэффициенте фондоемкости b= 1 (речь о факти-
65
ческих значениях этих параметров пойдет в следующих
разделах) можно сделать следующие очевидные выводы:
Провал производственных мощностей возраста 10-20
лет в профиле 2012 г. связан с кризисом 90-х гг.,
когда практически прекратилось инвестирование не
только в основные фонды, но и в социальные проек-
ты, человеческий капитал.
В 2012 г. объем производственных мощностей воз-
растом 20-30 лет, оказывается большим не только по
сравнению с 2000 г., но и – с 1991 г.
В 2012 г. объем производственных мощностей с воз-
растом 0-5 лет превышает аналогичный бакет (воз-
растной отрезок) 2000 г., и в целом сопоставим с соот-
ветсвующим объемом производственных мощностей
1991 г. с возрастом 0-5 лет.
Рост доходов от высоких мировых цен на нефть 2000-
2008 гг. сказался серьезным образом не только на ро-
сте социальных расходов, повышении реального бла-
госостояния, но и на росте инвестиций в основные
фонды.
Кризис 2008 г. привел не только к снижению ВВП, но
и падению объема инвестиций. Это видно из профи-
ля 2012 г. на участке производственных мощностей с
возрастом 2-3 года.
Реализация (построение) модели была проведена как
средствами MATLAB, так и средствами Simulink (как
именно, шаг за шагом описано ниже), и если вопросов о
66
том, как реализовать на языке m-файла MATLAB уравне-
ния (3.1), у начинающего пользователя MATLAB возник-
нуть не должно, то вопросы о том, как реализовать тоже
самое уравнение в среде Simulink, вполне могут возник-
нуть.
Техническое описание реализации процесса износа
средствами Simulink логично совместить одновременно с
описанием реализации процесса ввода новых мощностей,
и именно об этом пойдет речь в следующем разд. 3.2.1.
3.2.1. Реализация блоков износа и фондоемкости
в Simulink
Реализация модели износа производственных мощно-
стей с учетом их выбытия (вследствие достижения пре-
дельного возраста), формализующая уравнение (3.1), а
также процедура создания новых производственных мощ-
ностей, осуществлены средствами Simulink. В целях сбли-
жения модели с реальной экономической системой введем
дополнительно параметр фондоемкости.
Функция фондоемкости – функция, описывающая
зависимость между величиной инвестиций в экономику
(стоимости созданного инвестиционного продукта) и вели-
чиной новых производственных мощностей (потенциаль-
ного выпуска). Эта величина зависит от технологическо-
го уровня развития экономики, а также от величины кор-
рупции, эффективности системы распределения государ-
67
ственного и корпоративного капитала6:
I(t, b) = b·I(t)(3.2)
где I(t, b)– объем вновь созданных мощностей (добавка к
потенциальному выпуску), I(t)- объем произведенных ин-
вестиций в момент времени t(объем финансовых средств,
идущих на закупку инвестиционных продуктов), а b > 0
– параметр модели, обратный к коэффициенту прирост-
ной фондоемкости (в модели этот параметр предполагает-
ся постоянным на протяжении долгого периода времени),
а в нашей модели – подлежащий идентификации7.
В разд. 2.1 уже были описаны основные блоки и
приемы работы, используемые в Simulink, поэтому для
подсистемы износа, выраженной формулой (3.1), ограни-
чимся лишь иллюстрацией подсистемы с использованием
Simulink рис.13.
Назначение основных блоков следующее:
Asset_profile_0 – вектор начального распределе-
ния мощностей, константа.
6Инвестиции частного бизнеса также зависят от уровня корруп-
ции, так как расширение бизнеса, подключение к сетям сопряжено
в нашей экономике с потерей части инвестируемых средств.
7Как это ни печально, но первый синоним который может воз-
никнуть в ассоциативном ряду с термином “фондоемкость” у рос-
сиянина средних лет это скорее всего термин “откат”. В целом, это,
конечно, не безосновательно, но в контексте данной модели термин
“фондоемкость” все же используется в более широком контексте, и
при идентификации модели область определения параметра b(об-
ратной величины к коэффициенту фондоемкости) была положена
на интервале (0.3,1).
68
investment
1−D T[k]
To Workspace
simout
> 0
Memory
1
eu
asset_profil_0
−mu
1/b
Floating Bar Plot
Crop last
element
Interpreted
MATLAB Fcn
Clock
Рис. 13. Подсистема, реализующая процесс износа и выбытия
(производственные мощности старше 30 лет не используются)
Блок switch – переключатель вводит начальное
распределение в систему, после чего использует в
контуре только текущее значение распределения
мощностей, т.е. то, которое имеется в экономике на
i-м шаге моделирования.
Блок memory предназначен для решения проблемы
algebraic loop.
Блок interepted matlab function – блок, в кото-
ром можно напрямую обращаться к простым функ-
циям MATLAB . В данном случае в блоке записано
выражение u(1:end-1), т.е входящий сигнал лиша-
ется своего последнего элемента (имитация процесса
выбытия основных фондов).
На следующем участке подставляется значение, рав-
ное инвестициям i–го года. Для этого используется
69
блок look-up table, заполненый значениями векто-
ра инвестиций, на вход которому подается значение
модельного времени из блока clock, таким образом
выходной сигнал из блока это i–е значение вектора
инвестиций (совпадающее с модельным временем).
Учет влияния функции фондоемкости реализован в
виде блока gain, с определенным постоянным значе-
нием, по сути, представляющий умножение на кон-
станту b.
Размерности
В заключение вводной части следует сделать следующие
замечания, необходимые для дальнейшего построения мо-
дели:
ВВП и производственная мощность имеют одинако-
вую размерность [рубли], поскольку мощность опре-
деляется как потенциальный выпуск;
ВВП представляет собой некую часть суммарной
мощности, загруженную живой силой (далее будет
описан процесс загрузки фондов производственным
фактором – трудовыми ресурсами);
Ii, инвестиции i-го года, есть не что иное, как про-
изводная фондов по времени M/t, размерность
данной величины равна [рубли/год];
Фондоемкость имеет размерность времени [год].
Произведение инвестиций i-го года на фондоемкость есть
величина размерности [рубли], т.е. фондообразующийся
продукт, использованный на инвестиции в i-м году.
70
3.3. Производительность
Сам по себе профиль производственных мощностей не
может быть использован для расчета выпуска системы.
Для того чтобы определить выпуск (ВВП) с использовани-
ем производственных мощностей, введем еще один показа-
тель, а именно функцию трудоемкости8.Функция тру-
доемкости представляет собой показатель эффективно-
сти, зависящий от возраста производственных мощностей,
задаваемый выражением
λ(a) = νeµa ,(3.3)
где λ– трудоемкость, µ– темп износа9онстанта), ν
– наименьшая трудоемкость (константа). Экономический
смысл показателя трудоемкости очевиден: со старением
производственной мощности ее трудоемкость растет.
Иными словами, трудоемкость – функция, обратная
производительности мощностей, которая, в свою очередь,
характеризует объем произведенной продукции на мощно-
стях определенного возраста за определенный промежу-
ток вре-мени.
Формулой (3.3) введена функция трудоемкости, с дру-
гой стороны, трудоемкость есть отношение затрат труда (в
виде числа занятых) к мощности (т.е. норма затрат труда
на единицу мощности):
λ(a) = L(a)
m(a),(3.4)
8Только после определения функции трудоемкости, используя те-
кущее значение трудовых ресурсов, можно будет определить выпуск
системы.
9В некоторых источниках используется также термин – темп де-
градации (синоним).
71
где L(a)– предложение труда на мощности с возрастом a,
т.е. m(a), следовательно, размерность трудоемкости равна
[число занятых рабочих /рубли].
Задав в формуле (3.3) числовые значения νиµ, по-
лучим функцию трудоемкости. В рассматриваемой нами
модели, будем полагать коэффициенты ν,µиbстатиче-
скими, неизменными по времени10. Возрастающий харак-
тер функции трудоемкости имеет определенный экономи-
ческий смысл, а именно отражает тот факт, что относи-
тельно молодые мощности по сравнению с более старыми
для производства одного и того же объема продукции тре-
буют меньше трудовых ресурсов.
3.3.1. Загрузка производственных мощностей
трудом
Предложение труда в модели будем определять не как
прежде экспоненциальной функцией, а фактическими ста-
тистическими данными (использование эконенциальной
подгонки не позволяет учесть факт роста безработицы в
период кризиса 2008 г. (и, как следствие, высвобождение
производственных фондов)).
На этапе идентификации системы допущений о вли-
янии нелегальных миграционных потоков не использова-
лось (в виду отсутствия достоверной статистики), тем не
менее, на этапе сценарных расчетов в заключительном
разделе, некоторые предположения в миграционных по-
токах потребуются.
10Задача идентификации динамики коэффициентов ν,µиbявля-
ется темой отдельного исследования, но, имея ограниченный набор
статистики, данная задача будет плохо обусловленной.
72
Оценка возраста фондов, на котором достигается пол-
ная загрузка фондов (на основе труда)
Приравняв правые части выражений (3.3) и (3.4), име-
ем
L(a) = m(a)·ν·exp(µ·a).(3.5)
Уравнение (3.5) справедливо для некоторой производ-
ственной мощности возраста a, полностью используемой в
выпуске продукции. Рассмотрев данное выражение в дина-
мике, можно утверждать, что в момент времени tвозраст
amax, на котором достигается полная утилизация трудовых
ресурсов L(t)на векторе (3.6):
M(t, a)·ν·exp(µ·a),(3.6)
где a= 1 : 30 и есть возраст наиболее старой производ-
ственной мощности, используемой в выпуске (очевидно,
что трудоемкость данной мощности будет максимальной).
Значение величины amax вычисляют следующим обра-
зом:
1. В момент времени tизвестно значение вектора мощ-
ностей M(a), значение L, константы νиµопределе-
ны.
2. Программа вычисляет индекс вектора (3.6), на кото-
ром полностью расходуются ресурсы L.
Используя значение вектора amax, вычисляется выпуск
Y(t) =
amax
X
1
M(t, a).(3.7)
73
Реализация поиска amax средствами
Simulink была решена с использованием блока
interepted matlab function, на вход которому по-
давались значения блоков констант ν,µи значение
вектора look-up table, содержащего статистические
данные по числу занятых в экономике L(t).
Оценка возраста производственных мощностей, на ко-
тором достигается их полная загрузка (на основе цен
производителей и заработной платы)
Поиск наибольшего загруженного возраста производ-
ственных мощностей, изложенный выше, не единственный
способ определения amax. Ниже рассмотрим еще один спо-
соб, основанный на других предположениях.
Выпуск системы зависит не только от наличия произ-
водственных мощностей и трудовых ресурсов, но и от при-
были, имеющейся в наличии у “производителей” (необхо-
димой для перемещения трудовых ресурсов на более про-
изводительные ресурсы с повышением заработной платы).
Очевидно, что система при таком перемещении ресур-
сов не может работать себе в убыток, т.е. выплачивать
зарплату больше, чем получать выручки. И, наоборот, в
периоды спада спроса на производимую продукцию про-
изводители могут увольнять сотрудников с целью мини-
мизации убытков.
Условие безубыточности функционирования системы
можно записать в следующем виде:
P(t)
S(t)1,(3.8)
74
где P(t)– индекс цен потребителей, S(t)– индекс цен про-
изводителей, обе переменные являются интенсивными.
3.4. Формализация модели и ее идентификация
После того как шаг за шагом показаны подсисте-
мы, определены основные функции и ограничения, можно
строго сформулировать задачу идентификации и ввести
статистические данные, на основе которых определяют па-
раметры.
Постановка задачи идентификации
Идентифицировать параметры µ,b,νфункции выпус-
ка
Y(t) =
a(t)
X
i=1
mi(t, a),(3.9)
где a(t) = min{a1(t), a2(t)}есть наибольший возраст про-
изводственных мощностей, занятых в производстве выпус-
ка (может быть дробным, так как объем продукции изме-
ряется в постоянных ценах), a[0,30] лет.
Возраст a1(t)зависит от предложения труда L(t)и опре-
деляется алгоритмически – путем отыскания a(t)такого,
что труд L(t)расходуется на векторе M(t, a)·λ(t, a).
Возраст a2(t)определяется аналитически и равен выра-
жению 1
µln P
S·ν.(3.10)
Динамика производственной мощности. Совокуп-
ность mi(t, a)есть M(t, a)– суммарная производственная
75
мощность экономики в момент времени t, при этом
M(t, a) = Ψ (M(0, a), I(t), µ, b),
где I(t)– инвестиции, b·I(t) = dM (t)
dt .
Вспомогательный вопрос, связанный с фактором
укрепления/ослабления национальной валюты не рас-
сматривается, однако очевидно, что при росте экспорта,
при крепкой валюте, модернизацию проводить легче (за-
купая готовое оборудование, импортируя технологии из
развитых стран). В модели, рассматриваемой в данной
главе, будет предполагаться, что внешние факторы, т.е.
цены на производимую экономикой России продукцию,
остаются неизменными.
Статистические данные для идентификации
Идентификация функции выпуска (3.9) проводится на
временном периоде t= [2000 ...2012], на векторе Ystat(t)
(вектор ВВП в ценах 2005 г., источник – база данных
ООН11 [33]).
В силу того, что идентификация с использованием дан-
ных Ystat является плохо обусловленной, целесообразно
“улучшить ее” дополнительными статистическими данны-
ми. Для этих целей введем в рассмотрение новую стати-
стику – вектор CU (Capacity utilization), представляющий
собой отношение загруженных живым трудом производ-
ственных мощностей к общему объему [34, c.7]12 .
11Учет данных по основным макроэкономическим агрегатам ве-
дется с 1970 г. и приведен в постоянных цена 2005 г. на сайте
http://unstats.un.org/unsd/snaama/selbasicFast.asp.
12Указанные данные, по мнению самих сотрудников Всемирно-
76
Критерий качества идентификации
Как и ранее в работе [1], нами предлагается использо-
вать критерий максимума целевой функции F, являющей-
ся комбинацией коэффициента Пирсона и коэффициента
Тейла:
F(Model(µ, b, ν ), Statistic)max
µ,b,ν ,(3.11)
где Model – вектор [Y model, C Umodel], полученный в
процессе моделирования, а Statistic – вектор статистики
[Y statistic, C Ustatistic].
3.4.1. Идентификация системы
Задача идентификации была независимо решена с ис-
пользованием двух платформ MATLAB и Simulink (на ос-
нове одних и тех же статистических данных). Ввиду ре-
сурсоемкости задачи в обоих случаях был использован
подход, основанный на распределенных вычислениях (был
использован Parallel Computing Toolbox), технические осо-
бенности реализации распределенных вычислений приве-
дены в конце настоящего раздела 3.4.4. В разделе 3.4.2
приведены результаты полученной идентификации и ана-
лиз полученных результатов.
го банка, являются оценочными и не являются предметом офи-
циальной статистики. Также следует помнить, что сами объек-
ты основных фондов могут различаться (в процитированном от-
чете это, скорее всего, исключительно загрузка промышленно-
го производства, в рамках настоящей работы производственные
мощности – результат инвестиций не только в основные фонды
промышленности). Версия на русском языке доступна по ссылке
http://hdl.handle.net/10986/16691.
77
3.4.2. Результаты идентификации
По причине нелинейности задачи идентификация си-
стемы была произведена прямым поиском (перебором)
по следущей сетке: µ= [0 ...5%], b = [0.2...0.8], ν =
[0.1...max(P/S)]. Результаты идентификации на разных
сетках (n)при использовании различных платформ пред-
ставлены ниже. Вычисления проведены в параллельном
режиме на двухядерном процессоре.
n µ b ν F Matlab
10 3.22% 0.41 2.14 1.8388
50 3.69% 0.45 1.96 1.8357 2 min
100 4.76% 0.49 1.94 1.9419 19 min
200 5.00% 0.52 1.84 1.9430 2 h 43 min
300 9.07% 0.80 1.61 1.9562 8 h 20 min
Траектории ВВП (Y(t)) и загрузки мощностей (CU) на
основе идентифицированных параметров (на сетке n=100)
представлены на рис.14.
Обсуждение результатов идентификации
Результат идентификации нельзя назвать впечатляю-
щим (по критерию близости графиков на рис.14), в то же
время эти графики построены на основании максимума
критерия близости.
Причин, по которым графики не могут на 100% сов-
падать со статистическими значениями, можно выделить
как минимум две. Во-первых, построенная эндогенная мо-
дель роста в принципе не может описать особенности ди-
78
2000 2005 2010
15
20
25
30 GDP(t) identified and statistic
Y optimal
Y stat
2000 2005 2010
0.65
0.70
0.75
0.80
0.85 CU(t) identified and statistic
CU optimal
CU stat
Рис. 14. Графики Y(t)иCU (t), построенные на основе иден-
тифицированных параметров, и графики статистических дан-
ных, используемых при идентификации
намики ВВП (вследствие того, что спад 2008 г. обуслов-
лен не только внутренними факторами, но и внешними).
Во-вторых, качество статистических данных не достаточ-
но точное:
вектор статистических данных по ВВП не учитывает
объем теневой экономики13;
вектор статистики по CU формально отражает ин-
декс загрузки промышленного производства.
В целом, однако считаем, что модель “схватывает” ос-
новные особенности роста ВВП и загрузки мощностей:
рост ВВП вплоть до 2008 г., затем торможение и сно-
ва рост;
рост индекса загрузки мощностей, спад и снова рост.
13К влиянию данного фактора на модель вернемся в следующем
разделе.
79
2000 2002 2004 2006 2008 2010 2012
20
30
40
50
60
70
a1
a2
Рис. 15. Графики возраста последней производственной мощ-
ности из загруженных (a1– слева, a2– справа)
Отдельно стоит прокомментировать поведение графи-
ков, отражающих максимальный возраст задействованной
в ВВП мощности рис. 15, рассчитанных на основании двух
различных гипотез.
Поведение графика a1, очевидно, отражает тот факт,
что на протяжении 2000-2007 гг. происходило постоян-
ное увеличение максимального возраста производствен-
ных мощностей, задействованных в производстве (в вы-
пуске), в 2008-2009 гг. снижение возраста, что связано с
недогрузкой, вызванной увеличением безработицы. Рост
максимального возраста в 2009-2012 гг. связан с выходом
загрузки мощностей на предкризисный уровень.
Поведение графика a2не столь очевидно. Во-первых,
стоит отметить, что график a2не пересек график a1(мак-
симальный возраст производственной мощности, рассчи-
танный на основании формулы (3.10), находится выше гра-
фика a1, следовательно, влияние факторов, лежащих в
основе падения a2, не сказывается на выпуске достаточ-
но сильно). Во-вторых, устойчивый нисходящий характер
графика говорит о том, что в течение декады наблюдал-
ся устойчивый рост уровня зарплат, иными словами, рост
80
ВВП в этом же периоде приводил не только к увеличению
роста прибыли работодателей, но и к реальному росту бла-
госостояния рабочих14.
В то же время рост заработной платы в модели пред-
полагает увеличение отдачи; рост зарплаты определен-
но должен сопровождаться переводом рабочего с более
старых производственных фондов (с большей трудоемко-
стью) на менее старые фонды (с наименьшей трудоемко-
стью), т.е. перевод рабочего с увеличением зарплаты дол-
жен сопровождаться увеличением производительности15.
Оптимальные параметры – начальное приближение
для сценарных расчетов
Найденные и указанные выше оптимальные значения
параметров модели могут быть использованы не только
для анализа самой системы, но и для целей моделирования
сценариев развития. Для этого необходимо, используя эти
параметры, восстановить значение мощности Mпо состоя-
нию на 2012 г. Ниже на рис. 16 представлены два профиля
мощностей – 1991 г. и 2012 г. с учетом коэффициентов b
иµ.е. с учетом идентифицированной фондоемкости и
коэффициента деградации (реальная, а не номинальная,
как на рис. 12, оценка мощностей)).
14Данное утверждение может быть проверено историческим отно-
шением реального ВВП к реальной средней зарплате на число заня-
тых (политика дестимулирования зарплат в конвертах).