Министерство образования и науки РФ ФГБОУ ВПО «Иркутский государственный технический университет» На правах рукописи Ипполитов Александр Александрович Динамические стохастические модели в системах оценивания вектора состояния групповых эталонов Специальность 05.13.18 – «Математическое моделирование, численные методы и комплексы программ» Диссертация на соискание учёной степени кандидата технических наук Научный руководитель, кандидат технических наук, доцент Ю.П. Хрусталёв Иркутск - 2014 2 Содержание Введение....................................................................................................................... 4 Глава 1. Групповые эталоны времени и частоты как недоопределённые системы ..................................................................................................................................... 12 1.1. Структура, принцип действия и основные задачи группового эталона времени и частоты. Вторичный эталон ВЭТ 1-5 ................................................ 12 1.2. Измерения, выполняемые в эталоне времени и частоты............................ 21 1.3. Эталоны времени и частоты как недоопределённые системы................... 26 1.4. Выводы............................................................................................................. 34 Глава 2. Использование динамических стохастических моделей и численных методов в задачах оценивания вектора состояния групповых эталонов ............ 35 2.1. Модели динамических систем. Задача оценивание состояния.................. 35 2.2. Использование прогнозирующих моделей при оценивании вектора состояния динамических объектов ...................................................................... 43 2.3. Модели авторегрессии – скользящего среднего (АРСС). Построение моделей АРСС по результатам косвенных измерений ...................................... 48 2.4. Оценивание вектора состояния группового эталона с использованием моделей АРСС как процедура субоптимальной фильтрации ........................... 62 2.5. Оценивание вектора состояния группового эталона с учётом детерминированных трендов................................................................................ 74 2.6. Выводы............................................................................................................. 80 Глава 3. Программный комплекс оценивания вектора состояния групповых эталонов по результатам взаимных измерений...................................................... 81 3.1. Архитектура приложения и применяемые технологии .............................. 81 3.2. Структура специализированной системы моделирования......................... 85 3.3. Алгоритм и особенности его программной реализации............................. 89 3.4. Результаты разработки программного комплекса ...................................... 98 3.5. Выводы........................................................................................................... 103 3 Глава 4. Экспериментальная проверка алгоритма в режиме моделирования и при работе с реальными данными эталона ВЭТ 1-5............................................ 104 4.1. Моделирование процесса оценивания линейных трендов....................... 104 4.2. Моделирование процесса структурной идентификации моделей АРСС в системах с неполной матрицей наблюдений .................................................... 111 4.3. Моделирование процесса параметрической идентификации моделей и оценивания вектора состояния эталона............................................................. 121 4.4. Удаление трендов из реальных рядов наблюдений .................................. 130 4.5. Структурная идентификация моделей водородных генераторов частоты по реальным данным ........................................................................................... 139 4.6. Оценивание вектора состояния эталона времени и частоты.................... 143 4.7. Выводы........................................................................................................... 149 Заключение .............................................................................................................. 152 Список литературы ................................................................................................. 154 Приложения ............................................................................................................. 166 4 Введение Актуальность темы. Эффективное функционирование и дальнейшее развитие важнейших отраслей экономики государства, а также его оборонной сферы невозможно без обеспечения единства измерений различных физических величин. Одними из наиболее значимых физических единиц являются единицы времени и частоты. Потребность в повышении стабильности их хранения связана с техническими объектами, нуждающимися в точных измерениях интервалов времени, либо в точной синхронизации процессов. К их числу относится, например, глобальная навигационная система ГЛОНАСС, системы связи, средства радиоастрономии, распределённые вычислительные системы и измерительные комплексы [38, 52, 42, 68]. В целях обеспечения единства время-частотных измерений на территории РФ действует Государственная служба времени, частоты и определения параметров вращения Земли (ГСВЧ РФ). Деятельность Службы опирается на её эталонную базу, включающую в себя Государственный эталон времени и частоты (ГЭВЧ), а также сеть вторичных эталонов. Эталоны времени относятся к классу групповых эталонов. Достигнутая при сложившемся уровне развития науки и техники точность воспроизведения единиц времени и частоты является наивысшей по сравнению с прочими физическими величинами. Государственный первичный эталон ГЭТ 1-2012 в настоящее время обеспечивает воспроизведение указанных величин с относительной неисключённой систематической погрешностью, не превышающей 5 1016 . Несмотря на это, сохраняется обусловленная техническим прогрессом необходимость дальнейшего повышения точности хранения и воспроизведения единиц времени и частоты, доведения их до конечного потребителя. Решение актуальной научно-технической задачи повышения точности эталонов времени может быть достигнуто как созданием новых аппаратных средств, так и совершенствованием математического обеспечения 5 существующих эталонов, развитием алгоритмов обработки измерительной информации. Наибольшее влияние на точность эталона оказывает его подсистема воспроизведения и хранения единиц физических величин. Основой данной подсистемы является группа высокостабильных водородных генераторов периодических сигналов (хранителей частоты), объединённых измерительной системой по схеме “каждый с опорным”. Первоначальные значения частоты генераторов вторичных эталонов определяются при их сличении с ГЭВЧ. В дальнейшем на основе результатов измерений разностей частоты входящих в эталон генераторов (взаимных измерений) определяются значения частоты каждого из генераторов и формируется автономная шкала времени. На практике для удобства применяют безразмерную величину относительное отклонение частоты от номинального значения. Число измерений в каждый период времени на единицу меньше числа неизвестных. Таким образом, речь идёт о недоопределённой линейной системе с неполной матрицей наблюдений. Под вектором состояния эталона понимается совокупность относительных отклонений частоты каждого из генераторов, включенных в эталон, от приписанных им номинальных значений. Задача обработки результатов взаимных измерений заключается в нахождении несмещённых оценок вектора состояния, имеющих минимальную сумму квадратов отклонений от их истинных значений. На основе этих данных формируются поправки к показаниям часов эталона. Уменьшение погрешности оценивания, таким образом, эквивалентно повышению точности эталона. Исследования по тематикам, связанным с построением шкал времени на основании измерений, выполняемых над группой высокостабильных генераторов, входящих в эталон, имели место и ранее [5, 71, 73-75, 79-82, 89, 98-100, 104 и мн. др.], однако они не привели к разрешению всех проблем, возникающих в связи с указанной задачей. Результаты проводимых по данной тематике работ за рубежом, в частности, в США и Великобритании (David W. Allan, Donald B. Percival, J.A. Barnes, Lee A. Breakiron и мн. др.) не могут быть 6 непосредственно применены к ГСВЧ РФ, поскольку отечественные эталоны строятся на хранителях частоты иных типов и имеют иную структуру. В известных отечественных работах проблема построения оценок относительных отклонений частоты водородных стандартов, решалась преимущественно методом усреднения результатов измерений, также имели место исследования, основанные на использовании прогнозирующих моделей, в частности, моделей авторегрессии – проинтегрированного скользящего среднего (АРПСС). В таких работах не рассматривались многие возникающие проблемы, в том числе задачи идентификации временных рядов и построения прогнозирующих моделей по результатам косвенных измерений (при отсутствии в распоряжении исследователя исходных временных рядов). Актуальность данной работы, таким образом, обусловлена наличием реальной возможности улучшения точностных характеристик групповых эталонов времени путём разработки новых алгоритмов обработки измерительной информации, основанных на использовании прогнозирующих моделей. Достижение цели исследования ведёт к улучшению характеристик эталона и повышению эффективности использования его аппаратных средств. Настоящая работа посвящена актуальной научно-технической задаче повышения алгоритмическими средствами точности (стабильности) хранения и воспроизведения единиц времени и частоты в групповых эталонах. Работа направлена на исследование вопросов обработки измерительной информации, поступающей от эталонов времени частоты; повышение точности оценивания относительных отклонений частоты генераторов; выработку методики структурной идентификации и вычислительного алгоритма определения параметров авторегрессионных прогнозирующих моделей водородных стандартов частоты по результатам выполняемых в эталоне взаимных измерений без привлечения дополнительной информации; создание вычислительного алгоритма получения оценок относительных отклонений 7 частоты группового эталона; разработку программного обеспечения, реализующего созданные алгоритмы. Целью работы является снижение погрешности оценивания относительных отклонений частоты групповых эталонов путём разработки алгоритма оценивания, основанного на применении динамических стохастических моделей. Достижение указанной цели предполагает решение следующих задач: разработать математическую модель подсистемы хранения и воспроизведения физических единиц группового эталона, позволяющую вычислять прогнозы относительных отклонений частоты; разработать методику и основанный на применении численных методов алгоритм, позволяющий проводить структурную и параметрическую идентификацию прогнозирующих моделей при отсутствии исходных временных рядов (на основе измерительной информации, представленной рядами разностей относительных отклонений частоты генераторов); разработать вычислительный алгоритм для получения оценок относительных отклонений частоты в групповых эталонах, основанный на применении прогнозирующих моделей; создать программный комплекс, реализующий предложенные алгоритмы; оценить погрешность предлагаемых методов с помощью имитационного моделирования и апробировать созданный программный комплекс на реальных данных, полученных в процессе функционирования вторичного эталона времени и частоты ВЭТ 1-5. Предметом исследования являются методики и алгоритмы оценивания относительных отклонений частоты групповых эталонов времени. Объектом исследования является подсистема хранения и воспроизведения физических единиц группового эталона времени и частоты. 8 Теоретические и методические основы исследования. Теоретической основной исследования являлись труды по обработке измерительной информации, анализу и моделированию временных рядов, методам построения математических моделей таких отечественных и зарубежных авторов, как Гамм А.З., Эльясберг П.Е., Бокс Д., Дженкинс Г., Крамер Г., Острем К. и др. Исследования базировались на использовании методов математической статистики, теории вероятностей, методов оценивания состояния объектов по результатам измерений, математики, численных анализа методов временных поиска рядов, экстремума вычислительной функции многих переменных. Теоретической основой работы в специальной предметной области служили работы специалистов в области метрологии времени и навигационных систем (Толстиков А.С., Percival D., Rutman J., Breakiron L.A.). Диссертационное исследование опирается на нормативные акты и государственные стандарты РФ, регламентирующие деятельность в сфере обеспечения единства измерений. Научную новизну работы составляют следующие результаты, выносимые на защиту: методика идентификации структуры математических моделей авторегрессии – скользящего среднего (АРСС) в линейных недоопределённых системах при отсутствии исходных временных рядов; способ применения численных методов оптимизации для нахождения оценок вектора состояния в линейных недоопределённых системах (групповых эталонах); алгоритм параметрической идентификации моделей АРСС в недоопределённых системах, основанный на использовании численных методов минимизации целевой функции и позволяющий находить оценки коэффициентов авторегрессии и скользящего среднего для каждого из элементов эталона; 9 программный комплекс, реализующий разработанные методики и алгоритмы. Практическая ценность. 1. Разработанный в диссертации программный комплекс позволяет получать оценки относительных отклонений частоты водородных генераторов, входящих в групповой эталон времени и частоты, в режиме накопления данных, а также в режиме динамической обработки результатов измерений, получаемых на суточных интервалах. На основе полученных рядов оценок относительных отклонений частоты возможно построить автономную шкалу времени вторичного эталона. 2. Предложенная методика структурной идентификации моделей авторегрессии – скользящего среднего в системах с неполной матрицей наблюдений позволяет строить математические модели эталона времени и частоты (подсистемы хранения и воспроизведения единиц) без привлечения информации, получаемой по каналу внешних сличений эталона. 3. Результаты диссертационной работы позволяют уменьшить погрешность получаемых оценок относительных отклонений частоты водородных стандартов на 8-10%, повысив тем самым точность воспроизведения единиц времени и частоты. Практическая реализация работы. Созданный программный комплекс используется при формировании шкалы времени вторичного эталона времени и частоты ВЭТ1-5, действующего на базе Восточно-Сибирского филиала ВНИИФТРИ, что подтверждается Актом о внедрении (см. Приложение 3). 10 Апробация работы. Результаты диссертационной работы докладывались и обсуждались на: XV Байкальской математические Всероссийской технологии “Субоптимальная фильтрация в в конференции науке и системах “Информационные управлении” с неполной и (доклад матрицей наблюдений”) – Иркутск, 2010; IV Всероссийской конференции “Винеровские чтения” (доклад “Построение стохастических моделей динамических систем при неизвестной их структуре”) – Иркутск, 2011; Конкурсе научно-инновационных проектов Всероссийского Фестиваля Науки – Иркутск, 2011 г. Публикации. По результатам настоящей диссертации опубликовано 6 научных работ, получено 1 свидетельство о государственной регистрации программы для ЭВМ: 1. Ипполитов А.А., Хрусталёв Ю.П. Субоптимальная фильтрация в системах с неполной матрицей наблюдений. // Труды XV Байкальской Всероссийской конференции “Информационные и математические технологии в науке и управлении”. Часть I. – Иркутск : ИСЭМ СО РАН, 2010. – С. 174-182. 2. Ипполитов А.А. Построение стохастических моделей динамических систем при неизвестной их структуре. // Винеровские чтения / Труды IV Всероссийской конференции. Часть 1. – Иркутск : ИрГТУ, 2011. – С. 136141. 3. Ипполитов А.А., Хрусталёв Ю.П., Акулов В.М., Курышева Л.Н. Обработка данных, полученных по результатам взаимных измерений вторичного эталона времени и частоты. // Вестник ИрГТУ – 2012. – № 7. – Иркутск: ИрГТУ, 2012. – С. 22-28. 4. Ипполитов А.А., Хрусталёв Ю.П., Акулов В.М., Курышева Л.Н.. Повышение точности оценивания относительных отклонений частоты группового 11 эталона // Современные технологии. Системный анализ. Моделирование. – 2013. – №1 (37). – С. 148-153. 5. Ипполитов А.А., Хрусталёв Ю.П.. Построение динамических стохастических моделей, используемых при решении задач оценивания состояния групповых эталонов // Современные технологии. Системный анализ. Моделирование. – 2013. – №1 (37). – С. 48-54. 6. Ипполитов А.А. Программный комплекс для оценивания состояния эталонов времени и частоты по результатам взаимных измерений // Вестник ИрГТУ. – 2013. – № 3. – Иркутск : ИрГТУ, 2013. – С. 24-31. 7. Ипполитов А.А., Хрусталёв Ю.П. Программный комплекс для оценивания состояния эталонов времени и частоты по результатам взаимных измерений эталона (версия 1.0). Свидетельство о государственной регистрации программы для ЭВМ № 2012617062 от 7 августа 2012 года. Объём и структура диссертации. Диссертационная работа содержит 165 страниц текста, 49 рисунков, 13 таблиц и состоит из введения, четырёх глав, заключения и списка цитированной литературы из 104 названий. 12 Глава 1. Групповые эталоны времени и частоты как недоопределённые системы 1.1. Структура, принцип действия и основные задачи группового эталона времени и частоты. Вторичный эталон ВЭТ 1-5 Метрология - наука об измерениях, методах и средствах обеспечения их единства и способах достижения требуемой точности [11, 12, 17]. Одной из задач метрологии является удовлетворение потребностей различных отраслей экономики в эталонах физических величин. Метрология строится на распознавании и использовании таких физических явлений, которые обладают высокой степенью постоянства и мало зависят от плохо контролируемых возмущающих воздействий. Для измерений времени и частоты в настоящий момент в качестве такого явления применяются атомные переходы. За единство время-частотных измерений на территории РФ отвечает Государственная служба времени, частоты и определения параметров вращения Земли (ГСВЧ РФ) [40], объединяющая ведомственной в себе принадлежности, целый ряд ведущих организаций работы по различной хранению, воспроизведению и распространению единиц времени и частоты. Деятельность ГСВЧ опирается на использование эталонной базы [12], включающей в себя Государственный эталон времени и частоты и вторичные эталоны [39], размещённые на базе ряда научных учреждений в различных регионах страны. Эталоном называется средство измерения, обеспечивающее воспроизведение и (или) хранение единицы физической величины с целью передачи ее размера нижестоящим по поверочной схеме средствам измерений [44]. Для повышения точности и надежности хранения единиц создаются групповые эталоны, объединяющие в себя несколько стандартов [18, 20]. Эталоны времени и частоты являются характерными представителями групповых эталонов физических единиц. Они включают в себя группу (в иностранной литературе широко распространён термин “ансамбль”) 13 хранителей - стандартов частоты. Непосредственные измерения хранимой величины в силу технических причин не осуществимы, возможны только “сличения” частот стандартов, входящих в состав эталона, называемые взаимными измерениями. В качестве стандартов частоты используются высокостабильные квантовые генераторы, основанные на явлениях атомного уровня, обладающих высокой степенью постоянства. Первый цезиевый стандарт частоты начал действовать на регулярной основе в Великобритании в 1955 году. К этому моменту работы над атомными стандартами впервые позволили превзойти точность воспроизведения единиц, достигнутую при использования измерений, основанных на движении небесных тел. К 1967 году стало возможным принятие определения атомной секунды для замены ранее использовавшегося астрономического определения [31]. Существование адекватной атомной шкалы времени для применения в мировом масштабе было признано на 14 Генеральной конференции по мерам и весам в 1971 году [41]. С тех пор происходило активно развитие атомных стандартов частоты различных типов, сопровождавшееся улучшением их метрологических и эксплуатационных характеристик (подробнее см. [88]). Явление, принятое за эталон частоты, должно быть определено так, чтобы его длительность могла рассматриваться как идеальная константа. Чем меньший период имеет периодическое явление, на основе которого воспроизводится единица времени, тем на большем числе периодов возможно усреднение, и тем выше обеспечиваемая им точность. С другой стороны, точность тем выше, чем стабильнее сам период (меньше его подверженность случайным возмущениям). Ранее использовались механические маятники, затем – астрономические наблюдения. В настоящее время секунда определена как длительность 9192631770 периодов излучения атома цезия-133 при переходе между двумя сверхтонкими уровнями основного состояния атома в покое. Тесно связанной с единицей времени на сегодня является также единица длины – метр, определённый как длина пути, проходимого в вакууме светом за 14 1/299792458 доли секунды. Развитие хранителей единиц времени и частоты схематично представлено на рис. 1.1 [41]. Как можно увидеть из рисунка, значительный прогресс в этой области был достигнут в последнее столетие, с момента широкого развития электронных хранителей (кварцевых и атомных), тогда как совершенствование механических часов по понятным причинам долгое время не позволяло достигнуть сопоставимых результатов. В отечественной практике в качестве хранителей применяются водородные стандарты частоты, тогда как за рубежом более распространены цезиевые хранители. Это связано с исторически сложившимися большими успехами в развитии водородных стандартов в РФ (в сравнении с цезиевыми хранителями), а также с особенностями структуры самих эталонов и ГСВЧ в целом. Краткий обзор принципа работы водородных стандартов дан в [94], обзор современного состояния и тенденций приведён в [13]. Для начальной привязки водородных стандартов используются цезиевые реперы частоты (в том числе, фонтанного типа [24, 25]). Расхождение в секундах за одни сутки Время в годах, необходимое для получения расхождения в 1 секунду 10-12 109 10-9 106 Атомные часы 103 10-6 Кварцевые часы 10 -3 1 Неравномерность вращения Земли 10-3 1 Механические часы 1000 1400 1600 1800 10-6 2000 (годы) Рис. 1.1 – Сопоставление нестабильности различных хранителей времени 15 Государственный эталон единицы времени - секунды, единицы частоты − Герца и национальной шкалы времени (ГЭВЧ) был создан во ВНИИФТРИ (Всесоюзный, ныне – Всероссийский научно-исследовательский институт физико-технических и радиотехнических измерений) в 1967 г. Позднее были введены в эксплуатацию вторичные эталоны в ряде регионов страны. Рост требований к точности передачи единиц времени и частоты со стороны потребителей в производственном секторе, науке и обороне страны делает необходимой разработку новой, более точной аппаратуры как для ГЭВЧ, так и для вторичных эталонов [101, 103]. Совершенствование эталонной базы ГСВЧ выполняется постоянно, без прекращения функционирования эталонов. Предпосылкой к активизации данных работ в последние годы стало принятое решение об ускоренном развитии системы ГЛОНАСС [22, 46]. Обобщённая структурная схема эталона времени приведена на рис. 1.2 [33]. Вторичные эталоны в сравнении с Государственным обладают сокращённым набором технических средств (не имеют цезиевых реперов, некоторых средств сличения, содержат меньшее число генераторов и др.). В отличие от западных стран, в эталонах ГСВЧ РФ не применяются цезиевые хранители частоты. В USNO (США) ранее использовался ансамбль из 44 коммерческих цезиевых стандартов [76], позднее их количество довели до 50 и дополнили 12 водородными стандартами [102], в настоящее время количество цезиевых хранителей достигло 82, водородных – 31 [52]. Большое количество хранителей позволяет получать несмещённую оценку вектора состояния в таком эталоне простым усреднением. Эталоны других национальных лабораторий содержат значительно меньшее количество хранителей. ГЭВЧ РФ включает в себя 8 водородных водородных стандартов частоты [52] и цезиевые реперы разных типов, вторичные эталоны содержат по 4-6 водородных стандартов. Кроме аппаратуры, входящей в подсистему воспроизведения и хранения единиц, эталоны времени и частоты включают подсистему внешних сличений. 16 Подсистемы внешних сличений обеспечивает доведение точностных характеристик Государственного эталона до потребителей. Для решения этой задачи действует сеть вторичных эталонов [41] и система передачи размеров единиц времени и частоты и шкалы времени первичного (государственного) эталона UTC(SU) рабочим эталонам и рабочим средствам измерений. Передача осуществляется по цепочке: ГЭВЧ – эталон-копия – вторичные эталоны – рабочие эталоны на объектах [19]. Ранее для распространения время-частотной информации применялись мощные наземные радиопередатчики [8, 42], а также возимые стандарты частоты, кабельные линии и т.п. [83, 85, 87]. В настоящее время всё большее значение приобретают глобальные навигационные системы (ГНСС) – GPS/Navstar и ГЛОНАСС [86, 103]. Спутники орбитальной группировки ГНСС оснащены малогабаритными бортовыми хранителями частоты, одной из функций системы является передача размера единиц времени и частоты потребителям. В настоящее время для ГСВЧ РФ весьма актуальна проблема объединения локальных групповых эталонов, расположенных в различных регионах страны, в территориально-распределённый групповой эталон. Решение данной проблемы может быть достигнуто путём использования в качестве каналов сличения ГНСС, однако при этом возникает целый ряд проблем, связанных, прежде всего, с относительно высокой погрешностью данного канала. Одним из вторичных эталонов времени и частоты является эталон ВЭТ 15, действующий на базе ВСФ ВНИИФТРИ в г. Иркутске. История развития Иркутской службы времени берет свое начало с 1948 года, когда при астрономической лаборатории была создана служба атомного времени и организована передача эталонных сигналов. 17 1 3 1 2 2 2 2 3 3 3 3 5 6 7 10 4 8 11 12 9 13 14 15 Рис. 1.2 − Обобщённая структурная схема эталона времени и частоты 1 - цезиевые реперы частоты; 2 - водородные реперы частоты; 3 - водородные хранители частоты и шкал времени; 4 - цезиевый хранитель шкал времени; 5 система формирования рабочей шкалы времени; 6 - радиооптический частотный мост; 7 - аппаратура измерения интервалов времени; 8 аппаратура измерения частот; 9 - управляющая ЭВМ; 10 - приёмнорегистрирующий комплекс системы внешних сличений; 11 - аппаратура сличения шкал времени через метеорные следы; 12 - аппаратура сличения шкал времени через навигационные станции; 13 - перевозимые квантовые часы; 14 перевозимый лазер; 15 - системы обеспечения эталона. 18 Вторичный эталон ВЭТ 1-5 является средством высокоточного хранения размеров единиц времени и частоты, а также шкалы времени UTC(SU) и обладает суммарной погрешностью, не превышающей 2 10 14 по частоте и ±80 нс по шкале времени. Эталон применяется для передачи размеров единиц времени и частоты рабочим эталонам и рабочим средствам измерений, прежде всего, восточных регионов России. ВЭТ 1-5 входит в состав группового эталона ГСВЧ и участвует Функционирование в формировании вторичного эталона групповой шкалы осуществляется на времени. базе ряда взаимосвязанных сложных аппаратно-программных комплексов. Основной составляющей частью вторичного эталона ВЭТ 1-5 является аппаратура хранения размеров единиц частоты и времени, на момент выполнения настоящей работы включавшая шесть водородных стандартов: Ч175А (четыре прибора) [49], Ч1-70М (один прибор), Ч1-70 (один прибор) с системами автоматической настройки резонаторов. Лучшие приборы комплекса обладают суточной нестабильностью, не превышающей 1 10 15 . Кроме того, в состав ВЭТ 1-5 входят: система внутренних сличений эталона; система внешних сличений эталона; программные средства систем внутренних и внешних сличений; система формирования сигналов физических шкал времени; алгоритмы и программные средства, используемые для формирования аналитических и физических шкал времени эталона; система буферизации и размножения сигналов времени и частоты; аппаратура и программные средства системы информационного обмена в рамках локальной вычислительной сети, а также внешний FTP-сервер; комплекс системы жизнеобеспечения эталона. При выполнении работ по ведению службы времени и частоты вторичного эталона обеспечивается: 19 Хранение размеров единиц времени и частоты и шкалы координированного времени UTC(Im) вторичного эталона ВЭТ 1-5, согласованных с размерами единиц времени и частоты и со шкалой времени UTC(SU) первичного эталона с суммарной погрешность не более 1 10 14 . Среднесуточная разность шкал времени [UTC(SU) - UTC(Im)] не превышает 20 нс. Формирование автономной (атомной) системы TA(Im) с нестабильностью хранения размеров единиц частоты и времени не более 1 1014 . Формирование и хранение рабочей шкалы времени Т(Im.РЧ) со среднесуточной разностью шкал времени [UTC(Im) – Т(Im.РЧ)], не превышающей 20 нс. Проведение регулярных сравнений размеров единиц времени и частоты, хранимых вторичным эталоном с размерами единиц, воспроизводимых ГЭВЧ, а также сравнений шкалы времени UTC(Im) со шкалой времени UTC(SU). Определение относительно шкалы UTC(Im) временного положения шкал времени, передаваемых навигационными системами GPS/ГЛОНАСС, со случайной погрешностью менее 5 нс. Оперативная передача в Главный метрологический центр (ГМЦ) ГСВЧ и потребителям метрологической информации об эталоне и результатах контроля передач эталонных сигналов частоты и времени. Основные сведения о назначении различных шкал времени приведены в [35]. Метрологические характеристики эталона контролируются по результатам регулярных сличений шкал времени UTC(SU) и UTC(Im) по каналам, основанным на приемах сигналов ГНСС GPS/ГЛОНАСС. Одним из направлений развития ГСВЧ является развёртывание на базе пунктов ГСВЧ системы мониторинга координатно-временных полей ГНСС [22, 27, 45, 50, 86], включающей создание системы сбора и передачи данных в центр обработки и управления ГЛОНАСС. При вторичном эталоне ВЭТ 1-5 независимая служба мониторинга частотно-временных полей ГНСС существует 20 с 1980 года. Решение этой задачи тесно связано с выполнением работ по повышению точности согласования размера единиц времени и частоты и шкалы времени системы UTC(Im) с размерами единиц и шкалой времени системы UTC(SU) первичного эталона. Таким образом, задачи воспроизведения, хранения и передачи единиц времени и частоты являются весьма нетривиальными. Эталоны времени и частоты представляют собой сложнейшие высокоточные технические объекты и являются в настоящее время одними из наиболее сложных эталонов физических величин. Несмотря на достигнутый в последнее столетие существенный прогресс в решении данных проблем, перед ГСВЧ РФ на сегодняшний день стоит целый ряд новых задач, связанных, прежде всего, с развитием отечественной ГНСС ГЛОНАСС. Следствием этого является высокая актуальность исследований в областях, прямо или косвенно связанных с повышением точности и оперативности воспроизведения, хранения и передачи единиц времени и частоты. 21 1.2. Измерения, выполняемые в эталоне времени и частоты Эталон времени и частоты представляет собой сложный комплекс технических средств, включающий в себя измерительную систему и объединённые ею хранители частоты – высокостабильные водородные генераторы гармонических колебаний. Под стабильностью генератора понимается степень постоянства его частоты при непрерывной работе в течение определённого отрезка времени. Нестабильность частоты связана со случайными флуктуациями частоты и фазы [34,63]. Если пренебречь амплитудным шумом, то для описания выходного сигнала генератора можно использовать упрощённую модель вида [21, 65] U t U 0 sin 2f 0 t t , (1.1) где U 0 - амплитуда сигнала, f 0 - номинальная частота, t - погрешность (сдвиг фазы сигнала) на момент времени t. Мгновенное значение частоты равно при этом f t 1 d 1 d t 2f 0 t t f 0 . 2 dt 2 dt (1.2) Введя обозначение f t 1 d t 2 dt (1.3) соотношение (1.2) можно записать в виде f t f 0 f t Величина (1.4) f t описывает процесс частотного шума и является случайной. К хранителям частоты предъявляется требование f f 0 , т.е. требуется, чтобы шум частоты был много меньше номинального её значения. Чтобы отклонение частоты от её номинального значения не зависело от величины этого значения, вводят безразмерную величину, называемую мгновенным относительным отклонением частоты [96]. 22 y t f t f0 (1.5) Величина y t остаётся постоянной при умножении и делении частоты f 0 (при отсутствии шумов в умножителях и делителях), чем обусловлено удобство её использования при обработке измерительной информации. Случайная составляющая отклонения частоты f t обусловлена действием на сами генераторы и их вспомогательные цепи шумов различного рода. При известном характере шумов в частотной области, возможно сконструировать фильтр с оптимальными характеристиками для их подавления. Подходы, связанные с описанием стабильности частоты в частотной области используются в основном разработчиками генераторов (обзор некоторых подходов содержится в [90, 92, 93]). В практике специалистов, занимающихся проблемами хранения и точного измерения времени чаще используются показатели нестабильности частоты (и вообще анализ измерительной информации) во временной области. Среди всех известных подходов к оценке нестабильности наиболее интересным представляется предложение рассматривать нестабильность как показатель непредсказуемости частоты [91, 97]). Такой подход обладает рядом преимуществ, главное из которых состоит в возможности рассматривать комплекс из высокостабильного генератора и прогнозирующего устройства как единое целое и повышать стабильность частоты не только путём улучшения технических характеристик генераторов, но и путём повышения точности прогнозов значения частоты генератора. Для формирования шкалы времени необходимы часы: источник периодических сигналов с высокой стабильностью частоты и устройство для подсчёта числа периодов. Наличие частотного и фазового шума в выходном сигнале генератора, описываемом выражением (1.1), приводит к возникновению ошибок в показаниях часов. Эти ошибки могут быть скомпенсированы введением соответствующих поправок. Уменьшение 23 интервала времени, за который вычисляется поправка, а также экстраполяция поправки – одни из наиболее сложных задач, связанных с формированием шкалы времени. Для их решения применяются математические модели, описывающие разности показания реальных часов с идеальными, т.е. с т.н. “истинным временем”. Применение более сложных моделей открывает возможность получения более точных поправок и формирования более равномерных шкал времени (понятие равномерности шкалы эквивалентно понятию стабильности частоты генератора, существует ряд характеристик стабильности [64, 66, 67, 69, 95-97]). Процесс изменения частоты генератора периодических сигналов можно аппроксимировать наложенной на некоторой неё детерминированной случайной составляющей. функцией В времени простейшем с случае детерминированная составляющая описывается линейной функцией времени. Это соответствует наличию линейного дрейфа частоты генераторов. Дрейф частоты в водородных стандартах обусловлен, преимущественно, эффектами старения, связанными со сложными физико-химическими процессами, протекающими в материалах, из которых изготовлены элементы хранителя [13, 14]. Показания часов представляют собой целое число периодов сигнала, снимаемое с выходов генератора, подсчитанное с начального момента t0 и фазу сигнала в момент t. Фазу сигнала, выраженную в единицах времени называют фазовым временем. Она определяется соотношением: t 2f 0 (1.6) Эта же величина определяет ошибку в показаниях часов, вызванную отклонением частоты генератора от номинального значения. Справедливо соотношение y t d t , dt где y t - мгновенное относительное отклонение частоты. (1.7) 24 Понятие фазового времени и возникновение ошибки в показаниях часов иллюстрируется рис. 1.3. Синусоидальный сигнал 1 имеет частоту f 0 (ей соответствует период T0 ). Синусоидальный сигнал 2 имеет частоту f1 1 f 0 . Предположим, что показания часов считываются в некоторый T1 момент времени t, когда фаза сигнала, снимаемого с задающего генератора, равняется . Показания часов, частота генератора которых равна f0 (“идеальных” часов), выраженное в угловых единицах в этот момент было бы равно: T0 t 2 2 2 0 t T0 T0 (1.8) Рис. 1.3 – Возникновение ошибки в показаниях часов при отклонении частоты генератора от номинального значения Ошибка в показаниях часов в момент t равна (в угловых единицах): 0 1 2 t T0 (1.9) Отсюда получим ошибку в единицах времени (“фазовое время”), что и даёт в результате выражение (1.6) t t T0 . 2 2f 0 Для формирования шкалы времени необходимо выбрать начало отсчёта, подсчитать количество периодов гармонического колебания, укладывающихся 25 от момента начала отсчёта до текущего момента времени t, определить фазу сигнала (фазовое время) и поправку к показаниям часов. Неучтённая погрешность измерения возникает из-за погрешности определения среднего (за период) относительного отклонения частоты yi и ошибок при идентификации сбоев часов. В дальнейшем для краткости величина yi будет обозначаться термином “отклонение частоты”. Задача идентификации сбоев часов носит диагностический характер и может решаться на основе сопоставления результатов измерений, полученных в подсистеме сличения частот и в подсистеме измерений временных интервалов, поэтому на первом плане оказывается проблема определения отклонения частоты задающего генератора часов от её номинального значения. Водородные генераторы, входящие в состав вторичных эталонов времени и частоты могут сличаться с цезиевым репером посредством перевозимых квантовых часов и через спутниковые каналы [19]. Сличения с цезиевым репером носят характер абсолютных измерений. В интервалах между абсолютными измерениями значения частот определяются путём взаимных измерений между водородными генераторами. В процессе взаимных измерений определяются относительные разности частот опорного и j-го генератора на дискретный момент времени t, являющийся серединой цикла измерения. Введём следующие обозначения: z i - измеренная разность частот опорного и (i+1)-го генераторов; yi - относительное отклонение частоты i-го генератора от частоты, приписанной эталону по результатам абсолютных измерений; y1 yоп - относительное отклонение частоты опорного генератора. Совокупность совокупность yi zi образует вектор измерений - вектор состояния эталона Z z1 , z 2 , z N 1 , Y y1 , y 2 , y N . Задача определения относительных отклонений частоты заключается в решении относительно вектора Y уравнения вида 26 Z Z Y 0 . (1.10) Данное уравнение может быть однозначно разрешено только при одинаковой размерности векторов Z и Y, что в описываемой схеме измерений не обеспечивается, поскольку размерность вектора измерений меньше размерности вектора состояния. В этом случае возможно лишь отыскать оптимальную по заданному критерию оценку вектора состояния Y. Таким образом, речь идёт о задаче оценивания состояния недоопределённой системы. 1.3. Эталоны времени и частоты как недоопределённые системы В процессе функционирования групповых эталонов единицы физических величин, воспроизводимые отдельными хранителями эталона (меры, стандарты и т.д.), периодически сравниваются между собой. В результате таких процедур, называемых «взаимными измерениями» (также применяется понятие «внутренние сличения») эталона, получается измерительная информация, на основе которой определяются оценки действительных значений физических величин, воспроизводимых эталонами. Характерной особенностью такой схемы выполнения наблюдений является неполная система наблюдений. При наличии в составе эталона N хранителей, ранг матрицы наблюдений равен (N-1), поскольку физически измеримыми являются только разности величин, воспроизводимых опорным и i-м элементами, если в качестве основной применяется схема сличения «каждый с опорным». Применение схемы сличения «каждый с каждым» ничего по существу не меняет, т.к. при этом ранг матрицы наблюдений не увеличивается. Схема измерений, выполняемых в таких эталонах, приведена на рис. 1.4. Следствием вышеописанной схемы выполнения измерений является то, что в процессе обработки измерительной информации в эталонах возникает самостоятельная задача оценивания вектора состояния эталона, решение которой с учётом вышеуказанных обстоятельств является в известной степени нетривиальным. 27 G G y1 y2 z1 yN zN-1 … G Рис. 1.4 – Упрощённая структурная схема измерений Если пренебречь шумами измерительной системы, (что вполне допустимо для измерений, выполняемых на суточных интервалах), то для нахождения вектора состояния эталона достаточно получить оценку состояния опорного элемента (на рис. 1.4 это первый элемент). Оценки других составляющих вектора состояния будут вычислены непосредственно из результатов измерений, выполненных на текущем такте t (здесь и далее в данной работе время считается дискретным). Наиболее сложной задачей, таким образом, остаётся оценивание состояния опорного элемента группового эталона. Существует большой класс систем, у которых количество произведенных измерений не равно количеству оцениваемых параметров. Такие системы являются несовместными. Можно выделить два типа несовместных систем – переопределенные и недоопределенные. Задачи, связанные с обработкой массивов измерительной информации, часто заключаются в оценке состояния таких систем. Наибольшую сложность из этих двух случаев представляет оценивание состояния недоопределённых систем, что непосредственно связано с недостатком измерительной информации. Уравнения движения и измерений в линейных динамических системах в матричной форме принимают вид [53]: (1.11) Yt 1 Yt ΓAt , (1.12) Z t ΗYt Vt , где Yt – вектор состояний системы в момент t; – матрица перехода (поскольку система стационарна, t|t 1 ); Γ – матрица коэффициентов усиления шумов; 28 At – вектор формирующих шумов (белых гауссовых); Zt – вектор измерений; Vt – вектор шумов измерений (белых гауссовых); H – матрица измерений. В случае, когда в уравнении (1.12) размерность вектора Z меньше размерности вектора Y, речь идёт о системе с неполной матрицей наблюдений (недоопределённой системе). В таких системах число измерений меньше числа оцениваемых параметров, следовательно, наблюдается недостаток измерительной информации, что влечёт за собой невозможность получения из уравнения (1.12) единственного решения: в случае отсутствия шумов измерения, т.е. при V=0, имеет место линейная система, в которой ранг матрицы Η меньше размерности вектора Z. Такие системы либо имеют бесконечное число решений, либо не имеют их вовсе. В случае, когда имеется бесконечное число решений, необходимо выделить из множества имеющихся решений “нужное”, наложив на него те или иные дополнительные ограничения. Для этого требуется использовать дополнительную информацию о системе: либо наложив какие-либо ограничения на вектор решения Ŷ (например, в том случае, когда из физических соображений известен диапазон возможных значений), либо учитывая прогнозы данного вектора, а, следовательно, и прогнозы вектора наблюдений Ẑ , вычисленные с учётом динамики системы. В первом случае можно найти вектор решения системы, имеющий минимальную норму [16] (находящийся ближе всего к нулевому вектору). Тогда оценка вектора Ŷ может быть получена с помощью псевдообратной матрицы. Для групповых эталонов решение задачи таким способом приводит к весьма распространённому в настоящее время алгоритму среднего арифметического (или взвешенного среднего) и имеет ряд недостатков, которые будут рассмотрены в дальнейшем. Во втором случае можно использовать прогнозы вектора состояния Y , вычисляемые на основе той или иной модели, например моделей 29 соответствующего временного ряда, характерным примером которых являются модели авторегрессии – проинтегрированного скользящего среднего (АРПСС). Использование адекватных математических моделей позволяет представить состояние процесса как сумму двух составляющих: прогноза вектора состояния процесса и случайной составляющей (ошибки прогноза). В идеале, для правильно построенных моделей ошибки прогнозов некоррелированы и имеют нулевое математическое ожидание. Рассмотрим использование метода наименьших квадратов для нахождения оценок вектора состояния недоопределённой системы. Вектор измерений связан с вектором состояния Z Y линейной зависимостью Z HY . (1.13) Для определённости предположим, что опорным является первый элемент. При использовании измерений за один такт матрица измерений H размерности ( N 1) N принимает вид: 1 1 0 1 0 1 H ... ... ... 0 1 0 ... 0 ... 0 ... ... ... 1 (1.14) При этом функционал I, который необходимо минимизировать, имеет вид: Z HYˆ Z HYˆ , I Yˆ 2 T (1.15) где Yˆ - вектор невязки Оптимальная оценка Y , полученная по методу наименьших квадратов, должна удовлетворять требованию I * min I I |Y Y * , где I - оптимальное значение функционала I. (1.16) 30 Необходимым для отыскания I * условием является выполнение условия экстремума I 2 H T Z HY * 0 . Y|Y Y (1.17) * Достаточным условием минимума I является положительная определенность матрицы I 2H T H . Y Y Y Y * Если матрица, представленная выражением (1.18) (1.18), положительно определена, то условие минимума I выполняется. Тогда оптимальная оценка Y * находится из решения уравнения (1.17) Y * ( H T H ) 1 H T Z (1.19) Оценка, полученная по методу взвешенных наименьших квадратов, является обобщением результатов (1.19) и имеет вид Y * ( H T W 1 H ) 1 H T R 1 Z , (1.20) где W – весовая матрица. Если в качестве весовой матрицы применять ковариационную матрицу вектора невязки , то с помощью соотношения (1.20) можно получать оценки вектора состояния даже в случае неравноточных коррелированных измерений. При этом не требуется предварительного преобразования вектора измерений Z с целью получения независимых равноточных измерений. Эта операция автоматически выполняется при использовании формулы (1.20). Матрица H T H в (1.19) всегда неотрицательно определенная. Однако условие минимума функционала I требует ее положительной определенности, то есть она должна быть невырожденной. В рассматриваемом случае недоопределённых систем это не так. Определитель матрицы H T H равен нулю, следовательно, обратной матрицы ( H T H ) 1 не существует. Поэтому непосредственно использовать формулу (1.19) для нахождения оценки вектора 31 Y нельзя. В случае, когда обратной матрицы ( H T H ) 1 не существует, оценку вектора Y получают с помощью псевдообратной матрицы H [16, 37]. Псевдообратная матрица, или обобщенная обратная матрица, обладает свойствами обратной матрицы и совпадает с ней, когда последняя существует. Если же обратной матрицы не существует, то решение уравнения (1.13), отвечающее требованию минимизации нормы вектора невязки, принимает вид Y * H Z (1.21) В общем случае, матрица измерений H имеет размерность ( N 1) n N , где n - количество интервалов, в течение которых выполнялись измерения, N число элементов в эталоне. Если для получения оценок вектора Y используются только результаты измерений, выполненных на данном такте (что является наиболее практически значимым случаем), то есть n=1, то ранг матрицы H равен (N−1). Если ранг матрицы совпадает с ее размерностью, то есть матрица имеет максимальный ранг, как это происходит при рассматриваемой схеме измерений, псевдообратная матрица имеет вид [37] H H T ( HH T ) 1 . (1.22) С учетом (1.14) получаем: 1 1 ( N 1) 1 1 H 1 ( N 1) N 1 1 1 ... 1 ... 1 ... 1 ... ( N 1) 1 1 1 (1.23) Из (1.21) и (1.22) следует, что оценка определяемого значения для опорного элемента находится как среднее значение результатов измерений, выполненных на данном такте: yˆ1 1 N N 1 z i (1.24) i 1 Таким образом, применение метода наименьших квадратов (МНК) к задаче определения состояния опорного элемента приводит к алгоритму 32 усреднения результатов измерений (или к алгоритму взвешенного среднего при использовании весов, не равных 1 N ). Состояние i-го элемента может быть найдено также из соотношений (1.21) и (1.23), однако эффективнее воспользоваться непосредственно результатом измерения zi и полученной оценкой состояния опорного элемента ŷ1 yˆ i yˆ1 zi yi ( yˆ1 y1 ) . (1.25) При этом погрешность определения состояния элементов, входящих в систему, равна погрешности оценки состояния опорного элемента. Использование выражения (1.24) для вычисления оценки относительного отклонения опорного элемента приводит к алгоритму простого усреднения. Возможно использовать также различные веса элементов, получая алгоритм среднего взвешенного. Алгоритмы, основанные на выражениях (1.24), (1.25) достаточно широко распространены в деятельности служб времени различных государств, в т.ч. и ГСВЧ РФ [5]. Подробный анализ погрешностей, возникающих при таком подходе, приводится в следующей главе. Следует сказать, что погрешность оценивания будет тем меньше, чем ближе сумма истинных значений на данном такте к нулю. Такое требование является весьма жёстким, поскольку в полной мере может быть обеспечено лишь при наращивании количества дорогостоящих высокостабильных генераторов, включенных в эталон. Повысить точность оценивания можно за счет использования в процессе обработки большего числа измерений, то есть учитывать не только результаты текущего цикла, но и предшествующих. При этом применение формулы (1.20) связано с ростом размерности обращаемых матриц по мере увеличения числа циклов. Кроме того, проблема нахождения корреляционной матрицы R порождает такие трудности, преодоление которых требует решения более сложных задач, нежели исходная, то есть задача нахождения оценки вектора состояния. Возникают и технические ограничения, не позволяющие применить такой подход. 33 Выход из сложившейся ситуации заключается в использовании динамических методов оценивания вектора состояния. Рассмотренные выше методы соответствуют статической обработке информации, когда считается, что все результаты измерений поступают для обработки одновременно [15]. При динамической обработке предыстория исследуемых процессов описывается их математическими моделями. Использование адекватных математических моделей позволяет представить состояние процесса как сумму двух составляющих: прогноза вектора состояния процесса и случайной составляющей (ошибки прогноза). Для правильно построенных моделей ошибки прогнозов некоррелированы и имеют нулевое математическое ожидание. Снижение погрешности в таком случае может достигаться как улучшением качества прогнозирующих моделей, так и повышением предсказуемости поведения самих прогнозируемых объектов (водородных хранителей частоты). Как известно [91, 97], стабильность частоты может определяться степенью её предсказуемости, и, если возможно описать сколь угодно сложные колебания частот генераторов адекватными моделями, то можно считать, что частота на выходе этих генераторов стабильна. Подход, основанный на использовании прогнозирования в процедуре оценивания вектора состояния недоопределённых систем ведёт к смягчению требований, предъявляемых к поступающей измерительной информации. Погрешность оценивания в этом случае зависит от качества прогнозов, то есть от адекватности математической модели системы. Это, в свою очередь, открывает перспективу снижения погрешности оценивания и, как следствие, повышения точности хранения физических единиц. Таким образом, можно улучшить характеристики совершенствуя алгоритмы групповых обработки дорогостоящим техническим мерам. эталонов информации времени и не и частоты, прибегая к 34 1.4. Выводы Метрология отвечает за обеспечение единства измерений в различных отраслях экономики. Её деятельность опирается на использование различных технических средств измерения, важнейшее место среди которых занимают эталоны физических величин. За единство измерений времени и частоты на территории РФ отвечает Государственная служба времени, частоты и определения параметров вращения Земли, чья деятельность опирается на эталонную базу, включающую Государственный эталон и ряд вторичных эталонов, в том числе эталон ВЭТ 1-5. Эталоны времени и частоты представляют собой сложные аппаратнопрограммные комплексы, включающие в себя группу высокостабильных генераторов гармонических колебаний, объединённых измерительной системой. В этой системе регулярно производятся взаимные измерения, в ходе которых относительные отклонения частоты опорного хранителя сличаются с таковыми для всех прочих генераторов. Измерения носят характер косвенных. Количество наблюдений в системе меньше количества генераторов, т.е. имеет место недоопределённая система. Определить состояние такой системы точно невозможно, можно лишь найти его оптимальную по заданному критерию оценку. Таким образом, возникает задача оценивания вектора состояния системы с неполной матрицей наблюдения – эталона времени и частоты. Оценки вектора состояния могут быть построены с использованием метода наименьших квадратов, приводящего к алгоритму усреднения. Алгоритмы оценивания такого типа в настоящее время широко применяются на практике, но обладают целым рядом существенных в силу специфики эталонов времени и частоты недостатков. Использование оценок, построенных на основе применения прогнозирующих моделей, открывает возможность повышения точности оценивания. 35 Глава 2. Использование динамических стохастических моделей и численных методов в задачах оценивания вектора состояния групповых эталонов 2.1. Модели динамических систем. Задача оценивание состояния Математическая модель является научно обоснованной схематизацией действительного поведения объекта (системы) в форме, которая даёт возможность производить вычисления, необходимые для достижения поставленной цели исследования, проводимого в отношении этого объекта [10]. Исследование динамических систем может быть сведено к изучению их математических моделей. Под системой принято понимать множество элементов, объединённое в единое целое совокупностью взаимосвязей. Система выделяется из окружающей её действительности в соответствии с некоторой определённой целью, либо создаётся (конструируется) из отдельных элементов для достижения той или иной цели. Суммарная эффективность системы (например, группового эталона) в смысле цели её существования превосходит эффективность простой суммы её элементов (отдельных хранителей). Система обладает некоторым набором входов (входных величин) и выходов (выходных значений). Под состоянием системы в математическом смысле понимается значение вектора параметров, с помощью которого устанавливается функциональное соответствие между входом и выходом системы. Система, в которой однозначно определено понятие состояния как совокупность значений некоторых величин в данный момент времени и задан закон, который описывает изменение начального состояния с течением времени, называется динамической системой. Этот закон позволяет по начальному состоянию прогнозировать будущее состояние динамической системы. 36 Одними из основных задач, встречающихся в различных отраслях науки и техники, связанных с управлением теми или иными объектами, обработкой измерений, являются задача оценивания и задача идентификации систем. Задача оценивания состояния заключается в нахождении наилучшей оценки состояния системы при известной математической модели этой системы. Задача идентификации систем состоит в определении структуры и параметров систем по выполняемым над ними наблюдениям, т.е. в построении математической модели системы. С практической точки зрения, речь идёт об определении типа, структуры и параметров модели, описывающей систему. Очевидно, что для решения задачи оценивания требуется сначала идентифицировать систему. К различным вариантам постановки этих задач приводят статистические методы обработки измерительной информации. В настоящей работе рассматриваются линейные динамические объекты. В общем случае уравнение линейного динамического объекта может быть представлено в виде линейного разностного уравнения [60]: N N N yt a m yt m bm u t m d m t m , m 1 m0 (2.1) m 0 где t=0,1,2,… – дискретное время, a, b, d – числовые коэффициенты, yt – выходы объекта, ut – входы объекта, t – воздействующие на объект шумы. Объекты, соответствующие уравнениям вида [60]: N yt a m yt m t , (2.2) m 1 называются авторегрессионными и находят широкое применение при исследовании временных рядов. Объекты, соответствующие уравнениям вида [60]: N yt d m t m , m0 соответствуют операции скользящего среднего. (2.3) 37 Основными идентификация этапами и идентификации параметрическая являются идентификация [15]. структурная Структурная идентификация позволяет получить уравнение динамики, а параметрическая идентификация осуществляется с целью определения неизвестных параметров при известной структуре модели, т.е. соответствующих коэффициентов при членах уравнения. Осуществляется она с помощью алгоритмов идентификации параметров, зависящих от типа системы. Настраиваемая модель, используемая при идентификации, вырабатывает прогнозирующую величину ŷt на основе совокупности наблюдаемых входных воздействий и выходных величин. Такая модель называется прогнозирующей. Чем ближе параметры модели к реальному объекту – тем точнее прогноз. Близость настраиваемой модели к объекту характеризуется математическим ожиданием квадрата невязки: M t2 M yt yˆ t 2 (2.4) В случае, когда выполняется соотношение M t 0 (2.5) (результаты являются несмещёнными), мерой близости будет дисперсия невязки. Под оптимальной моделью понимается такая, для которой M t2 достигает минимально возможного значения при определённых значениях её параметров. Как говорилось выше, уравнение движения линейных динамических систем можно записать в матричной форме [53]: Yt 1 Yt At , (2.6) где Yt – вектор состояний системы (в момент t); – матрица перехода (поскольку система стационарна, t|t 1 ); Γ – матрица коэффициентов усиления шумов; At – вектор формирующих шумов (белых гауссовых). Вектор измерений, выполненных в момент t имеет вид Z t HYt Vt , где Zt – вектор измерений; (2.7) 38 Vt – вектор шумов измерений (белых гауссовых); H – матрица измерений. Структурная схема [23, 70] такой системы имеет вид (рис. 2.1) Vt At Yt+1 Γ Задержка Yt Zt H Θ Рис. 2.1 – Обобщённая структурная схема линейной динамической системы Линейные динамические системы вида (2.6), (2.7) встречаются при решении различных технических и научных задач наиболее часто. В настоящей работе в качестве таких систем рассматриваются эталоны времени и частоты. В общем случае идентификации модели, на каждом i-м шаге процедуры ко входам реального объекта и настраиваемой модели прикладывается одно и то же внешнее воздействие Ui (см. рис. 2.2 [60]). Реальный объект кроме того возмущается некоторой случайной ненаблюдаемой помехой i . Выходная величина объекта Yi зависит как от внешнего воздействия и помехи, так и от неизвестного истинного вектора параметров C. Выходная величина настраиваемой модели Yˆi зависит от вектора настраиваемых параметров Ĉ , который корректируется анализирующего вектор в результате наблюдений действия Zi. алгоритма Разность настройки, выходных величин идентифицируемого объекта и его модели образует “невязку” : Z i , Cˆ Yi Yˆi (2.8) Невязка поступает на вход функционального преобразователя F . Соответствие настраиваемой модели объекту, т.е. качество идентификации, оценивается некоторым критерием: I Cˆ M F Z i , Cˆ , 39 где F – функционал потерь, M – математическое ожидание. εi Объект C Yi ξi Модель Ĉ M{F(ξ)} F(ξ) I Cˆ Yˆi Ui Ĉ Алгоритм Zi Наблюдения Рис. 2.2 - Блок-схема процесса идентификации Улучшение качества идентификации может достигаться как изменением структуры модели, так и настройкой её параметров. Критерий качества идентификации в большинстве случаев выбирается квадратичным – в виде среднего значения квадрата невязки F 2 . Минимизация такого критерия соответствует методу наименьших квадратов (МНК). Популярность квадратичного критерия точности идентификации обусловлена возможностью получения теоретически точного результата. Можно показать, что решение удовлетворяет условию оптимальности при любых чётных (в наиболее простом случае - квадратичных) функционалах потерь. Статистическая обработка экспериментальных данных может рассматриваться как задача оценивания состояния, сущность которой состоит в следующем. Фактическое состояние любой реальной системы может быть в полной мере описано лишь бесконечным (или практически бесконечным) числом параметров. В распоряжении исследователя при этом имеется лишь конечное число независимых измерений, искажённых неизбежными 40 погрешностями. Вследствие этого точное определение состояния реальной системы по результатам измерений практически невозможно. Возможно лишь получение некоторой его оценки, при этом реальная система заменяется на свою математическую модель, включающую конечное число параметров. Задача обработки данных, получаемых в процессе функционирования групповых эталонов, заключается в получении оценок вектора состояния эталона по результатам выполняемых между его элементами взаимных измерений. Применительно к задаче оценивания, система также описывается конечным числом параметров, совокупность которых называется вектором состояния Y y1 , y 2 , y N . В эталонах времени и частоты в качестве вектора состояния можно рассматривать значения относительных отклонений частоты каждой из мер (хранителей) от приписанного ей значения. Для определения вектора Y используются результаты измерений, совокупность которых называется вектором наблюдений Z z1 , z 2 , z n . Зависимость вектора измерений от действительного вектора состояния для выбранной модели описывается некоторой зависимостью: Z H Y . (2.9) Данное уравнение называется уравнением измерений. По характеру связи измеряемых параметров с параметрами внутреннего состояния объекта такие уравнения можно разделить на непосредственные и косвенные, соответственно, можно вести речь о прямых и косвенных измерениях. В действительности, зависимость (2.9) относится к модели системы, а измерения производятся над реальной системой. Вектор погрешностей модели (методических погрешностей) обозначим 1 , 2 , N , а истинные значения векторов Z и Y – обозначим Zи и Yи, тогда [61, 62]: Z И H YИ (2.10) ~ Пусть Z - значение вектора Z, полученное в результате измерений. Тогда: ~ Z ZИ V , (2.11) 41 где V v1 , v 2 ,vm - вектор погрешностей измерений. Отсюда: ~ Z H YИ V (2.12) Точные значения векторов погрешностей модели и погрешностей измерения остаются неизвестными, их обычно рассматривают как случайные векторы с некоторыми вероятностными характеристиками. зависимость (2.12) заменяется системой условных уравнений: ~ H Y Z , При этом (2.13) представляющей собой систему из n уравнений относительно N неизвестных y1 , y 2 , y N . Система условных уравнений является неточной и из неё нельзя получить истинное значение Yи вектора состояния. Может быть найдена лишь некоторая оценка Ŷ этого вектора. Она должна, по возможности, быть близка к Yи. Задача оценивания состояния, таким образом, сводится к отысканию алгоритма вида [61]: ~ Yˆ Z (2.14) позволяющего находить оценку состояния объекта Ŷ по измеренному ~ значению Z . Такой алгоритм называется алгоритмом фильтрации, поскольку его задачей является уменьшение влияния на результат (фильтрация) методической погрешности и погрешности измерения. Задача построения алгоритма фильтрации является неоднозначной. Полученная оценка Ŷ чаще всего не удовлетворяет системе условных уравнений (2.13), зависимость приобретает при этом вид ~ Z H Yˆ , (2.15) где Ξ ξ1 ,ξ 2 ,ξ N - вектор невязок. Невязка должна быть, по возможности, минимальной. ~ В дальнейшем в настоящей работе принимается Z Z , поскольку применяемая схема измерений на суточных интервалах позволяет пренебречь сравнительно малыми шумами измерительной системы. Также, в силу специфики системы, пренебрегаем разницей между Y и Yи. 42 Задача нахождения оценок вектора состояния такой системы заключается в нахождении несмещённых оценок вектора Y для моментов t=0,1,2,…n, имеющих минимальные дисперсии. Если шумы, возбуждающие систему, белые Гауссовы, то задача может быть сведена к минимизации функционала [37] 1 I Yˆ0 Y0 2 n 2 P 1 1 Z t 1 HYˆt 1 n t 0 2 n 1 2 R 1 At 2 Q 1 (2.16) где Yt – вектор состояния системы в момент времени t, Yˆt 1 – оценка вектора Y на момент времени t+1, вычисленная с учетом n n имеющихся наблюдений, At – вектор белых гауссовых шумов, H – матрица измерений, Zt+1 – вектор измерений системы в момент времени t+1, P – ковариационная матрица вектора состояния, R – ковариационная матрица шумов измерений, Q – ковариационная матрица шумов, возбуждающих систему, 2 X R 1 X T R 1 X – обобщенная норма вектора X. Решение поставленной задачи получено Калманом в виде набора рекуррентных уравнений, называемого дискретным фильтром Калмана. В заключение следует сделать вывод о том, что использование математических моделей является на сегодняшний день важнейшим методом исследования тех или иных систем, в особенности - таких сложных, как эталоны времени и частоты. Обработка статистических данных, к которым относятся разнообразные физические измерения, зачастую требуют решения задачи оценивания состояния системы, что, в свою очередь, невозможно без решения задач идентификации моделей. Таким образом, дальнейшее рассмотрение поставленной проблемы будет вестись с точки зрения решения задач идентификации и оценивания состояния применительно к эталонам времени и частоты. 43 2.2. Использование прогнозирующих моделей при оценивании вектора состояния динамических объектов Ранее был рассмотрен применяемый в настоящее время подход к задаче оценивания вектора состояния эталонов времени и частоты, основанный на методе среднего арифметического, проанализированы его недостатки. Также был предложен альтернативный подход к решению этой проблемы, основанный на использовании в качестве дополнительного канала наблюдения некоторой модели динамики системы, описывающей предысторию её “движения” и позволяющий строить прогноз состояния на каждом следующем шаге. Требуется построить процедуру оценивания состояния и провести сравнение оценок, полученных каждым из методов. Во многих технических системах (к числу которых относятся эталоны времени и частоты) их динамика может быть описана рекуррентными уравнениями, которые (с точностью до знаков при коэффициентах) совпадают с уравнениями авторегрессии-скользящего среднего (АРСС) [7] вида: yt 1 yt 1 2 yt 2 ... p yt p 1at 1 ... t at q , (2.17) где i , j – коэффициенты авторегрессии и скользящего среднего, p и q – порядки процессов авторегрессии и скользящего среднего, at – белый гауссов шум. В стандартном каноническом виде уравнение динамики системы с одним входом и одним выходом имеет вид: yt * yt 1 * At 1 z t H * yt (2.18) где * – матрица перехода; * – матрица коэффициентов усиления шумов; At – вектор белых гауссовых шумов; H * – матрица измерений. Переход от уравнения (2.17) к стандартному каноническому виду (2.18) для системы с одним входом и одним выходом может быть выполнен с помощью стандартного преобразования [37]: 44 0 0 * 0 p p 1 I ; 1 1 1 1 1 1 * 2 p 1 p 2 p 3 1 0 * H 0 (2.19) 0 1 0 2 0 3 ; 1 p В случае, когда в уравнении (2.7) размерность вектора Z меньше размерности вектора Y, речь идёт о системе с неполной матрицей наблюдений, то есть системе, в которой число измерений меньше числа оцениваемых параметров. Недостаток измерительной информации влечёт за собой невозможность получения из уравнений (2.6), (2.7) единственного решения. Для получения единственного решения требуется привлечь дополнительную информацию, либо в форме дополнительных ограничений, налагаемых на решение, либо учитывая при оценивании прогнозы вектора состояния, вычисленных с учётом динамики системы. В первом случае требуется найти вектор решения системы, имеющий минимальную норму [16]. Оценка вектора Ŷ может быть получена в этом случае с помощью псевдообратной матрицы. Данный подход приводит к алгоритму среднего арифметического и был подробно рассмотрен выше. Во втором случае можно использовать прогнозы вектора состояния Ŷ , вычисляемые на основе уравнения (2.17). Использование прогнозов относительных отклонений частоты, полученных на предыдущих тактах обработки, приводит к следующей формуле для оценки относительного отклонения частоты опорного элемента [56] N N yˆ оп wi [ y оп y i yˆ i ,t 1 ] wi [ z i yˆ i ,t 1 ] i 1 i 1 (2.20) 45 где yˆ i ,t 1 – прогноз, вычисленный на предыдущем такте, wi – вес i-го хранителя. Оценки для остальных элементов вычисляются как: yˆ j yˆ1 z j (2.21) Для получения прогнозов можно использовать различные классы математических моделей. Например, полиномиальные модели, экспоненциальные модели и др. Применительно к эталонам времени и частоты, одним из наиболее удобных способов представляется использование уравнений авторегрессии – проинтегрированного скользящего среднего (АРПСС), так как этот класс моделей специально предназначен для анализа временных рядов, которые естественным образом формирует эталон. Адекватность моделей данного типа для описания процессов изменения частоты высокостабильных генераторов показана, в частности, в работах [56,59,81]. Модели авторегрессии – скользящего среднего (АРСС) впервые были успешно применены для моделирования колебаний частоты водородных стандартов Ю.П. Хрусталёвым. При использовании моделей АРСС, прогноз на каждом шаге вычисляется с использованием выражения (2.17). Возникает задача “подгонки” (параметрической идентификации) моделей авторегрессии – скользящего среднего. Она может быть разрешена путём минимизации функционала вида [57]: n N 1 I zi ,t yˆ1,t yˆ i 1,t , 2 (2.22) t 1 i 1 где yˆ i ,t - прогноз y на момент t, вычисленный на предыдущем такте. Минимизируется квадрат погрешности прогноза, т.е. изменение вектора настраиваемых параметров ведётся на основе анализа расхождения вновь поступившего реального измерения с прогнозом данного измерения, построенным на предыдущем шаге. В случае, если процесс минимизации функционала (2.22) не сходится (выполнение процедуры оптимизации при разумном количестве итераций не приводит к достижению требуемой 46 точности), следует считать, что структура моделей определена неудачно и необходимо вернуться к этапу структурной идентификации. Таким образом, может быть построен итеративный алгоритм, тесно объединяющий в себе процедуру идентификации моделей АРПСС и процедуру оценивания вектора состояния. Оценки вычисляются с использованием идентифицированных моделей, а для дальнейшей параметрической идентификации моделей (уточнения параметров) используются результаты оценивания. В качестве альтернативного способа получения оценок ранее был рассмотрен алгоритм среднего арифметического (либо взвешенного среднего при различных весах), основанный на выражениях вида 1 N 1 1 N 1 ˆ yˆ оп z j или y оп wi z j . N j 1 N j 1 (2.23) Для вычисления оценки состояния остальных элементов эталона в этом случае также используется выражение (2.21). Проведём сравнение погрешностей для обоих подходов к оцениванию. Погрешность оценивания по методу среднего арифметического выражается как [56]: 1 yоп yˆ оп yоп 1 N 1 N 1 N ( yоп yi ) yi zi yоп N N i 1 N i 1 i 1 (2.24) Для взвешенного среднего справедливо соотношение 2 1 N wi yi . N i 1 (2.25) В выражениях (2.24) и (2.25) для общности в вектор наблюдений добавлена “фиктивная” величина z0 yоп yоп 0 , поэтому суммирование ведется по N членам, а не по N-1. Из выражений (2.24), (2.25) следует, что погрешности оценивания 1 и 2 будут тем меньше, чем ближе сумма истинных значений оцениваемой величины на каждом такте к нулю. Очевидно, что это условие является весьма 47 жёстким, поскольку предъявляет достаточно высокие требования к измерительной системе в целом. Обеспечить его выполнение при малом числе элементов (стандартов) в эталоне не невозможно. Существенное увеличение количества элементов в системе требует больших материальных затрат. Погрешность оценивания при использовании подхода, основанного на применении прогнозирующих моделей описывается соотношением N 3 wi [ y i yˆ i ,t 1 ] . (2.26) i 1 Обеспечить равенство нулю ошибки оценивания состояния системы при использовании прогнозов гораздо проще. Условие несмещённости зависит в данном случае не от величины относительных отклонений частоты элементов, а от того, насколько точно можно эти отклонения прогнозировать, т.е. от качества моделей, описывающих процесс изменения частоты в каждой из мер, входящих в эталон. Погрешность зависит от точности прогноза и будет равна нулю, если все прогнозы не содержат ошибки. Конечно, на практике это труднодостижимо, однако само по себе такое требование является гораздо более мягким, чем требование, обеспечивающее равенство нулю погрешности для МНК-оценок. Качество прогнозирования можно повысить как использованием новых, более сложных моделей, так и совершенствованием аппаратных средств, ведущим к росту предсказуемости частоты. И то, и другое решение ведёт к снижению степени непредсказуемости значений частоты и, таким образом, к увеличению точности получаемых оценок. 48 2.3. Модели авторегрессии – скользящего среднего (АРСС). Построение моделей АРСС по результатам косвенных измерений Выше было предложено использовать в процедуре оценивания вектора состояния систем с неполной матрицей наблюдений прогнозы движения системы, вычисленные на основе математических моделей. Поскольку получаемый на выходе эталона времени и частоты сигнал образует временной ряд (последовательность однородных наблюдений, выполненных через равные промежутки времени), а сигнал является стохастическим, представляется рациональным использование в целях описания динамики системы и прогнозирования её состояния широко распространённых в различных областях исследований моделей авторегрессии – проинтегрированного скользящего среднего (АРПСС) [77]. В известных работах [56,59,81] показано, что модели АРПСС адекватно описывают процессы колебаний частоты водородных стандартов. Такие модели были успешно применены для прогнозирования колебаний частоты водородных стандартов Ю.П. Хрусталёвым в 1980-х годах. Вместе с тем, по настоящее время остаётся не решённым целый ряд задач, имеющих важнейшее значение для создания практически применимых алгоритмов оценивания на их основе. Модели АРПСС относятся к динамическим стохастическим моделям и могут описывать стационарные и стационарно-разностные процессы. В случае стационарных процессов предполагается, что процесс остается в равновесии относительно постоянного среднего уровня. Нестационарные процессы (и их модели) не имеют естественного среднего значения. Для описания стационарных процессов используются модели авторегрессии – скользящего среднего (АРСС), нестационарные же процессы описываются моделями авторегрессии — проинтегрированного скользящего среднего (АРПСС) [32]. Существует большое количество различных расширений моделей АРПСС [84]. Временные ряды, в которых последовательные значения существенно зависимы, можно рассматривать как генерируемые последовательностью 49 независимых импульсов at . Эти импульсы – реализации случайных некоррелированных величин с фиксированным распределением, которое обычно предполагается нормальным с нулевым средним значением и дисперсией a2 (белый шум). В модели авторегрессии текущее значение процесса выражается как конечная линейная совокупность предыдущих значений процесса и импульса at [7]. Обозначим значения процесса в равноотстоящие (дискретные) моменты времени t , t 1, t 2, ... как y , y , y , ... . Обозначим как ~y , ~y , ~y ,... t t 1 t 2 t t 1 t 2 отклонения от среднего значения в каждый из моментов времени, так что ~y y . Тогда процесс авторегрессии (АР) порядка p будет описываться t t выражением. ~y ~y ~ y ... p ~yt p at t 1 t 1 2 t 2 (2.27) Если ~yt линейно зависит от конечного числа q предыдущих a – такой процесс называется процессом скользящего среднего (СС) порядка q : ~y a a a ... a t t 1 t 1 2 t 2 q t q (2.28) Порядки p и q - целые числа больше нуля, коэффициенты i , j действительные числа. Для достижения большей гибкости в подгонке моделей к наблюдаемым временным рядам во многих случаях используют комбинированную модель авторегрессии – скользящего среднего (АРСС): ~y ~ ~ t 1 y t 1 ... p y t p at 1 at 1 ... q at q 0 (2.29) В модели АРСС порядки p и q – целые числа больше нуля, хотя бы один из них должен быть ненулевым. Если один из порядков равен нулю – модель превращается в модель АР или СС соответственно. Кроме порядков АР и СС, модели авторегрессии – проинтегрированного скользящего среднего (АРПСС) характеризуются также порядком разности d. При порядке разности d=0 модель описывает стационарный процесс и называется моделью авторегрессии – скользящего среднего (АРСС). Модели с 50 порядком разности d, отличным от 0 применяются для описания нестационарных процессов, содержащих детерминированные составляющие, в этом случае принято говорить о модели АРПСС. Мнения специалистов по поводу использования разностных авторегрессионных моделей расходятся [51]. Это связано с рядом сложностей в отношении интерпретации получаемых результатов при порядке разности d>0. В настоящей работе такие модели не рассматриваются, поскольку применены другие способы представления детерминированных составляющих, речь ведётся только о моделях АРСС, являющихся подмножеством АРПСС. При структурной идентификации моделей АРПСС важное значение имеют графики особого вида, называемые автокорреляционными функциями (АКФ) и частными автокорреляционными функциями (ЧАКФ). По существу, эти функции характеризуют степень взаимосвязи между удалёнными на различные задержки во времени членами ряда. С технологической точки зрения, основным способом определения структуры модели АРПСС является анализ (чаще всего - визуальный) данных функций и их сопоставление с теоретическими, характерными для тех или иных видов и порядков процессов на предмет субъективной “похожести” или “непохожести”. Эта особенность является существенным осложняющей недостатком автоматизацию процесса авторегрессионных их построения. моделей, В случае недоопределённых систем, построение АКФ и ЧАКФ напрямую невозможно ввиду отсутствия как таковых моделируемых исходных временных рядов. При проверке адекватности моделей АРПСС подвергаются анализу ряды остатков (ошибок прогноза). Кроме близости их распределения к нормальному (что указывает на случайный характер ошибки, т.е. обусловленность её факторами, которые не могут быть учтены моделью), также применяется анализ автокорреляционных функций рядов остатков. Модель считают адекватной, если отсутствуют значимые остаточные внутренние корреляции 51 ряда. Также с этой целью применяется так называемый совокупный критерий согласия Q и некоторые другие критерии, подробнее описанные в [7, 77]. Как и при использовании любой другой математической модели, для применения моделей АРПСС в целях прогнозирования необходимо сначала выполнить процедуру идентификации. Идентификация модели состоит из этапов структурной и параметрической идентификации. При структурной идентификации модели авторегрессии – скользящего среднего (АРСС) определяется количество включаемых в неё авторегрессионных членов и членов скользящего среднего. При параметрической идентификации определяются параметры модели, такие как коэффициенты авторегрессии и скользящего среднего. Устойчивость прогнозирования обеспечивается не при всех возможных сочетаниях значений коэффициентов АР и СС. Для моделей первого-второго порядка существуют известные аналитические закономерности [7], в случае более сложных и комбинированных моделей сходимость проверяется эмпирически. Классический подход к идентификации, предлагаемый Боксом и Дженкинсом [7], опирается на изучение АКФ и ЧАКФ исходного временного ряда, в результате которого определяется характер и порядок процесса, а, следовательно, количество включаемых в модель членов АР и СС. После этого тем или иным способом осуществляется подгонка параметров модели. Однако в случае недоопределённых систем, в отношении которых доступны только косвенные наблюдения (такие, как разностные измерения) возникает существенная проблема. Специфика решаемой задачи такова, что на начальном этапе отсутствуют необходимые для применения методики БоксаДженкинса исходные временные ряды, именно их и требуется получить посредством алгоритма оценивания, основанного на прогнозирующих моделях АРСС. Имеются только разностные ряды взаимных измерений, которые не могут быть непосредственно применены для идентификации моделей АРСС. 52 При заранее авторегрессии и известной скользящего структуре среднего, модели порядке (количестве членов разности), задача параметрической идентификации может быть достаточно эффективно решена методами безусловной оптимизации, например, градиентным методом [58]. При этом минимизируется значение рассмотренного ранее функционала вида: n N 1 I zi ,t yˆ1,t yˆ i 1,t . 2 (2.30) t 1 i 1 Данный функционал зависит от величины ошибки прогноза моделей АРПСС – а, следовательно, и от качества моделей. Задача существенно усложняется, если отсутствуют данные о структуре исходных рядов (не проведена структурная идентификация модели). При отсутствии априорной информации об исследуемых рядах, применение стандартных процедур структурной идентификации, таких, как методика БоксаДженкинса, становится невозможным. Необходимо отметить, что сама по себе минимизация функционала I для достаточно больших рядов (и большого числа генераторов) является весьма трудоёмкой в вычислительном отношении задачей, поскольку она требует повторного вычисления прогнозов всех составляющих временных рядов на каждом шаге. Причём вычислительная ёмкость её, очевидно, возрастает с ростом числа включенных в модель членов, а равно и с ростом объёма выборки. Таким образом, бесконечно увеличивать количество включенных в модель членов того или иного типа не следует. Требуется выработать практически применимый алгоритм определения структуры модели. Из практики применения моделей АРПСС известно, что полезные значения количества членов АР и СС (p и q), при которых достигается адекватное описание наблюдаемых временных рядов, не превышают трёх. В частности, для водородных стандартов частоты, эксплуатирующихся в ГСВЧ, успешно применялись модели, порядки авторегрессии и скользящего среднего в которых равнялись двум [56]. Вместе с тем, имеются предположения о том, 53 что для более точного моделирования процессов, возникающих в выборке при выполнении наблюдений на малых интервалах может оказаться оправданным применение моделей более высоких порядков. Так, в [81] для моделирования каждого из водородных генераторов применялась линейная комбинация из 4 марковских процессов (моделей авторегрессии порядка 1) и сделано предположение о возможности замены их одной моделью авторегрессии порядка 4. Полагая порядки АР и СС минимальными для всех элементов группового эталона (т.е. p=0, q=0), можно последовательно повышать их, решая при этом оптимизационную задачу. Очевидно, что, как и в регрессионном анализе, увеличение p и q не должно вести к росту функционала I Cˆ , где Ĉ обобщённый вектор параметров моделей [59]. Однако, как нетрудно заметить, при ограничении максимального числа членов pmax qmax 3 , даже для группового эталона, включающего всего два хранителя, оптимизационную задачу необходимо решать 256 раз. При увеличении числа хранителей в групповом эталоне трудоёмкость данного алгоритма быстро возрастает, в силу чего его практическая ценность невелика, несмотря на определённую теоретическую значимость. Имеет смысл исследовать упрощённый алгоритм с синхронным наращиванием порядков для всех моделей. Множество возможных структур моделей в таком случае позволяет перебрать все практически целесообразные варианты, вычислить значения функционала (проведя параметрическую оптимизацию), а затем ранжировать эти структуры по какому-либо критерию, определив “наилучшую” (по заданному критерию). Если порядок разности в модели d принимается равным нулю (отсутствует тренд), потребуется перебрать 24 модели (модель с нулевым количеством членов рассматривать нецелесообразно), что, хотя и требует достаточно продолжительных вычислений, может быть выполнено с привлечением разумных вычислительных ресурсов. Следует отметить, что при такой 54 упрощённой процедуре структура с наибольшей размерностью в ряде случаев не окажется наилучшей в отношении точности прогнозов. Таким образом, для идентификации моделей можно задать конечное множество возможных структур, перебрать их все и выбрать наилучшую. Необходимо определить критерий выбора наилучшей структуры. Наиболее очевидным решением этой проблемы представляется сортировка по значению функционала I (2.30). Однако такой критерий не учитывает сложность модели. Значение функционала I, представляющего собой сумму ошибок прогноза, будет снижаться с ростом количества включенных в неё членов. Если не учитывать случайные факторы и погрешность процедуры оптимизации, то наилучший результат даст модель с максимальной размерностью. Вместе с тем, работа с такой моделью потребует и наибольших вычислительных ресурсов. Таким образом, функционал I не может быть непосредственно использован для выбора структуры модели. В качестве одного из вариантов критерия выбора наилучшей структуры моделей может рассматриваться выражение: I2 I , (2.31) где: N (n ( p q )) - число степеней свободы, N – число исходных рядов, n – объём выборки (количество значений в каждом ряду), p – количество членов АР, включенных в модель, q – количество членов СС, включенных в модель. Выражение I 2 представляет собой функционал I , разделенный на количество степеней свободы, которое учитывает число членов ряда и оцениваемых параметров. Таким образом, знаменатель имеет тенденцию к уменьшению по мере роста сложности модели, а числитель представляет собой тот же функционал I . По существу, вводится своеобразный “штраф” за каждый дополнительный член АР или СС, включенный в модель. Результаты моделирования, приведённые в соответствующем разделе, показали, что хотя поведение критерия существенным образом отличается от 55 поведения функционала I, в результате чего в числе “наилучших” оказываются модели с менее сложной структурой, однако представляющиеся наиболее эффективными модели в их число всё равно не попали. Такой результат обусловлен недостаточно большим “штрафом” за увеличение сложности модели: сумма ( p q ) нарастает недостаточно быстро и мало влияет на знаменатель при большом количестве наблюдений n. В качестве выхода из ситуации было предложено увеличение такого “штрафа”, путём введения дополнительного коэффициента. Домножением суммы количества членов авторегрессии и скользящего среднего на некоторый коэффициент k≥1 было получено выражение: I3 I , N (n k ( p q)) (2.32) где k≥1 – добавочный коэффициент. Опытным путём было установлено, что требуемая для решения поставленной задачи динамика прироста “штрафной” составляющей знаменателя для исследуемых случаев достигается при k=3. Естественно, что подобный коэффициент не является универсальным и применим только к определённому подмножеству временных рядов. Вопрос его теоретически обоснованного выбора может быть темой дополнительного исследования. Таким образом, данный критерий заведомо не является универсальным. Применение данного подхода к структурной идентификации соответствует случаю статической обработки информации: все данные уже поступили к моменту выполнения вычислений. Однако такая процедура идентификации модели может быть эффективно применена и в случае динамической обработки, для первоначальной оценки параметров, после чего соответствующие модели подстраиваются по мере поступления новых данных. При этом высокая трудоёмкость вычислений перестаёт быть препятствием. При переборе моделей, вообще говоря, может возникнуть ситуация, когда одна из моделей окажется неустойчивой, будет порождать расходящийся ряд и, 56 таким образом, процесс оптимизации не будет сходиться. Для “отсечения” таких моделей следует ввести в процедуру оптимизации ограничение, лимитирующее число шагов оптимизации каким-либо конечным значением (порядка нескольких десятков для метода градиентного спуска с дроблением шага), по достижении которого модель признаётся непригодной. Следует отметить, что узким местом описанного способа структурной идентификации является процедура “подгонки” модели. Будучи реализованной методом градиентного спуска с дроблением шага, она требует вычисления частных производных функционала I по каждому из коэффициентов, что, при численном дифференцировании, в свою очередь, требует пересчёта функционала для каждого приращения параметра. Таким образом, на каждом шаге спуска для модели структуры (p,d,q) требуется многократно (KI раз) вычислять функционал I. KI может быть определено, как: KI=1+N·(p+q)+1= 2+N·(p+q), (2.33) где N – число исходных рядов, p – число членов авторегрессии, включенных в модель, q – число членов скользящего среднего, включенных в модель. Таким образом, с нарастанием сложности структуры моделей количество вычислений существенно возрастает. Кроме того, два вычисления функционала требуются для получения исходного значения и значения после приращения шага. Применение методов прямой оптимизации не позволит отказаться от многочисленных вычислений функционала, а методы стохастической оптимизации (к примеру, генетический алгоритм) не позволят достичь требуемой точности определения параметров. При сочетании генетического алгоритма с градиентным спуском (на завершающем этапе параметрической идентификации) требуемая точность может быть достигнута, однако практические преимущества такой схемы в отношении вычислительной ёмкости задачи вызывают сомнения. К числу положительных особенностей подхода, основанного на последовательном наращивании сложности моделей относится возможность 57 достаточно простой реализации параллельных вычислений, в т.ч. на системах со слабосвязанной архитектурой (GRID и т. п.), что обусловлено отсутствием пересекающихся во время выполнения данных между разными вариантами структуры модели. Таким образом, возможна реализация концепции крупноблочного параллелизма. Другим возможным направлением ускорения может быть реализация подобного алгоритма на графических ускорителях. В качестве альтернативного подхода к решению задачи построения моделей АРПСС при неизвестной структуре может быть предложено использование принципа “дополнительной суммы квадратов”. Вопрос о том, стоит ли включать в регрессионную модель те или иные члены может быть решён на основании анализа дополнительной части порождённой регрессией суммы квадратов, которая связана с включением в модель рассматриваемых членов. Средний квадрат, который получается из этой дополнительной суммы может быть далее сопоставлен с оценкой дисперсии экспериментальных данных s2, чтобы выяснить, является ли значимым различие между ними. Если средний квадрат значимо превышает оценку s2, то такие члены следует включить в модель. В противном случае их следует рассматривать как излишние, и не включать в модель [26]. Применительно к рассматриваемой задаче использование принципа “дополнительной суммы квадратов” позволяет, с одной стороны, отказаться от жёсткого ограничения на порядок модели, а с другой – избежать перебора всего множества возможных моделей с последующей их подгонкой и вычислением функционала I. Наращивание порядка модели прекратится после признания дополнительной суммы квадратов, внесённой добавочными членами вектора параметров, незначимой. Проблемой при использовании такого метода, однако, может явиться то, что из-за действия случайных факторов предыдущая модель может оказаться значимо хуже последующих. В результате последующие модели будут отсечены ввиду незначительности дополнительной суммы квадратов предыдущего шага. В случае реализации упрощённой процедуры с 58 синхронным наращиванием порядков моделей это может произойти и по причине расхождения используемой и истинной структур процесса. Ещё один альтернативный подход заключается в построении предварительных оценок относительных отклонений частоты элементов группового эталона с последующим их уточнением на основе соотношения (2.20). При этом для получения начальных оценок находится решение уравнений (2.18) с помощью псевдообратной матрицы H . Ранее уже было указано, что такое решение доставляет минимум сумме квадратов отклонения оценок составляющих вектора состояния Yt при минимальной его норме. Рассмотрим пример для эталона из трёх хранителей. Псевдообратная матрица H может быть найдена с помощью скелетного разложения матрицы [16] b11 b H BD 21 bm1 b1r d11 b2 r d r 1 bmr d12 dr2 d 1n , d 2 n (2.34) где ранги сомножителей B и D равны рангу произведения, rB rC r . Тогда H D B D DD B B B . 1 1 (2.35) В качестве столбцов матрицы B берутся первые r столбцов матрицы H r N 1. 1 1 0 B 1 0 0 Элементы матрицы D найдутся из решения матричного уравнения (2.34). При размерности матрицы H, равной (2x3) получаем матрицы: 1 -1 B 1 0 1 1 1 0 1 1 D и H 2 1 . 3 0 1 1 1 2 (2.36) 59 С учётом того что z1 y1 y2 z 2 y1 y3 (2.37) имеем y1 y 2 y1 y3 1 Yˆ H Z 2 y1 y 2 y1 y3 . 3 y1 y 2 2 y1 y3 (2.38) Таким образом, оценка состояния опорного элемента находится как: yˆ1 2 y1 y 2 y3 , 3 (2.39) или, с учётом (2.37) 1 2 yˆ1 z i . 3 i 1 Полученные результаты легко обобщаются для произвольной размерности матрицы H: yˆ1,t 1 N 1 z i ,t N i 1 (2.40) Оценки состояния других элементов находятся из соотношения (2.37): yˆ i ,t yˆ1,t zi ,t (2.41) Временные ряды, построенные по формулам (2.40), (2.41) можно использовать для идентификации структуры моделей АРСС, т.е. для определения параметров p и q. Для этого требуется построить для каждого полученного таким образом временного ряда “грубых” предварительных оценок автокорреляционные (АКФ) и частные автокорреляционные (ЧАКФ) функции, а затем использовать методику Бокса-Дженкинса, основанную на сопоставлении выборочных АКФ и ЧАКФ их теоретическим значениям при конкретных p и q. При этом необходимо помнить, что исследуемые временные ряды (ряды оценок yˆ i ,t ) содержат погрешности, которые неизбежно повлекут за собой погрешности при оценивании АКФ и ЧАКФ. 60 Проанализируем погрешность оценивания значений относительных отклонений частоты опорного генератора. Из (2.37), (2.40) следует (при общем числе элементов в групповом эталоне, равном N): N yi N 1 y1 Δy1 y1 i 2 . N N (2.42) Если рассматриваемые линейные процессы некоррелированы, АКФ суммы процессов равна сумме автокорреляционных функций [6]. Первый член в выражении (2.42) определяет смещение оценок yˆ1(t) , что не вносит изменений в АКФ временного ряда. Второй член с ростом N при независимых временных рядах стремится к нулю и, следовательно, при больших N также не вносит существенной погрешности в определение порядков p и q. Однако, при малых N, а в реальности приходится иметь дело именно с такой ситуацией, влияние этой составляющей погрешности может существенно исказить оценку порядков p и q. Впрочем, сама методика Бокса-Дженкинса, основанная на понятии “близости” теоретических и выборочных автокорреляционных и частных автокорреляционных функций, не даёт точного ответа на вопрос о структуре модели, а предполагает лишь нахождение приближённых значений порядков АР и СС. Поэтому зачастую оценивают порядок p и q приближённо, исследуя несколько альтернативных структур моделей. С учётом сказанного выше, предлагается следующая методика построения оценок относительных отклонений частоты элементов группового эталона времени и частоты: 1. По имеющимся результатам взаимных измерений элементов группового эталона находятся предварительные оценки относительных отклонений их частот от приписанных значений по формулам (2.40), (2.41) для каждого момента t t 1,n . 2. По найденным временным рядам строятся их динамические стохастические модели (модели АРСС). Структурная идентификация 61 выполняется с использованием в качестве “исходных” рядов предварительных МНК-оценок. Также на этом этапе могут быть с минимальными трудозатратами получены начальные приближения для параметров моделей АРСС. 3. С использованием полученных структур моделей (и, опционально, полученных начальных приближений оценок параметров моделей) путём минимизации функционала (2.30) строятся уточнённые оценки на основе соотношения (2.20). Оценки относительных отклонений частоты водородных стандартов, найденные при решении оптимизационной задачи принимаются в качестве решения задачи статической обработки данных. Описанный подход был проверен как путём моделирования, так и на реальных данных. В результате была подтверждена работоспособность предлагаемой методики. Диагностическая проверка показала, что полученные модели адекватны реальному объекту. Ошибки прогнозов распределены нормально, АКФ рядов остатков указывают на отсутствие значимой внутренней корреляции в них, проверка с использованием совокупного критерия Q также не даёт оснований для сомнений в адекватности моделей. Проведённое сравнение предложенных подходов к структурной идентификации моделей АРСС в недоопределённых системах показало их сильные и слабые стороны, которые будут подробно рассмотрены в соответствующем разделе. Обе разработанные методики решения задачи определения структуры моделей АРСС в недоопределённых системах по данным косвенных измерений (методика, основанная на последовательном наращивании порядков моделей и методика, основанная на использовании предварительных оценок по методу среднего арифметического) позволяют строить адекватные модели, обладая своими наборами преимуществ и недостатков. Таким образом, методики имеют собственные сферы применения, не являясь взаимоисключающими. 62 2.4. Оценивание вектора состояния группового эталона с использованием моделей АРСС как процедура субоптимальной фильтрации Обсуждаемая в настоящей работе проблема может рассматриваться как задача непрерывного определения состояния системы по результатам выполняемых последовательно наблюдений. Поскольку наблюдения всегда сопровождаются случайными погрешностями, то следует говорить не об определении состояния системы, а о его оценивании путём статистической обработки результатов наблюдений. По существу, речь идёт о процедуре динамической фильтрации. Покажем, что предложенный алгоритм оценивания вектора состояния эталонов времени относится к классу алгоритмов фильтрации по Калману. Любой фильтр предназначен для исключения шума, т.е. для выделения полезного выходного сигнала из поступающего входного, искажённого шумом. Можно считать, что фильтр оценивает сигнал. Кроме того, в некоторых случаях требуется непрерывно оценивать те или иные неизвестные параметры системы. При этом вектор состояния системы расширяют за счёт включения в него неизвестных параметров в качестве дополнительных элементов. ~ Пусть вектор измеренных значений Z может быть представлен в виде совокупности векторов ~ ~ ~ ~ Z Z 0 ,Z1, Z n , (2.43) ~ ~ где Z 0 включает в себя всю априорную информацию, а Z t (t=1,2,…,n) - содержит последовательно поступающую апостериорную информацию. При ~ этом каждому вектору Z t соответствует момент времени t, в который он поступил. Обозначим через ~ ~ ~ ~ Z t1 Z 0 ,Z1, Z t 1 (2.44) вектор, содержащий всю информацию, поступившую до момента t. Ему соответствует оценка ~ Yˆt 1 F Z t1 . (2.45) 63 К следующему моменту времени t+1 будет иметься информация, составляющая вектор ~ ~ ~ Z t Z t1 ,Z t , (2.46) по которому может быть найдена оценка ~ Yˆt F Z t . (2.47) Такой алгоритм соответствует статической обработке, или обработке с накоплением данных и называется алгоритмом совместной обработки. В целом ряде случаев представляется возможным заменить алгоритм совместной обработки (2.47) рекуррентным алгоритмом вида ~ Yˆt Yˆt 1 , Z t , (2.48) в правую часть которого входит не весь вектор накопленных измерений, а ~ лишь вектор Z t поступивших последними в момент времени t измерений. Влияние же поступивших ранее измерений учитывается предшествующей оценкой Yˆt 1 . Такой называется процесс получения рекуррентной последовательно фильтрацией и уточняемых соответствует оценок динамической обработке информации, или обработке в темпе поступления информации. Процедура оценивания в этом случае распадается на ряд повторяющихся однотипных вычислений по формулам (2.48), отпадает необходимость в накоплении и хранении большого объема предшествующей измерительной информации. В случае оценивания состояния систем с неполной матрицей измерений посредством рекуррентного алгоритма, требуется найти несмещенные оценки вектора Y, обладающие минимальными дисперсиями. Если шумы измерений и шумы, возбуждающие систему – белые гауссовы, то решение сводится к минимизации функционала (2.16). Решение поставленной задачи было получено Калманом в виде системы рекуррентных уравнений [4, 9, 37, 47, 70 и др.] 64 Yˆt / t Yˆt 1 / t 1 Pt / t H T R 1[ Z t HYˆt 1 / t 1 ] , Pt / t 1 Pt 1 / t 1T ГQГ T , (2.49) Pt / t Pt / t 1 Pt / t 1 H T [ HPt / t 1 H T R ]1 HPt / t 1 . где – матрица переходов (эволюции системы); H – матрица наблюдений; Г – матрица коэффициентов усиления шумов; Pt / t 1 – ковариационная матрица оценки вектора состояния на момент t, вычисленная с учётом t-1 имеющихся наблюдений; R – ковариационная матрица шумов измерений; Q – ковариационная матрица шумов, возбуждающих систему; Yˆt / t 1 – оценка вектора Y на момент t, вычисленная с учетом t-1 имеющихся наблюдений. Соотношения (2.49) носят название дискретного фильтра Калмана. Алгоритм фильтра Калмана позволяет в реальном времени построить оптимальную оценку состояния системы, основываясь на измерениях, содержащих погрешности. Принцип работы фильтра заключается в том, что на каждом такте начальными значениями являются оценка состояния системы и величина, характеризующая её погрешность (дисперсия или ковариационная матрица оценки вектора состояния). Алгоритм последовательно обрабатывает вновь поступающие векторы измерений, учитывая при этом значения, вычисленные на предшествующем такте. На следующем шаге с помощью обработанных на данном цикле измерений уточняются начальные значения (оценка состояния и погрешности). Чем меньшей погрешностью характеризуются измерения по сравнению с оценкой состояния системы, тем больший вес они получат. Относительные веса переменных, определяющих вектор состояния системы, зависят от степени их влияния на вектор измерений: больший вес получат те из них, вклад связывающие которых в измерения последующий вектор больше. состояния Используя с соотношения, предыдущим, можно прогнозировать оценку состояния системы к моменту поступления следующего измерения. При этом состояние процесса представляется как сумма двух 65 составляющих: прогноза вектора состояния и случайной составляющей (погрешности прогноза). При построении фильтра учитываются особенности рассматриваемой динамической системы. Могут использоваться различные классы математических моделей: полиномиальные, экспоненциальные и др. Для рассматриваемого случая групповых эталонов времени и частоты наиболее естественным способом является применение уравнений авторегрессии – проинтегрированного скользящего среднего (АРПСС), так как этот класс моделей предназначен для обработки временных рядов [43]. Модели АРПСС относятся к динамическим стохастическим моделям [32]. Поскольку элементы эталона связаны друг с другом только через вектор измерений, можно предположить, что в рассматриваемом случае допустимо иметь дело с некоторым упрощенным вариантом оптимального фильтра (данному вопросу целиком посвящена работа [30]). В [56] показано, как, применив методы понижения размерности вектора состояния, можно построить субоптимальный фильтр Калмана, оперирующий с одномерными временными рядами. В таком случае появляется возможность представления каждого элемента системы собственной математической моделью и отпадает необходимость вычисления ковариационных матриц. Стандартные преобразования вида (2.19) применимы к системам с одним входом и одним выходом. Обобщение стандартного преобразования для случая многомерных систем выполнено в работе [78]. При этом в уравнениях (2.18) скаляры yt и zt становятся векторными величинами Yt, Zt, векторы Γ*, H* блочными матрицами Γ** и H**, а матрица * – блочной матрицей ** 1* 0 ** 0 0 0 * 2 0 0 0 0 , 0 *N (2.50) 66 где каждое *i на главной диагонали имеет вид * из уравнения (2.18), остальные элементы - нулевые. Уравнения (2.18) примут в таком случае вид: Yt **Yt 1 ** At 1 (2.51) Z t H **Yt Элементы H ij блочной матрицы H** отражают связи между различными * входами и выходами системы. На главной диагонали этой матрицы расположены элементы вектора H T H 1* H 2* H N* , где каждое H i соответствует вектору H* в уравнениях (2.18). * В групповых эталонах, как и в иных системах с независимыми друг от друга элементами, взаимодействие между различными входами и выходами происходит только на уровне оператора H**. По существу, речь идёт об одномерных системах, описываемых уравнениями динамики (2.18) и объединёнными в многомерную измерительную систему оператором H**. Из-за независимости шумов различных хранителей в эталонах времени и частоты (такая независимость обеспечивается техническими мерами – экранированием, развязкой цепей питания и др.) и вообще, при независимых элементах любых других многомерных систем, матрица Γ** тоже диагональная: элементы матрицы, расположенные на главной диагонали являются составляющими вектора T 1* 2* N* , где каждое i* определёно формулой (2.19). Оператор H** представлен блочной матрицей 0 E ** H 1 E1 0 E1 0 0 1 0 0 , E1 E1 0 0 0 0 0 0 0 0 0 0 67 Первая строка матрицы H** представлена нулевыми элементами, поскольку отражает “фиктивное” измерение y1-y1. Матрица Q* также блочная Q1 E 1 * Q 0 0 Q2 0 0 0 , QN где Qi определены соотношениями Q a2 I (I – единичная матрица, a с.к.о. шума), поскольку предполагается, что шумы не коррелированны. Учитывая введённые выше обозначения, а также то обстоятельство, что для нахождения оценки вектора состояния Ŷ достаточно найти оценку состояния ŷ1 (все другие составляющие вектора Ŷ найдутся из результатов наблюдений при полученной оценке ŷ1 ) построим субоптимальный фильтр Калмана для системы с неполной матрицей наблюдений. Субоптимальные фильтры, применяемые в системах автоматического управления, основываются на методах понижения размерности вектора состояния и методах расщепления (декомпозиции) фильтра [2,3]. При понижении размерности вектора состояния системы получение оценок разбивается на две подсистемы. Первая подсистема – динамическая (дополнительный канал наблюдения), описывается уравнением вида X t 1 X X t H X Z t , (2.52) Вторая подсистема завершает построение оценки вектора состояния. Выходной сигнал представляется в виде [3] Yˆt VY X t H Y Z t (2.53) В выражениях (2.52), (2.53) X , H X , VY , H Y - матрицы, определяющие влияние соответствующих составляющих. Размерность вектора X t по-возможности стараются сделать минимальной. Метод декомпозиции вектора состояния основывается на представлении его в виде суммы 68 N Yˆt F j1 yˆ j ,t , (2.54) j 1 где y j ,t D1j Y j 1, N , F j1 и D1j - матрицы, удовлетворяющие условию N F 1 j D1j I 1 , (2.55) j 1 где I 1 – единичная матрица. По существу, вектор состояния разбивается на подвектора, соответствующие каждому отдельному элементу, для каждого из них строятся индивидуальные оценки, которые объединяются на выходе фильтра. Используем метод понижения размерности для получения оценки состояния опорного элемента Ŷ1 . Вектор состояния системы найдётся из выражения (2.53). Однако, в отличие от рассмотренного в [3] метода, подвектор Ŷ1 найдём в соответствии с принципом декомпозиции, используя соотношение (2.54). При этом уравнение для оценки подвектора yi примет вид yˆ i ,t yˆi ,t|t 1 K iGi Z t HYˆt 1 , (2.56) где yˆ i ,t|t 1 - прогноз подвектора yi , Ki – коэффициент усиления невязки, Gi – матрица, определяющая, как вектор Z используется для коррекции оценки yi. Структура такого субоптимального фильтра представлена на рис. 2.3. Операторы , Η, Ρ, F, K соответствуют рассмотренным ранее матрицам. T – оператор, описывающий использование вектора наблюдений Z для вычисления остальных составляющих вектора Yˆ на основании ŷ1 согласно (2.21). E3 – оператор, выделяющий подвектор состояния опорного элемента из вектора Yˆ , B – оператор задержки на один такт. 69 G1 F11 K1 T yˆ1,t … Z Gj Fj1 Kj Υˆt P yˆ1,t|t 1 … GN FN1 KN Eз B H Рис. 2.3 – Структурная схема субоптимального фильтра Декомпозицию вектора состояния рекомендуется производить таким образом, чтобы подвекторы не были связаны между собой ни через уравнения динамики объекта, ни через помехи [3]. В соответствии с этой рекомендацией выполним декомпозицию так, чтобы подвекторы были равными yi. При одинаковой размерности всех подвекторов матрицы D1j имеют вид D1j 0 0 I 1 0 . Подматрица I1 размерности pY pY расположена в j-м столбце блочной матрицы D1j ( pY – размерность подвекторов). Матрицы Gj при таком разбиении будут равны матрицам D1j . Для выполнения требования восстановимости подвектора состояния Y1 в рассматриваемом фильтре условие (2.55) должно быть заменено условием (2.57) N F D I 1 j 1 j 1 0 0 . (2.57) j 1 Из этого условия следует, что матрицы Fj1 должны быть заменены операторами, осуществляющими перенос содержимого j-го блока в первый с инвертированием знака и умножением на скалярную величину i , такую N что j 2 j I1 . 70 Коэффициент усиления субоптимального фильтра, построенного по принципу декомпозиции, определяется соотношениями [3] n K t Fj1 K j ,t G j , (2.58) j 1 T K j ,t Pj,t H *j H *j Pj,t H *j R j ,t 1 , (2.59) T Pj,t *j Pj,t 1 *j j Q j jT , (2.60) где Pj,t - экстраполированная ковариационная матрица подвектора yj, Pj,t - ковариационная матрица, вычисленная с помощью измерения, выполненного в момент t. Матрицы Pj,t и Pj,t связаны соотношением [53] Pj,t I 1 K t H ** Pj,t (2.61) Матрицы Qj, H *j , Rj, *j в (2.59), (2.60) находятся из соответствующих матриц полного фильтра [3] T Q j D1j Q*j Qt* ; H *j G j H ** D j ; R j G j RR Tj ; *j D j ** D j Псевдообратная матрица D1 j находится с помощью скелетного разложения матрицы D1 [16] D1j LS ; D1 LT LLT SS T S T j 1 1 (2.62) Нетрудно убедиться, что D j D Tj (матрица L – единичная, размерности pY pY , матрица S равна матрице D1j ). Если элементы системы и шумы измерений не зависят друг от друга (в групповых эталонах это справедливо), то матрицы Pj, Qj, Rj, *j являются j-ми диагональными блоками соответствующих матриц полного фильтра. Матрица H *j имеет размерность p Y pY . Её вид определяется матрицей H** из выражений (2.51) и вектором измерений в стандартном каноническом преобразовании [3] 71 1 0 * Hj 0 0 0 0 0 . 0 0 Подвектор yˆ1,t , являющийся оценкой состояния опорного элемента, будет определяться выражениями N yˆ1,t j yˆ j ,t|t 1 z j (2.63) j 1 N j 2, , p ; j Fj K j 1 I j (2.64) j 2 yˆ j ,t yˆ1,t G1 H ** Yˆ ; yˆ E Yˆ ; 1 (2.65) (2.66) (2.67) 3 z j Gj Z Yˆt|t 1 B Yˆt 1|t 1 (2.68) Выходной сигнал фильтра Ŷt формируется в соответствии с формулой (2.53) (метод понижения размерности). Выбрав матрицы P и T так, что ΡT I 1 I 1 I 1 , T получим Yˆ T yˆ1 yˆ1 z2 yˆ1 z3 yˆ1 z N (2.69) Выражения (2.63), (2.69) аналогичны соответствующим выражениям для оценок относительных отклонений частоты генераторов, полученных на основе применения моделей АРСС (авторегрессии – скользящего среднего) [56]. Следовательно, использование алгоритмы моделей АРСС, обработки при данных, определённых опирающиеся условиях на являются алгоритмами субоптимальной фильтрации. Такими условиями являются, очевидно, равенства весов wi в алгоритме фильтрации соответствующим элементам матричных коэффициентов j в (2.64)-(2.66). Коэффициенты усиления Ki определены выражениями (2.58)-(2.60). При принятых выше представлениях матриц, входящих в эти выражения, получаем 72 P11j P11j r11j P j 21 Kj P11j r11j j Ppj P11j r11j 0 0 0 0 , 0 0 где P11j и r11j - левые верхние элементы ковариационных матриц Pj и R j . В соответствии с условием восстановимости вектора состояния, матрица i равна матрице Kj, умноженной на скалярную величину j (операция перемещения блока Kj размерности pY pY в первую клетку блочной матрицы размерности pY pY не меняет численных значений элементов блока). Таким образом, элемент 11j , соответствующий весовому коэффициенту wi равен P11j j j . P11 r11j j 11 (2.70) n Выполняя условие нормировки j 1 получим j 2 j 1 P11j r11j n 1 P j 11 j 11 r . (2.71) j 2 В результате получаем P j P j r j 11 11 j 11 j 1 P11 r11 2 j 11 j 2, , n (2.72) n 111 1 11j . (2.73) j 2 Так как элементы P11j экстраполированной ковариационной матрицы Pj являются дисперсиями прогноза состояния j-го элемента системы, то при отсутствии шумов измерений ( Rj 0 ввиду их малости) весовые коэффициенты 11j , найденные из условия субоптимальной фильтрации, совпадают с весами wi, используемыми в алгоритмах оценивания состояния, 73 опирающихся на динамические стохастические модели (АРСС) [16, 56, 59]. Следует отметить, что на связь фильтров Калмана с моделями временных рядов в своих работах указывал, в частности, академик В.С. Пугачёв [43]. В результате продемонстрировано, что проблема оценивания вектора состояния эталона времени и частоты может рассматриваться как задача фильтрации по Калману. Построение субоптимального фильтра при этом основывается на применении методов понижения размерности вектора состояния и декомпозиции фильтра. Возможность декомпозиции фильтра проистекает из особенностей структуры рассматриваемой системы: отсутствия взаимосвязей между элементами эталона за пределами измерительной системы. В свою очередь, это приводит к возможности использования одномерных моделей временных рядов. Понижение размерности фильтра обеспечивается введением дополнительного канала наблюдений, использующего прогноз динамики системы на основании моделей временных рядов. Таким образом, показано, что предложенная методика оценивания относительных отклонений частоты водородных стандартов в групповом эталоне на основе использования прогнозов, вычисленных с применением моделей АРСС, относится к классу процедур субоптимальной калмановской фильтрации, что может служить достаточно формальным теоретическим обоснованием его корректности. 74 2.5. Оценивание вектора состояния группового эталона с учётом детерминированных трендов Выше была рассмотрена задача построения моделей АРСС для случаев, когда ряды измерений являются стационарными и не содержат детерминированной составляющей. Из практики известно, что реальные временные ряды, получаемые при выполнении взаимных измерений в эталонах времени и частоты, могут содержать кроме стохастической составляющей, описываемой моделями АРСС, также детерминированные тренды, вызванные наличием дрейфа частоты генераторов, что требует принятия дополнительных мер при их обработке. Предельные значения суточного дрейфа частоты прибора нормируются, а сам процесс стараются сделать линейным. Дрейф обусловлен сложными физико-химическими процессами, происходящими в генераторах (таких, как процесс старения материалов [13]). В общем случае временные ряды могут быть представлены в виде [1] Yt χ A f t тр χ Б t χ В ψt ξt , (2.74) 1, если факторы типа c участвуют в формировании Yt где (c) 0 в противном случае c=A, Б или В; ft тр - функция тренда (долговременная составляющая временного ряда – полиномиальный тренд); t - динамическая составляющая (динамический тренд); ψt - сезонная составляющая; ξt - случайная составляющая. Ранее рассматривалась методика построения моделей АРСС для случая, когда в формировании исходного временного ряда в системе с неполной матрицей наблюдений участвует только случайная составляющая ξt . Чтобы воспользоваться предложенной методикой, необходимо найти оценки ft тр , t и ψt и учесть их вклад в ряды zi t . Можно вполне обоснованно считать, что в данном случае ряды измерений не содержат циклической и сезонной составляющей, поскольку в реальных рядах, содержащих измерения примерно 75 за 100 суток, таких составляющих выявлено не было (нельзя исключать, что они могли проявляться при наблюдениях на интервалах большей длительности как кусочно-линейные функции). Поэтому будем рассматривать временные ряды, содержащие только случайные составляющие ξt , наложенные на детерминированные тренды. Из практики деятельности ГСВЧ известно, что в большинстве случаев, тренды, наблюдаемые в рядах взаимных измерений, представляют собой линейные функции, хотя принципиально возможно и наличие детерминированных составляющих более высоких порядков. С точки зрения авторегрессионных моделей, многие эмпирические временные ряды ведут себя так, как будто они не имеют фиксированного среднего значения [7]. Однако при этом они выглядят однородными в том смысле, что любая часть временного ряда по своему поведению во многом подобна любой другой, если не учитывать локальный уровень и тренд. Модели, описывающие такое однородное нестационарное поведение, можно получить, предположив стационарность некоторой разности процесса. Иными словами, можно использовать для описания тренда модели АРПСС с порядком разности, отличным от нуля. Таким образом, учёт детерминированных функций ft тр в построенных моделях принципиально может быть выполнен двумя способами: 1. Непосредственной оценкой параметров линейных функций f i,t bi0 bi1t (или более сложных) по результатам измерений и последующим исключением влияния этих функций из результатов измерений zi ,t ; 2. Использованием разностных моделей yt yt yt-1 , включающих в правой части постоянный член 0 [1, 77] – в этом случае речь идёт о моделях авторегрессии-проинтегрированного скользящего среднего (АРПСС). В сущности, оба этих подхода способны дать одинаковый эффект, однако включение детерминированной (линейной или более сложной) функции в модель временного ряда более предпочительно с точки зрения интерпретации 76 результатов (в том числе, промежуточных). Кроме того, к использованию разностных операторов критически относится ряд авторитетных специалистов [51]. При таком подходе на первом этапе построения моделей временных рядов требуется оценить параметры линейных функций. Затем необходимо устранить влияние этих функций из рядов измерений zi ,t и таким образом свести задачу построения моделей временных рядов к описанной ранее процедуре. При формировании автономной шкалы времени, т.е. шкалы времени, построенной только по результатам взаимных измерений отдельно взятого эталона, в обязательном порядке производится начальная “привязка” шкалы эталона к шкале эталонов более высокого уровня (например, шкалы вторичных эталонов “привязываются” к шкале Государственного эталона). Можно по результатам внешних сличений установить начальные отклонения частоты, характеризующиеся членами bi0 и внести соответствующие поправки в ряды измерений zi ,t . Иными словами, при оценивании линейных трендов можно полагать все коэффициенты bi0 равными нулю. Строя затем модели парной регрессии для рядов zi ,t , где i 1,2, , N , получим систему линейных уравнений вида b 1 1 bi1 t di t , i 1,2 , ,N (2.75) где di – угол наклона линейной функции для ряда zi. Очевидно, что речь в этом случае вновь идёт о недоопределённой системе, имеющей бесчисленной множество решений. Возможны ситуации: 1. Имеется априорная информация о значении b11 (полученная по результатам “внешних сличений” эталона – “внешняя привязка” группового эталона). В этом случае из системы уравнений (2.75) немедленно получаем оценки bi , т.е. находим решение поставленной задачи. 77 2. Априорная информация о коэффициентах bi отсутствует, но для какоголибо из рядов zi подтверждается гипотеза H0: bi1 0 . В этом случае с большой долей вероятности можно считать, что b11 и bi1 равны нулю, т.к. в противном случае придётся признать, что углы наклона линейных трендов частоты у опорного и i-го элементов группового эталона равны, а это крайне маловероятно (следует напомнить, что конструктивное исполнение и условия эксплуатации сводят вероятность такой ситуации практически к нулю). В случае неприятия гипотезы H0 для всех рядов измерений, можно предположить что имеет место тренд частоты у опорного элемента. Тогда следует пересчитать ряды измерений на “новый опорный элемент”, что выполняется простыми линейными операциями. i 1,2, , N zi zi1 z1 (2.76) и вновь вернуться к процедуре проверки гипотез, описанной выше. 3. Процедура проверки гипотез не дала положительных результатов (обнаружены линейные тренды во всех временных рядах). Единственный возможный подход в этом случае – использовать метод наименьших квадратов для решения системы уравнений (2.75) с матрицей наблюдений H. Это выполняется посредством минимизации функционала вида n N 1 IТ zi,t bˆ11t bˆ10 bˆi1t bˆi0 2 (2.77) t 1 i 1 Как уже упоминалось выше, оценка b̂1 может быть найдена как среднее 1 значение результатов di. 1 N 1 bˆ11 d i N i1 (2.78) В таком случае найденный вектор имеет минимальную норму [16]. N Погрешность решения равна нулю только при выполнении условия b i i 1 что было проверено при моделировании описанных процедур. 0, 78 Исходя из вышеописанного, предлагается следующая методика обработки результатов взаимных измерений, выполняемых в процессе ведения эталонов времени и частоты: 1. Выявляются детерминированные (линейные) тренды рядов относительных отклонений частоты водородных генераторов. 1.1. Если имеются результаты внешних сличений, то оценки параметров линейных функций ( bi0 , bi1 ) находятся из анализа этих данных. 1.2. Если такой информации нет, проводится регрессионный анализ результатов взаимных измерений, т.е. строятся уравнения парной регрессии для всех рядов y 1,t yi ,t . Проверяется гипотеза о равенстве нулю коэффициентов bi1 . Если гипотеза не отвергается хотя бы для одного из рядов с индексом j, считается, что b11 0, b1j 0 . В противном случае считается, что линейная регрессия отсутствует у элемента группового эталона, для которого модуль коэффициента b1j минимален. 1.3. Из недоопределённой системы линейных уравнений b11 bi1 d i i 1, , N 1, (2.79) с учётом полученной на этапе 1.2 оценки b1j 0 , находятся оценки углов наклона линейных трендов частоты для всех элементов эталона. 2. Из рядов взаимных измерений устраняется влияние трендов. 3. По полученным скорректированным рядам измерений находятся МНКоценки значений относительных отклонений частоты опорного элемента для всех t, как это было описано ранее. Оценки относительных отклонений частоты для всех остальных элементов группового эталона (водородных стандартов) находятся по формуле (2.21). 4. Найденные ряды МНК-оценок относительных отклонений частот генераторов используются для построения моделей АРСС по методике 79 Бокса-Дженкинса. Построенные модели используются в качестве первого приближения в процедуре минимизации функционала (2.22). 5. Полученные ряды оценок корректируются с учётом трендов, удалённых на этапе 2. Использование вышеописанного алгоритма позволяет разделить процедуру оценки трендов и процедуру оптимизации моделей АРСС, в результате чего обработка данных делится на этапы, результаты выполнения которых поддаются наглядной интерпретации, анализу и оценке. Предложенный алгоритм был проверен на практике как путём моделирования, так и в процессе обработки реальных данных. Проверка показала его работоспособность и пригодность к практическому использованию. Результаты проведённого моделирования и испытаний на реальных данных подробно рассмотрены в последующих главах. 80 2.6. Выводы Для решения задачи оценивания состояния в системах с неполной матрицей наблюдения требуется привлечь в качестве дополнительного канала наблюдений прогнозы, построенные на основе моделей динамики исследуемых процессов. Для получения прогнозов целесообразно применять стохастические динамические модели – модели АРСС. Использование моделей АРСС для описания систем с неполной матрицей наблюдения приводит к целому ряду проблем при их идентификации. Отсутствуют исходные ряды наблюдений, необходимые для построения АКФ и ЧАКФ. Применить классическую методику идентификации таких моделей (методику Бокса-Дженкинса), таким образом, невозможно. Предложен оригинальный подход к решению данной задачи, основанный на использовании при идентификации моделей АРСС рядов предварительных МНК-оценок. Ряды взаимных измерений эталона кроме стохастической составляющей содержат детерминированные тренды. Возникает задача их оценивания и исключения из временных рядов. Показано, что в недоопределённой системе для снижения погрешности оценивания тренда следует привлекать дополнительную информацию (данные внешних сличений эталона). Предложен алгоритм получения оценок вектора состояния групповых эталонов по результатам взаимных измерений, основанный на использовании численных методов минимизации целевой функции и позволяющий находить оценки коэффициентов авторегрессии и скользящего среднего для каждого из элементов эталона. Алгоритм реализует процедуру динамической фильтрации с использованием прогнозирующих моделей АРСС. Показано, что такой алгоритм представляет собой субоптимальный фильтр Калмана. В связи с большим объёмом исходных данных и широким применением численных методов оптимизации в алгоритме, целесообразна её реализация с использованием ЭВМ как специализированного программного продукта. 81 Глава 3. Программный комплекс оценивания вектора состояния групповых эталонов по результатам взаимных измерений 3.1. Архитектура приложения и применяемые технологии В предыдущей главе была предложена методика оценивания относительных отклонений частоты в групповых эталонах времени и частоты, основанная на использовании в процедуре оценивания прогнозирующих моделей – моделей авторегрессии – проинтегрированного скользящего среднего (АРПСС). При этом оценки находятся как результат численного решения задачи минимизации целевой функции. В процессе разработки данной методики, возникла необходимость её тестирования и испытания - как в режиме моделирования, так и при работе с реальными данными, полученными в процессе функционирования эталона. Ввиду существенной трудоёмкости производимых вычислений, реализация такого алгоритма возможна только с использованием ЭВМ. Требовалось разработать программный комплекс для оценивания вектора состояния эталонов времени и частоты. Требования к разрабатываемым программным средствам формировались, исходя из стоящих задач и имеющихся ресурсов. С одной стороны, требовалось обеспечить поддержкой проводимые исследования, из чего следовали такие приоритеты, как обеспечение гибкости, относительной быстроты разработки и модификации. С другой стороны, ввиду имеющихся планов по внедрению разработанной методики в практику деятельности Государственной службы времени, частоты и определения параметров вращения Земли (ГСВЧ РФ), было необходимо обеспечить возможность дальнейшего использования полученных результатов, в том числе, путём их интеграции в иные программные средства. Используемые в деятельности ГСВЧ программные средства неоднородны, созданы в различное время и на различных платформах (как Windows-системы, так и свободное ПО), на момент разработки точных представлений о возможном программном окружении и способах интеграции в 82 него не имелось. Следовательно, требовалось обеспечить модульность, переносимость и кроссплатформенность. С другой стороны, ввиду ограниченности человеческих и временных ресурсов, отводимых на разработку, требовалось минимизировать объём вновь разрабатываемых элементов. Кроме того, по соображениям как экономического характера, связанных с невозможностью приобретения стороннего программного обеспечения, так и юридических, касающихся дальнейшего использования результатов, следовало исключить использование коммерческих платформ и средств разработки. На практике, среди основных способов обеспечения кросс- платформенности можно выделить такие, как: применение интерпретируемых и байт-код ориентированных языков программирования (Perl, Python, Java и др.); применение традиционных языков программирования в связке с обеспечивающими абстракцию от системных средств кросс- платформенными библиотеками и фреймворками (например, Qt, GTK). Второй способ весьма распространён в коммерческих проектах и проектах, ориентированных на конечного потребителя. Он обеспечивает высокую производительность (в частности, за счёт отсутствия накладных расходов на интерпретацию) и отсутствие потребности в установке дополнительных программных средств (интерпретаторов, виртуальных машин) пользователем. Минусом является необходимость перекомпиляции как при внесении изменений (что увеличивает затраты времени на разработку), так и при переносе на каждую новую платформу (что может быть связано с достаточно времязатратной процедурой развёртывания среды сборки или организации кросс-компиляции). Кроме того, возможны достаточно жёсткие лицензионные ограничения, создающие определённые трудности в распространении полученных результатов. В силу имеющихся недостатков, было решено остановиться на альтернативном варианте. 83 Интерпретируемые языки программирования, как правило, отвечают концепции свободного программного обеспечения (СПО). Код программы выполняется без изменений на любой системе, для которой имеется версия интерпретатора. (интерпретатор Байт-код которых ориентированные исполняет не языки исходный программирования код, а некоторый промежуточный код виртуальной машины – например, Python) требуют компиляции на этапе разработки (внесения изменений в код), но перенос между платформами возможен без изменения кода и перекомпиляции. Интерпретируемые языки программирования без компиляции в байт-код не требуют выполнения компиляции вовсе. Платой за это чаще всего является не столь высокая производительность. При этом гибкость и переносимость являются максимальными, что требуется в рассматриваемом случае. Одним из наиболее популярных языков такого типа является язык Perl. Несмотря на изначальную ориентированность на обработку текстовых данных, Perl имеет очень развитую функциональность и широкую сферу применения, в том числе, и для решения научных задач [55]. Интерпретатор Perl портирован на большинство распространённых платформ, включая ОС семейства Windows и *nix-системы, что позволяет выполнять написанные на нём скрипты (программы) под управлением любой из них без каких-либо дополнительных усилий. Разработка и отладка приложений на Perl занимает сравнительно мало времени, поскольку не требует перекомпиляции кода во время проведения экспериментов или исправления ошибок, а сам язык обладает очень высокой смысловой ёмкостью (конструкции Perl выражают на единицу программного кода гораздо больше выполняемых ЭВМ действий, чем традиционные языки программирования, такие как Pascal, C++) и богатой встроенной функциональностью (в т.ч. развитой поддержкой динамической типизации и структур данных). При всём этом, Perl обладает очень высокой производительностью, в ряде случаев не слишком сильно уступая даже компилируемым языкам, таким как C++. Использование интерпретатора Perl 84 бесплатно (он представляет собой СПО), ограничения в распоряжении написанными с его использованием программами отсутствуют. В силу развитых возможностей взаимодействия с системным окружением, программы на Perl хорошо интегрируются в существующую программную инфраструктуру. Основываясь на вышеперечисленном, а также на наличии положительного опыта разработки с использованием вышеуказанного языка, было принято решение о разработке программного комплекса оценивания вектора состояния эталонов времени и частоты с использованием языка Perl. Исходя из требований минимизации трудозатрат на разработку, было принято решение реализовать текстовый (“консольный”) интерфейс программы. Разработка графического интерфейса хотя и возможна, но не оправдана, т.к. для исследовательской работы он не требуется, а при внедрении программного комплекса в ИТ-инфраструктуру того или иного эталона могут возникнуть различные требования, предусмотреть которые заранее не представляется возможным. Возникающую же в период проведения исследований задачу визуализации результатов экспериментов (построение графиков, автокорреляционных и частных автокорреляционных функций и т.п.), а также ряд типовых статистических задач (проверка выборок на нормальность и др.) было решено возложить на внешнее средство. Поскольку в процессе проводимых исследований уже использовался пакет StatSoft Statistica версий 6.0 и 8.0, было решено выполнить интеграцию с ним. Данный пакет имеет поддержку технологии OLE, позволяющей организовать взаимодействие с экземпляром процесса извне, в частности, из другого приложения. В свою очередь, модуль Win32::OLE позволяет Perlприложениям в среде Windows получать доступ к функциональности программ, поддерживающих такой интерфейс. В дальнейшей эксплуатации возможности интеграции со StatSoft Statistica не требуются и приложение может функционировать на любой другой платформе. 85 3.2. Структура специализированной системы моделирования Специфика выполнения исследований в таких системах, как эталоны времени и частоты состоит в том, что возможность непосредственного контроля точности получаемых результатов отсутствует. Действительно, прямые измерения оцениваемых величин невозможны: сущность эталона такова, что он хранит физическую величину с точностью, превосходящей точность любых других приборов. Для вторичных эталонов возможно использование результатов внешних сличений с Государственным эталоном [19], однако они сами по себе также содержат существенные погрешности и шумы, неизбежно возникающие в подсистеме сличения. Получить от реального эталона исходные временные ряды, соответствующие подаваемым на вход алгоритма обработки измерительной информации разностным рядам, таким образом, невозможно. Единственным приемлемым способом исследования алгоритма является математическое моделирование [48]. Необходимо заменить реальный эталон (его подсистему хранения, включающую водородные генераторы и измерительную систему) математической моделью, реализовав её в составе создаваемого программного комплекса и обеспечив необходимыми средствами проведения исследований. После этого можно выполнить исследования с использованием сгенерированных этой моделью данных так, как если бы эти данные поступали от эталона. Сформулируем требования к модели. Реальный эталон времени и частоты включает в себя N>1 водородных стандартов частоты, один из которых является опорным. Измерительной системой эталона попарно производятся взаимные измерения, при которых хранимые генераторами значения частоты сличаются между собой, полученные ряды разностей относительных отклонений частоты в количестве N-1 являются исходной информацией для оценивания. Требуемая математическая модель должна позволять получить на её выходе N рядов “истинных” значений величин, а также построить на их основе N-1 разностных рядов – результатов 86 “взаимных измерений”. После обработки данных полученные оценки могут быть сопоставлены с исходными рядами и таким образом определена точность алгоритма оценивания. Кроме того, должна обеспечиваться возможность наложения линейного тренда с заданным постоянным уровнем и углом наклона на полученные исходные ряды, с целью моделирования процесса оценивания при наличии в данных линейных трендов. В связи с отсутствием корреляции между частотами различных хранителей, модель эталона времени и частоты может быть разделена на N моделей генераторов и модель объединяющей их измерительной системы. При выборе класса моделей, описывающих водородные стандарты, следует исходить из следующих соображений. Во-первых, имевшие место ранее исследования [56, 59], говорят о том, что реальные водородные стандарты частоты удовлетворительно описываются моделями авторегрессии – проинтегрированного скользящего среднего. Во-вторых, используемый математический аппарат опирается на применение моделей АРСС. Таким образом, в идеальном случае и при отсутствии детерминированного тренда наиболее точная оценка будет получена в случае, если при оценивании будет использоваться точно такая же модель хранителя, как и при генерации синтетических данных. Исходя из всего сказанного, логично использовать для отладки методики оценивания вектора состояния, основанной на авторегрессионных моделях, в качестве моделей стохастической составляющей выходного сигнала генераторов модели АРСС вида: ytсл 1 yt 1 ... pd yt pd 1at 1 ... q at q at (3.1) Структура модели задаётся для каждого i-го генератора индивидуально путём задания параметров pi и qi. Также задаются значения коэффициентов авторегрессии i, j и скользящего среднего i, j . В (3.1) соответствующие индексы для простоты опущены. Генерация рядов выполняется в порядке возрастания номера члена, на каждом шаге t генерируется нормально распределённая случайная величина at с заданными характеристиками 87 (нулевым математическим ожиданием и заданным с.к.о.), которая запоминается для следующих шагов (в зависимости от выбранного количества членов скользящего среднего). Для моделирования детерминированного тренда можно использовать модели АРПСС, в которых порядок разности больше нуля. Однако наиболее просто детерминированный тренд каждого ряда может быть смоделирован при помощи линейных моделей: ytтр b1t b 0 (3.2) Член b 0 в таком случае описывает постоянную составляющую ряда, соответствующую начальному значению относительного отклонения частоты в момент “привязки” эталона (её можно было бы включить и в модели АРСС, однако это менее удобно с точки зрения дальнейшей интерпретации результатов). Наложение тренда в таком случае производится простым суммированием детерминированной и стохастической составляющей: yiген yiтр yiсл (3.3) Измерительная система, которая не вносит собственных шумов и формирует разностные ряды, моделируется для j-го хранителя в каждый момент времени простым вычитанием: z ген y1ген y ген j j (3.4) Сгенерированные моделью измерения поступают на вход алгоритма оценивания так, как будто это – реальные данные. Алгоритм осуществляет построение оценок вектора состояния элементов модели эталона времени и частоты ŷi для каждого момента времени t. На выходе алгоритма, таким образом, имеется N рядов оценок. Имея N рядов исходных наблюдений yiген и столько же рядов оценок yˆ i ,t , ,t подаём эти ряды на элемент сравнения. Сравнение может выполняться различными способами – как путём непосредственного сравнения значений 88 рядов между собой (в т.ч. с вычислением рядов остатков и их последующим анализом), так и путём вычисления и последующего сравнения тех или иных статистик по рядам. Структурная схема системы моделирования приведена на рис. 3.1. Модель эталона Генерация стохастических составляющих y1сл,t y2сл,t y Nсл1,t … y Nсл,t Наложение линейных трендов y1ген ,t y2ген,t y Nген1,t … y Nген,t Вычисление разностных рядов z1ген ,t z2ген,t z Nген1,t … Алгоритм оценивания: удаление трендов определение структуры моделей оценивание состояния восстановление трендов yˆ1,t yˆ 2 ,t … yˆ N 1,t yˆ N ,t Yt ген Сравнение Ŷt с Yt ген Рис. 3.1 – Структурная схема системы моделирования На практике, в данной работе элементы системы моделирования были реализованы в составе программного комплекса для оценивания вектора состояния эталонов времени и частоты как его составная часть. Генерация рядов выполняется одним из модулей программного комплекса, анализ результатов может выполняться как внутри программного комплекса его собственными средствами, так и сторонними приложениями. 89 3.3. Алгоритм и особенности его программной реализации После принятия основных решений, связанных с концепцией и выбором используемых технологий и подходов к реализации приложения, стало возможно приступить собственно к разработке ПО. Для этого, потребовалось проанализировать предлагаемую методику с точки зрения разделения её на логические блоки. Функциональная модель процесса оценивания относительных отклонений частоты (по IDEF0) приведена на рис. 3.2-3.3. Процедура оценивания состояния по предлагаемой методике состоит из следующих основных этапов: 1. Оценивание детерминированных трендов и их удаление из рядов измерений. 2. Структурная идентификация моделей авторегрессии – скользящего среднего (АРСС). 3. Идентификация параметров моделей и оценивание состояния. Основным этапом является последний, объединяющий в себе процедуры параметрической идентификации (определения коэффициентов в моделях АРСС) и оценивания. Прочие этапы можно рассматривать как подготовительные по отношению к нему. Рис. 3.2 – Контекстная диаграмма оценивания относительных отклонений частоты с помощью программного комплекса 90 Рис. 3.3 – Декомпозиция процесса оценивания относительных отклонений частоты с помощью программного комплекса Представляется необходимым привести алгоритм в целостном виде с учётом особенностей его программной реализации. Оценка относительного отклонения частоты опорного генератора на каждом такте работы алгоритма находится как N N i 1 i 1 yˆ оп ,t wi zi ,t yˆ i ,t|t 1 wi y оп ,t yi ,t yˆ i ,t|t 1 (3.5) где yˆ i ,t|t 1 – прогноз, вычисленный на предыдущем такте, wi 1 - вес i-го хранителя. N Оценки для остальных генераторов вычисляются как yˆ i ,t yˆ оп ,t zi ,t (3.6) Идентификация параметров моделей осуществляется путём оптимизации функционала вида n N 1 I zi ,t yˆ оп ,t|t 1 yˆ i 1,t|t 1 . t 1 i 1 Прогноз yˆ i ,t|t 1 для i-го генератора вычисляется как: 2 (3.7) 91 yˆ i ,t|t 1 1 yˆ i ,t 1 2 yˆ i ,t 2 ... t yˆ i ,t p 1ai ,t 1 ... q ai ,t q , (3.8) где j – коэффициенты авторегрессии, j – коэффициенты скользящего среднего, p – количество включенных членов авторегрессии, q – количество включенных членов скользящего среднего, ai ,t q – белый шум. Значения j , j , p, q – разные для каждого генератора, соответствующие индексы здесь и далее опущены для краткости. Ошибка прогноза предыдущего шага расценивается, как ai,t-1 на следующем шаге. Фактически, при минимизации (3.7) производится минимизация ошибки прогноза. Берутся некоторые начальные приближения для коэффициентов в моделях авторегрессии (они могут быть приняты нулевыми, либо вычислены заранее с использованием рядов предварительных оценок). Итеративно выполняется вычисление рядов оценок по формулам (3.5) и (3.6) и минимизация функционала (3.7). Таким образом, в процедуре идентификации моделей используются результаты предыдущей итерации процедуры оценивания, а оценки строятся на основании обновлённой модели. Оптимизация функционала осуществляется посредством метода градиентного спуска с дроблением шага [54]. Последовательно производится численное дифференцирование вперёд методом двух точек (как наиболее быстрым – высокая точность вычисления производных для данной задачи не требуется) по каждому коэффициенту моделей АРСС (с шагом x =0.0001), для чего вычисляется исходное значение функционала (3.7) и значение функционала после приращения по той переменной, по которой в данный момент ведётся дифференцирование, и находится их разность: I I x x I x . x x Данная процедура является достаточно (3.9) ресурсоёмкой, поскольку ресурсоёмкой задачей является вычисление функционала (3.7) вообще: требуется пересчёт оценок для каждого ряда i на все моменты времени t. 92 В результате, находим градиент функционала I: I I I I I 1 , p ,1 , q ,, , , , . p 1 q 1 (3.10) Параллельно с этим, вычисляется евклидова норма градиента: 2 2 I q I . I 2 m 1 m l 1 l p (3.11) Используя градиент и норму градиента, выполняется очередной шаг в сторону антиградиента: I i Cˆ i 1 Cˆ i m I i Cˆ , Cˆ i (3.12) i где 1 - величина шага (задан равным 0.025), Cˆ 1 , p ,1 , q . Производится проверка выполнения условий (учитывая I i I Cˆ i ): I i I i 1 0.1 m I i , (3.13) I i I i1 0 , (3.14) m 1 109 , (3.15) Условия (3.14) и (3.15) связаны, преимущественно, с точностью представления чисел в ЭВМ и исключают выполнение не имеющих смысла итераций. Если выполняются все три условия, то происходит дробление шага m m1 . (3.14) Коэффициент дробления шага принят равным 0.5, т.е. шаг делится пополам. После дробления шага вновь выполняется вычисление значения функционала (3.7), но уже с новым значением m и вновь проверяется соответствие условиям (3.13)-(3.15). Если значение является приемлемым (условия перестают выполняться), итерация завершается. Проверяется, является ли снижение функционала 93 I i 1 I i достаточно существенным, в данном случае условие не выполняется, если модуль разности меньше 0.005. I i1 I i 0.005 . (3.17) Если условие выполняется, то считается, что заданная точность достигнута и процесс оптимизации завершается. Также процесс завершается, если количество итераций превышает 80 – считается, что если условие не выполнено за такое количество итераций, то структура модели выбрана неудачно (не обеспечивает сходимости прогнозирования) и дальнейшие затраты вычислительных ресурсов на неё не оправданы. Оценки, полученные на каждой итерации при вычислении функционала, сохраняются в памяти. Если итерация является последней, то эти оценки и являются результатом выполнения процедуры оценивания вектора состояния эталона. Таким образом, задача идентификации и задача оценивания решается параллельно, в тесной взаимосвязи друг с другом. Описанный алгоритм является основой функционирования всего программного комплекса. Его упрощённая блок-схема приведена в Приложении 4. Кроме идентификации параметров моделей, имеет место задача идентификации структуры моделей. Ранее были описаны два способа решения этой задачи – способ, основанный на переборе наиболее вероятных структур моделей и последующем выборе оптимальной, и способ, базирующийся на использовании рядов предварительных оценок. В программном комплексе реализованы обе методики. Реализация первой из них, основанной на последовательном наращивании порядков модели, строится на том, что для моделей с количеством членов обоих типов от 0 до 3 или 4 выполняется оптимизация функционала I, после чего вычисляются значения критерия вида: I3 I , N (n k ( p q)) где N – число исходных рядов (генераторов), n – число членов в каждом ряду (объём выборки), k=3 – добавочный коэффициент. (3.18) 94 Результаты помещаются в массив, который сортируется по значению выражения (3.18), выбирается наименьший результат и используется для дальнейших вычислений. Альтернативный вариант основывается на том, что вычисляются как среднее арифметическое измерений предварительные оценки состояния вида: yˆ1 1 N 1 zi . N i 1 (3.19) Оценки остальных генераторов вычисляются по формулам (3.6). После этого строятся ЧАКФ и АКФ полученных рядов, которые исследуются с целью определения структуры моделей по методике БоксаДженкинса. С целью экономии времени на разработку, было решено использовать для визуализации АКФ и ЧАКФ средства StatSoft Statistica, как это описывалось ранее. Таким образом, при работе в таком варианте, комплекс запрашивает пользователя о необходимости экспорта в Statistica. Если пользователь отказывается, то ряды экспортируются в текстовые файлы (для визуализации иными средствами). В случае согласия пользователя, результаты экспортируются в Statistica, где по ним строятся ЧАКФ и АКФ. Пользователь анализирует полученные графики функций, идентифицирует порядки АР и СС и указывает их в программе оценивания состояния. Далее определённая таким образом структура используется для построения моделей и получения уточнённых оценок состояния системы. Другой важной задачей является оценка и удаление линейных трендов. Реализацией методики предусматривается оценивание и исключение из рядов взаимных измерений линейных трендов по заданным априорным сведениям о них. В качестве таковых могут использоваться полученные в процессе “привязки” эталона постоянные составляющие и оцененные через ряды внешних сличений эталона коэффициенты угла наклона. Пользователь может задействовать процедуру “дооценивания” тренда, весьма похожую по реализации на процедуру минимизации функционала I. Отличие состоит в используемой при этом модели – вместо моделей АРСС, используется линейная 95 модель вида yˆ iтр,t bi1t bi0 . Оптимизируется методом градиентного спуска с дроблением шага функционал вида n N 1 I Т z i,t bˆ11t bˆ01 bˆ1i t bˆ0i . 2 (3.20) t 1 i 1 При этом шаг градиентного спуска выбирается значительно меньшим, чем в случае функционала (3.7), порядка 0.0005. Также меньшим выбирается и шаг дифференцирования x =0.00001. Это объясняется тем, что при больших значениях t даже незначительное приращение коэффициента угла наклона даёт очень большой рост значения функции, таким образом, для обеспечения сходимости алгоритма следует использовать очень малое приращение. После определения параметров трендов, детерминированные составляющие удаляются из рядов измерений ziсл,t zi ,t yˆ1тр,t yˆ iтр,t . (3.21) Таким образом, в оценивании состояния участвует только стохастическая составляющая рядов ziсл,t . При подготовке окончательных результатов, тренды накладываются вновь. Ввиду того, что при исследовании реальных данных, поступивших от аппаратуры эталона времени и частоты возможность получить исходные ряды наблюдений отсутствует, функционирования возникают алгоритма. сложности Отсутствует с оценкой возможность качества сопоставления истинных значений оцениваемых величин и полученных оценок с целью анализа имеющегося расхождения. В связи с этим, была создана система моделирования, предназначенной для отработки данного алгоритма. Подробно подход к построению системы моделирования рассмотрен в соответствующем разделе. В результате принята концепция, при которой реальный эталон, состоящий из водородных стандартов частоты, объединённых измерительной системой, заменяется его моделью. Генераторы при этом заменяются авторегрессионными моделями временных рядов (моделями АРСС), а измерительная система, формирующая разностные ряды – операцией 96 вычитания. Блок генерации синтетических данных был встроен в программный комплекс в качестве одного из возможных источников данных. Случайная составляющая ряда генерируется моделями вида yiсл,t i ,1 yi ,t 1 ... i , p yi ,t p i ,1at 1 ... i ,q ai ,t q ai ,t . (3.22) Сложность модели задаётся для каждого генератора индивидуально путём изменения параметров pi и qi. Генерация рядов выполняется в порядке возрастания номеров их элементов, на каждом шаге t генерируется нормально распределённая случайная величина at с заданными характеристиками (нулевым математическим ожиданием и заданным с.к.о.), которая запоминается для следующих шагов (в зависимости от выбранного количества членов скользящего среднего). Детерминированный тренд ряда моделируется при помощи линейных моделей yiтр,t bi1t bi0 . (3.23) Далее тренд накладывается на сгенерированную ранее стохастическую составляющую: yiген yiтр yiсл,t . ,t ,t (3.24) Измерительная система не вносит собственных шумов и моделируется вычитанием соответствующих членов рядов ziген yiген yiген ,i ,1 ,i . (3.25) В результате, на выходе блока генерации данных получаются ряды “измерений”, имитирующих данные, поступающие от измерительной системы эталона. Кроме описанной базовой функциональности, в программном комплексе реализован ряд сервисных функций, таких как ввод данных от внешних источников и вывод данных с их визуализацией. Ввод данных организован из текстовых файлов. Был разработан формат файла для описания настроек блока генерации рядов (поскольку они достаточно объёмны и ручной ввод 97 затруднителен), а также – блок обработки таких файлов с контролем правильности считанных данных. Для каждого исходного ряда (соответствующего “водородному стандарту”) задаются параметры линейных трендов и порождающей его модели АРСС, а также случайного шума. Ввод числовых данных осуществляется из текстовых файлов, где данные разделены знаками табуляции и переводами строк. Файлы имеют секцию trends для задания априорных сведений о линейных трендах и секцию series для размещения значений рядов. В качестве перспективного направления развития рассматривается использование формата файлов RINEX, являющегося индустриальным стандартом. Следует отметить, что размерность обрабатываемых данных (количество временных рядов и объём выборки) явных ограничений не имеет и, таким образом, ограничена только вычислительными возможностями системы и особенностями используемой в системе версии интерпретатора Perl. Результаты работы программы также выводятся в файлы сходного формата, кроме того, часть сервисной информации выводится в поток стандартного вывода (в консоль ОС). Для оперативной обработки и отображения результатов используется интеграция с пакетом Statistica компании StatSoft посредством технологии OLE. Естественно, что такая возможность доступна только при наличии указанной программы на ПК пользователя. 98 3.4. Результаты разработки программного комплекса В результате реализации предлагаемой методики оценивания состояния был разработан программный комплекс, основными функциями которого является: 1. Генерация (синтез) данных по заданным моделям АРСС и характеристикам детерминированных составляющих рядов. 2. Ввод реальных или ранее сгенерированных данных (рядов) из файла. 3. Выявление и исключение линейных трендов в исходных данных. 4. Построение оценок по методу среднего арифметического. 5. Идентификация порядка моделей АРСС: способом последовательного перебора моделей, через предварительные оценки. 6. Построение оценок с использованием моделей АРСС: подгонка моделей методом градиентного спуска: с нулевыми начальными приближениями, с начальными приближениями, полученными по рядам предварительных оценок. получение оценок относительных отклонений частоты эталона. 7. Вывод промежуточных и окончательных результатов в файлы и на экран (в терминал). 8. Экспорт промежуточных и окончательных результатов в ППП StatSoft Statistica. Приложение, реализованное с использованием языка программирования Perl версии 5.8 имеет простой текстовый (“консольный”) интерфейс и работает в диалоговом режиме. Упрощённая схема взаимодействия пользователя с программным комплексом и выполнения составляющих реализованную методику процедур приведена на рис. 3.4. 99 Генерация N рядов по моделям АРПСС Получение N-1 разностных рядов Ввод N-1 разностных рядов из файла Предварительная обработка данных Оценка и удаление трендов Построение рядов МНК-оценок Построение и вывод АКФ, ЧАКФ Пользователь Задание структуры модели Построение моделей рядов (Градиентный метод с дроблением шага) Оценивание вектора состояния системы Постобработка и вывод Рис. 3.4 – Упрощённая схема функционирования программного комплекса Приложение реализовано с использованием структурного подхода к программированию и состоит из ряда модулей: model_arima.pl – функциональность, связанная с построением моделей АРСС и оцениванием с их использованием; model_average.pl – функциональность, связанная с построением оценок методом среднего арифметического; model_generate.pl – генерация синтетических рядов; model_io.pl – ввод и вывод данных; model_main.pl – главный модуль; model_single_arima.pl – функциональность, связанная с подгонкой моделей АРСС к одиночным рядам; model_trends.pl – функциональность, связанная с исключением и наложением детерминированных трендов; model_utl.pl – вспомогательные функции; Листинги модулей, составляющих программный комплекс, приведены в Приложении 5. Важной особенностью является то, что вся логика пользовательского взаимодействия содержится в файле главного модуля 100 model_main.pl. Остальные модули могут использоваться в качестве библиотечных файлов исходных кодов в составе других проектов – как совместно, так и в отдельности. Это в полной мере соответствует концепции модульности и повторного использования кода в дальнейшей деятельности. Хотя специальных мер по глубокой оптимизации разрабатываемого программного обеспечения не предпринималось и задачи разработать максимально производительное приложение не ставилось, был проведён определённый анализ производительности приложения и наиболее затратных с точки зрения вычислений частей алгоритма. Особенно интересными являются результаты, связанные с выбором начальных приближений для процедуры оптимизации функционала I. Кроме наиболее простого варианта с выбором нулевых начальных приближений, была рассмотрена альтернативная вычислительная схема, основанная на использовании рядов предварительных оценок, выполненных по методу среднего арифметического. Было предложено изначально подгонять (раздельно) модели АРСС к рядам предварительных оценок, получая, таким образом, начальные приближения для процедуры оптимизации, а уже после этого уточнять в процессе оптимизации функционала I. Вопреки имевшемуся мнению об избыточности подобных вычислений, такой подход оказался весьма эффективным, ускорение составило более 2,5 раз. Например, при одинаковых исходных данных (5 рядов реальных данных длиной 90 значений) проводились вычисления тем и другим способом. Были получены идентичные результаты, однако суммарное время вычислений в случае использования начальных приближений, найденных через предварительные оценки, оказалось существенно ниже (1,44 секунды против 4,08 секунды). При этом время, затраченное собственно на процедуру оценивания снизилось ориентировочно в 10 раз. Следует отметить, что анализ использования процессорного времени показал возможность дальнейшей оптимизации процедуры минимизации копирования данных в оперативной памяти. за счёт 101 Распределение затрат процессорного времени по различным функциям приложения приведёно на рис. 3.5-3.6. Как можно увидеть, функция оценивания состояния model_params_estimation с вложенными в неё функциями отнимает наибольшую долю процессорного времени в случае использования нулевых начальных приближений. Из вызываемых ею функций наиболее значимы по затратам функция прогнозирования gen_next_observation и функция построения оценки частоты на момент времени t freq_estimation_on_t. Это вполне объяснимо, хотя возможна дополнительная оптимизация, например, путём использования inline-функций. Config::AUTOLOAD Data::Dump::BEGIN DynaLoader::BEGIN DynaLoader::dl_load_file main::BEGIN main::copy_params_struct main::copy_series_struct main::freq_estimation 0,03 0,03 0,02 0,02 0,02 0,02 0,06 0,06 0,16 0,02 0,11 0,11 0,26 0,15 17,26 0,22 17,04 main::freq_estimation_on_t 5,36 9,24 9,24 main::gen_next_observation main::model_params_estimation main::print_two_rows Storable::BEGIN Win32::OLE::Dispatch Win32::OLE::new 18,17 0,64 0,02 0,02 0,05 0,03 0,09 0,08 0,08 0,08 Собственное время (сек.) Время с учётом вложенных процедур (сек.) Рис. 3.5 – Распределение затрат процессорного времени по различным функциям приложения при использовании нулевых начальных приближений В случае использования предварительной подгонки моделей для получения начальных приближений картина отличается. Доля затрат на функцию model_params_estimation резко снижается, как снижается и абсолютное время её выполнения. Зато появляются затраты на вызовы функции индивидуальной подгонки моделей АРСС model_params_estimation_sing. При этом непропорционально увеличивается время выполнения функции copy_series_struct, копирующей структуру, содержащую временной ряд. Это 102 связано с неоптимальной опытной реализацией model_params_estimation_sing и может быть устранено при оптимизации работы приложения с данными в памяти. Суммарное же время выполнения оказалось ниже более чем в два раза. ActiveState::Path::BEGIN Config::AUTOLOAD Data::Dump::BEGIN DynaLoader::dl_load_file Exporter::import main::BEGIN 0,03 0,02 0,05 0,02 0,02 0,02 0,03 0,03 0,02 0,02 0,19 0,05 1,01 main::copy_series_struct main::export_row 0,94 0,05 0,01 0,62 main::freq_estimation_single main::model_params_estimation 0,17 1,79 0,08 1,99 main::model_params_estimation_single main::print_two_rows Storable::BEGIN vars::BEGIN Win32::OLE::new 0,43 0,03 0,03 0,06 0,03 0,02 0,02 0,05 0,05 Собственное время (сек.) Время с учётом вложенных процедур (сек.) Рис. 3.6 – Распределение затрат процессорного времени по различным функциям приложения при использовании начальных приближений, полученных через ряды предварительных оценок Развёрнутые сведения о точности получаемых оценок, выявленных при работе с реальными данными особенностях и результатах испытаний методики в целом приводятся в последующих главах. 103 3.5. Выводы В результате проведённых исследований был создан программный комплекс, реализующий предлагаемую методику оценивания относительных отклонений частот в эталонах времени и частоты по результатам выполняемых в эталоне измерений. Методика подтвердила свою работоспособность и эффективность. Результаты тестирования созданного программного продукта говорят о правильности выбранных решений. Разработанный программный комплекс для оценивания состояния эталонов времени и частоты по результатам взаимных измерений внедрён в деятельность ВСФ ВНИИФТРИ. Пройдена процедура регистрации созданного программного средства, в результате которой получено Свидетельство о государственной регистрации программы для ЭВМ №2012617062 (см. Приложение 2). Вместе с тем, имеется целый ряд направлений для доработки и дальнейшего развития данного продукта. В частности, исследование реальных данных, поступивших от эталона ВЭТ 1-5 ВСФ ВНИИФТРИ, показало, что в ряде случаев ряды могут иметь не только линейный тренд, но и квадратичный. Вследствие этого одним из направления развития является совершенствование и расширение функциональности блока оценивания тренда таким образом, чтобы он поддерживал детерминированные составляющие более высоких порядков. Также актуальным вопросом является унификация форматов обмена данными, например, путём использования широко распространённого формата RINEX. 104 Глава 4. Экспериментальная проверка алгоритма в режиме моделирования и при работе с реальными данными эталона ВЭТ 1-5 4.1. Моделирование процесса оценивания линейных трендов Специфика проведения исследований в отношении эталонов времени и частоты состоит в том, что возможность непосредственного контроля точности получаемых результатов отсутствует и прямые измерения оцениваемых величин невозможны. Для вторичных эталонов возможно использование результатов внешних сличений с Государственным эталоном, однако они содержат погрешности и шумы, возникающие в каналах сличения. Получить от реального эталона исходные временные ряды, таким образом, невозможно. Следовательно, единственным приемлемым способом проверки точности алгоритма является моделирование, при котором реальный эталон заменяется математической моделью и появляется возможность сопоставить истинные значения рядов с оценками. В этом и последующих разделах будет подробно рассмотрен процесс и результаты моделирования различных этапов функционирования предлагаемого алгоритма оценивания состояния. Затем будут рассмотрены результаты проверки алгоритма на реальных данных вторичного эталона ВЭТ 1-5, при сопоставлении оценок с рядами внешних сличений. На первом этапе обработки поступающих на вход алгоритма разностных рядов осуществляется выявление в них детерминированных трендов, определение их характеристик и устранение влияния этих трендов на ряды наблюдений. Как уже говорилось ранее, возможны различные подходы к обработке данных, содержащих детерминированную составляющую. При выбранном подходе, основанном на подгонке соответствующих моделей (линейных или более сложных) и последующем удалении трендов из рядов наблюдений, могут возникать следующие ситуации: 105 1. Коэффициенты моделей тренда bi j известны заранее (например, предварительно оценены по рядам внешних сличений эталона). 2. Отсутствует наклон в одном из рядов взаимных измерений i: di1 0 , следует предполагать отсутствие трендов у опорного генератора и генератора, для которого выполнялось взаимное измерение (совпадение коэффициентов угла наклона трендов b11 bi1 0 крайне маловероятно). 3. Какая-либо априорная информация о тренде отсутствует, все ряды наблюдений имеют наклон. Погрешность оценивания тренда в этом случае может быть существенной, поскольку система является недоопределённой. Будем использовать при машинных экспериментах следующую общую методику. Сгенерируем ряды “наблюдений” по некоторым заданным моделям АРСС (наложив на них псевдослучайный шум). Количество исходных рядов в эксперименте – 4, количество полученных из них разностных рядов – 3, длина рядов – 300. Параметры моделей приведены в Таблице 1. Остальные параметры указываются дополнительно. В случае, когда коэффициенты угла наклона известны точно заранее, будет достигнуто точное соответствие истинного тренда его линейной модели, что было подтверждено моделированием (рис. 4.1) – ряды оценок и исходные ряды практически совпали. Параметры тренда приведены ниже: b10 20 b20 10 b30 5 b40 25 b11 0.1 b21 0.2 b31 0.3 b41 0.3 При внесении “погрешности” в “априорные сведения” о тренде, возникнет погрешность, нарастающая с ростом времени t. Например, для опорного генератора вместо истинных значений b11 0.1 и b10 20 были заданы значения b11 0.12 и b10 18 . Возникающее при этом нарастающее с течением времени расхождение хорошо видно на рис. 4.2. 106 y 29,0 28,0 27,0 26,0 25,0 t 50 60 70 80 90 Рис. 4.1 – Сопоставление исходных рядов и рядов оценок состояния опорного генератора при точном задании угла наклона тренда (фрагмент рядов длиной 40) Второй случай, когда из отсутствия наклона в одном из рядов наблюдений делается вывод об отсутствии тренда у соответствующего генератора, а также у опорного генератора (после чего исходя из этих соображений коэффициенты угла наклона остальных генераторов непосредственным образом вычисляются из оставшихся разностных рядов), достаточно очевиден в случае моделирования и должен быть исследован на реальных данных. y 50 40 30 20 10 t 70 140 210 290 Рис. 4.2 – Сопоставление исходного ряда (сплошная линия) и ряда уточнённых оценок (пунктирная линия) при внесённом намеренно расхождении угла наклона тренда и уровня постоянной составляющей (для опорного элемента) Проиллюстрируем последний, третий вариант (при котором информация о тренде отсутствует, и нет оснований делать какие-либо предположения о нём) следующим машинным экспериментом. Воспользуемся ранее описанной методикой, параметры моделей для которой приведены в Таблице 1. Наложим 107 на них линейные тренды с заданными коэффициентами наклона, после чего осуществим минимизацию суммы квадратов отклонений разностных рядов от соответствующих разностей трендов. Результат существенным образом зависит от выбранных начальных приближений, поэтому были опробованы различные их значения. В Таблице 2 сопоставляются истинные значения и значения оценок трендов при различных начальных приближениях. На рис. 4.3-4.6 показаны в графической форме результаты моделирования для некоторых наиболее характерных случаев. Рис. 4.3 (соответствует случаю №1 в Таблице 2) показывает результат при случае, когда начальные приближения взяты с большим удалением в сторону от истинных коэффициентов угла наклона. Как видно, при этом сохраняется угол между соответствующими рядами первого и второго генераторов, однако углы наклона относительно осей координат оказываются далеки от истинных. Та же ситуация складывается на рис. 4.6 (соответствует случаю №6 Таблицы 2) – “пучок” рядов оценок оказывается повёрнут вокруг начала координат относительно исходных рядов на постоянный угол. На рис. 4.4 (соответствует случаю №2 Таблицы 2) начальные приближения взяты весьма близкими к истинным значениям, т.е. моделируется уточнение коэффициента угла наклона линейного тренда (например, в случае, когда его значение известно приближённо из рядов внешних сличений эталона). В этом практически значимом случае процедура сходится к истинным значениям. На рис. 4.5 (соответствует случаю №5 Таблицы 2) показана ситуация, при которой начальные приближения взяты нулевыми, т.е. существенно отличающимися от истинных значений, однако истинные N значения удовлетворяют условию b i 0. В этом случае оценки i 1 коэффициентов угла наклона также оказываются близки к истинным значениям. 108 Таблица 1 Номер ряда Порядок авторегрессии 1 p1=0 2 p2=0 Коэффициенты авторегрессии - - Порядок скользящего среднего q1=1 q2=2 θ1=0.2 θ2=-0.1 1 0.01 2 0.02 Коэффициенты скользящего среднего с.к.о. псевдослучайного шума 3 p3=3 φ1=0.5 φ2=-0.3 φ3=-0.2 4 p4=2 φ1=0.5 φ2=-0.4 q3=0 q4=0 - - 3 0.01 4 0.02 θ1=0.35 y 80 Г-2 60 40 Г-1 20 оценки Г-2 0 -20 -40 оценки Г-1 1 70 140 t 210 290 Рис. 4.3 – Взаимное положение исходных рядов (сплошная – генератор 1, пунктир – генератор 2) и рядов оценок (точки – генератор 1, штрих-пунктир – генератор 2) для случая №1. y 16 Г-2 12 Г-1 8 оценки Г-2 4 оценки Г-1 0 10 20 30 40 50 t 60 Рис. 4.4 – Взаимное положение исходных рядов (точки – генератор 1, сплошная – генератор 2) и рядов оценок (ромбы – генератор 1, треугольники – генератор 2) для случая №2. Фрагмент из 50 точек. 109 y 20 Г-2 10 Г-1 оценки Г-2 0 оценки Г-1 оценки Г-3 -10 Г-3 Г-4 оценки Г-4 -20 10 20 40 30 t 50 60 Рис. 4.5 – Взаимное положение исходных рядов и рядов оценок (круги – генератор 1, квадраты – генератор 2, ромбы – генератор 3, треугольники – генератор 4) для случая №5. Фрагмент из 50 точек. y 20 оценки Г-2 Г-2 оценки Г-1 10 Г-1 оценки Г-3 0 Г-3 оценки Г-4 -20 10 20 Г-4 40 30 50 t 60 Рис. 4.6 – Взаимное положение исходных рядов (сплошная – генератор 1, мелкий пунктир – генератор 2, точки – генератор 3, крупный пунктир – генератор 4) и рядов оценок (круги – генератор 1, квадраты – генератор 2, ромбы – генератор 3, треугольники – генератор 4) для случая №6. Фрагмент из 50 точек. Как видно из результатов моделирования, сведённых в таблицу, в случае нулевых начальных приближений (т.е. при отсутствии каких-либо априорных N сведений о тренде) при выполнении условия b i 0 , полученные оценки i 1 коэффициента угла наклона весьма близки к исходным значениям. При невыполнении данного условия, оценки существенно расходятся с истинными значениями коэффициентов угла наклона, если только начальные приближения не выбраны достаточно близкими к истинным значениям так, чтобы N выполнялось условие b i нач bˆi 0 . В общем случае, для достаточно точного i 1 определения и устранения влияния тренда требуется иметь априорные сведения 110 о коэффициенте угла наклона линейной составляющей (по крайней мере, для опорного генератора). Таблица 2 № Реальные значения Начальные приближения Полученные оценки наклона 0.1 0 -0.0751 0.25 0.1 0.25 0 0 0 0.0749 -0.0750 0.0749 0.1 0.25 0.1 0.25 0.09 0.26 0.11 0.24 0.0999 0.2499 0.0999 0.2499 0.1 0.25 0.1 0.25 0.1 0.25 0.1 0.25 0.11 0.26 0.11 0.27 0.1 0.25 0.1 0.25 0.1125 0.2625 0.1124 0.2624 0.0999 0.2499 0.0999 0.2500 0.1 0 0.25 -0.1 -0.25 1 2 3 4 5 6 Реальные значения Начальные приближения Полученные оценки наклона 0.1 0.11 0.0999 0.25 -0.1 -0.25 0.24 -0.09 -0.26 0.2499 -0.1001 -0.2500 0.1 0.25 -0.1 -0.1 0.1 0.25 -0.1 -0.1 0.0999 0.2499 -0.1000 -0.1000 0.01 0.025 -0.01 -0.025 0.01 0.025 -0.01 -0.025 0.01 0.025 -0.01 -0.025 0.01 0.025 -0.01 -0.025 0.0100 0.0249 -0.0100 -0.0250 0.0100 0.0249 -0.0099 -0.0250 0.0999 0 0 -2.9105 0 0 0 0.2499 -0.1000 0.2500 0.01 0.025 -0.01 0.01 0.025 -0.01 0.0099 0.0250 -0.0100 0.1 0.25 0.1 0.1 0.1998 0.3499 -0.025 -0.025 -0.025 -0.025 -0.02515 -0.0249 -0.1 -0.25 0.1 0.1 0.0000 -0.1500 № 7 8 9 10 11 Результаты проведённого моделирования процедуры оценивания и исключения трендов позволяют сделать вывод о том, что предлагаемая методика исключения трендов из рядов взаимных измерений работоспособна. При соблюдении ряда условий возможно с приемлемой точностью моделировать тренд ряда и удалять его из ряда измерений, а после построения оценок стохастической составляющей – вновь накладывать на оценки. Следует, однако, отметить, что явления, связанные с детерминированными составляющими в реальных системах могут быть сложнее, чем это предполагается при моделировании, вследствие чего потребовалось проведение дополнительных исследований с использованием реальных данных. 111 4.2. Моделирование процесса структурной идентификации моделей АРСС в системах с неполной матрицей наблюдений Ранее были рассмотрены различные подходы к решению задачи структурной идентификации моделей авторегрессии - проинтегрированного скользящего среднего в недоопределённых системах. В частности, был предложен подход, основанный на последовательном наращивании сложности структуры моделей (с последующим выбором оптимальной), а также подход, основанный на построении рядов предварительных оценок относительных отклонений частоты. Полученные ряды затем используются при построении ЧАКФ и АКФ, применяемых для определения количества включаемых в модель АРСС членов авторегрессии и скользящего среднего. Для выбора наиболее оптимального способа проводилось моделирование функционирования данных алгоритмов. Как подчёркивалось ранее, модель не должна быть слишком сложной, поскольку чрезмерное увеличение количества включенных в её состав членов не оправдано ни с точки зрения точности, ни с точки зрения производительности. Так, при подгонке моделей размерности от (0,0,0) до (4,0,4) к рядам, сгенерированным по моделям с размерностью (1,0,0) введение в модель 1-3 членов скользящего среднего в ряде случаев отрицательно сказывалось на значении функционала I (2.22). Иными словами, точность прогнозов, построенных с помощью этих моделей, снижалась, при одновременном росте объёма выполненных вычислений. Таким образом, нельзя сделать вывод о безоговорочной полезности наращивания порядка моделей даже в гипотетических условиях неограниченных вычислительных ресурсов. В первую очередь, был рассмотрен подход, основанный на последовательном переборе возможных вариантов структуры с выбором наилучшего в том или ином смысле варианта. Основной проблемой этого метода является разработка адекватного критерия выбора оптимальной модели из множества перебираемых. При этом следует учитывать, что исходные ряды 112 могут наилучшим образом описываться и моделями АРСС различной структуры, однако индивидуальный перебор вариантов структур для каждого ряда является чрезмерно трудоёмким. В связи с этим, на практике речь идёт о некоторой компромиссной структуре, наиболее хорошо подходящей ко всем поступившим рядам наблюдений в их совокупности. В качестве варианта такого критерия был рассмотрен собственно функционал I (2.22). Поставленный эксперимент показал его непригодность в таком качестве. Наблюдалась тенденция к уменьшению значения функционала с ростом количества членов без учёта сложности моделей. Так, для случая двух разностных рядов (длиной 300), сгенерированных моделями АРСС порядка (1,0,0) “наилучшей” моделью была признана самая сложная (4,0,4), а модель структуры (1,0,0), которая была бы оптимальна в данном случае, оказалась лишь на семнадцатом месте. Требовалось непосредственно учесть при вычислении критерия вычислительную сложность модели, т.е. количество включенных в неё членов. В качестве альтернативного критерия выбора наилучшей модели было рассмотрено выражение I2 (2.31), включающее в числителе выражение I, а в знаменателе – число степеней свободы и вводящее некоторый “штраф” за сложность модели. Данный критерий применялся к ранее рассматривавшимся разностным рядам, построенным на основе моделей АРПСС (1,0,0). В результате в числе “наилучших” оказались модели с менее сложной структурой (4-6 членов вместо 5-8, что обусловлено исключением из их состава членов скользящего среднего), однако представляющаяся наиболее эффективной модель (1,0,0) находилась на 6-й позиции. Таким образом, критерий I 2 также приводил к выбору чрезмерно сложных структур моделей. В результате был предложен критерий I 3 (2.32), отличающийся от I 2 увеличенным на коэффициент k штрафом за усложнение модели. Критерий I3 применялся к случаю двух разностных рядов, сгенерированных по моделям АРПСС структуры (1,0,0), при различных 113 значениях k. Ожидаемый результат для множества исследуемых моделей был получен при k=3. Как видно из графика на рис. 4.6 (вертикальная ось показывает изменение функционала, левая – количество включенных членов скользящего среднего, правая – авторегрессии) и Таблицы 3, по этому критерию наилучшей признана модель с 1 членом авторегрессии без членов скользящего среднего, т.е. модель (1,0,0), что и требовалось. Следующие за ней две модели (1,0,1) и (2,0,1) также достаточно эффективны, наиболее сложные же модели оказываются в числе наихудших. Фрагменты рядов оценок и исходных значений для опорного элемента при структуре (1,0,0) приведены на рис. 4.7. Для 5 исходных рядов (4 разностных), сгенерированных на основе разнородных моделей (1,0,0), (2,0,0), (3,0,0) также был получен удовлетворительный результат (см. Таблицу 4): наилучшими признаны модели (3,0,1) и (3,0,2). Сходные результаты были получены и для других комбинаций исходных рядов, других их параметров, а также для рядов, включающих от 100 до 600 членов. Рис. 4.6 – Значения функционала I 3 в зависимости от выбранной структуры моделей при исходных процессах одинаковых порядков 114 y 0,4 исходный ряд 0,2 оценки среднего уточнённые оценки 0 -0,2 t 10 20 40 30 50 60 Рис. 4.7 – Ряды исходных значений (круги), оценок среднего (квадраты) и уточнённых оценок (ромбы) для опорного генератора. Фрагменты из 50 значений Таблица 3 № 1 2 3 4 5 6 7 8 9 10 11 12 13 АР СС 1 1 2 4 1 2 3 2 2 1 1 2 4 0 1 1 1 4 0 1 2 4 3 2 3 2 I3 I № АР СС I3 I 0,016843 0,017058 0,017072 0,017182 0,017192 0,017211 0,017227 0,017237 0,017240 0,017274 0,017289 0,017317 0,017354 14,85573 14,89219 14,75078 14,53642 14,54520 15,02530 14,72980 14,73830 14,43000 14,76928 14,93842 14,65081 14,52550 14 15 16 17 18 19 20 21 22 23 24 25 3 3 3 4 3 4 4 0 0 0 0 0 0 2 4 0 3 3 4 4 3 2 1 0 0,017386 0,017407 0,017412 0,017422 0,017436 0,017524 0,017610 0,018528 0,018752 0,019423 0,021135 0,031094 15,02168 14,72716 14,41783 14,89656 14,59456 14,51044 14,42336 15,84210 16,20251 16,95654 18,64131 27,70477 Таблица 4 № 1 2 3 4 5 6 7 8 9 10 11 12 13 АР СС 3 3 4 2 3 2 4 3 4 3 2 4 2 1 2 2 1 0 0 1 3 3 4 3 0 4 I3 I № 0,023562 0,023588 0,023733 0,023736 0,023746 0,023750 0,023824 0,023889 0,023951 0,024008 0,024061 0,024062 0,024123 33,57681 33,25919 33,10848 34,18021 34,19527 34,55734 33,59219 33,32595 33,05368 33,13180 33,92677 34,28841 33,65196 14 15 16 17 18 19 20 21 22 23 24 25 АР СС 2 4 1 1 1 1 1 0 0 0 0 0 2 4 4 3 2 0 1 4 3 2 1 0 I3 I 0,024130 0,024218 0,025412 0,025817 0,026265 0,027002 0,027627 0,027894 0,028915 0,029986 0,035955 0,048046 34,38665 33,05767 35,83218 36,78947 37,82227 39,69407 40,19740 39,74963 41,63871 43,63050 52,85447 71,34927 115 Таким образом, критерий I 3 пригоден для практического использования при определении структуры модели методом перебора для рядов, исследуемых в данной работе. Однако он не является универсальным, т.к. значение k определено эмпирическим путём - посредством проведения экспериментов на ограниченном множестве сгенерированных рядов, и для других случаев (рядов, имеющих другие характеристики породивших их процессов) наилучшее значение k может оказаться другим. В принципе, возможно разработать и иные, более сложные и учитывающие дополнительные факторы критерии выбора наилучших моделей, однако из уже проведённого моделирования можно сделать вывод о том, что применение подобной методики хотя и возможно, но имеет целый ряд ограничений. В частности, это достаточно большие затраты вычислительных ресурсов (которые станут особенно велики в случае раздельной идентификации порядков моделей) и неоднозначность самих критериев выбора. Существенным положительным моментом является возможность полностью автоматического выполнения данной процедуры. Проблема затрат вычислительных ресурсов может быть отчасти решена оптимизацией процедуры за счёт использования ненулевых начальных приближений в процедуре оптимизации (полученных, например, в результате оптимизации для предыдущей структуры, либо через раздельную подгонку моделей к рядам оценок, полученных по методу среднего арифметического). Далее был исследован альтернативный подход, основанный на адаптированной для случая систем с неполной матрицей наблюдений процедуре Бокса-Дженкинса. Предлагаемая методика структурной идентификации моделей АРСС основывается на использовании в качестве исходных рядов предварительных оценок (под предварительными понимаются МНК-оценки, вычисленные только по результатам измерений на каждом такте). По некоторым заданным (см. Таблицу 5) моделям АРСС генерировались синтетические ряды наблюдений длиной 300 значений в количестве четырёх. 116 Затем строились ряды предварительных оценок, после чего путём анализа их автокорреляционных (АКФ) и частных автокорреляционных (ЧАКФ) функций (рис. 4.8-4.13) определялись порядки моделей. Параметры моделей и полученные оценки параметров процессов АР и СС приведены в Таблице 5. Таблица 5 Номер ряда Исходный порядок авторегрессии 1 p1=0 2 p2=0 3 p3=3 4 p4=2 Полученный порядок авторегрессии p1=0 p2=0 p3=3 p4=2 Коэффициенты авторегрессии - - Исходный порядок скользящего среднего Полученный порядок скользящего среднего q1=1 q1=1 q2=2 q2=1 Коэффициенты скользящего среднего θ1=0.35 θ1=0.2 θ2=-0.1 с.к.о. псевдослучайного шума φ1=0.5 φ2=-0.3 φ3=-0.2 q3=0 q3=0 - φ1=0.5 φ2=-0.4 q4=0 q4=0 - 1 0.01 2 0.02 3 0.01 4 0.02 Рис. 4.8 – Выборочные АКФ и ЧАКФ исходного ряда №1 Как можно увидеть из визуального сравнения автокореллограмм исходных рядов и рядов оценок среднего арифметического, картина поведения функции для оценок в целом сходна с таковой для исходного ряда, однако некоторым образом “смазана”. Тем не менее, при известном уровне подготовки исследователя, структурная идентификация может быть с успехом проведена и 117 по таким АКФ и ЧАКФ. Конечно, этот процесс во многом носит субъективный характер – как и вся методика Бокса-Дженкинса в целом (так, даже в приведённом примере для исходного ряда № 1 структура может быть идентифицирована неоднозначно). Рис. 4.9 – Выборочные АКФ и ЧАКФ ряда грубых оценок для ряда №1 Рис. 4.10 – Выборочные АКФ и ЧАКФ исходного ряда №2 Рис. 4.11 – Выборочные АКФ и ЧАКФ ряда грубых оценок №2 118 Рис. 4.12 – Выборочные АКФ и ЧАКФ исходного ряда №4 Рис. 4.13 – Выборочные АКФ и ЧАКФ ряда грубых оценок №4 Анализируя АКФ и ЧАКФ, для ряда № 1 можно предположить структуры с p=1; q=0, либо p=0; q=1. Был выбран вариант (0,0,1). Важно отметить, что неоднозначной является и картина поведения АКФ/ЧАКФ исходного ряда. Для ряда № 2 является предпочтительной модель размерности (1,0,0), как альтернативную можно рассмотреть и (0,0,1). Меньшее число членов, чем в исходной модели, здесь может быть объяснено малостью соответствующего коэффициента исходного ряда. АКФ и ЧАКФ двух последних рядов дают однозначную картину: для ряда № 3 выбрана структура модели (3,0,0); для ряда № 4 - (2,0,0). Полученные в результате выполнения процедуры структуры моделей мало отличаются (см. Таблицу 5) от исходных (и даже при рассмотрении альтернативных моделей это не ведёт к усложнению модели – а лишь к смене типа процесса). 119 На основании данных результатов, выполнялась процедура оценивания. График, сопоставляющий 50 значений исходных рядов предварительных оценок и рядов уточнённых оценок для опорного “генератора”, построенных с использование результатов структурной идентификации по предложенной методике (рис. 4.14), наглядно иллюстрирует тот факт, что уточнённые оценки лежат ближе к значениям, составляющим исходный ряд, чем предварительные МНК-оценки. y исходные значения 0,2 уточнённые оценки 0,1 0 -0,1 -0,2 МНК-оценки -0,3 t Рис. 4.14 – Сопоставление исходного ряда (круги, сплошная линия), ряда оценок среднего (квадраты, пунктирная линия) и ряда уточнённых оценок (ромбы, точечная линия) для опорного элемента В числовом выражении, для данного примера сумма квадратов отклонений оценки опорного генератора от истинного значения составляет 1,20 для предварительных оценок и 1,06 для уточнённых (улучшение составило 12%). По результатам проведённого моделирования работы алгоритма следует сделать вывод о том, что разработанная методика построения моделей АРСС по измерительной информации, полученной от недоопределённых систем работоспособна. Тот факт, что идентификация порядка моделей предложенным способом приводит к неоднозначным и во многом – субъективным оценкам, не является препятствием для её применения, поскольку данная неоднозначность 120 и субъективность структурной идентификации является неотъемлемой особенностью методики Бокса-Дженкинса. Даже при наличии исходных рядов, а не их оценок её решение является задачей, требующей от исследователя сравнительно высокой квалификации. Существенным положительным моментом предложенного подхода является высокая точность идентификации, малые затраты вычислительных ресурсов, возможность применения всего наработанного математического аппарата, связанного с методикой Бокса-Дженкинса. Отрицательной стороной является необходимость выполнения её в интерактивном режиме, с участием достаточно квалифицированного оператора. Этот недостаток может быть устранён с использованием имеющихся многочисленных наработок по автоматизации процедуры Бокса-Дженкинса. Подводя итог, следует сделать вывод о том, что обе предложенные методики структурной идентификации моделей авторегрессии – проинтегрированного скользящего среднего (основанная на переборе моделей и на использовании МНК-оценок) работоспособны и могут быть применены на практике. Методики имеют свои наборы достоинств и недостатков, ограничений в применении и не являются взаимоисключающими. Тем не менее, в дальнейшем приоритет отдаётся методике, основанной на использовании рядов предварительных оценок, построенных по методу среднего арифметического, ввиду того, что она обеспечивает более высокую точность идентификации при меньшем объёме вычислений, и потенциально также может быть автоматизирована. Перспективность данной методики особенно высока по той причине, что она позволяет распространить сферу применимости методики Бокса-Дженкинса на рассматриваемый класс систем, адаптировать к нему наработанные ранее для иных разновидностей систем подходы, методы и приёмы моделирования. 121 4.3. Моделирование процесса параметрической идентификации моделей и оценивания вектора состояния эталона Разработанная в ходе выполненных исследований методика обработки данных основывается на совместном выполнении процедур параметрической идентификации моделей и оценивания вектора состояния системы. При этом оценка вектора состояния системы получается на последнем этапе процедуры вычисления оптимальных параметров моделей. Таким образом, процедура идентификации моделей и построения оценок образуют в совокупности единую процедуру оценивания вектора состояния и моделируются совместно. С целью непосредственного сравнения основанных на прогнозах оценок с исходными данными, методика оценивания была проверена на примере обработки сгенерированных данных без трендов. Для этого генерировались ряды наблюдений из 300 значений (количество исходных рядов – 4, разностных - 3) по заданным моделям АРСС. Затем при известных порядках авторегрессии p и скользящего среднего q (проблема определения порядков процессов рассмотрена выше), выполнялась процедура подгонки моделей и построения оценок исходных рядов. Параметры моделей и полученные оценки параметров процессов АР и СС приведены в Таблице 6. Как можно увидеть из указанной таблицы, оценки коэффициентов авторегрессии и скользящего среднего при заданных порядках процессов весьма близки к истинным. На рисунках 4.15 и 4.16 сопоставляются отрезки исходных (“истинных”) рядов и рядов оценок длиной 70 элементов для “генераторов” № 1 и № 4. Описанный эксперимент подтверждает сходимость процесса параметрической идентификации (на основе минимизации функционала I) к истинным значениям параметров при известной структуре моделей, т.е. при заданных порядках АР и СС (p и q). 122 Таблица 6 Номер ряда Порядок авторегрессии 1 2 3 4 p1=0 p2=0 p3=3 p4=2 - Исходные: φ1=0.5 φ2=-0.3 φ3=-0.2 Полученные: φ1=0.355 φ2=-0.182 φ3=-0.301 Коэффициенты авторегрессии - Порядок скользящего среднего q1=1 Коэффициенты скользящего среднего Исходный: θ1=0.35 Полученный: θ1=0.233 с.к.о. псевдослучайного шума 1 0.01 Исходные: φ1=0.5 φ2=-0.4 Полученные: φ1=0.57 φ2=-0.436 q2=2 q3=0 q4=0 Исходные: θ1=0.2 θ2=-0.1 Полученные: θ1=0.296 θ2=-0.435 - - 2 0.02 3 0.01 4 0.02 y 0,2 исходные значения 0,1 0 -0,1 -0,2 50 оценки 85 80 t 95 110 120 Рис. 4.15 – Исходный ряд значений №1 (сплошная линия) и ряд оценок (пунктир) 123 y 0,4 исходные значения оценки 0,2 0 -0,1 t -0,4 50 85 95 80 110 120 Рис. 4.16 – Исходный ряд значений №4 (сплошная линия) и ряд оценок (пунктир) Показав работоспособность алгоритма оценивания состояния в отдельности, проверим реализацию методики ещё одним экспериментом, проследив целиком процедуру построения моделей для случая, когда порядки моделей заранее не известны (структурную и параметрическую идентификацию). Были сгенерированы 5 исходных рядов (5 “генераторов”) объёмом 300 значений без постоянной составляющей, из них получены 4 разностных ряда. Требовалось построить оценки исходных рядов по разностным рядам без использования процедуры компенсации трендов. Параметры авторегрессионных моделей, использованных для генерации рядов, приведены в Таблице 7. Таблица 7 Номер ряда Порядок АР 1 p1=0 Коэффициенты авторегрессии - Порядок СС q1=1 2 p2=3 φ1=-0.2 φ2=0.1 φ3=-0.3 q2=0 Коэффициенты скользящего среднего θ1=0.35 - с.к.о. псевдослучайного шума 1 0.01 2 0.02 3 p3=0 4 p4=2 5 p5=0 - φ1=-0.5 φ2=0.4 - q3=2 q4=0 θ1=0.5 θ2=0.4 - 3 0.01 q5=3 θ1=-0.5 θ2=0.4 θ3=0.07 4 0.02 5 0.03 124 Полученные временные ряды оценок среднего были использованы для построения автокоррелограмм и частных автокоррелограмм (для рядов № 1, 4 и 5 приведены на рис. 4.17-4.18, для ряда № 2 – на рис. 4.21). Анализ указанных автокоррелограмм позволил сделать следующие выводы о структуре моделей. Для ряда опорного генератора № 1 можно предположить как модель структуры (1,0,0), так и модель (0,0,1), наиболее предпочтительным выглядит первый вариант (хотя исходная модель имеет структуру (0,0,1)). Для ряда № 2 следует предпочесть модель (3,0,0): хотя можно предположить и вариант (0,0,3), однако ЧАКФ после задержки 3 спадает существенно быстрее, чем АКФ. Исходная модель имеет порядок (3,0,0), что соответствует оценке. Рис. 4.17 – Выборочные АКФ и ЧАКФ предварительных оценок ряда № 1 Рис. 4.18 – Выборочные АКФ и ЧАКФ предварительных оценок ряда № 4 125 Рис. 4.19 – АКФ и ЧАКФ предварительных оценок ряда № 5 Для ряда № 3 была выбрана модель (0,0,1), поскольку, несмотря на “смазанную” АКФ – ЧАКФ спадает медленнее. Исходная модель – (0,0,2). Для ряда № 4 была выбрана модель порядка (2,0,0), в точности соответствующая исходной модели. Картина АКФ и ЧАКФ данного ряда были достаточно однозначными. АКФ и ЧАКФ ряда 5 показали сравнительно нечёткую картину, можно предположить модели (3,0,0), (0,0,2), (0,0,3) - по соображениям экономичности был выбран второй вариант. Исходная модель имеет порядок (3,0,0), однако в ней θ3=0.07, т.е. достаточно мало, что соответствующим образом сказывается на АКФ. Таким образом, в результате оценивания порядка процессов получены следующие результаты (в скобках – исходные порядки): p1=1 (0) p2=3 (3) p3=0 (0) p4=2 (2) p5=0 (0) q1=0 (1) q2=0 (0) q3=1 (2) q4=0 (0) q5=2 (3) Можно увидеть, что имеются расхождения с порядками исходных моделей, которые не превышают единицы, причём в сторону упрощения модели. Тем не менее, что в ряде случаев наблюдается и превышение оценкой порядка модели, породившей исходный ряд. Исключением является первый ряд, где в результате оценивания принята модель, содержащая другой тип 126 процесса (авторегрессию вместо скользящего среднего), хотя порядок остался по-прежнему равен единице. Это может быть объяснено там, что, в принципе, модели АР и СС являются взаимозаменяемыми (в теоретическом случае – при бесконечном числе включенных членов), а также наличием случайных факторов (псевдослучайного нормально распределённого шума). Также свои погрешности вносит и методика оценивания. В результате, ещё раз подтверждается вывод, сделанный в соответствующем разделе настоящей работы: идентификация порядка моделей предлагаемым способом является неоднозначным и, отчасти, – субъективным процессом, однако это является неотъемлемой особенностью методики БоксаДженкинса и не исключается даже при наличии реальных исходных рядов. Визуальное сравнение выборочных АКФ и ЧАКФ исходных рядов и рядов грубых оценок для ряда 2 (рис. 4.20, 4.21) наглядно показывает, что АКФ и ЧАКФ отличаются в основном размахом значений, но не их знаком или соотношением этих размахов в пределах функции. Таким образом, можно сделать вывод о том, что характер АКФ/ЧАКФ исходного ряда и ряда оценок среднего сходным образом отражают характерные особенности поведения рядов, хотя АКФ и ЧАКФ ряда оценок, безусловно, являются более “смазанными”. Рис. 4.20 – Выборочные АКФ для исходного ряда и ряда грубых оценок 127 Рис. 4.21 – Выборочные ЧАКФ для исходного ряда и ряда грубых оценок На практике, однако, возникают ситуации, когда АКФ/ЧАКФ для исходного ряда и для ряда оценок отличаются более существенным образом, однако указанная тенденция в этих случаях сохраняется – поскольку для идентификации структуры по методике Бокса-Дженкинса в большей степени важны характерные признаки поведения функции и “общая картина”, нежели числовые характеристики. Наглядной характеристикой качества оценок является сумма квадратов отклонений оценок от истинных значений ряда. В числовом выражении, сумма квадратов отклонений оценок от истинных значений для опорного генератора для оценок, полученных с использованием моделей АРСС существенно меньше, чем для оценок среднего: 1,035 против 1,754 (т.е. приблизительно на 41%). Данный результат можно считать весьма значительным улучшением. Приведённые графики (рис. 4.22, 4.23) также показывают, что в большинстве случаев оценка с использованием моделей АРСС оказывается существенно ближе к истинному значению, чем оценка с использованием среднего арифметического. Распределение вероятностей для ряда погрешностей (разности исходного ряда и ряда оценок АРСС) было подвергнуто проверке на соответствие нормальному распределению. 128 y 0,2 0 -0,2 МНК-оценки -0,4 исходные значения 100 110 120 t 130 140 150 Рис. 4.22 – График исходных рядов, рядов предварительных и уточнённых оценок (ряд № 1, наблюдения 100-150). Круги – исходные значения, квадраты – МНК-оценки, кресты – уточнённые оценки с использованием моделей АРСС y 0,4 уточнённые оценки 0,2 0 -0,2 исходные значения -0,4 100 110 МНК-оценки 120 130 140 t 150 Рис. 4.23 – График исходных рядов, рядов предварительных и уточнённых оценок (ряд № 3, наблюдения 100-150). Круги – исходные значения, квадраты – МНК-оценки, кресты – уточнённые оценки с использованием моделей АРСС Применение критерия 2 при уровне значимости 0,025 однозначно указывает на нормальность распределения остатков [36]. Визуально распределение погрешностей также весьма близко к нормальному, что хорошо видно из рисунка (рис. 4.24). Таким образом, следует сделать вывод о том, что распределение остатков прогнозов является нормальным, что, в свою очередь, свидетельствует в пользу обусловленности имеющихся погрешностей прогноза 129 преимущественно (псевдослучайным непрогнозируемыми нормально-распределённым случайными шумом). факторами Таким образом, следует сделать вывод об адекватности построенных моделей. Следует отметить, что при том же уровне значимости сделать вывод о нормальности ряда остатков для оценок среднего нельзя. Визуально соответствующее распределение также отличается от нормального более существенно. Рис. 4.24 – Сопоставление теоретического нормального распределения и выборочных плотностей вероятности для погрешностей оценок ряда 1. Подводя итоги проведённых машинных экспериментов, следует сделать вывод о том, что математическое моделирование процесса оценивания вектора состояния, включающего в себя также процедуры структурной и параметрической идентификации моделей АРСС, показывает состоятельность предлагаемой методики. Способ идентификации структуры авторегрессионных моделей в отсутствие исходных рядов измерений удовлетворяет предъявляемым к нему требованиям и позволяет получать адекватные модели процессов. Построенные оценки относительных отклонений частоты являются существенно (до 41%) более точными, чем МНК-оценки (оценки по методу среднего арифметического). 130 4.4. Удаление трендов из реальных рядов наблюдений После того, как предлагаемая методика обработки результатов измерений была испытана посредством проведения имитационного моделирования и показала свою работоспособность, следовало проверить её практическую применимость на реальном техническом объекте - вторичном эталоне времени и частоты ВЭТ 1-5, функционирующем на базе Восточно-Сибирского филиала ВНИИФТРИ (г. Иркутск). Была выполнена обработка данных, полученных на суточных интервалах за 3 месяца (с ноября 2011 года по январь 2012 года включительно) [28]. Рассматривались данные, полученные в результате функционирования пяти водородных стандартов частоты и образующие четыре ряда взаимных измерений: ВС226-ВС225, ВС226-ВС227, ВС226-ВС228, ВС226-ВС221. Кроме того, рассматривались данные, полученные через систему внешних сличений эталона – т.е. результаты сличений с Государственным эталоном за тот же период. В отсутствие какой-либо возможности выяснить истинное значение оцениваемых величин, результаты внешних сличений могут рассматриваться как ряды некоторых “эталонных” их значений, сравнение с которыми может быть использовано для сравнительной характеристики тех и ли иных способов построения оценок. Однако при этом следует принимать во внимание то, что система внешних сличений также вносит собственные погрешности, обусловленные спецификой применяемых каналов (ГНСС), аппаратуры и методики измерений. В первую предлагаемой очередь методики была проверена удаления трендов. практическая применимость Измерения, выполненные относительно опорного генератора ВС226 были представлены четырьмя временными рядами: ВС226-ВС225 (ряд №1); ВС226-ВС227 (ряд №2); ВС226-ВС228 (ряд №3); 131 ВС226-ВС221 (ряд №4); Рассмотрим графики исходных рядов взаимных измерений (рис. 4.25). x10-15 200 ряд №2 100 ряд №4 0 ряд №1 ряд №3 -100 t, сут -200 15 0 45 30 75 60 90 Рис. 4.25 – Ряды взаимных измерений эталона Как можно увидеть из графика, один из рядов измерений (ряд №2, ВС226-ВС227) содержит квадратичный тренд. Это связано с тем, что соответствующий генератор на момент выполнения наблюдений находился в стадии ввода в эксплуатацию, и не вошёл в штатный режим функционирования. Ввиду наличия квадратичного тренда одного из генераторов (что расходится с предположением о линейности всех трендов, исходя из которых разработана программа оценивания), анализ и исключение детерминированной составляющей выполнялся в интерактивном режиме, с помощью ППП StatSoft Statistica, стохастическая же составляющая оценивалась с помощью разработанного программного комплекса. При исключении из рассмотрения ряда с квадратичным трендом, вычисления выполняются полностью автоматически, используя только программный комплекс. Видно, что ряды взаимных измерений №1 (ВС226-ВС225) и №4 (ВС226ВС221) имеют слабовыраженный наклон, что позволяет сделать предположение об отсутствии в этих рядах линейного тренда. Ряд №3 (ВС226ВС228) имеет заметный наклон, следовательно, он содержит линейный тренд. Тренд ряда взаимных измерений представлен разностью трендов опорного генератора и генератора, в отношении которого производится измерение: 132 z i y1 yi , yi yiтр yiсл , zi ziтр ziсл z i y1тр y1сл yiтр yiсл y1тр yiтр y1сл yiсл (4.1) z iтр zi z iсл y1тр yiтр y1сл yiсл z iсл y1тр yiтр Таким образом, разностный ряд может не иметь наклона только при равенстве углов наклона для рядов, на основании которых он получен. Поскольку это весьма маловероятно при b11 bi1 0 ввиду минимизации физических взаимосвязей между хранителями техническими мерами, в таком случае следует предполагать, что b11 bi1 0 , т.е. отсутствие тренда у обоих генераторов. Ввиду предполагаемого отсутствия наклона в двух рядах измерений из четырёх, в данном случае можно рассмотреть два подхода к идентификации детерминированной составляющей: 1. Проверить гипотезы об отсутствии тренда в рядах №1 (ВС226-ВС225) и №4 (ВС226-ВС221), в случае состоятельности гипотезы хотя бы для одного из рядов – предположить отсутствие тренда у опорного генератора – а, следовательно, и у генератора, с которым выполняется измерение, после чего непосредственно получить информацию о трендах остальных генераторов. 2. Использовать априорную оценку тренда опорного генератора, полученную из рядов внешних сличений эталона. Оценка может быть построена по различному количеству начальных точек ряда. Была произведена обработка данных обоими способами, после чего полученные результаты сравнивались между собой. Сначала рассмотрим первый подход. К рядам наблюдений №1 и №4 подгонялись линейные функции и проверялись гипотезы об отсутствии в них линейных трендов. Для ряда №1 получен коэффициент b1=0.079 при вероятности ошибки p=0.003, для ряда №4 получен коэффициент b1=0.070 при вероятности ошибки p=0.0006. Таким образом, в принципе, принять гипотезу об отсутствии линейного тренда ни в 133 случай ряда №1, ни в случае ряда №4 нельзя. Однако малые коэффициенты угла наклона позволяют в целях сравнения методик сделать допущение об отсутствии тренда. Сделаем такое допущение для ряда №1, ввиду наибольшего значения p. В таком случае b11 b21 0 , детерминированная составляющая для указанных рядов сводится к постоянной (получена по начальной внешней привязке эталона в момент времени t=0): y1тр b10 69,9 и y 2тр b20 31,2 . Обозначим соответствующие коэффициенты моделей детерминированной составляющей ряда zi как bzm,i . Подогнав линейные модели z iтр bz1,i t bz0,i к разностным рядам №3 и 4, а также квадратичную функцию z 2тр bz1, 2 t bz2, 2 bz0, 2 к разностному ряду №2, получили: 2 z 2 -0,03327 (t-35,384 ) 2 151,128 z 3 -2 ,7407 t 78,3159 z 4 0,069636 t 121,015 Используя данные детерминированной информацию о модели, составляющей детерминированной были построены каждого разностного составляющей ряда ряды оценок ряда. Имея относительных отклонений частот опорного генератора и детерминированной составляющей разностных рядов, путём вычитания получаем детерминированные составляющие частоты для прочих генераторов (за исключением ВС225, имеющего только постоянную составляющую). yiтр y1тр ziтр (4.2) Имея, таким образом, полную информацию о детерминированных составляющих как разностных, так и исходных рядов, удаляем тренды из рядов измерений, получая стохастические составляющие разностных рядов: z iсл z i z iтр (4.3) Таким образом, получены ряды значений, лежащих в окрестности нуля. Эти ряды подаются на вход алгоритма оценивания. Блок оценки трендов при этом не используется (он задействуется в случае исключения из рассмотрения 134 генератора ВС227, тренд которого представляет собой квадратичную функцию). Далее продемонстрируем альтернативный подход, основанный на оценивании угла наклона тренда ряда опорного генератора b11 по рядам внешних сличений эталона. Такая оценка может строиться как по всему ряду, так и по его части. Имея ряды наблюдений за период 3 месяца, попытаемся оценить тренд, используя первые 1/3, 2/3 ряда, а также весь ряд, то есть 30, 60 и 90 наблюдений. На первом этапе, используя ряд внешних сличений ВС226SU, найдём оценку коэффициента угла наклона опорного генератора b̂11 . Для этого подгоним модели вида yˆ1тр bˆ11t bˆ10 к соответствующим фрагментам рядов. Получим модели: 30 значений: yˆ1тр 0,271046 t 69,9 60 значений: yˆ1тр -0,03905 t 74,24372 90 значений: yˆ1тр 0,006369 t 69,9 Используем данные модели для построения оценок детерминированной составляющей для опорного генератора. Далее построим модели постоянных составляющих всех остальных рядов, минимизируя выражение вида n K тр zi yˆ1тр yˆ iтр , 2 (4.4) i 0 где yˆ iтр bˆi1t bˆi0 В случае генератора ВС227 модель имеет вид: yˆ iтр bˆi1 t bˆi2 2 bˆi0 Для каждого случая в результате получено 4 модели. Далее, используя эти модели, удаляем тренды из рядов наблюдений: z iсл zi yˆ1тр yˆ iтр (4.5) Полученные ряды наблюдений, не содержащие детерминированной составляющей, подавались на вход алгоритма оценивания. В дальнейшем обработка данных производилась в описанной ранее последовательности, 135 включающей в себя определение структуры моделей, их подгонку и построение оценок. Подробные сведения об этих этапах приводятся в последующих разделах. По результатам произведённых вычислений были подсчитаны интегральные характеристики для оценок (см. Таблицу 12) и проведено сравнение полученных результатов. При сравнении исходили из того, что “истинными” значениями считаются результаты внешних сличений с Государственным эталоном (как наиболее достоверные имеющиеся сведения об исходных рядах). Лучшим считался результат, при котором отклонение от рядов внешних сличений минимально, т.е. минимально среднее отклонение и сумма квадратов отклонений. Как можно увидеть из таблицы, наилучший результат с этой точки зрения получен для случая, когда тренд опорного генератора оценивался по 60 точкам. Модели детерминированных составляющих генераторов (ВС226, ВС225, ВС227, ВС228, ВС221 - для ряда ВС227 подгонялась квадратичная функция) для этого случая имеют вид: yˆ 1тр,t 74,24372 - 0,03905 t yˆ 2тр,t 42,23188 - 0,11779 t yˆ 3тр,t -78,2389 0,0333 t - 34,9708 2 yˆ 4тр,t -1,33149 2,70163 t yˆ 5тр,t -46,9604 - 0,1084 t t 1,2,,90 Проверка данных моделей с использованием F-критерия Фишера показала их адекватность исходным данным. Так, для опорного генератора отношение среднего квадрата, обусловленного регрессией, к среднему квадрату остатков составляет 6,33, для генератора № 2 - 11,2, № 4 – 13885, № 5 – 63 (при критическом значении 3,95 для уровня значимости 0,95). Наихудший результат получен для оценки тренда по 30 точкам. Это связано с особенностью исходных данных, заключающейся в том, что начальный отрезок ряда имеет угол наклона, существенно отличающийся от 136 угла наклона остальной части ряда, что влечёт за собой значительное расхождение по мере роста t (см. рис. 4.26). x10-15 87,0 76,2 66,7 55,8 0 15 45 30 75 60 90 t, сут Рис. 4.26 – Линейная функция тренда, подогнанная по 30 точкам и ряд сличений ВС226-SU (круги) x10-15 87,0 уточнённые оценки 82,6 78,7 73,4 68,1 63,0 оценки среднего внешние сличения t, сут 56,5 0 15 30 45 75 60 90 Рис. 4.27 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС226. Тренд оценен по 60 значениям x10-15 2,8 -8,2 -17,5 оценки среднего уточнённые оценки -34,2 -53,3 -69,4 внешние сличения -83,6 0 15 30 45 60 75 t, сут 90 Рис. 4.28 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС227. Тренд оценен по 60 значениям 137 Для случая оценивания по 60 точкам сравним между собой ряды внешних сличений эталона, а также ряды предварительных и уточнённых оценок частот на примере опорного хранителя ВС226 (рис. 4.27), а также хранителей ВС227 (рис. 4.28) и ВС228 (рис. 4.29). Соответствующие ряды наблюдений и оценок приведены в Приложении 1. Таблица 12 № Способ оценки тренда Предположение об отсутствии тренда опорного генератора Оценка тренда опорного генератора по ряду внешних сличений, 30 точек Оценка тренда опорного генератора по ряду внешних сличений, 60 точек Оценка тренда опорного генератора по ряду внешних сличений, полный ряд 1 2 3 4 Способ оценки случайной составляющей Среднее арифметическое Модели АРСС Среднее арифметическое Отклонения оценки от ряда внешних сличений (опорный генератор) Сумма с.к.о. Среднее квадратов отклонен отклонение отклонений ия 2738,7 1,70 5,38 2499,4 1,67 5,12 17655,4 -9,94 10,26 Модели АРСС 17444,6 -9,97 10,12 Среднее арифметическое 2314,8 -0,89 5,11 Модели АРСС 2112,2 -0,82 4,89 Среднее арифметическое 2779,04 1,50 5,48 Модели АРСС 2588,33 1,55 5,26 x10-15 112,5 уточнённые оценки 93,6 внешние сличения 71,3 58,8 33,7 12,1 оценки среднего -7,3 0 15 30 45 t, сут 75 90 Рис. 4.29 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС228 (фрагмент). Тренд оценен по 60 значениям На рис. 4.30 представлены ряды результатов взаимных измерений после удаления из них детерминированных трендов, отсутствие которых легко определить визуально. Подробное сравнение результатов вычислений для 138 случаев допущения об отсутствии тренда опорного генератора и привлечения к оценке тренда внешних сличений эталона проводится в следующем разделе. x10-15 15 ряд №3 10 ряд №2 5 0 -5 -10 -15 -20 ряд №4 ряд №1 15 0 t, сут 30 45 75 60 90 Рис. 4.30 – Ряды взаимных измерений водородных стандартов после удаления детерминированных составляющих: 1 – ВС226, 2 – ВС225, 3 – ВС227, 4 – ВС228, 5 – ВС221 Проведённые эксперименты показали, что предлагаемая методика исключения трендов позволяет достаточно успешно оценивать и исключать детерминированные составляющие (причём не только линейные, но и квадратичные) из реальных рядов взаимных измерений. Вместе с тем, существует ряд ограничений, связанных как с необходимостью привлечения данных внешних сличений (или иных априорных сведений о тренде), так и с сильной зависимостью конечных результатов всей процедуры оценивания от точности определения параметров тренда на начальном её этапе. Недостатком текущей реализации является необходимость, в общем случае, производить оценивание в интерактивном режиме (с участием оператора) ввиду необходимости определения порядков моделей, которыми описывается тренд. В связи с этим, требуется дальнейшее развитие программного комплекса в части автоматизации оценивания трендов (в т.ч. для трендов порядков выше первого). Возможным направлением для дальнейших исследований является изучение дополнительных возможностей представления трендов, в частности, кусочно-линейными функциями (что особенно перспективно при функционировании алгоритма оценивания вектора состояния в динамическом режиме). 139 4.5. Структурная идентификация моделей водородных генераторов частоты по реальным данным Методика структурной идентификации моделей авторегрессии – скользящего среднего (АРСС) проверялась на тех же самых трёхмесячных данных вторичного эталона ВЭТ1-5 ВСФ ВНИИФТРИ, которые использовались для проверки процедуры оценивания и исключения трендов. На вход процедуры структурной идентификации подавались данные, полученные на выходе процедуры оценивания трендов, т.е. ряды взаимных измерений, в которых предварительно было устранено влияние детерминированных трендов, как это было описано выше. Полученные в результате этого данные (см. рис. 4.30) использовались для построения рядов предварительных оценок. В результате работы программы были получены временные ряды предварительных оценок значений частот (оценок среднего), по которым строились выборочные АКФ и ЧАКФ (рис. 4.31-4.34). Полученные автокоррелограммы были проанализированы. ЧАКФ ряда №1 (ВС226) обрывается после второй задержки, АКФ при этом затухает медленно, что приводит к модели вида (2,0,0). Рис. 4.31 – Выборочные АКФ и ЧАКФ оценок ряда 1 (ВС226) по среднему арифметическому 140 ЧАКФ ряда №2 (ВС225) резко обрывается после первой задержки, в то время, как АКФ образует затухающую синусоиду, выбрана модель структуры (1,0,0). ЧАКФ ряда №3 (ВС227) также обрывается после первой задержки, АКФ её спадает медленно, выбрана аналогичная модель вида (1,0,0). Очень похожими являются ЧАКФ и АКФ ряда №4 (ВС228): ЧАКФ претерпевает обрыв после первой задержки, АКФ при этом спадает гораздо медленнее, затухая к 6-й задержке, что также приводит к модели структуры (1,0,0). Рис. 4.32 – Выборочные АКФ и ЧАКФ оценок ряда 2 (ВС225) по среднему арифметическому Рис. 4.33 – Выборочные АКФ и ЧАКФ оценок ряда 3 (ВС227) по среднему арифметическому 141 Рис. 4.34 – Выборочные АКФ и ЧАКФ оценок ряда 5 (ВС221) по среднему арифметическому ЧАКФ и АКФ ряда №5 (ВС221) демонстрируют не столь однозначную картину. И та, и другая функция являются в некоторой мере “смазанными”, имеющими небольшой спад после первой задержки. Можно предположить как структуру (1,0,0), так и (0,0,1). При этом ЧАКФ всё же спадает несколько более резко, в то время, как АКФ уменьшается более плавно на протяжении первых трёх задержек. Ввиду более выраженного спада ЧАКФ, авторегрессионный характер процесса следует считать более вероятным, и следует остановиться также на структуре вида (1,0,0). В результате, были определены порядки моделей АРСС: p1=2 p2=1 p3=1 p4=1 p5=1 q1=0 q2=0 q3=0 q4=0 q5=0 Таким образом, анализ АКФ и ЧАКФ показал, что процессы, порождающие данные ряды, имеют автокорреляционный характер: ЧАКФ всех рядов претерпевает обрыв, тогда как АКФ медленно затухает. В результате, все модели являются моделями авторегрессии 1-2 порядков. Основываясь на полученных структурах моделей, были построены ряды уточнённых оценок. Следует особенно отметить, что при анализе реальных временных рядов оценивание по предложенной методике дало даже лучшие результаты, чем при 142 анализе сгенерированных данных: АКФ и ЧАКФ реальных генераторов являются гораздо более “чёткими”, функции имеют гораздо более резкие спады, чем соответствующие функции искусственно усложнённых моделей, использовавшихся для первоначальной отработки алгоритма. В контексте проверки работоспособности предложенного подхода к структурной идентификации моделей АРСС было также проведено сравнение выборочных АКФ и ЧАКФ рядов внешних сличений (по которым, с известной долей осторожности, можно судить об истинных значениях рядов) и рядов предварительных оценок. Как и предполагалось, коррелограммы показали достаточно высокую степень сходства, несмотря на имеющиеся частные различия (в размахе значений, динамике затухания функций и т.п.), демонстрируемая ими картина вела к сходным структурам моделей, за исключением генератора ВС221, у которого порядок процесса увеличился на 1 (2,0,0). Таким образом, испытание алгоритма на реальных данных, равно как и его моделирование с использованием искусственно сгенерированных “наблюдений”, показало состоятельность разработанной методики построения моделей АРСС в отсутствие исходных рядов наблюдений. Ещё раз подтверждается вывод о том, что результаты структурной идентификации моделей АРСС предложенным способом могут быть неоднозначны и отчасти – субъективны. Вместе с тем, указанная неоднозначность и субъективность процедуры идентификации представляют собой неотъемлемую особенность самой методики Бокса-Дженкинса и не могут являться препятствием для успешного построения авторегрессионных моделей. 143 4.6. Оценивание вектора состояния эталона времени и частоты В предыдущих разделах были продемонстрированы на практическом примере такие этапы получения оценок состояния вторичного эталона времени и частоты ВЭТ1-5, как исключение детерминированных трендов из рядов взаимных измерений и структурная идентификация моделей АРСС, описывающих динамику элементов системы – водородных генераторов. В результате были получены ряды измерений, очищенных от детерминированных составляющих, информация о порядках моделей АРСС, а также ряды предварительных МНК-оценок состояния. Всё это составляет необходимый набор данных для выполнения собственно процедуры оценивания и дальнейшего сравнения результатов. Методика получения оценок вектора состояния систем с неполной матрицей наблюдений проверялась на тех же трёхмесячных данных вторичного эталона ВЭТ1-5 ВСФ ВНИИФТРИ, что и описанные ранее методики исключения детерминированных трендов и структурной идентификации моделей АРСС, использовались полученные на выходе этих процедур данные. В результате выполнения процедуры компенсации детерминированных трендов (в наиболее эффективном варианте с использованием 60 первых значений рядов внешних сличений для оценивания угла наклона тренда), были получены ряды значений, лежащих в окрестности нуля (см. рис. 4.30). Эти ряды непосредственно являются входной информацией для алгоритма оценивания. В процессе работы программы на этапе структурной идентификации были получены временные ряды предварительных оценок значений частот (оценок среднего), по которым строились выборочные автокорреляционные и частные автокорреляционные функции (рис. 4.31-4.34). Из анализа АКФ и ЧАКФ был сделан вывод о том, что процессы, порождающие данные ряды, являются автокорреляционными и имеют порядки 1-2: (2,0,0); (1,0,0); (1,0,0); (1,0,0); (1,0,0). С использованием моделей выбранной структуры были построены уточнённые оценки (рис. 4.35). 144 Оценки строились как с использованием нулевых начальных приближений коэффициентов в моделях АРСС, так и с использованием в качестве начальных приближений результатов подгонки моделей к рядам предварительных оценок. Результаты в обоих случаях оказались полностью идентичны, однако суммарное время вычислений в случае использования начальных приближений, полученных через предварительные оценки, было существенно ниже (1,44 секунды против 4,08 секунды, при этом время, затраченное собственно на процедуру оценивания снизилось ориентировочно в 10 раз). x10-15 16 ряд №2 12 ряд №3 ряд №1 8 4 0 -4 -8 -12 ряд №4 15 0 ряд №5 45 30 t, сут 75 60 90 Рис. 4.35 – Ряды уточнённых оценок частот генераторов (без трендов): 1 – ВС226, 2 – ВС225, 3 – ВС227, 4 – ВС228, 5 – ВС221 Для получения окончательного результата, требуется наложить на ряды оценок ранее удалённые последовательное детерминированные суммирование результатов тренды, оценивания т.е. выполнить со значением функции тренда в каждый момент времени: yˆ i yˆ iтр yˆ iсл . Рассмотрим ряды для случая обработки измерений без привлечения данных внешних сличений. Приводятся для сравнения между собой ряды внешних сличений эталона, а также ряды предварительных и уточнённых оценок частот на примере опорного хранителя ВС226 (рис. 4.36), а также хранителей ВС227 (рис. 4.37) и ВС228 (рис. 4.38). 145 x10-15 87,0 82,6 78,7 внешние сличения 73,4 68,1 63,0 предварительные оценки 56,5 0 15 уточнённые оценки 45 30 t, сут 75 60 90 Рис. 4.36 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС226. Тренд оценен без использования внешних сличений x10-15 2,8 -8,2 -17,5 предварительные оценки внешние сличения -34,2 -53,3 -69,4 уточнённые оценки -83,6 15 0 30 45 60 75 t, сут 90 Рис. 4.37 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС227. Тренд оценен без использования внешних сличений x10-15 102,7 внешние сличения 83,8 58,8 предварительные оценки 33,7 уточнённые оценки 12,1 t, сут -7,3 0 15 30 45 60 75 90 Рис. 4.38 – Сопоставление рядов внешних сличений (круги), уточнённых оценок (квадраты) и оценок среднего (ромбы) для генератора ВС228. Тренд оценен без использования внешних сличений Для случая оценивания тренда с привлечением информации о внешних сличениях рассматривался вариант с оцениванием по 60 первым точкам 146 выборки (показавшим наилучший результат). Приводятся графики, сопоставляющие между собой ряды внешних сличений эталона, а также ряды предварительных и уточнённых оценок относительных отклонений частот на примере опорного хранителя ВС226 (рис. 4.27), а также хранителей ВС227 (рис. 4.28) и ВС228 (рис. 4.29). Из графического представления видно, что отличия рядов оценок от рядов внешних сличений в обоих случаях существенно больше, чем рядов оценок друг от друга. Тем не менее, в обоих случаях большинство уточнённых оценок лежит несколько ближе к рядам сличений, чем предварительные оценки. Можно также сделать вывод о недостаточной точности оценивания тренда в случае его оценивания без использования внешних сличений, что особенно хорошо заметно в первой половине соответствующих графиков (рис. 4.36-4.38). Таблица 13 № 1 2 Способ оценки тренда Предположение об отсутствии тренда опорного генератора Оценка тренда опорного генератора по ряду внешних сличений, 60 точек Способ оценки случайной составляющей Отклонения оценки от ряда внешних сличений (опорный генератор) Сумма квадратов Среднее с.к.о. отклонений отклонение отклонения Среднее арифметическое 2738,7 1,70 5,38 Модели АРСС 2499,4 1,67 5,12 Среднее арифметическое 2314,8 -0,89 5,11 Модели АРСС 2112,2 -0,82 4,89 В качестве интегральных характеристик, как и ранее, используем сумму квадратов отклонений оценки от ряда внешних сличений, а также среднее арифметическое и с.к.о. данных отклонений (см. Таблицы 12 и 13). Сравнение соответствующих значений показывает большую близость большинства оценок, построенных с использованием моделей АРСС к значениям, 147 полученным путём внешних сличений, в сравнении с оценками среднего (МНК-оценками). Была осуществлена проверка адекватности полученных моделей АРСС с использованеим совокупного критерия согласия Q. Проверка показала, что все модели адекватно описывают реальные данные. Анализ рядов остатков показал, что они распределены нормально и не содержат значимой остаточной автокорреляции. Перечисленные факты свидетельствуют о том, что предлагаемая методика позволяет строить адекватные модели временных рядов относительных отклонений частоты водородных стандартов. Безусловно, во всех случаях не обеспечивается полное совпадение оценок с рядами внешних сличений. Это говорит о том, что имеющиеся отклонения обусловлены преимущественно факторами, которые не прогнозируются применяемыми моделями и, по крайней мере, в их контексте, являются случайными (т.е. обусловлены шумами). Кроме того, следует обратить внимание на то, что внешние сличения эталона (в особенности, по каналам ГНСС), строго говоря, не могут в полной мере считаться “истинными” значениями. Кроме неизбежных погрешностей оценивания состояния Государственного эталона, они содержат в себе также и погрешности, вносимые самой системой сличения. Вопрос влияния указанных факторов требует дополнительных масштабных исследований. Следует отметить, что проблема снижения влияния погрешностей каналов сличения на результаты производимых через них сличений на сегодня является очень актуальной для ГСВЧ, поскольку её решение ведёт к возможности построения глобальных групповых эталонов на базе территориально-разнесённых локальных групповых эталонов и такие исследования ведутся рядом специалистов. Обобщая полученные результаты, характеризуем количественно эффект от применения прогнозирующих моделей в процессе оценивания состояния эталона. В наилучшем случае (оценка тренда через внешние сличения по 60 значениям) в сравнении с использованием в том же случае МНК-оценок 148 достигнуто (для опорного генератора): снижение суммы квадратов отклонений от рядов внешних сличений около 9%, среднего значения отклонения – около 8%, с.к.о – около 4.5%, что может быть признано достаточно существенным улучшением, с учётом достижения данного результата исключительно программными средствами. Следует ещё раз отметить, что на результаты оценивания оказывает весьма существенное влияние точность определения характеристик тренда. При этом решение данной задачи в существующей реализации программного комплекса может быть выполнено только в интерактивном режиме (с той или иной долей участия человека), по крайней мере, требуется сделать предположения о порядке моделей, которыми описывается детерминированная составляющая каждого ряда. Целесообразно использование для решения этой задачи информации, полученной по каналам внешних сличений эталона, поскольку оценивание тренда без таких сведений предъявляет жёсткие требования к данным, невыполнение которых приводит к значительным погрешностям. Кроме того, как чрезмерное уменьшение, так и увеличение выборки, по которой оценивается тренд, может отрицательно сказываться на результатах оценивания, встаёт проблема определения необходимого объёма выборки. Возможно, продуктивным с точки зрения решения данной проблемы может оказаться рассмотрение тренда как кусочно-линейной функции. В заключение следует сделать вывод о том, что предложенная методика оценивания вектора состояния систем с неполной матрицей наблюдений на основе использования моделей АРСС работоспособна и может быть применена на практике для решения задачи оценивания отклонений частоты водородных стандартов по данным взаимных измерений в деятельности ГСВЧ, что было показано на примере обработки данных вторичного эталона ВЭТ 1-5. Предложенный способ идентификации структуры моделей АРСС в отсутствие исходных рядов измерений удовлетворяет предъявляемым к нему требованиям, а построенные оценки относительных отклонений частот являются более 149 точными, чем МНК-оценки (оценки по среднему арифметическому). Тем не менее, выявляется ряд проблем, связанных с оценкой детерминированных составляющих рядов наблюдений в условиях недоопределённых систем, которые способны влиять на точность оценивания и могут быть предметом отдельного исследования. 4.7. Выводы В настоящей главе были проанализированы результаты моделирования процедуры оценивания относительных отклонений частоты группового эталона времени, а также исследована работоспособность и эффективность предложенной методики оценивания на реальных данных вторичного эталона времени и частоты ВЭТ 1-5. Ввиду невозможности проведения ряда исследований на реальных объектах рассматриваемого типа, была создана система моделирования. С её помощью выполнен ряд машинных экспериментов с использованием синтезированных данных (данных, сгенерированных математической моделью реального объекта). Проведённые эксперименты с использованием математических моделей показали, что предлагаемая методика работоспособна во всех её аспектах. Были рассмотрены следующие вопросы: Моделирование процесса оценивания содержащихся в рядах взаимных измерении эталона линейных трендов. Промоделирован ряд ситуаций, возникающих при оценивании трендов. Моделирование показало, что предлагаемая процедура устранения влияния трендов работоспособна. Вместе с тем, для точного исключения трендов из разностных рядов следует использовать априорную информацию о них (данные внешних сличений эталона), в противном случае велика вероятность возникновения существенной погрешности. Моделирование процесса структурной идентификации моделей АРСС. Были рассмотрены два альтернативных подхода к определению структуры моделей АРСС в недоопределённых системах. Оба подхода показали свою 150 состоятельность, каждый из них обладает своим набором достоинств и недостатков. Важным положительным свойством подхода, основанного на использовании рядов предварительных МНК-оценок является возможность использования всех существующих теоретических и практических наработок, связанных с методикой Бокса-Дженкинса. Таким образом, сфера применения данной классической методики распространена на системы с неполной матрицей наблюдений. Моделирование процесса идентификации моделей АРСС и оценивания состояния эталона. Основная часть процедуры оценивания, опирающаяся на процедуры идентификации структуры и оценивания параметров трендов, является наиболее критичной с точки зрения получения конечного результата. Моделирование показало работоспособность и эффективность предложенной методики. Погрешность оценивания при использовании прогнозирующих моделей временных рядов, оказывается ориентировочно на 40% ниже, чем для оценок, построенных по методу среднего арифметического. Построенные авторегрессионные модели адекватны реальным процессам. Наиболее важные результаты настоящей главы связаны с применением предложенной методики оценивания вектора состояния для обработки данных вторичного эталона времени и частоты ВЭТ 1-5 ВСФ ВНИИФТРИ. Исходные данные были представлены разностными рядами относительных отклонений частоты за 3 месяца. Исследованы следующие этапы обработки данных: Определение порядков детерминированных трендов, их оценивание и исключение из рядов взаимных измерений. В результате было показано, что наилучший результат получен при использовании для оценивания коэффициентов моделей тренда данных внешних сличений эталона в объёме 2/3 общей длины ряда. При построении автономной шкалы времени (без данных внешних сличений) точность оценок снижается. 151 Определение порядков моделей авторегрессии – скользящего среднего, используемых для описания динамики водородных стандартов частоты. Продемонстрировано использование подхода, основанного на структурной идентификации моделей АРСС с использованием в качестве исходных данных рядов оценок среднего арифметического (т.н. предварительных оценок). Модели рассмотренных реальных водородных стандартов частоты являются авторегрессионными порядков 1-2. Подход показал свою состоятельность, при этом эффективность подхода для случая реальных данных оказалась даже выше, чем для использованных в процессе моделирования искусственно сгенерированных данных. Подгонка моделей АРСС и собственно построение оценок состояния системы с неполной матрицей наблюдений. Получены ряды оценок относительных отклонений частоты водородных стандартов. Построенные ряды сравнивались с рядами внешних сличений эталона и рядами предварительных оценок, арифметического. Сравнение полученных по алгоритму показало, что уточнённые среднего оценки, построенные с использованием моделей АРСС, оказываются ближе к рядам внешних сличений (до 8-9%), что говорит об эффективности предлагаемой методики. Таким образом, результаты данной главы говорят о применимости результатов настоящей диссертационной работы для обработки реальных данных, получаемых в процессе “ведения” эталонов времени и частоты ГСВЧ РФ. 152 Заключение В соответствии с целями исследования, в диссертационной работе решена задача снижения погрешности оценивания относительных отклонений частоты водородных стандартов, имеющая существенное значение для обеспечения единства измерений времени и частоты. Получены следующие результаты: 1. Создана математическая модель подсистемы хранения и воспроизведения физических единиц группового эталона времени и частоты, на основании которой разработана методика определения относительных отклонений частоты группового эталона по результатам измерений, выполняемых в процессе его функционирования. Методика позволяет снизить погрешность получаемых оценок вектора состояния эталона по сравнению с применявшимися ранее алгоритмами. 2. Разработаны численный метод и алгоритм структурной идентификации моделей авторегрессии – скользящего среднего (АРСС) по результатам косвенных измерений, а также алгоритм их параметрической идентификации. 3. На основе разработанных алгоритмов, создан специализированный программный комплекс для оценивания относительных отклонений частоты в групповых эталонах. 4. Произведена оценка точности предложенных алгоритмов методами математического моделирования, для чего создана специализированная система моделирования. 5. Созданный программный комплекс апробирован на реальных данных вторичного эталона времени и частоты ВЭТ 1-5 и внедрён в деятельность Службы времени ВСФ ВНИИФТРИ. В результате произведённых испытаний алгоритма было установлено, что точность оценок, полученных с использованием прогнозирующих моделей (моделей АРСС) оказывается существенно меньше, чем для оценок, вычисленных по методу среднего арифметического. По данным моделирования 153 улучшение составило приблизительно 40%. При работе с реальными данными вторичного эталона использованием ВЭТ оценок 1-5, в наилучшем случае в среднего достигнуто снижение сравнении с погрешности оценивания для опорного генератора около 9%. Это может быть признано весьма существенным улучшением, поскольку данный результат достигнут исключительно программными средствами, т.е. с минимальными финансовыми затратами. Созданный программный продукт внедрён в деятельность Службы времени ВСФ ВНИИФТРИ (г. Иркутск). В дальнейшем разработанная методика может быть внедрена в той или иной мере на любом из эталонов ГСВЧ. Созданный программный продукт спроектирован и реализован таким образом, что его (целиком или в составе отдельных компонентов) можно внедрить в разнородную информационную инфраструктуру подразделений ГСВЧ, а также использовать автономно в исследовательских целях. Кроме того, разработанная методика может быть распространена на решение и иных подобных задач, связанных как с групповыми эталонами иных типов (например, эталонами единицы электродвижущей силы), так и с иными техническими системами, в которых возникает задача оценивания движения объекта по результатам взаимных измерений. Самостоятельную теоретическую ценность представляют результаты, связанные с применением моделей АРПСС к системам с неполной матрицей наблюдений. Ввиду того, что модели данного класса в настоящее время распространены достаточно широко в целом ряде отраслей, в том числе и не связанных с техникой (таких, как эконометрика), разработка подходов, позволяющих строить такие модели по результатам косвенных наблюдений, без исходных временных рядов, открывает новые перспективы их использования. Таким образом, полученные в ходе выполнения настоящей работы результаты могут быть применены и за пределами той специфической проблематики, которой ограничивалось данное исследование. 154 Список литературы 1. Айвазян, С.А. Прикладная статистика. Основы эконометрики. Том 1. Теория вероятностей и прикладная статистика / С. А. Айвазян, В. С. Мхитарян – М. : Юнити-Дана, 2001. – 656 с. 2. Аоки, М. Введение в методы оптимизации. / М. Аоки. – М. : Наука, 1977. – 344 с. 3. Аоки, М. Оптимизация стохастических систем / М. Аоки – М. : Наука, 1971. – 424 с. 4. Балакришнан, А.В. Теория фильтрации Калмана : пер. с англ. / А.В. Балакришнан – М. : Мир, 1988. – 168 с. 5. Безуглов, Д.А. Математический аппарат повышения метрологической автономности в системе единства измерений / Д.А. Безуглов, П.М. Поморцев // Журнал «Радиоэлектроника» – 2002. – № 1. – С. 23-28. 6. Бендат, Дж. Прикладной анализ случайных данных : пер. с англ. / Дж. Бендат, А. Пирсол. – М : Мир, 1989. – 540 с. 7. Бокс, Д. Анализ временных рядов. Прогноз и управление / Д. Бокс, Г. Дженкинс. – Вып. I. – М. : Мир, 1974. – 406 с. 8. Борисочкин, В. Эталонные сигналы частоты и времени / В. Борисочкин, С. Каган, Г. Черенков // Радио. – 2000. – № 2. – С. 67-69. 9. Браммер, К. Фильтр Калмана-Бьюси : пер. с нем. / К. Браммер, Г. Зиффлинг – М. : Наука. Главная редакция физико-математической литературы, 1982. – 198 с. 10. Брандин, В. Н. Определение траекторий космических аппаратов / В. Н. Брандин, Г. Н. Разоренов. – М. : Машиностроение, 1978. – 216 с. 11. Брянский, Л.Н. Краткий справочник метролога / Л.Н. Брянский, А.С. Дойников – М. : Издательство стандартов, 1991. – 79 с. 12. Брянский, Л.Н. Метрология. Шкалы, эталоны, практика / Л.Н. Брянский, А.С. Дойников, Б.Н. Крупин. – М. : ВНИИФТРИ, 2004. – 151 с. 155 13. Васильев, В.И. Водородные стандарты частоты и времени. Современное состояние и тенденции развития / В.И. Васильев, Н.А. Демидов // Электроника: НТБ. – 2008. – № 4 – С. 92-96. 14. Васильев, В.И. Повышение точности, стабильности и надежности квантового дискриминатора пассивного водородного стандарта частоты. Автореферат диссертации на соискание учёной степени к.т.н. / В.И. Васильев. – Нижний Новгород, 2011. – 26 с. 15. Гамм, А.З. Статистические методы оценивания состояния электроэнергетических систем / А.З. Гамм – М. : Наука, 1976. – 220 с. 16. Гантмахер, Ф.Р. Теория матриц / Ф.Р. Гантмахер. – М. : Наука, 1966. – 576 с. 17. ГОСТ 8.000-2000. Государственная система обеспечения единства измерений. Основные положения. – Введ. 01.01.2001. – М. : ИПК Издательство стандартов, 2000. – 8 с. 18. ГОСТ 8.057-80. Государственная система обеспечения единства измерений. Эталоны единиц физических величин. Основные положения. – Введ. 01.01.1981. – М. : Издательство стандартов, 1985. – 7 с. 19. ГОСТ 8.129-99. Государственная система обеспечения единства измерений. Государственная поверочная схема для средств измерений времени и частоты. – Введ. 01.07.2000. – М. : ИПК Издательство стандартов, 1999. – 8 с. 20. ГОСТ 8.381-2009. Государственная система обеспечения единства измерений. Эталоны. Способы выражения точности. – Введ. 01.01.2012. – М. : ИПК Издательство стандартов, 2009. – 25 с. 21. ГОСТ 8.567-99. Государственная система обеспечения единства измерений. Измерение времени и частоты. Термины и определения. – Введ. 01.01.2001. – М. : ИПК Издательство стандартов, 2000. – 16 с. 22. Денисенко, О.В. Комплекс средств метрологического обеспечения ГЛОНАСС / О.В. Денисенко, И.С. Сильвестров, В.Н. Федотов // Тезисы 156 докладов 4-й прикладное Всероссийской конференции координатно-временное и «Фундаментальное навигационное и обеспечение (КВНО-2011) : сб. ст. – Санкт-Петербург, 2011 – с. 48. 23. Деруссо, П. Пространство состояний в теории управления / П. Деруссо, Р. Рой, Ч. Клоуз – М. : Наука, 1970. – 136 с. 24. Домнин, Ю.C. Цезиевые реперы частоты фонтанного типа МЦР-Ф1 и МЦР-Ф2 / Ю.C. Домнин [и др.] // Мир измерений. – 2012. – № 4. – С. 3034. 25. Домнин, Ю.С. Цезиевый фонтан ВНИИФТРИ / Домнин Ю.С. [и др.] // Измерительная техника. – 2007. – № 3. – С. 39-42. 26. Дрейпер, Н. Прикладной регрессионный анализ / Н. Дрейпер, Г. Смит. – Вып. 1 − М. : Финансы и статистика, 1986. – 366 c. 27. Ипатов, А.В. Комплекс средств фундаментального координатно- временного обеспечения ГНС ГЛОНАСС [электронный ресурс] / А.В. Ипатов, М.Е. Варганов // СПб: Всероссийская конференция Электроника и микроэлектроника СВЧ. – 2013. – 5 с. URL: http:// mwelectronics.ru/2013/Plenary/03_IpatovAV_Kompleks_sredstv_fundamen tal`nogo.pdf (дата обращения: 28.11.2013). 28. Ипполитов, А.А. Обработка данных, полученных по результатам взаимных измерений вторичного эталона времени и частоты / А.А. Ипполитов, Ю.П. Хрусталёв, В.М. Акулов, Л.Н. Курышева // Вестник ИрГТУ – 2012. – № 7. – C. 22-28. 29. Ипполитов, А.А. Построение стохастических моделей динамических систем при неизвестной их структуре / А.А. Ипполитов // Винеровские чтения. Труды IV Всероссийской конференции : сб. ст. – Ч. 1 – Иркутск : ИрГТУ, 2011. – С. 136-141. 30. Ипполитов, А.А. Субоптимальная фильтрация в системах с неполной матрицей наблюдений / А.А. Ипполитов, Ю.П. Хрусталёв // Труды XV Байкальской Всероссийской конференции “Информационные и 157 математические технологии в науке и управлении” : сб. ст. – Ч. I. – Иркутск : ИСЭМ СО РАН, 2010. – С. 174-182. 31. Камке, Д. Физические основы единиц измерения : учеб. пособие, пер. с нем. / Д. Камке, К. Кремер, М. : Мир, 1980. – 95 с. 32. Кашьяп, P.Л. Построение динамических стохастических моделей по экспериментальным данным / P.Л. Кашьяп, А.Р. Рао – М. : Наука, 1983. – 384 с. 33. Клюев, В.В.. Машиностроение. Измерения, контроль, испытания и диагностика. Энциклопедия / В.В. Клюев, Ф.Р. Соснин, В.Н.Филинов [и др.]. – М. : Машиностроение, 1996. – Т. III-7 – 464 с. 34. Козлов, А.К. Исследование фазовых флуктуаций в водородном стандарте частоты / А.К. Козлов, А.В. Якимов // Труды 3-й Научной конференции по радиофизике. Нижегородский госуниверситет. – Н.Новгород, 1999. – С. 215. 35. Коновалов, Г.В. Шкалы времени и их регламентация в Рекомендациях МСЭ / Г.В. Коновалов, А.М. Меккель // Современные проблемы частотно-временного обеспечения сетей электросвязи : сб. ст. – М. : ФГУП ЦНИИС, 2010. – С. 8–27. 36. Крамер, Г. Математические методы статистики / Г. Крамер – М. : Мир, 1975. – 648 с. 37. Ли, Р. Оптимальные оценки, определение характеристик и управление / Р. Ли. – М. : Наука, 1966. – 176 с. 38. Об утверждении Инструкции по метрологическому обеспечению первичных эталонных генераторов (ПЭГ) системы сетевой тактовой синхронизации (ТСС) [текст] : Письмо Гостелекома РФ от 29 декабря 1999 г. № УЭС-1-5005. 39. Об утверждении организационной структуры Государственной службы времени, частоты и определения параметров вращения Земли Российской Федерации [текст] : Приказ Ростехрегулирования от 06.02.2007 № 324. 158 40. Об утверждении Положения о Государственной службе времени, частоты и определения параметров вращения Земли [текст] : Постановление Правительства Российской Федерации от 23 марта 2001 г. № 225 // Собр. законодательства РФ. – 02.04.2001. – № 14. – ст. 1361. 41. Одуан, К. Измерение времени. Основы GPS / К. Одуан, Б. Гино. – М : Техносфера, 2002. – 400 с. 42. Парфенов, Г.А. Сличение и синхронизация частоты задающих генераторов в сетях многоканальной связи по эталонным сигналам частоты и времени / Г.А. Парфенов // Метрология и измерительная техника в связи. – 1999. – № 6. 43. Пугачев, B.C. Теория вероятностей и математическая статистика : учеб. пособие / B.C. Пугачев. – 2-е изд., исправл. и дополн. – М. : Физматлит, 2002. – 496 с. 44. РМГ 29-99 ГСИ. Метрология. Основные термины и определения. – Введ. 01.01.2001. – М : ИПК Издательство стандартов, 2000. – 46 с. 45. Сильвестров, И.С. Метрологическое обеспечение системы ГЛОНАСС. Текущее состояние и перспективы развития / И.С. Сильвестров, В.Н. Федотов // Вестник метролога. – 2012. – № 1. – С. 11–15. 46. Сильвестров, И.С. Тенденции развития высшего звена средств метрологического обеспечения ГЛОНАСС [электронный ресурс] / И.С. Сильвестров. – 2011. – 12 с. URL: http://metrol.expoprom.ru/archive/2011/ Symp/17may/Vniiftri_17may_2011.pdf (дата обращения: 29.11.2013). 47. Синицин, И.Н. Фильтры Калмана и Пугачева / И.Н. Синицин – М. : Университетская книга, Логос, 2006. – 640 с. 48. Советов, Б.Я. Моделирование систем / Б.Я. Советов, С.А. Яковлев – М. : Высш. шк., 1998. – 319 с. 49. Стандарт частоты и времени водородный Ч1-75А. Технические характеристики / Нижегородское научно-производственное объединение имени М.В. Фрунзе [электронный ресурс]. URL: 159 http://www.nzif.ru/modules/myReviews/detailfile.php?lid=347 (дата обращения: 29.11.2013). 50. Толстиков, определений А.С. на Методы основе и алгоритмы применения координатно-временных спутниковых навигационных технологий. Автореферат диссертации на соискание учёной степени д.т.н. / А.С. Толстиков. – Новосибирск, 2011. – 38 с. 51. Тюрин, Ю.Н. Статистический анализ данных на компьютере / Ю.Н. Тюрин, А.А. Макаров – М. : Инфра-М, 2003. – 544 с. 52. Филимонов, C. Обеспечение единства времени в отрасли связи России / C. Филимонов // Журнал «Первая миля» – 2011. – № 3. – С. 8-15. 53. Фильтрация и стохастическое управление в динамических системах / Под общ. ред. К.Т. Леондеса [и др.]. – М. : Мир, 1980. – 407 с. 54. Химмельблау, Д. Прикладное нелинейное программирование / Д. Химмельблау − М. : Мир, 1975. – 535 c. 55. Холзнер, С. Perl: специальный справочник / С. Холзнер. – СПб : Питер, 2000. – 496 с. 56. Хрусталёв, Ю.П. Алгоритмы обработки измерительной информации, получаемой в процессе хранения единиц времени и частоты / Ю.П. Хрусталёв, Е.В. Спиридонова. // Техника средств связи. Серия “Радиотехнические измерения” – М., 1986. – Вып. O – С. 58-72. 57. Хрусталёв, Ю.П. Построение динамических стохастических моделей систем с неполной матрицей наблюдений / Ю.П. Хрусталёв. // Вестник ИрГТУ – 2010. – № 6. – С. 15-20. 58. Хрусталёв, Ю.П. Построение моделей многомерных временных рядов по результатам наблюдений в динамических системах / Ю.П. Хрусталёв, А.А. Овечкина, Е.В. Щербаков // Методы исследований и моделирования технических, социальных и природных систем : сб. науч. тр. – Новосибирск : Наука, 2003. – С. 293-307. 160 59. Хрусталёв, Ю.П. Статическая и динамическая обработка данных, получаемых в процессе ведения эталонов времени частоты / Ю.П. Хрусталёв // Измерительная техника – 2004. – № 6. – С. 20. 60. Цыпкин, Я.З. Информационная теория идентификации / Я.З. Цыпкин. – М. : Наука. Физматлит, 1995. – 336 с. 61. Эльясберг, П.Е. Определение движения по результатам измерения / П.Е. Эльясберг. – Изд. 2 – М. : Либроком, 2011. – 416с. 62. Эльясберг, П.Е. Определение и коррекция движения / Б.Ц. Бахшиян, P.P. Назиров, П.Е. Эльясберг. – М. : Наука, 1980. – 361 c. 63. Якимов, А.В. Флуктуации частоты водородного стандарта / А.А. Беляев, Б.А. Сахаров, А.К. Козлов, А.В. Якимов // Труды 1-го рабочего совещания по проекту НАТО SfP-973799 Semiconductors "Разработка радиационно стойких полупроводниковых приборов для систем связи и прецизионных измерений с использованием шумового анализа". – Нижний Новгород : ТАЛАМ, 2001. – С. 109-117. 64. Allan, D.W. A Modified "Allan Variance" with Increased Oscillator Characterization Ability / D.W. Allan, J.A. Barnes // Proceedings of the 35th Annual Frequency Control Symposium. – 1981. – P. 470-475. 65. Allan, D.W. Characterization of Clocks and Oscillators / D.B. Sullivan, D.W. Allan, D.A. Howe, F.L. Walls // NIST Tech Note 1337. – 1990. – 357 p. 66. Allan, D.W. Clock Characterization Tutorial [электронный ресурс] / D.W. Allan // Proceedings of the 15th Annual Precise Time and Time Interval (PTTI) Applications and Planning Meeting. – 1983. – 16 p. URL: http:// tf.boulder.nist.gov/general/pdf/2082.pdf (дата обращения: 30.11.2013). 67. Allan, D.W. Statistics of Atomic Frequency Standard / D.W. Allan // Proceedings of the IEEE. – 1966. – № 2. – P. 221-231. 68. Allan, D.W. The Impact of Precise Time in Our Lives: A Historical and Futuristic Perspective Surrounding GPS [электронный ресурс] / D.W. Allan // 50th Anniversary Invited Talk at Institute of Navigation Annual Meeting. – 161 1995. URL: http://www.allanstime.com/Publications/DWA/ IONGPS95/ (дата обращения: 30.11.2013). 69. Allan, D.W. Time and Frequency (Time-Domain) Characterization, Estimation and Prediction of Precision Clocks and Oscillators / D.W. Allan // IEEE Trans. on Ultrasonics, Ferroelectrics and Freq. Control. Vol. UFFC-34. – 1987, November – № 6. – P. 647. 70. Anderson, B. D. Optimal Filtering. / B. D. Anderson, J. B. Moore. – New York : Dover Publications, 2005. – 368 p. 71. Barnes, J.A. An adaptive algorithm to evaluate clock perfomance in real time [электронный ресурс] / J.A. Barnes // Proceedings of the Twentieth Annual Precise Time and Time Interval (PTTI) Applications and Planning Meeting. – 1988. – 16 p. URL: http://www.dtic.mil/get-tr-doc/ pdf?AD=ADA521211 (дата обращения: 1.12.2013). 72. BIPM Annual Report on Time Activities [электронный ресурс]. – 2012. – Vol. 7. – 121 p. URL: http://www.bipm.org/utils/en/pdf/time_ann_rep/ Time_annual_report_2012.pdf (дата обращения: 29.11.2013). 73. Breakiron, L.A. A Kalman filter for atomic clocks and time scales / L.A. Breakiron // 33rd Annual Precise Time and Time Interval (PTTI) Systems and Planning Meeting. – 2001. – P. 431-442. 74. Breakiron, L.A. Timescale algorithms combining cesium clocks and hydrogen masers / L.A. Breakiron // In Proceedings of the 23rd Annual Precise Time and Time Interval (PTTI) Applications and Planning Meeting, 3-5 December 1991, Pasadena, California, USA (NASA Conference Publication 3159). – 1991. – P. 297-305. 75. Breakiron, L.A. Kalman Filter Characterization of Cesium Clocks and Hydrogen Masers [электронный ресурс] / L.A. Breakiron // 34th Annual Precise Time and Time Interval (PTTI) Meeting. – 2002. – P. 511-526. URL: http://www.dtic.mil/get-tr-doc/pdf?AD=ADA484008 30.11.2013). (дата обращения: 162 76. Breakiron, L.A. The effects of data processing and environmental conditions on the accuracy of the USNO timescale [электронный ресурс] / L.A. Breakiron // 20th Annual Precise Time and Time Interval (PTTI) Meeting. – 1988. – 15 p. URL: http://tycho.usno.navy.mil/ptti/1988papers/ Vol%2020_20.pdf (дата обращения: 27.11.2013). 77. Chatfield, C. The Analysis of Time Series: An Introduction / C. Chatfield. – 5th edition – London : Chapman & Hall, 1996. – 304 p. 78. Graup, D. Identification of time-series by ARMA-methods / D. Graup – In. : Modelling and simulations, 1974. – u5, part 2. – P. 1013-1019. 79. Greenhall, C. A. Reduced Kalman filters for clock ensembles. / C. A. Greenhall // Conference: IEEE International Frequency Control Symposium. – 2011. P. 1-5. 80. Greenhall, C. Kalman plus weights: A time scale algorithm / C. Greenhall // In Proc. 33rd Annu. Precise Time and Time Interval Meeting. – 2001. – P. 445– 454. 81. Greenhall, C.A. A Kalman Filter Clock Algorithm For Use In The Presence Of Flicker Frequency Modulation Noise [электронный ресурс] / J.A. Davis, C.A. Greenhall, P.W. Stacey // 35th Annual Precise Time and Time Interval (PTTI) Meeting. – 2004. – 16 p. URL: http://www.dtic.mil/get-tr- doc/pdf?AD=ADA427980 (дата обращения: 27.11.2013). 82. Greenhall, C.A. A Kalman filter clock ensemble algorithm that admits measurement noise / C.A. Greenhall // Metrologia. – 2006. – № 43. – P. S311S321. 83. Hanssen, J. Evaluation of Time Transfer Units for Time and Frequency Transfer in Optical Fibers Utilizing a Passive Technique Based on SONET/SDH [электронный ресурс] / J. Hanssen, C. Ekstrom, S.C. Ebenhag, K. Jaldehag. // 44th Annual Precise Time and Time Interval (PTTI) Systems and Applications Meeting. – 2011. – 6 p. URL: http:// 163 tycho.usno.navy.mil/ptti/2012papers/PTTI2012.p371.pdf (дата обращения: 1.12.2013). 84. Jachan, M. Time-Frequency ARMA Models and Parameter Estimators for Underspread Nonstationary Random Processes [электронный ресурс] / M. Jachan, G. Matz, F. Hlawatsch // IEEE Transactions on Signal Processing. – 2006. – 28 p. URL: http://www.nt.tuwien.ac.at/fileadmin/users/mjachan/ manuscript.pdf (дата обращения: 29.11.2013). 85. Jaldehag, K. Time and Frequency Transfer Using Asynchronous Fiber-optical Networks: Progress Report [электронный ресурс] / K. Jaldehag [et al.] // 41st Annual Precise Time and Time Interval (PTTI) Meeting. – 2009. – 14 p. URL: http://www.dtic.mil/get-tr-doc/pdf?AD=ADA518064 (дата обращения: 1.12.2013). 86. Krutikov, V. The National Time and Frequency Service of the Russian Federation [электронный ресурс] / V. Krutikov, V. Kostromin, N. Koshelyaevsky // 35th Annual Precise Time and Time Interval (PTTI) Meeting. – 2004. – 49 p. URL: http://www.dtic.mil/get-tr-doc/pdf?AD= ADA427779 (дата обращения: 20.11.2013). 87. Levine, J. A review of time and frequency transfer methods [электронный ресурс] / J. Levine // Metrologia. – 2008. – vol. 45. – P. 162-174. URL: http://tf.nist.gov/general/pdf/2311.pdf (дата обращения: 1.12.2013). 88. Lombardi, M.A. NIST Primary Frequency Standards and the Realization of the SI Second. / M.A. Lombardi, T.P. Heavner, S.R. Jefferts // Journal of Measurement Science. – 2007. – № 2 (4). – P. 74-89. 89. Peca, M. Clock Composition by Wiener Filtering Illustrated on Two Atomic Clocks / M. Peca, V. Michalek, M. Vacek // IEEE-UFFC International Frequency Control Symposium - European Frequency and Time Forum. – 2013. – 4 p. 164 90. Percival, D.B. Characterization of Frequency Stability: Frequency Domain Estimation of Stability Measures / D.B. Percival // Proceedings of the IEEE. – 1991. – 79, no. 7. – P. 961-72. 91. Percival, D.B. Prediction Error Analysis of Atomic Frequency Standards / D.B. Percival // Proc. 31st Annual Symposium on Frequency Control. – 1977. – P. 319-326. 92. Percival, D.B. Spectral Analysis of Clock Noise: A Primer [электронный ресурс] / D.B. Percival // Metrologia. – 2006. – 40 p. URL: http:// faculty.washington.edu/dbp/PDFFILES/primer-sa-clock.pdf (дата обращения: 27.11.2013). 93. Percival, D.B. Stochastic Models and Statistical Analysis for Clock Noise [электронный ресурс] / D.B. Percival. – 2003. – URL: http://faculty. washington.edu/dbp/PDFFILES/tech-report-02-03.pdf (дата обращения: 27.11.2013). 94. Peters, H. E. Atomic Hydrogen Masers With Self AutoTune System And Magnetic Field Cancellation Servo / H. E. Peters, H. B. Owings, P. A. Koppang // 20th Annual PTTI Meeting. – 1988. – P. 337-344. 95. Riley, W.J. Handbook of Frequency Stability Analysis / W.J. Riley. – National Institute of Standards and Technology (NIST), U.S. Department of Commerce, NIST Special Publication 1065. – 2008. – 136 p. 96. Rutman, J. Characterization of Frequency Stability in Precision Frequency Sources / J. Rutman, F.L. Walls. // Proc. IEEE. – 1991. – vol. 79. – P. 952-960. 97. Rutman, J. Characterization of phase and frequency instabilities in precision frequency sources; fifteen years of progress. / J. Rutman. // Proc. IEEE. 1978. – vol. 66. – P. 1048-1174. 98. Shemar, S.L. Preliminary Results from NPL's Clock Ensemble Algorithm using Hydrogen Masers and Caesium Clocks [электронный ресурс] / S.L. Shemar, J.A. Davis, P.B. Whibberley // 24th European Frequency and Time Forum. – 2010. – 8 p. URL: http://www.congrex.nl/EFTF_Proceedings/ 165 Papers/Session_9_Temescales_and_Algorithms/09_04_Shemar.pdf (дата обращения: 1.12.2013). 99. Shemar, S.L. Studies of NPL's Clock Ensemble Algorithm / S.L. Shemar, J.A. Davis, P.B. Whibberley // Proceedings of the 43rd Annual Precise Time and Time Interval Systems and Applications Meeting, Long Beach, CA. – 2011, November. – P. 141-152. 100. Suess, M. Simulating Future GPS Clock Scenarios With Two Composite Clock Algorithms [электронный ресурс] / M. Suess, D. Matsakis, C.A. Greenhall // 42nd Annual Precise Time and Time Interval (PTTI) Meeting. – 2011. – 23 p. URL: http://www.dtic.mil/get-tr-doc/pdf?AD=ADA547035 (дата обращения: 29.11.2013). 101. Time and Frequency activity at the IMVP FGUP "VNIIFTRI" [электронный ресурс] // CCTF 17th meeting working documents. – CCTF/06-11. – 2006. URL: http://www.bipm.org/cc/CCTF/Allowed /17/CCTF_060812.pdf (дата обращения: 19.11.2013). 102. USNO report on activities [электронный ресурс] // CCTF 19th meeting working documents. – CCTF/12-06. – 2012. URL: http://www.bipm.org/cc/ CCTF/Allowed/19/CCTF_12-06-USNO_Report.pdf (дата обращения: 27.11.2013). 103. VNIIFTRI report on activities [электронный ресурс] // CCTF 19th meeting working documents. – CCTF/12-02. – 2012. URL: bipm.org/cc/CCTF/Allowed/19/CCTF_12-02-VNIIFTRI.pdf http://www. (дата обращения: 19.11.2013). 104. Weiss, M.A. A study of the NBS time scale algorithm / M.A. Weiss, D.W. Allan, T.K. Peppler // IEEE Trans. Instrum. Meas. – 1989. – vol. 38. – P. 631643. 166 Приложения ВС221 -37,6 -57,7 -50,4 -63,4 -53,5 -51,8 -37,0 -41,1 -45,4 -39,8 -45,0 -43,1 -42,9 -39,3 -44,6 -42,3 -61,0 -46,4 -53,3 ВС228 3,0 -7,3 1,8 -4,3 12,1 20,3 31,9 24,5 27,5 32,7 33,8 33,7 34,4 41,2 36,7 47,1 35,5 45,3 47,7 ВС227 ВС221-SU -40,0 -55,7 -50,0 -59,5 -49,1 -49,3 -37,8 -47,8 -49,4 -49,4 -52,8 -55,1 -58,0 -58,6 -65,6 -59,3 -72,9 -67,2 -68,8 ВС225 ВС228-SU 31,2 18,0 25,2 16,5 33,9 39,3 54,7 54,1 57,4 59,8 57,5 59,5 59,3 59,1 50,9 59,1 49,3 57,8 46,4 ВС226 ВС227-SU 69,9 57,6 65,3 56,5 71,1 71,5 87,0 78,2 80,3 82,6 78,7 76,9 76,2 78,9 71,5 79,6 67,8 74,3 74,1 ВС221 ВС225-SU 107,5 115,3 115,7 119,9 124,6 123,3 124,0 119,3 125,7 122,4 123,7 120,0 119,1 118,2 116,1 121,9 128,8 120,7 127,4 ВС228 ВС226-SU 66,9 64,9 63,5 60,8 59,0 51,2 55,1 53,7 52,8 49,9 44,9 43,2 41,8 37,7 34,8 32,5 32,3 29,0 26,4 ВС227 ВС226-ВС221 109,9 113,3 115,3 116,0 120,2 120,8 124,8 126,0 129,7 132,0 131,5 132,0 134,2 137,5 137,1 138,9 140,7 141,5 142,9 МНК-оценки ВС225 ВС226-ВС228 38,7 39,6 40,1 40,0 37,2 32,2 32,3 24,1 22,9 22,8 21,2 17,4 16,9 19,8 20,6 20,5 18,5 16,5 27,7 Оценки с использованием моделей АРСС ВС226 ВС226-ВС227 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ВС226-ВС225 Приложение 1. Ряды измерений эталона ВЭТ 1-5 и построенных по ним оценок 70,73 71,75 71,73 72,01 73,19 71,17 73,81 71,42 73,35 73,12 72,24 71,04 71,14 71,40 70,38 71,31 73,01 71,44 75,07 32,03 32,15 31,63 32,01 35,99 38,97 41,51 47,32 50,45 50,32 51,04 53,64 54,24 51,60 49,78 50,81 54,51 54,94 47,37 -39,16 -41,54 -43,56 -43,98 -47,00 -49,62 -50,98 -54,57 -56,34 -58,87 -59,25 -60,95 -63,05 -66,09 -66,71 -67,58 -67,68 -70,05 -67,82 3,83 6,85 8,23 11,21 14,19 19,97 18,71 17,72 20,55 23,22 27,34 27,84 29,34 33,70 35,58 38,81 40,71 42,44 48,67 -36,76 -43,54 -43,96 -47,88 -51,40 -52,12 -50,18 -47,87 -52,34 -49,27 -51,45 -48,95 -47,95 -46,79 -45,71 -50,58 -55,78 -49,25 -52,32 70,73 72,78 73,12 73,59 74,52 71,90 73,74 71,23 72,95 72,28 71,27 69,69 69,75 70,17 69,45 70,71 72,24 69,96 73,55 32,03 33,18 33,02 33,59 37,32 39,70 41,44 47,13 50,05 49,48 50,07 52,29 52,85 50,37 48,85 50,21 53,74 53,46 45,85 -39,16 -40,51 -42,17 -42,40 -45,67 -48,89 -51,05 -54,76 -56,74 -59,71 -60,22 -62,30 -64,44 -67,32 -67,64 -68,18 -68,45 -71,53 -69,34 3,83 7,88 9,62 12,79 15,52 20,70 18,64 17,53 20,15 22,38 26,37 26,49 27,95 32,47 34,65 38,21 39,94 40,96 47,15 -36,76 -42,51 -42,57 -46,30 -50,07 -51,39 -50,25 -48,06 -52,74 -50,11 -52,42 -50,30 -49,34 -48,02 -46,64 -51,18 -56,55 -50,73 -53,84 168 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 36,6 41,5 40,5 42,4 40,3 37,2 36,8 38,6 36,6 37,4 38,9 38,6 37,1 39,0 37,8 38,8 38,5 38,8 40,8 38,8 39,4 40,4 36,0 39,2 36,9 38,8 39,2 40,6 141,4 144,9 144,2 147,0 145,9 146,7 147,9 149,0 149,5 151,0 152,2 152,4 151,8 150,2 151,4 151,5 151,4 151,0 152,6 151,5 151,7 150,5 149,2 150,1 148,5 149,7 147,9 147,2 21,8 21,1 16,4 16,1 12,7 9,7 5,9 11,1 8,8 3,9 2,6 -0,9 -5,3 -7,8 -9,8 -12,6 -16,8 -19,4 -19,9 -23,1 -25,5 -30,4 -33,0 -35,8 -39,2 -41,0 -44,4 -44,2 118,5 120,7 123,8 121,1 117,7 118,5 121,2 120,0 133,7 119,5 118,0 123,2 126,8 123,5 122,5 124,4 128,2 131,3 127,6 123,6 124,9 126,3 123,3 124,6 122,4 124,8 123,8 127,2 73,6 70,8 78,9 69,7 72,9 75,7 78,5 69,9 80,1 77,3 76,4 73,1 78,5 76,9 70,1 77,5 77,8 74,5 71,5 76,6 68,1 71,8 69,7 73,4 72,0 70,1 69,4 68,3 37,0 29,3 38,4 27,3 32,6 38,5 41,7 31,3 43,5 39,9 37,5 34,5 41,4 37,9 32,3 38,7 39,3 35,7 30,7 37,8 28,7 31,4 33,7 34,2 35,1 31,3 30,2 27,7 -67,8 -74,1 -65,3 -77,3 -73,0 -71,0 -69,4 -79,1 -69,4 -73,7 -75,8 -79,3 -73,3 -73,3 -81,3 -74,0 -73,6 -76,5 -81,1 -74,9 -83,6 -78,7 -79,5 -76,7 -76,5 -79,6 -78,5 -78,9 51,8 49,7 62,5 53,6 60,2 66,0 72,6 58,8 71,3 73,4 73,8 74,0 83,8 84,7 79,9 90,1 94,6 93,9 91,4 99,7 93,6 102,2 102,7 109,2 111,2 111,1 113,8 112,5 -44,9 -49,9 -44,9 -51,4 -44,8 -42,8 -42,7 -50,1 -53,6 -42,2 -41,6 -50,1 -48,3 -46,6 -52,4 -46,9 -50,4 -56,8 -56,1 -47,0 -56,8 -54,5 -53,6 -51,2 -50,4 -54,7 -54,4 -58,9 74,05 75,52 74,41 75,09 72,92 71,98 72,10 73,94 75,87 73,93 73,98 74,10 74,04 73,88 73,73 74,15 74,51 75,51 76,44 74,79 75,06 74,69 73,06 74,16 72,66 73,94 73,28 74,74 37,45 34,02 33,91 32,69 32,62 34,78 35,30 35,34 39,27 36,53 35,08 35,50 36,94 34,88 35,93 35,35 36,01 36,71 35,64 35,99 35,66 34,29 37,06 34,96 35,76 35,14 34,08 34,14 -67,34 -69,37 -69,78 -71,90 -72,97 -74,71 -75,79 -75,05 -73,62 -77,06 -78,21 -78,29 -77,75 -76,31 -77,66 -77,34 -76,88 -75,48 -76,15 -76,70 -76,63 -75,80 -76,13 -75,93 -75,83 -75,75 -74,61 -72,45 52,25 54,42 58,01 58,99 60,22 62,28 66,20 62,84 67,07 70,03 71,38 75,00 79,34 81,68 83,53 86,75 91,31 94,91 96,34 97,89 100,56 105,09 106,06 109,96 111,86 114,94 117,68 118,94 -44,44 -45,17 -49,38 -46,00 -44,77 -46,51 -49,09 -46,05 -57,82 -45,56 -44,01 -49,09 -52,75 -49,61 -48,76 -50,24 -53,68 -55,78 -51,15 -48,80 -49,83 -51,60 -50,23 -50,43 -49,73 -50,85 -50,51 -52,45 72,60 74,86 74,50 75,14 73,47 72,90 73,19 74,93 77,28 74,31 74,69 75,43 75,27 74,62 74,47 74,98 75,30 75,87 76,26 74,72 75,20 75,00 73,30 74,40 73,09 74,43 73,88 75,37 36,00 33,36 34,00 32,74 33,17 35,70 36,39 36,33 40,68 36,91 35,79 36,83 38,17 35,62 36,67 36,18 36,80 37,07 35,46 35,92 35,80 34,60 37,30 35,20 36,19 35,63 34,68 34,77 -68,79 -70,03 -69,69 -71,85 -72,42 -73,79 -74,70 -74,06 -72,21 -76,68 -77,50 -76,96 -76,52 -75,57 -76,92 -76,51 -76,09 -75,12 -76,33 -76,77 -76,49 -75,49 -75,89 -75,69 -75,40 -75,26 -74,01 -71,82 50,80 53,76 58,10 59,04 60,77 63,20 67,29 63,83 68,48 70,41 72,09 76,33 80,57 82,42 84,27 87,58 92,10 95,27 96,16 97,82 100,70 105,40 106,30 110,20 112,29 115,43 118,28 119,57 -45,89 -45,83 -49,29 -45,95 -44,22 -45,59 -48,00 -45,06 -56,41 -45,18 -43,30 -47,76 -51,52 -48,87 -48,02 -49,41 -52,89 -55,42 -51,33 -48,87 -49,69 -51,29 -49,99 -50,19 -49,30 -50,36 -49,91 -51,82 169 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 41,0 39,9 39,4 39,4 39,0 40,4 32,0 27,3 39,7 40,3 40,5 43,3 41,4 40,7 39,9 39,1 38,7 41,7 41,2 41,8 39,5 41,4 37,4 37,4 37,2 37,6 35,9 35,0 145,7 146,3 144,7 142,8 141,7 141,4 140,1 137,8 136,9 135,6 131,8 132,4 129,1 127,7 127,1 124,2 122,8 121,7 119,1 116,8 115,3 112,0 109,3 108,0 105,4 103,4 101,8 98,0 -50,5 -53,3 -55,6 -59,0 -62,0 -64,3 -67,3 -68,8 -74,5 -77,4 -80,5 -80,9 -86,3 -89,6 -92,3 -94,5 -97,5 -100,7 -103,5 -106,0 -107,5 -112,4 -115,6 -117,2 -121,1 -123,4 -126,1 -129,5 126,2 127,8 132,5 133,5 129,5 133,0 129,2 121,7 125,0 132,9 130,6 127,2 127,0 126,5 131,6 128,2 124,3 130,2 128,2 119,2 129,3 122,3 114,5 125,8 126,0 119,5 121,0 68,8 66,9 70,4 72,2 74,8 70,4 71,4 71,4 71,4 71,4 71,4 71,4 72,5 68,5 73,8 74,1 66,9 69,2 69,0 68,7 65,7 72,2 68,3 69,7 69,9 69,2 69,2 68,3 27,8 27,0 31,0 32,8 35,8 30,0 39,4 44,1 31,7 31,1 30,9 28,1 31,1 27,8 33,9 35,0 28,2 27,5 27,8 26,9 26,2 30,8 30,9 32,3 32,7 31,6 33,3 33,3 -76,9 -79,4 -74,3 -70,6 -66,9 -71,0 -68,7 -66,4 -65,5 -64,2 -60,4 -61,0 -56,6 -59,2 -53,3 -50,1 -55,9 -52,5 -50,1 -48,1 -49,6 -39,8 -41,0 -38,3 -35,5 -34,2 -32,6 -29,7 119,3 120,2 126,0 131,2 136,8 134,7 138,7 140,2 145,9 148,8 151,9 152,3 158,8 158,1 166,1 168,6 164,4 169,9 172,5 174,7 173,2 184,6 183,9 186,9 191,0 192,6 195,3 197,8 -57,4 -60,9 -62,1 -61,3 -54,7 -62,6 -57,8 -50,3 -53,6 -61,5 -59,2 -54,7 -58,5 -52,7 -57,5 -61,3 -55,1 -61,2 -59,5 -53,5 -57,1 -54,0 -44,8 -55,9 -56,8 -50,3 -52,7 73,73 74,22 75,14 75,51 75,04 76,28 73,89 71,72 73,91 74,93 74,29 75,18 73,36 72,97 73,87 73,16 72,30 73,76 73,13 71,41 72,49 71,00 68,08 69,99 69,85 69,07 68,78 68,99 32,73 34,32 35,74 36,11 36,04 35,88 41,89 44,42 34,21 34,63 33,79 31,88 31,96 32,27 33,97 34,06 33,60 32,06 31,93 29,61 32,99 29,60 30,68 32,59 32,65 31,47 32,88 33,99 -71,96 -72,07 -69,55 -67,28 -66,65 -65,11 -66,20 -66,07 -62,98 -60,66 -57,50 -57,21 -55,73 -54,72 -53,22 -51,03 -50,49 -47,93 -45,96 -45,38 -42,80 -40,99 -41,21 -38,00 -35,54 -34,32 -33,01 -29,00 124,23 127,52 130,74 134,51 137,04 140,58 141,19 140,52 148,41 152,33 154,79 156,08 159,66 162,57 166,17 167,66 169,80 174,46 176,63 177,41 179,99 183,40 183,68 187,19 190,95 192,47 194,88 198,49 -52,46 -53,57 -57,35 -57,98 -54,45 -56,71 -55,30 -49,97 -51,08 -57,89 -56,24 -51,94 -53,57 -53,45 -57,65 -54,96 -51,92 -56,36 -54,99 -47,71 -56,73 -51,22 -46,34 -55,73 -56,07 -50,35 -52,14 -56,63 74,33 74,64 75,37 75,19 74,19 75,35 72,77 70,31 72,88 74,48 73,46 74,16 72,80 72,44 73,47 72,45 71,56 73,35 72,65 70,90 72,77 71,03 68,42 71,05 70,71 69,61 69,69 70,01 33,33 34,74 35,97 35,79 35,19 34,95 40,77 43,01 33,18 34,18 32,96 30,86 31,40 31,74 33,57 33,35 32,86 31,65 31,45 29,10 33,27 29,63 31,02 33,65 33,51 32,01 33,79 35,01 -71,36 -71,65 -69,32 -67,60 -67,50 -66,04 -67,32 -67,48 -64,01 -61,11 -58,33 -58,23 -56,29 -55,25 -53,62 -51,74 -51,23 -48,34 -46,44 -45,89 -42,52 -40,96 -40,87 -36,94 -34,68 -33,78 -32,10 -27,98 124,83 127,94 130,97 134,19 136,19 139,65 140,07 139,11 147,38 151,88 153,96 155,06 159,10 162,04 165,77 166,95 169,06 174,05 176,15 176,90 180,27 183,43 184,02 188,25 191,81 193,01 195,79 199,51 -51,86 -53,15 -57,12 -58,30 -55,30 -57,64 -56,42 -51,38 -52,11 -58,34 -57,06 -52,96 -54,12 -53,98 -58,05 -55,67 -52,66 -56,77 -55,47 -48,22 -56,45 -51,19 -46,00 -54,67 -55,21 -49,81 -51,23 -55,61 170 76 77 78 79 80 81 82 83 84 85 86 87 33,5 35,7 34,0 34,1 34,0 32,9 34,0 34,9 35,8 32,1 33,3 32,5 94,4 93,1 88,5 87,9 84,9 81,8 79,6 77,3 73,6 70,8 67,1 62,7 -132,4 -135,0 -138,9 -140,3 -143,6 -146,6 -148,8 -150,2 -155,0 -157,6 -162,0 -164,1 125,7 121,3 125,4 123,5 126,5 127,8 126,0 124,1 120,4 119,6 116,4 128,8 63,4 57,6 68,1 63,0 67,4 73,6 73,6 70,1 65,7 66,7 69,9 67,4 29,9 21,9 34,1 28,9 33,4 40,7 39,6 35,2 29,9 34,6 36,6 34,9 -31,0 -35,5 -20,4 -24,9 -17,5 -8,2 -6,0 -7,2 -7,9 -4,1 2,8 4,7 195,8 192,6 207,0 203,3 211,0 220,2 222,4 220,3 220,7 224,3 231,9 231,5 -62,3 -63,7 -57,3 -60,5 -59,1 -54,2 -52,4 -54,0 -54,7 -52,9 -46,5 -61,4 67,90 69,41 68,15 69,61 69,82 69,43 69,63 69,26 68,19 66,51 68,35 67,42 34,40 33,71 34,15 35,51 35,82 36,53 35,63 34,36 32,39 34,41 35,05 34,92 -26,49 -23,68 -20,34 -18,28 -15,07 -12,36 -9,96 -8,03 -5,40 -4,28 1,25 4,72 200,30 204,41 207,05 209,91 213,42 216,03 218,43 219,46 223,19 224,11 230,35 231,52 -53,32 -55,91 -55,27 -56,81 -57,90 -56,49 -54,39 -51,06 -51,33 -49,82 -60,37 -54,91 68,55 70,05 68,68 69,95 70,00 69,28 69,33 69,14 68,58 67,25 69,50 67,92 35,05 34,35 34,68 35,85 36,00 36,38 35,33 34,24 32,78 35,15 36,20 35,42 -25,84 -23,04 -19,81 -17,94 -14,89 -12,51 -10,26 -8,15 -5,01 -3,54 2,40 5,22 200,95 205,05 207,58 210,25 213,60 215,88 218,13 219,34 223,58 224,85 231,50 232,02 -52,67 -55,27 -54,75 -56,47 -57,72 -56,64 -54,69 -51,18 -50,94 -49,07 -59,22 -54,40 Приложение 2. Свидетельство о государственной регистрации программы для ЭВМ 172 Приложение 3. Акт о внедрении 173 Приложение 4. Упрощённая блок-схема процедуры оценивания Начало вычисление прогнозов yˆ i ,t|t 1 1 yˆ i ,t 1 2 yˆi ,t 2 ... t yˆ i ,t p 1ai ,t 1 ... q ai ,t q вычисление оценки опорного генератора N yˆ оп ,t wi zi ,t yˆ i ,t |t 1 i 1 вычисление оценок остальных генераторов yˆ i ,t yˆ оп ,t zi ,t нет t – последнее? да вычисление функционала I n N 1 I zi ,t yˆ оп ,t|t 1 yˆ i 1,t|t 1 2 t 1 i 1 вычисление градиента I I I I I 1 , p ,1 , q , , , , , p 1 q 1 2 q I I I 2 m 1 m l 1 l p 2 приращение параметров I i Cˆ i Cˆ i 1 Cˆ i m I i Cˆ i вычисление функционала I с учётом приращения нет выполняется условие дробления шага? да дробление шага да m m1 нет уменьшение I значимо? считать последние вычисленные оценки для генераторов окончательными Конец 174 Приложение 5. Листинг программы model_main.pl: # Главный модуль use Storable "dclone"; use Data::Dump qw(dump); use Win32::OLE; require "model_arima.pl"; require "model_average.pl"; require "model_generate.pl"; require "model_io.pl"; require "model_single_arima.pl"; require "model_trends.pl"; require "model_utl.pl"; open (OUT, ">out.txt"); close (OUT); my @series_to_estimate; my @initial_trend_estimates_file = (); my @original_series = (); print ">> Выберите источник данных:\n". " f (file) - файл\n". " * g (generate) - генератор [по-умолчанию]\n\n"; my $mode = lc(<>); chomp $mode; if ($mode eq "f" || $mode eq "file") { print "> Ввод данных из файла\n"; open (IN, "<in.txt"); my @lines = <IN>; close IN; my $i = 0; my $fl = 0; my $trend_n = -1; foreach my $line (@lines) { chomp $line; if ($line eq "") { $i++; next; } if ($line eq "trends:") { chomp($lines[$i+1]); chomp($lines[$i+2]); my @initial_values_constants = split("\t",$lines[$i+2]); my @initial_values_angles = split("\t",$lines[$i+1]); if (scalar(@initial_values_constants) != scalar(@initial_values_angles)) { print "Файл не содержит полного набора начальных оценок трендов\n"; } $trend_n = scalar(@initial_values_angles); foreach (0..$#initial_values_constants) { 175 $initial_trend_estimates_file[$_] = { 'b0'=>$initial_values_angles[$_], 'b1'=>$initial_values_constants[$_], }; } #dump @initial_trend_estimates_file; } elsif ($line eq "series:") { $fl = 1; } elsif ($fl == 1) { my @this_series = split("\t",$line); #print $line."\n"; if (scalar(@this_series)+1 != $trend_n) { print "Число рядов не соответствует числу начальных оценок трендов\n"; } for my $j (0..scalar(@this_series)-1) { $this_series[$j] =~ s/,/\./g; $series_to_estimate[$j] = { 'series'=>[{ "z" => $this_series[$j] }], 'params'=>undef }; } $fl = 2; } elsif ($fl == 2) { my @this_series = split("\t",$line); for my $j (0..scalar(@this_series)-1) { $this_series[$j] =~ s/,/\./g; push (@{$series_to_estimate[$j]{'series'}}, { "z" => $this_series[$j] }); } } $i++; } } else { print "> Генерация данных\n"; open (IN, "<gen_settings.txt") or die "Файл настроек генератора не найден!"; my @lines = <IN>; close IN; my ($N,@models_for_series_generation,@trends_for_series_generation); my $state = 0; my $id = 0; my $param_cntr = 0; foreach my $line (@lines) { chomp $line; $line =~ s/\s//g; if ($line =~ m/^N:(\d+)$/) { $N = $1; 176 $state = 1; } elsif ($state > 0 && $line eq "gen_start") { push (@models_for_series_generation,{}); push (@trends_for_series_generation,{}); $state = 2; $param_cntr = 0; } elsif ($state > 0 && $line eq "gen_end") { $id++; $state = 1; if ($param_cntr != 9) { print "Не задан один из параметров генератора\n"; } } elsif ($state == 2) { if ($line =~ m/^order_ar:(\d+)$/) { $models_for_series_generation[$id]{'order_ar'} = $1; $param_cntr++; } elsif ($line =~ m/^order_ma:(\d+)$/) { $models_for_series_generation[$id]{'order_ma'} = $1; $param_cntr++; } elsif ($line =~ m/^order_diff:(\d+)$/) { $models_for_series_generation[$id]{'order_diff'} = $1; $param_cntr++; } elsif ($line =~ m/^sigma_sq:(\d+(\.\d+)?)$/) { $models_for_series_generation[$id]{'sigma_sq'} = $1; $param_cntr++; } elsif ($line =~ m/^const:((-)?\d+(\.\d+)?)$/) { $models_for_series_generation[$id]{'const'} = $1; $param_cntr++; } elsif ($line =~ m/^params_ar:/) { $models_for_series_generation[$id]{'params_ar'} = [split(";",(split(/:/,$line))[1])]; $param_cntr++; } elsif ($line =~ m/^params_ma:/) { $models_for_series_generation[$id]{'params_ma'} = [split(";",(split(/:/,$line))[1])]; $param_cntr++; } elsif ($line =~ m/^b0:((-)?\d+(\.\d+)?)$/) { $trends_for_series_generation[$id]{'b0'} = $1; $param_cntr++; } elsif ($line =~ m/^b1:((-)?\d+(\.\d+)?)$/) { $trends_for_series_generation[$id]{'b1'} = $1; $param_cntr++; } else { print "Неизвестная строка в файле конфигурации генератора!\n$line\n"; } } elsif ($line eq "") { next; } else { print "Неизвестная строка в файле конфигурации генератора!\n$line\n"; } } if (scalar(@models_for_series_generation) != scalar(@trends_for_series_generation) || scalar(@models_for_series_generation) != $N) { print "Количество описаний генераторов не соответствует числу рядов\n"; } else { print "Считано $N описаний рядов\n"; } print "> Исходные модели:\n"; for (0..scalar(@models_for_series_generation)-1) { print "Ряд ".($_+1)."\n"; print_params_more($models_for_series_generation[$_]); print "\n"; } for my $i (0..$N-1) { 177 $original_series[$i] = { 'series'=>[], 'params'=>undef }; gen_series(300,$original_series[$i]{series},$models_for_series_generation[$i]); } open (OUT, ">out.txt"); print OUT "Исходные сгенерированные ряды:\n\n"; close (OUT); print_all_rows_file(\@original_series); add_trends(\@original_series,\@trends_for_series_generation); open (OUT, ">>out.txt"); print OUT "Исходные сгенерированные ряды с наложенным трендом:\n\n"; close (OUT); print_all_rows_file(\@original_series); for my $i (1..$N-1) { $series_to_estimate[$i-1] = { 'series'=>get_difference_series($original_series[0]{series}, $original_series[$i]{series}), 'params'=>undef }; } } #/ закончили подготовку данных # вывели исходные разностные ряды в файл open (OUT, ">>out.txt"); print OUT "Исходные разностные ряды:\n\n"; close (OUT); print_all_rows_file(\@series_to_estimate); # ищем оценку по среднему my @resulting_series_average; freq_estimation_average(\@series_to_estimate,\@resulting_series_average); # выводим результаты предварительных оценок по среднему open (OUT, ">>out.txt"); print OUT "Ряды оценок среднего (с трендами):\n\n"; close (OUT); print_all_rows_file(\@resulting_series_average); # подгоняем тренды print ">> Укажите режим оценки тренда:\n". " * n (no) - не подгонять [по-умолчанию]\n". " a (angle) - подгонять угол\n". " b (both) - подгонять угол и постоянную\n\n"; my $in_angle_only; my $skip_trend = 0; my $in_angle_mode = lc(<>); chomp ($in_angle_mode); 178 if ($in_angle_mode eq "a" || $in_angle_mode eq "angle") { $in_angle_only = 1; print "> Подгонка наклона.\n"; } elsif ($in_angle_mode eq "b" || $in_angle_mode eq "both") { $in_angle_only = 0; print "> Подгонка наклона и постоянной.\n"; } else { $skip_trend = 1; print "> Без подгонки.\n"; } my @series_to_estimate_1; my @initial_trend_estimates = (); copy_series_struct(\@series_to_estimate,\@series_to_estimate_1,1); #dump @series_to_estimate_1; my $initial_trends_ref = undef; if ($skip_trend != 1) { print ">> Использовать начальное приближение?:\n". " y (yes) - да\n". " * n (no) - нет: начальное приближение будет задано равным 0 [по-умолчанию]:\n\n"; my $in_trend_initial_estimates_mode = lc(<>); chomp ($in_trend_initial_estimates_mode); if ($in_trend_initial_estimates_mode eq "y" || $in_trend_initial_estimates_mode eq "yes") { if (scalar(@initial_trend_estimates_file) > 0) { @initial_trend_estimates = @initial_trend_estimates_file; } else { for my $series_num (0..scalar(@series_to_estimate)-1+1) { print "Угол наклона b0 для ряда: ".($series_num+1)."\n\n"; my $b0 = <>; chomp ($b0); my $b1 = 0; unless ($in_angle_only == 1) { print "Постоянная составляющая b1 для ряда: ".($series_num+1)."\n\n"; $b1 = <>; chomp ($b1); } $initial_trend_estimates[$series_num] = { 'b0'=>$b0, 'b1'=>$b1, }; } } $initial_trends_ref = \@initial_trend_estimates; } else { $initial_trends_ref = undef; } my @estimated_trends; #fit_trends(\@resulting_series_average,$initial_trends_ref,\@estimated_trends,$in_angle_only); fit_trends(\@series_to_estimate,$initial_trends_ref,\@estimated_trends,$in_angle_only); # убираем тренды remove_trends(\@series_to_estimate,\@estimated_trends); open (OUT, ">>out.txt"); print OUT "Разностные ряды с удалёнными трендами:\n\n"; close (OUT); print_all_rows_file(\@series_to_estimate); @initial_trend_estimates = @estimated_trends; 179 } else { # убираем тренды if (scalar(@initial_trend_estimates_file) > 0) { @initial_trend_estimates = @initial_trend_estimates_file; } else { print ">> Использовать начальное приближение?:\n". " y (yes) - да\n". " * n (no) - нет: начальное приближение будет задано равным 0 [по-умолчанию]:\n\n"; my $in_trend_initial_estimates_mode = lc(<>); chomp ($in_trend_initial_estimates_mode); if ($in_trend_initial_estimates_mode eq "y" || $in_trend_initial_estimates_mode eq "yes") { for my $series_num (0..scalar(@series_to_estimate)-1+1) { print "Угол наклона b0 для ряда: ".($series_num+1)."\n\n"; my $b0 = <>; chomp ($b0); my $b1 = 0; unless ($in_angle_only == 1) { print "Постоянная составляющая b1 для ряда: ".($series_num+1)."\n\n"; $b1 = <>; chomp ($b1); } $initial_trend_estimates[$series_num] = { 'b0'=>$b0, 'b1'=>$b1, }; } } else { for my $series_num (0..scalar(@series_to_estimate)-1+1) { $initial_trend_estimates[$series_num] = { 'b0'=>0, 'b1'=>0, }; } } } remove_trends(\@series_to_estimate,\@initial_trend_estimates); open (OUT, ">>out.txt"); print OUT "Разностные ряды с удалёнными трендами:\n\n"; close (OUT); print_all_rows_file(\@series_to_estimate); } print ">> Добавить тренд к результатам?:\n". " y (yes) - да\n". " * n (no) - нет [по-умолчанию]\n\n"; my $in_add_intials = lc(<>); chomp($in_add_intials); # ищем оценку по среднему после очистки от трендов undef @resulting_series_average; 180 freq_estimation_average(\@series_to_estimate,\@resulting_series_average); # выводим результаты предварительных оценок по среднему open (OUT, ">>out.txt"); print OUT "Ряды оценок среднего (после очистки от трендов):\n\n"; close (OUT); print_all_rows_file(\@resulting_series_average); print ">> Выберите режим определения порядка модели:\n". " b (both) - оба\n". " * a (average) - по рядам средних [по-умолчанию]\n". " r (rundown) - перебором\n\n"; my $in_order_mode = lc(<>); chomp ($in_order_mode); if ($in_order_mode ne "b" && $in_order_mode ne "both" && $in_order_mode ne "r" && $in_order_mode ne "rundown") { $in_order_mode = "a"; } if ($in_add_intials eq "y" || $in_add_intials eq "yes") { add_trends(\@resulting_series_average,\@initial_trend_estimates); } print ">> Выполнить экспорт данных в ППП StatSoft Statistica?:\n". " y (yes) - да\n". " * n (no) - нет [по-умолчанию]\n\n"; $in_export_to_statistica = lc(<>); chomp $in_export_to_statistica; my $export_pos = 0; my $export_sheet; if ($in_export_to_statistica eq "y") { print "> Экспорт. Подождите...\n"; my $ex = Win32::OLE->new('STATISTICA.Application') or die "Can't create Statistica instance\n"; $ex->{Visible} = 1; my $book = $ex->Workbooks->New("New Workbook"); $book->{Visible} = 1; $export_sheet = $ex->Spreadsheets->New("ARMA estimation spreadsheet"); my $series_num = scalar(@original_series)+scalar(@series_to_estimate_1)+scalar(@resulting_series_average); $export_sheet->SetSize(scalar(@{$series_to_estimate_1[0]{series}}+10),$series_num+2); export_all_rows($export_sheet,\@original_series,$export_pos,"Original series"); if ($export_pos == 0) { $export_pos--; } $export_pos += scalar(@original_series)+1; export_all_rows($export_sheet,\@series_to_estimate_1,$export_pos,"Series to estimate"); $export_pos += scalar(@series_to_estimate_1)+1; export_all_rows($export_sheet,\@resulting_series_average,$export_pos,"Average estimates"); $export_pos += scalar(@resulting_series_average)+1; $export_sheet->AutoFitCase; $export_sheet->{Visible} = 1; } my @resulting_series_manual; if ($in_order_mode eq "a" || $in_order_mode eq "b" || $in_order_mode eq "average" || $in_order_mode eq "both") { 181 print "Используйте данные из файла out.txt, либо из таблицы ППП Statistica\n". "для построения и анализа выборочных АКФ и ЧАКФ, затем введите полученные\n". "в результате структурной идентификации порядки моделей в программу.\n"; my @orders_ar; my @orders_ma; for (0..scalar(@series_to_estimate)+1-1) { my ($in_ar,$in_ma); my $tmp = $_+1; do { print "Порядок авторегрессии ряда $tmp:\n\n"; $in_ar = <>; chomp($in_ar); } while ($in_ar !~ /^\d+$/); do { print "Порядок скользящего среднего ряда $tmp:\n\n"; $in_ma = <>; chomp($in_ar); } while ($in_ma !~ /^\d+$/); $orders_ar[$_] = $in_ar; $orders_ma[$_] = $in_ma; } print ">> Использовать начальные оценки параметров по рядам средних:\n". " y (yes) - да\n". " n (no) - нет [по-умолчанию]\n\n"; my $in_initial = lc(<>); chomp($in_initial); if ($in_initial eq "y" || $in_initial eq "yes") { my @arima_initial_estimates; for my $series_i (0..scalar(@series_to_estimate)+1-1) { my $funct = model_params_estimation_single(\@resulting_series_average,\@arima_initial_estimates,$series_i, $orders_ar[$series_i],$orders_ma[$series_i],1); $arima_initial_estimates[$series_i]{series} = undef; } my (undef,$funct) = model_params_estimation(\@series_to_estimate,\@resulting_series_manual,\@arima_initial_estim ates, undef, undef, \@orders_ar, \@orders_ma); } else { my (undef,$funct) = model_params_estimation(\@series_to_estimate,\@resulting_series_manual, undef, undef, undef, \@orders_ar, \@orders_ma); } } 182 my @resulting_series_rundown; if ($in_order_mode eq "r" || $in_order_mode eq "b" || $in_order_mode eq "rundown" || $in_order_mode eq "both") { print "> Перебор возможных моделей:\n"; my @orders_test; for my $ar (0..4) { for my $ma (0..4) { print "Модель АР: $ar; СС: $ma;\n"; my @resulting_series; my ($error_op,$funct) = model_params_estimation(\@series_to_estimate,\@resulting_series, undef, $ar, $ma); my $funct_orig = $funct;#/((scalar(@{$resulting_series[0]->{series}})($ar+0+$ma))*scalar(@resulting_series)); my $funct = $funct/((scalar(@{$resulting_series[0]->{series}})($ar+0+$ma)*3)*scalar(@resulting_series)); #my $funct = $funct/((scalar(@{$resulting_series[0]->{series}})($ar+0+$ma))*scalar(@resulting_series)); my $disp = $error_op/(scalar(@{$resulting_series[0]->{series}})-($ar+0+$ma)); print "Модель АР: $ar; СС: $ma; критерий: $funct; дисперсия: $disp; ошибка опорного: $error_op\n"; push (@orders_test, { 'ar'=>$ar, 'ma'=>$ma, 'funct'=>$funct, 'funct2'=>$funct_orig, 'disp'=>$disp }); } } print "> Отсортированные модели:\n"; @orders_test = sort { $a->{'funct'} <=> $b->{'funct'} } @orders_test; foreach (@orders_test) { print "$_->{'ar'} - $_->{'ma'} ".sprintf("%.18f",$_->{'funct'})." ".sprintf("%.18f",$_>{'funct2'})."\n"; } #push (@orders_test, { 'ar'=>3, 'ma'=>0, 'funct'=>$funct, 'funct2'=>$funct_orig, 'disp'=>$disp }); @resulting_series_rundown = (); print "> Подгонка наилучшей модели:\n"; my (undef,$funct) = model_params_estimation(\@series_to_estimate,\@resulting_series_rundown, undef, $orders_test[0]->{'ar'}, $orders_test[0]->{'ma'}); } if ($in_add_intials eq "y" || $in_add_intials eq "yes") { print "> Наложение трендов на результаты.\n"; #add_trends(\@original_series,\@initial_trend_estimates); add_trends(\@resulting_series_manual,\@initial_trend_estimates); add_trends(\@resulting_series_rundown,\@initial_trend_estimates); } my $show_average = ($in_order_mode eq "a" || $in_order_mode eq "b" || $in_order_mode eq "average" || $in_order_mode eq "both") ? 1 : 0; my $show_rundown = ($in_order_mode eq "r" || $in_order_mode eq "b" || $in_order_mode eq "rundown" || $in_order_mode eq "both") ? 1 : 0; 183 if ($in_export_to_statistica eq "y" || $in_export_to_statistica eq "yes") { $export_sheet->{Visible} = 0; my $series_num = scalar(@original_series)+scalar(@series_to_estimate)+scalar(@resulting_series_average)+ scalar(@resulting_series_manual)+scalar(@resulting_series_rundown); $export_sheet->SetSize(scalar(@{$series_to_estimate[0]{series}}+10),$series_num+4); if ($show_average) { export_all_rows($export_sheet,\@resulting_series_manual,$export_pos,"Manual ARMA estimates"); $export_pos += scalar(@resulting_series_manual)+1; } if ($show_rundown) { export_all_rows($export_sheet,\@resulting_series_rundown,$export_pos,"Rundown ARMA estimates"); } $export_sheet->AutoFitCase; $export_sheet->{Visible} = 1; } print "> Результаты работы приложения находятся в out.txt и таблице ППП Statistica.\n"; if ($mode eq "f" || $mode eq "file") { open (OUT, ">>out.txt"); #print " Оценка через среднее "; #print "| Оценка через среднее и АР " if ($show_average); #print "| Оценка через перебор " if ($show_rundown); #print "\n"; print OUT " Оценка через среднее "; print OUT "| Оценка через среднее и АР " if ($show_average); print OUT "| Оценка через перебор " if ($show_rundown); print OUT "\n"; close (OUT); if ($show_rundown != 0 && $show_average != 0) { print_all_rows_resideuals_3(\@resulting_series_average,\@resulting_series_manual,\@resulting_s eries_rundown); } elsif ($show_rundown == 0 && $show_average != 0) { print_all_rows_resideuals_2(\@resulting_series_average,\@resulting_series_manual); } elsif ($show_rundown != 0 && $show_average == 0) { print_all_rows_resideuals_2(\@resulting_series_average,\@resulting_series_rundown); } } else { open (OUT, ">>out.txt"); #print " Исходный ряд "; #print "| Оценка через среднее "; #print "| Оценка через среднее и АР " if ($show_average); #print "| Оценка через перебор " if ($show_rundown); #print "\n"; print OUT " Исходный ряд "; 184 print OUT "| Оценка через среднее "; print OUT "| Оценка через среднее и АР " if ($show_average); print OUT "| Оценка через перебор " if ($show_rundown); print OUT "\n"; close (OUT); if ($show_rundown != 0 && $show_average != 0) { print_all_rows_resideuals_4(\@original_series,\@resulting_series_average,\@resulting_series_man ual,\@resulting_series_rundown); } elsif ($show_rundown == 0 && $show_average != 0) { print_all_rows_resideuals_3(\@original_series,\@resulting_series_average,\@resulting_series_man ual); } elsif ($show_rundown != 0 && $show_average == 0) { print_all_rows_resideuals_3(\@original_series,\@resulting_series_average,\@resulting_series_rund own); } } model_arima.pl: # Модуль оценивания состояния по моделям АРПСС # подгонка моделей sub model_params_estimation { my ($series_to_estimate,$result_series, $initial_estimates, $order_ar, $order_ma, $order_ar_arr, $order_ma_arr) = @_; my $without_const = 1; my $diff_step = 0.0001; my $grad_step = 0.025; # my $stop_on_delta = 0.01; my $stop_on_delta = 0.005; if ($initial_estimates == undef) { foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { my ($tmp_ar,$tmp_ma); if (@$order_ar_arr == undef) { $tmp_ar = $order_ar; } else { $tmp_ar = $$order_ar_arr[$series_num]; } if (@$order_ma_arr == undef) { $tmp_ma = $order_ma; } else { $tmp_ma = $$order_ma_arr[$series_num]; } $$result_series[$series_num]{params} = { 'order_ar'=>$tmp_ar, 'order_ma'=>$tmp_ma, 'order_diff'=>0, 'sigma_sq'=>0, 'params_ar'=>[], 'params_ma'=>[], 'const'=>0 }; for (0..$tmp_ar-1) { $$result_series[$series_num]->{params}{params_ar}[$_] = 0; } for (0..$tmp_ma-1) { $$result_series[$series_num]->{params}{params_ma}[$_] = 0; } 185 my $series_obs = $series->{series}; } } else { copy_series_struct($initial_estimates,$result_series); } print "> Подгонка моделей АРСС, построение оценок:\n"; #dump $initial_estimates; #dump $result_series; my $iterations_num = 0; my $stage = 1; while (1==1) { my $initial_functional_value = (freq_estimation($series_to_estimate,$result_series))[0]; print "I: $initial_functional_value\n"; my $grad_norm = 0; my @diff; foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { #print "AR\n"; my $model_to_fit = $$result_series[$series_num]{params}; if ($stage == 1) { if ($model_to_fit->{order_ar} > 0) { for (0..$model_to_fit->{order_ar}-1) { my @tmp_series; copy_series_struct($result_series,\@tmp_series); $tmp_series[$series_num]->{params}{params_ar}[$_] += $diff_step; my $tmp = (freq_estimation($series_to_estimate,\@tmp_series))[0]; $diff[$series_num]{"ar"}[$_] = ($tmp-$initial_functional_value)/$diff_step; $grad_norm += $diff[$series_num]{"ar"}[$_]**2; } } if ($model_to_fit->{order_ma} > 0) { for (0..$model_to_fit->{order_ma}-1) { my @tmp_series; copy_series_struct($result_series,\@tmp_series); $tmp_series[$series_num]->{params}{params_ma}[$_] += $diff_step; my $tmp = (freq_estimation($series_to_estimate,\@tmp_series))[0]; $diff[$series_num]{"ma"}[$_] = ($tmp-$initial_functional_value)/$diff_step; $grad_norm += $diff[$series_num]{"ma"}[$_]**2; } } } else { copy_series_struct($result_series,\@tmp_series); $tmp_series[$series_num]->{params}{"const"} += $diff_step;#($diff_step*50000); my $tmp = (freq_estimation($series_to_estimate,\@tmp_series))[0]; $diff[$series_num]{"const"} = ($tmp$initial_functional_value)/$diff_step;#($diff_step*50000); $grad_norm += $diff[$series_num]{"const"}**2; } } $grad_norm = sqrt($grad_norm); 186 #dump @diff; #print "grad_norm $grad_norm\n"; my $local_grad_step = $grad_step; #my $model_with_increment; my $new_functional_value; my $error_op; my $functional_change; my @series_with_increment; my $cnt = 0; do { copy_series_struct($result_series,\@series_with_increment); foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { if ($stage == 1) { for (0..$series_with_increment[$series_num]->{params}{order_ar}-1) { $series_with_increment[$series_num]->{params}{params_ar}[$_] += $diff[$series_num]{"ar"}[$_]/$grad_norm*$local_grad_step; } for (0..$series_with_increment[$series_num]->{params}{order_ma}-1) { $series_with_increment[$series_num]->{params}{params_ma}[$_] += $diff[$series_num]{"ma"}[$_]/$grad_norm*$local_grad_step; } } else { $series_with_increment[$series_num]->{params}{'const'} += $diff[$series_num]{"const"}/$grad_norm*$local_grad_step; } } #$model_with_increment->{const} += -$diff{"const"}/$grad_norm*$local_grad_step; ($new_functional_value, $error_op) = freq_estimation($series_to_estimate,\@series_with_increment); #$new_functional_value = test_functional($series_obs,$model_with_increment); $local_grad_step *= 0.5; $functional_change = ($initial_functional_value-$new_functional_value); #print "Дробление шага\n" if ($cnt > 0); $cnt++; } while (($functional_change<0.1*$local_grad_step*$grad_norm) && ($functional_change != 0) && ($local_grad_step > 0.000000001)); copy_series_struct(\@series_with_increment,$result_series); $prev = $new_functional_value; if (abs($new_functional_value-$initial_functional_value) < $stop_on_delta || ($stage == 1 && $iterations_num > 80 || ($stage != 1 && $iterations_num > 100))) { print "Условия выхода из цикла: $iterations_num $new_functional_value $initial_functional_value\n"; if ($stage == 1 && $without_const != 1) { $stage = 2; my $coeff = 1000; $diff_step = 0.01; $grad_step = 0.025*$coeff; $iterations_num = 0; 187 print "Переключено на константу.\n"; } else { print "Подгонка окончена.\n"; copy_series_struct(\@series_with_increment,$result_series,1); foreach (@series_with_increment) { dump $_->{params}; } my @arr = ($error_op,$new_functional_value); return @arr; last; } } $iterations_num++; } #dump $result_series; #$series->{params} = $model_to_fit; #} } # построение оценок частот при заданных параметрах моделей sub freq_estimation { my ($series, $resulting_series) = @_; my $funct = 0; my $error_op = 0; foreach my $t (0..scalar(@{$series->[0]{series}})-1-1) { my @arr = freq_estimation_on_t($t,$series,$resulting_series); $funct += $arr[0]; $error_op += $arr[1]; } my @arr = ($funct,$error_op); return @arr; } # построение оценок частот на момент времени t sub freq_estimation_on_t { my ($t, $diff_series, $estimated_series) = @_; my $weight = 1/(scalar(@$diff_series)+1); my $forecast = forecast_next($t, $$estimated_series[0]{series},$$estimated_series[0]{params}); $$estimated_series[0]{series}[$t]{z} = $weight*($forecast+0); my @forecast_diff; foreach my $series_i (0..scalar(@$diff_series)-1) { $$estimated_series[0]{series}[$t]{z} += $weight*(forecast_next($t, $$estimated_series[$series_i+1]{series},$$estimated_series[$series_i+1]{params}) +$$diff_series[$series_i]{series}[$t]{z}); } $$estimated_series[0]{series}[$t]{a} = $$estimated_series[0]{series}[$t]{z}-$forecast; my $error_op = ($forecast-$$estimated_series[0]{series}[$t]{z})**2; my $error = 0; foreach my $series_num (0..scalar(@$diff_series)-1) { 188 my $forecast = forecast_next($t, $$estimated_series[$series_num+1]{series},$$estimated_series[$series_num+1]{params}); $forecast_diff[$series_num] = forecast_next($t, $$estimated_series[0]{series},$$estimated_series[0]{params})-$forecast; $$estimated_series[$series_num+1]{series}[$t]{z} = $$estimated_series[0]{series}[$t]{z}$$diff_series[$series_num]{series}[$t]{z}; $$estimated_series[$series_num+1]{series}[$t]{a} = $$estimated_series[$series_num+1]{series}[$t]{z}-$forecast; $error += ($$diff_series[$series_num]{series}[$t]{z}-$forecast_diff[$series_num])**2; #if ($series_num == 1) { print "$$diff_series[$series_num]{series}[$t]{z} - $forecast $$estimated_series[$series_num+1]{series}[$t]{z} - $error\n"; } } my @arr = ($error,$error_op); return @arr; } # вычисление функционала I sub test_functional { my ($source_series,$model) = @_; my $offset = 0; my $sqr_sum = 0; my @a; foreach ($offset..scalar(@$source_series)-1+$offset-1) { my $forecast = forecast_next($_,$source_series,$model); $sqr_sum += ($$source_series[$_]{z}-$forecast)**2; #print "$sqr_sum\n"; $a[$_] = $$source_series[$_]{z}-$forecast; } return $sqr_sum; } # получение прогноза на следующем шаге sub forecast_next { my ($t_to_forecast,$series,$model) = @_; return ((gen_next_observation($t_to_forecast,$series,$model,0,"fc"))[1]); } 1; model_average.pl: sub freq_estimation_average { my ($series, $resulting_series) = @_; my $funct = 0; foreach my $t (0..scalar(@{$series->[0]{series}})-1-1) { $funct += freq_estimation_average_on_t($t,$series,$resulting_series); } # return $funct; } sub freq_estimation_average_on_t { my ($t, $diff_series, $estimated_series) = @_; foreach my $series_i (0..scalar(@$diff_series)-1) { $$estimated_series[0]{series}[$t]{z} += $$diff_series[$series_i]{series}[$t]{z}; } 189 $$estimated_series[0]{series}[$t]{z} /= (scalar(@$diff_series)+1); # my $error = 0; foreach my $series_num (0..scalar(@$diff_series)-1) { $$estimated_series[$series_num+1]{series}[$t]{z} = $$estimated_series[0]{series}[$t]{z}$$diff_series[$series_num]{series}[$t]{z}; # $error += $original_series[]; } # return $error; } 1; model_generate.pl: # Модуль генерации (синтеза) данных # получение из двух временных рядов разностного ряда sub get_difference_series { my ($reference_series, $second_series) = @_; my $difference_series = []; my $i = 0; foreach (@$reference_series) { $difference_series->[$i]{z} = $reference_series->[$i]{z}-$second_series->[$i]{z}; $i++; } return $difference_series; } # генерация временного ряда при заданных параметрах модели sub gen_series { my ($length, $row, $params) = @_; my $sko = sqrt($params->{'sigma_sq'}); for (0..$params->{order_ar}-1) { ${$row[$_]}{'z'} = 0; } for (0..$params->{order_ma}-1) { ${$row[$_]}{'a'} = 0; } #my $offset = ($params->{order_ma} > $params->{order_ar}) ? $params->{order_ma} : $params->{order_ar}; #$offset++; my $offset = 0; my $omit_members = 100; #my $omit_members = 0; for (0+$offset..$length-1+$offset+$omit_members) { ($$row[$_]{'a'},$$row[$_]{'z'}) = gen_next_observation($_,$row,$params,gen_random_normal($sko)); #print ">>$$row[$_]{'a'},$$row[$_]{'z'}\n"; } for (0+$offset..$length-1+$offset) { $$row[$_] = $$row[$_+$omit_members]; } #@$row = splice(@$row,$offset..$length-1+$offset,$offset..$length1+$offset+$omit_members); 190 splice(@$row,$length-1+$offset); } # генерация "наблюдения" (или прогноза) на момент времени t sub gen_next_observation { my ($t, $row, $params, $a, $fc) = @_; $fc = ""; my $next_value = $params->{const}; my $show = -1; #авторегрессия my $i = 1; for (@{$params->{params_ar}}) { if ($params->{order_diff} > 0) { my $tmp1 = ($t-$i-1 >= 0) ? $$row[$t-$i-1]{'z'} : 0; my $tmp2 = ($t-$i-$params->{order_diff}-1 >= 0) ? $$row[$t-$i-$params->{order_diff}1]{'z'} : 0; $next_value += $_*($tmp1-$tmp2); } else { if (($t-$i) < 0) { $next_value += $_*0; } else { $next_value += $_*($$row[$t-$i]->{'z'}-$params->{const}); } } $i++; } if ($params->{order_diff} > 0 && ($t-1-$i-$params->{order_diff} >= 0)) { $next_value += ${$row[$t-$i-$params->{order_diff}]}{'z'}; } #print "AR: $next_value\n"; #СС my $i = 1; for (@{$params->{params_ma}}) { if (($t-$i) < 0) { $next_value -= $_*0; } else { $next_value -= $_*$$row[$t-$i]{'a'}; } $i++; } $next_value += $a; my @arr = ($a, $next_value); #if ($t <= $show) { print "$a, $next_value\n"; } return (@arr); } # генерация случайной величины с нормальным ЗРВ sub gen_random_normal { my $sko = $_[0]; my $num = 0; for (1..12) { $num += rand; } $num = ($num-6)*$sko; return $num; } 191 1; model_io.pl: # Процедуры ввода/вывода use Win32::OLE; # вывод ряда на экран sub print_row { my $row_ref = $_[0]; for (@$row_ref) { #print STDOUT "$$_{'a'} - $$_{'z'}\n"; my $tmp = sprintf("%.8f",$$_{'z'}); $tmp =~ s/\./,/g; print STDOUT $tmp."\n"; } } # вывод ряда в файл sub print_row_file { my $row_ref = $_[0]; my $str = $_[1]; open (OUT,">>out.txt"); print OUT "$str\n"; for (@$row_ref) { #print STDOUT "$$_{'a'} - $$_{'z'}\n"; #dump $_."-".$$_{'z'}."\n"; my $tmp = sprintf("%.8f",$$_{'z'}); $tmp =~ s/\./,/g; print OUT $tmp."\n"; } close OUT; } # вывод параметров модели sub print_params_more { my $params = $_[0]; print "Порядок АР: $params->{order_ar}\n"; print "Порядок СС: $params->{order_ma}\n"; print "Порядок разности: $params->{order_diff}\n"; print "Постоянная составляющая: $params->{const}\n"; print "с.к.о^2: $params->{sigma_sq}\n"; print "Коэффициенты авторегрессии: [ \n"; for (0..$#{$params->{params_ar}}) { print "${$params->{params_ar}}[$_] "; } print "]\nКоэффициенты скользящего среднего: [ \n"; for (0..$#{$params->{params_ma}}) { print "${$params->{params_ma}}[$_] "; } print "]\n"; 192 } # вывод всех рядов в файл (последовательно) sub print_all_rows_file { my ($series) = @_; for (0..scalar(@$series)-1) { print_row_file($series->[$_]{series},"Ряд: ".($_+1).":\n\n"); } } # вывод всех рядов в сравнении с исходными sub print_all_rows_compare { my ($series,$series2) = @_; for (0..scalar(@$series)-1) { print_two_rows($series->[$_]{series},$series2->[$_]{series}); } } # вывод в сравнении трёх рядов (с вычислением расхождений) sub print_all_rows_compare_3 { my ($series,$series2,$series3,$dontprint,$order_disp1) = @_; my $error1 = 0; my $error2 = 0; my $error1_op = 0; my $error2_op = 0; for (0..scalar(@$series)-1) { my ($err1,$err2,$err1_op,$err2_op) = print_three_rows($series->[$_]{series},$series2>[$_]{series},$series3->[$_]{series},$dontprint); $error1 += $err1; $error2 += $err2; $error1_op += $err1_op; $error2_op += $err2_op; } open (OUT,">>out.txt"); print OUT "Ошибка по АРПСС: $error1\nОшибка по среднему: $error2\n"; print OUT $error1_op." ".(scalar(@{$series->[0]{series}})-$order_disp1)."\n"; my $disp1 = $error1_op/(scalar(@{$series->[0]{series}})-$order_disp1); my $disp2 = sprintf("%.18f", $error2_op/(scalar(@$series->[0]{series})-1)); print OUT "Дисперсия опорного по АРПСС: ".sprintf("%.18f", $disp1)."\nДисперсия опорного по среднему: $disp2\n"; close OUT; return $disp1; } # вывод в сравнении двух рядов sub print_all_rows_resideuals_2 { my ($series,$series2) = @_; #print "print_all_rows_resideuals_2\n"; for (0..scalar(@$series)-1) { print_two_rows($series->[$_]{series},$series2->[$_]{series}); } 193 } # вывод в сравнении трёх рядов sub print_all_rows_resideuals_3 { my ($series,$series2,$series3) = @_; #print "print_all_rows_resideuals_3\n"; for (0..scalar(@$series)-1) { #print "print_all_rows_resideuals_3_i\n"; open (OUT, ">>out.txt"); print OUT "\n".($_+1).":\n"; close OUT; #print ($_+1)."\n"; print_three_rows($series->[$_]{series},$series2->[$_]{series},$series3->[$_]{series}); } } # вывод в сравнении четырёх рядов (с вычислением отклонений от исходного) sub print_all_rows_resideuals_4 { my ($series,$series2,$series3,$series4) = @_; #print "print_all_rows_resideuals_4\n"; for (0..scalar(@$series)-1) { #print "print_all_rows_resideuals_4_i\n"; open (OUT, ">>out.txt"); print OUT "\n".($_+1).":\n"; close OUT; #print ($_+1)."\n"; my ($error1,$error2,$error3,$error1_op,$error2_op,$error3_op) = print_four_rows($series->[$_]{series},$series2->[$_]{series},$series3->[$_]{series},$series4>[$_]{series}, $_,$dontprint); open (OUT, ">>out.txt"); print OUT "Сумма квадратов отклонений от исходного $error1 close OUT; } $error2 $error3:\n"; } # вывод в сравнении двух рядов одновременно sub print_two_rows { my ($row_ref,$row_ref2) = @_; my $i = 0; open (OUT, ">>out.txt"); print OUT "Сравнение:\n"; for (@$row_ref) { my $tmp = sprintf("%.8f",$$_{'z'}); my $tmp2 = sprintf("%.8f",$$row_ref2[$i]{'z'}); $tmp =~ s/\./,/g; $tmp2 =~ s/\./,/g; #printf ("%20s\t%20s\n", $tmp, $tmp2); printf OUT ("%20s\t%20s\n", $tmp, $tmp2); $i++; } close OUT; } # вывод в сравнении трёх рядов одновременно (с вычислением погрешностей) 194 sub print_three_rows { my ($row_ref,$row_ref2,$row_ref3,$dontprint) = @_; my $i = 0; my $error1 = 0; my $error2 = 0; my $error1_op = 0; my $error2_op = 0; open (OUT, ">>out.txt"); print OUT "Сравнение:\n"; for (@$row_ref) { #print "print_three_rows_i\n"; $error1 += ($$row_ref2[$i]{'z'}-$$_{'z'})**2; $error2 += ($$row_ref3[$i]{'z'}-$$_{'z'})**2; if ($i == 0) { $error1_op += ($$row_ref2[$i]{'z'}-$$_{'z'})**2; $error2_op += ($$row_ref3[$i]{'z'}-$$_{'z'})**2; } unless ($dontprint) { my $tmp = sprintf("%.8f",$$_{'z'}); my $tmp2 = sprintf("%.8f",$$row_ref2[$i]{'z'}); my $tmp3 = sprintf("%.8f",$$row_ref3[$i]{'z'}); $tmp =~ s/\./,/g; $tmp2 =~ s/\./,/g; $tmp3 =~ s/\./,/g; #print STDOUT "$tmp - $tmp2 - $tmp3\n"; #printf ("%20s\t%20s\t%20s\n", $tmp, $tmp2, $tmp3); printf OUT ("%20s\t%20s\t%20s\n", $tmp, $tmp2, $tmp3); } $i++; } close OUT; my @arr = ($error1,$error2,$error1_op,$error2_op); return @arr; } # вывод в сравнении четырёх рядов одновременно (с вычислением погрешностей) sub print_four_rows { my ($row_ref,$row_ref2,$row_ref3,$row_ref4,$j,$dontprint) = @_; my $i = 0; my $error1 = 0; my $error2 = 0; my $error3 = 0; my $error1_op = 0; my $error2_op = 0; my $error3_op = 0; open (OUT, ">>out.txt"); print OUT "Сравнение:\n"; for (@$row_ref) { $error1 += ($$row_ref2[$i]{'z'}-$$_{'z'})**2; $error2 += ($$row_ref3[$i]{'z'}-$$_{'z'})**2; $error3 += ($$row_ref4[$i]{'z'}-$$_{'z'})**2; 195 if ($i == 0) { $error1_op += ($$row_ref2[$i]{'z'}-$$_{'z'})**2; $error2_op += ($$row_ref3[$i]{'z'}-$$_{'z'})**2; $error3_op += ($$row_ref4[$i]{'z'}-$$_{'z'})**2; } unless ($dontprint) { my $tmp = sprintf("%.8f",$$_{'z'}); my $tmp2 = sprintf("%.8f",$$row_ref2[$i]{'z'}); my $tmp3 = sprintf("%.8f",$$row_ref3[$i]{'z'}); my $tmp4 = sprintf("%.8f",$$row_ref4[$i]{'z'}); $tmp =~ s/\./,/g; $tmp2 =~ s/\./,/g; $tmp3 =~ s/\./,/g; $tmp4 =~ s/\./,/g; printf OUT ("%20s\t%20s\t%20s\t%20s\n", $tmp, $tmp2, $tmp3, $tmp4); } $i++; } close OUT; my @arr = ($error1,$error2,$error3,$error1_op,$error2_op,$error3_op); #return @arr; } # вывод параметров всех рядов набора (во внутреннем виде) sub print_params { my ($series) = @_; for (0..scalar(@$series)-1) { dump $$series[$_]{params}; } } # экспорт ряда в Statistica sub export_row { my ($sheet,$row_ref,$pos) = @_; my $i = 1; for (@$row_ref) { $sheet->SetProperty('Value', ($i,$pos), $$_{'z'}); $i++; } close OUT; } # экспорт всех рядов в Statistica sub export_all_rows { my ($sheet, $series, $pos, $name) = @_; for (0..scalar(@$series)-1) { $pos++; $sheet->SetProperty('VariableName',($pos),$name." №".($_+1)); export_row($sheet,$series->[$_]{series},$pos); } 196 } 1; model_single_arima.pl: # Модуль оценивания параметров одиночных моделей АРПСС # АРПСС для одного ряда sub model_params_estimation_single { my ($series_to_estimate,$result_series,$series_num,$order_ar,$order_ma,$no_const) = @_; for my $series_i (0..scalar(@$series_to_estimate)-1) { $$series_to_estimate[$series_i]{params} copy_params_struct($$result_series[$series_i]{params}); } my $diff_step = 0.01;#0.0001 my $grad_step = 0.025; # my $stop_on_delta = 0.01; my $stop_on_delta = 0.0005; $$result_series[$series_num]{params} = { 'order_ar'=>$order_ar, 'order_ma'=>$order_ma, 'order_diff'=>0, 'sigma_sq'=>0, 'params_ar'=>[], 'params_ma'=>[], 'const'=>0 }; for (0..$order_ar-1) { $$result_series[$series_num]->{params}{params_ar}[$_] = 0; } for (0..$order_ma-1) { $$result_series[$series_num]->{params}{params_ma}[$_] = 0; } #dump $result_series; print "> Подгонка одиночной модели АРСС:\n"; my $iterations_num = 0; my $stage = 1; while (1==1) { my @series_123; copy_series_struct($series_to_estimate,\@series_123,1); my $initial_functional_value freq_estimation_single($series_123[$series_num],$$result_series[$series_num]{params}); print "Is: $initial_functional_value\n"; my $grad_norm = 0; my %diff; my $model_to_fit = $$result_series[$series_num]{params}; if ($stage == 1) { if ($model_to_fit->{order_ar} > 0) { for (0..$model_to_fit->{order_ar}-1) { my @tmp_series; copy_series_struct($series_to_estimate,\@tmp_series,1); #print "123\n"; #dump @tmp_series; #copy_series_struct($result_series,\@tmp_series); = = 197 $tmp_series[$series_num]{params} copy_params_struct($$result_series[$series_num]{params}); $tmp_series[$series_num]->{params}{params_ar}[$_] += $diff_step; my $tmp freq_estimation_single($tmp_series[$series_num],$tmp_series[$series_num]{params}); $diff{"ar"}[$_] = ($tmp-$initial_functional_value)/$diff_step; #print "$tmp $initial_functional_value $diff{'ar'}[$_]\n"; $grad_norm += $diff{"ar"}[$_]**2; } } if ($model_to_fit->{order_ma} > 0) { for (0..$model_to_fit->{order_ma}-1) { my @tmp_series; copy_series_struct($series_to_estimate,\@tmp_series,1); $tmp_series[$series_num]{params} copy_params_struct($$result_series[$series_num]{params}); # copy_series_struct($result_series,\@tmp_series); $tmp_series[$series_num]->{params}{params_ma}[$_] += $diff_step; my $tmp freq_estimation_single($tmp_series[$series_num],$tmp_series[$series_num]{params}); $diff{"ma"}[$_] = ($tmp-$initial_functional_value)/$diff_step; #print "$tmp $initial_functional_value $diff{'ma'}[$_]\n"; $grad_norm += $diff{"ma"}[$_]**2; } } } else { copy_series_struct($series_to_estimate,\@tmp_series,1); #copy_series_struct($result_series,\@tmp_series); $tmp_series[$series_num]{params} copy_params_struct($$result_series[$series_num]{params}); $tmp_series[$series_num]->{params}{"const"} += $diff_step;#($diff_step*50000); my $tmp freq_estimation_single($tmp_series[$series_num],$tmp_series[$series_num]{params}); $diff{"const"} = ($tmp-$initial_functional_value)/$diff_step;#($diff_step*50000); $grad_norm += $diff{"const"}**2; } #print "\$grad_norm $grad_norm\n"; $grad_norm = sqrt($grad_norm); my $local_grad_step = $grad_step; my $new_functional_value; my $error_op; my $functional_change; my @series_with_increment; my $cnt = 0; do { copy_series_struct($series_to_estimate,\@series_with_increment,1); $series_with_increment[$series_num]{params} copy_params_struct($$result_series[$series_num]{params}); #dump $series_with_increment[$series_num]{params}; #dump @series_with_increment; = = = = = = = 198 if ($stage == 1) { for (0..$series_with_increment[$series_num]->{params}{order_ar}-1) { $series_with_increment[$series_num]->{params}{params_ar}[$_] += $diff{"ar"}[$_]/$grad_norm*$local_grad_step; } for (0..$series_with_increment[$series_num]->{params}{order_ma}-1) { $series_with_increment[$series_num]->{params}{params_ma}[$_] += $diff{"ma"}[$_]/$grad_norm*$local_grad_step; } } else { $series_with_increment[$series_num]->{params}{'const'} += $diff{"const"}/$grad_norm*$local_grad_step; } #dump @series_with_increment; #dump $series_with_increment[$series_num]{params}; $new_functional_value = freq_estimation_single($series_with_increment[$series_num],$series_with_increment[$series_num ]{params}); $local_grad_step *= 0.5; $functional_change = ($initial_functional_value-$new_functional_value); $cnt++; } while (($functional_change<0.1*$local_grad_step*$grad_norm) && ($functional_change != 0) && ($local_grad_step > 0.000000001)); $$result_series[$series_num]{params} = copy_params_struct($series_with_increment[$series_num]{params}); #dump $$result_series[$series_num]{params}; #copy_series_struct(\@series_with_increment,$result_series,1); $prev = $new_functional_value; if (abs($new_functional_value-$initial_functional_value) < $stop_on_delta || ($stage == 1 && $iterations_num > 80 || ($stage != 1 && $iterations_num > 100))) { #print "loop exit condition $iterations_num $new_functional_value $initial_functional_value\n"; if ($stage == 1 && $no_const != 1) { $stage = 2; my $coeff = 1000; $diff_step = 0.01; $grad_step = 0.025*$coeff; $iterations_num = 0; print "Переключено на константу.\n"; } else { print "Подгонка модели завершена.\n"; #dump @series_with_increment; copy_series_struct(\@series_with_increment,$result_series); dump $$result_series[$series_num]{params}; my @arr = ($error_op,$new_functional_value); return @arr; last; 199 } } $iterations_num++; } } sub freq_estimation_single { my ($series,$params) = @_; my $funct = 0; #print "01\n"; #dump $params; foreach my $t (0..scalar(@{$series->{series}})-1) {#-1 my $forecast = forecast_next_single($t, $series->{series},$params); $$series{series}[$t]{a} = $$series{series}[$t]{z}-$forecast; $funct += ($$series{series}[$t]{z}-$forecast)**2; } return $funct; } sub forecast_next_single { my ($t_to_forecast,$series,$model) = @_; my $tmp = (gen_next_observation($t_to_forecast,$series,$model,0,"fc"))[1]; #print "$tmp $$series[$t_to_forecast]{z} $$series[$t_to_forecast]{a}\n" if ($t_to_forecast == 20 || $t_to_forecast == 30 || $t_to_forecast == 40); return $tmp; } 1; model_trends.pl: # Модуль для работы с трендами # подгонка трендов sub fit_trends { my ($series_to_estimate,$initial_estimates,$estimated_trends,$angle_only) = @_; my $diff_step = 0.00001; my $grad_step = 0.0005; my $stop_on_delta = 0.00005; my @estimated_trends_arr; if ($initial_estimates != undef) { foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { $estimated_trends_arr[$series_num] = { 'b0'=>$$initial_estimates[$series_num]{'b0'}, 'b1'=>$$initial_estimates[$series_num]{'b1'}, }; } } else { foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { $estimated_trends_arr[$series_num] = { 'b0'=>0, 'b1'=>0, 200 }; } } my $sum_functional = 0; print "> Подгонка трендов:\n"; my $only_const = 0; my $iterations_num = 0; W: while (1==1) { my $initial_functional_value trend_estimation($series_to_estimate,\@estimated_trends_arr,$series_num); print "Itr ".($series_num+1).": $initial_functional_value\n"; #dump @estimated_trends_arr; my $grad_norm = 0; my @diff; my @estimated_trends_arr_diff; foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { #my @tmp_series; if ($only_const != 1) { copy_trend_struct(\@estimated_trends_arr,\@estimated_trends_arr_diff); $estimated_trends_arr_diff[$series_num]{'b0'} += $diff_step; my $tmp trend_estimation($series_to_estimate,\@estimated_trends_arr_diff,$series_num); $diff[$series_num]{"b0"} = ($tmp-$initial_functional_value)/$diff_step; $grad_norm += $diff[$series_num]{"b0"}**2; } if ($angle_only != 1) { copy_trend_struct(\@estimated_trends_arr,\@estimated_trends_arr_diff); $estimated_trends_arr_diff[$series_num]{'b1'} += $diff_step; my $tmp trend_estimation($series_to_estimate,\@estimated_trends_arr_diff,$series_num); $diff[$series_num]{"b1"} = ($tmp-$initial_functional_value)/$diff_step; $grad_norm += $diff[$series_num]{"b1"}**2; } } $grad_norm = sqrt($grad_norm); my $local_grad_step = $grad_step; my $new_functional_value; my $error_op; my $functional_change; my @trends_with_increment; my $cnt = 0; do { copy_trend_struct(\@estimated_trends_arr,\@trends_with_increment); foreach my $series_num (0..scalar(@$series_to_estimate)-1+1) { if ($only_const != 1) { $trends_with_increment[$series_num]{'b0'} += $diff[$series_num]{"b0"}/$grad_norm*$local_grad_step; } if ($angle_only != 1) { = = = - 201 $trends_with_increment[$series_num]{'b1'} += $diff[$series_num]{"b1"}/$grad_norm*$local_grad_step; } #print ((-$diff[$series_num]{"b0"}/$grad_norm*$local_grad_step)." -- ". # (-$diff[$series_num]{"b1"}/$grad_norm*$local_grad_step)."\n"); } $new_functional_value trend_estimation($series_to_estimate,\@trends_with_increment,$series_num); $local_grad_step *= 0.5; $functional_change = ($initial_functional_value-$new_functional_value); $cnt++; } while (($functional_change<0.1*$local_grad_step*$grad_norm) && ($functional_change 0) && ($local_grad_step > 0.000000001)); copy_trend_struct(\@trends_with_increment,\@estimated_trends_arr); #copy_series_struct(\@series_with_increment,$result_series); $prev = $new_functional_value; if (abs($new_functional_value-$initial_functional_value) < $stop_on_delta ($iterations_num > 1000)) { if ($only_const == 1 || $angle_only == 1) { dump @estimated_trends_arr; copy_trend_struct(\@estimated_trends_arr,$estimated_trends); print "> Подгонка завершена.\n"; return $new_functional_value; } else { $only_const = 1; $iterations_num = 0; #$grad_step = 0.25; #$diff_step = 0.000001; print "Наклон b0 блокирован, одиночная подгонка b1.\n"; } } $iterations_num++; } # порядовый режим # } dump @estimated_trends_arr; copy_trend_struct(\@estimated_trends_arr,$estimated_trends); return $sum_functional; #dump $result_series; #$series->{params} = $model_to_fit; #} } # Вычисление постоянных составляющих sub trend_estimation { my ($series, $trend_params, $series_i) = @_; my $funct = 0; my $average = 0; my @average = (); - = != || 202 foreach my $series_i (0..scalar(@$series)-1+1) { $average[$series_i] = 0; } foreach my $t (0..scalar(@{$series->[0]{series}})-1) { $funct += trend_estimation_on_t($t,$series,$trend_params,$series_i,\@average); } return $funct; } # Вычисление постоянных составляющих в момент времени t sub trend_estimation_on_t { my ($t, $series, $trend_params,undef,$average) = @_; my $error = 0; #dump $trend_params; foreach my $series_i (0..scalar(@$series)-1) { $error += ($$series[$series_i]{series}[$t]{z}-$$average[$series_i] - ( ($$trend_params[0]{'b0'}*$t + $$trend_params[0]{'b1'}) ($$trend_params[$series_i+1]{'b0'}*$t + $$trend_params[$series_i+1]{'b1'})) )**2; } return $error; } # наложение трендов на ряды значений sub add_trends { my ($series, $trend_params) = @_; for my $row (0..scalar(@$series)-1) { for my $t (0..scalar(@{$$series[$row]->{series}})-1) { $$series[$row]{series}[$t]{'z'} += gen_next_trend($t,undef,$$trend_params[$row]); } } } # наложение тренда на ряд значений sub add_trend { my ($row, $trend_params) = @_; #print "trend ".@$row."\n"; for (0..scalar(@$row)-1) { #print $_."\n"; $$row[$_]{'z'} += gen_next_trend($_,$row,$trend_params); } } # генерация тренда для одного значения в момент времени t sub gen_next_trend { my ($t, $row, $trend_params) = @_; return ($t*$trend_params->{'b0'}+$trend_params->{'b1'}); } # удаление тренда из рядов значений sub remove_trends { my ($series, $trend_params) = @_; 203 for my $row (0..scalar(@$series)-1) { for my $t (0..scalar(@{$$series[$row]->{series}})-1) { $$series[$row]{series}[$t]{'z'} -= (gen_next_trend($t,undef,$$trend_params[0])gen_next_trend($t,undef,$$trend_params[$row+1])); } } } # архивное sub add_initial_reference { my ($series) = @_; for my $row (0..scalar(@$series)-1) { for my $t (0..scalar(@{$$series[$row]->{series}})-1) { $$series[$row]{series}[$t]{'z'} = -$$series[$row]{series}[$t]{'z'}+$initial_values[$row]; } } } 1; model_utl.pl: sub copy_params_struct { my $source_struct_ref = $_[0]; my $params_struct_ref = { 'order_ar'=>$source_struct_ref->{order_ar}, 'order_ma'=>$source_struct_ref->{order_ma}, 'order_diff'=>$source_struct_ref->{order_diff}, 'sigma_sq'=>$source_struct_ref->{sigma_sq}, 'params_ar'=>[], 'params_ma'=>[], 'const'=>$source_struct_ref->{const} }; for (0..$#{$source_struct_ref->{params_ar}}) { ${$params_struct_ref->{params_ar}}[$_] = ${$source_struct_ref->{params_ar}}[$_]; } for (0..$#{$source_struct_ref->{params_ma}}) { ${$params_struct_ref->{params_ma}}[$_] = ${$source_struct_ref->{params_ma}}[$_]; } return $params_struct_ref; } sub copy_series_struct { my ($source_ref,$res_ref,$full) = @_; foreach (0..scalar(@$source_ref)-1) { $$res_ref[$_] = { 'series'=>[], 'params'=>undef }; $$res_ref[$_]{params} = copy_params_struct($$source_ref[$_]{params}); } if ($full) { foreach my $t (0..scalar(@{$source_ref->[0]{series}})-1-1) { 204 foreach my $series_i (0..scalar(@{$source_ref})-1) { $$res_ref[$series_i]{series}[$t]{z} = $$source_ref[$series_i]{series}[$t]{z}; #print "$t\n"; } } } return $params_struct_ref; } sub copy_trend_struct { my ($source_ref,$res_ref) = @_; foreach (0..scalar(@$source_ref)-1) { $$res_ref[$_] = { 'b0'=>$$source_ref[$_]{'b0'}, 'b1'=>$$source_ref[$_]{'b1'} }; } } 1;