/
112
Тема: Автоматизированная система прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей
Содержание
Введение
В области информационных технологий всегда существовали два взаимодополняющих друг друга направления развития [1]:
системы, ориентированные на операционную обработку данных - системы обработки данных (далее СОД);
системы, ориентированные на анализ данных - системы поддержки принятия решений (далее СППР).
Еще недавно развивались почти исключительно системы, ориентированные только на операционную обработку данных. И такое опережающее развитие одного из направлений вполне объяснимо.
На первых этапах автоматизации требовалось и требуется навести порядок именно в процессах повседневной, рутинной обработки данных, на что и ориентированы традиционные СОД. Прежде чем заниматься анализом данных, необходимо эти данные произвести, а именно это и является одной из функций СОД.
Однако за последние несколько лет ситуация существенно изменилась. И это непосредственно связано с тем, что практически в любой организации сложилась хорошо всем знакомая парадоксальная ситуация - 'информация вроде бы, где-то и есть, её даже слишком много, но она неструктурированна, несогласованна, разрознена, не всегда достоверна, её практически невозможно найти и получить' [2].
Именно на разрешение этого противоречия - отсутствие информации при ее наличии и даже избытке - и нацелены концепции в рамках СППР: хранилищ данных, витрин данных, On-Line Analitical Processing (далее OLAP), Data-mining [3].
Принять любое управленческое решение невозможно, не обладая необходимой для этого информацией. Для этого необходимо создание хранилищ данных, то есть процесс сбора, отсеивания и предварительной обработки данных с целью предоставления результирующей информации пользователям для дальнейшего анализа и создания отчетов [4].
Использование технологии OLAP позволяет аналитику посмотреть в удобном виде данные в виде 'кубов', разворачивать и сворачивать их. OLAP предоставляет удобные быстродействующие средства доступа, просмотра и анализа деловой информации. Пользователь получает естественную, интуитивно понятную модель данных, организуя их в виде многомерных кубов. Нужный разрез или свод данных аналитик может проанализировать с помощью средств анализа данных [5].
Необходимость использования автоматизированного анализа данных стала очевидной в первую очередь из-за огромных массивов исторической и вновь собираемой информации. Другой причиной роста популярности анализа данных является объективность получаемых результатов. Человеку-аналитику, в отличие от машины, всегда присущ субъективизм, он в той или иной степени является заложником уже сложившихся представлений. Иногда это полезно, но чаще всего нет. Технология Data-mining не исключает полностью человеческую роль, но значительно упрощает процесс поиска знаний.
В качестве средств Data-mining всё большее распространение получают технологии на основе нейронных сетей. Нейросетевая методология находит все новые успешные применения в практике управления и принятия решений, в том числе - в финансовой и торговой сферах. Лежащая в ее основе теория нелинейных адаптивных систем доказала свою полезность в целом ряде отраслей экономики и финансов.
В настоящем дипломном проекте будет разработана автоматизированная программа прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.
1. Исследовательский раздел
1.1 Анализ процесса продаж мобильных телефонов
Россия на мировом рынке мобильных телефонов представлена тремя процентами. Может показаться, что это немного по сравнению с Европой и той же Азией, однако нам представляется, что такие сравнения, мелькающие в электронных и печатных изданиях, не совсем корректны.
Очевидно, объём российского рынка меньше совокупного рынка стран ЕС или азиатского региона. В то же время Россия смотрится довольно неплохо и, что немаловажно, продолжает увеличивать доход. В период первичного насыщения рынок демонстрировал головокружительный рост, на котором положительно сказалось резкое уменьшение 'серого' сегмента. Произошло это благодаря ряду факторов, сделавших работу с 'серыми' трубками менее выгодными. Неожиданно заработала таможня, поднялись закупочные цены, да и наши соотечественники стали предъявлять повышенные требования к качеству товара и на дешёвые трубки подозрительного происхождения клюют меньше.
Многие эксперты предполагали, что за периодом насыщения последует логичный спад, но не тут то было. Да, количество процессов продаж серьёзно сократилось и продолжает постепенно уменьшаться. Например, в 2006 году снижение составило 14 процентов. Но вместе с тем в том же году доход вырос на 3 процента. Причин этому несколько, самая главная появление рынка 'замены'. Примерно треть абонентов ежегодно покупает новые телефоны на замену старых. Как правило, их выбор падает на более дорогие модели. Вместе с тем люди, впервые покупающие мобильный, тоже всё чаще выбирают дорогие. В 2006 году средняя цена сотового телефона, проданного на территории России, составила 193 доллара, что на 18 процентов больше, чем в 2005. Эта тенденция сохраняется до сих пор. Немаловажный фактор - рост благосостояния наших граждан и как следствие увеличение продаж трубок премиум-класса. Растёт и их техническая подкованность. Покупатели не только понимают преимущества таких новинок как EDGE, GPS и пр., но и готовы за них платить. На данный момент сегмент аппаратов дороже 300 долларов по количеству продаж опережает сегменты до 69 долларов и от 70 до 99 долларов на 6 и 4 процента соответственно. На стоимости продаваемых телефонов сказалось развитие кредитной системы. Средняя цена покупаемых по кредиту трубок почти в два раза выше приобретаемых за наличные. Правда, здесь кроется и серьёзная проблема, а именно не возврат кредитов, в некоторых регионах достигающий 70-ти процентов.
Лидерами продаж по-прежнему остаются модели от Samsung и Nokia, которых в последнее время успешно поджимает Sony Ericsson, потеснивший с третьего места Motorola. В целом российский рынок мобильных телефонов стабилизировался, и ожидать появления каких-нибудь новых игроков на нём не приходиться. Хоть новички периодически появляются но, как правило, не в силах играть большую роль в агрессивном конкурентном поле. Последним успехом среди брендов 'второго эшелона' можно признать продвижение Fly. Успех компании обусловлен активным маркетингом, удачным ценообразованием и широким модельным рядом. Благодаря этому в прошлом 2007 году Fly с 8,2 процентами уверено заняла на рынке пятое место. Основным фактором, сдерживающим дальнейший рост, остаётся отсутствие разветвленной сети сервисного обслуживания.
Между тем российский рынок довольно специфичен. Добиться на нём хороших результатов не просто и для топовых брендов. Тот же самый Panasonic вообще был вынужден покинуть российский рынок мобильных телефонов. Мотивируя уход тем, что якобы наш рынок ещё не дорос до их продукции. Весьма спорное утверждение. Обещание вернуться в 2008 году так и осталось обещанием. Впрочем, покупатели не особо и расстраиваются, так как большинство этот уход даже не заметило.
Ещё плачевнее сложилась история телефонов Siemens. В компании телекоммуникационный сектор всегда был перспективным, но и проблематичным, принося только убытки. Имея неплохие стартовые условия, Siemens не только не удалось стать лидером рынка, но и пришлось покинуть его. Дитмар Тайс, директор отдела исследований, видит причину произошедшего в том, что мобильные телефоны 'представляют собой потребительский бизнес, а Siemens ориентирован, прежде всего, на системы. Для чего необходим другой подход в маркетинговой стратегии' [6]. В провале виноват не только неудачный маркетинг, но и слабость модельного ряда по сравнению с основными конкурентами. Siemens удалось 'спихнуть' убыточный бизнес тайваньской BenQ, которая с помощью его пыталась выйти на европейский рынок. Удовольствие получилось слишком дорогим. За 2005-2006 год BenQ Mobile вложила 1,2 миллиарда долларов, получив в результате убыток в 900 миллионов. Как следствие уже в октябре 2006 компанию признали банкротом (сделку заключили в 2005 году). По её условиям BenQ получала до 2010 года права на бренд BenQ - Siemens. После чего предполагалось полностью перейти на BenQ Mobile. Как показали события на рынке, в том числе в российском секторе, это был не очень разумный ход. Проблемы, которые были у Siemens, стали ассоциироваться и с новым брендом, а все положительные наработки так к нему и не 'прилипли'. В результате большинство российских покупателей просто предпочли 'не связываться'. И, как показали дальнейшие события, оправдано. Вряд ли кто-нибудь теперь возьмёт на себя обслуживание аппаратов, проданных обанкротившейся компанией.
На российском рынке розничной продажи мобильных телефонов безраздельно властвуют пять титанов: Евросеть, Связной, Цифроград, Диксис и Беталинк. За последние три года им удалось сделать впечатляющий рывок, захватив до 80% рынка. Для сравнения, на начало 2006 года их доля составляла всего 56%. За ними не только гарантия качества и сервисное обслуживание. Не последнюю роль сыграл рост популярности у наших покупателей услуги потребительского кредитования, которая вкупе с той же Евросетью выглядит гораздо выигрышней мелких и средних конкурентов. После лихих 90-х российские покупатели по прежнему не особо доверчивы, тем более к небольшим торговцам (не безосновательно, кстати). А выросшее благосостояние позволяет выбирать не только по цене, а ещё и по качеству товара и сервиса.
Короче говоря, для крупных игроков на рынке всё 'радужно и розово'. Правда, между крупнейшими ритейлерами на рынке продаж сотовых телефонов и операторами возникло некоторое поле напряжения из-за несоответствия количества проданных SIM-карт реальному количеству абонентов. Ещё в 2005 году этот разрыв стал двукратным. Причём он увеличивается ускоренными темпами. Например, в позапрошлом году количество абонентов увеличилось на 8,4 млн. человек, а количество SIM-карт на 27 млн.
Любопытным моментом для российского рынка мобильных телефонов стала тенденция межсегментного замещения. Оказалось, современный сотовый телефон способен не только создать конкуренцию, но и серьёзно потеснить, например МП3-плееры. Трубки, имеющие подобную функцию, по ряду причин, выглядят выигрышней. Плееры пока спасает меньшая цена и размеры, но вытеснение уже идёт.
В целом можно признать, что российский рынок мобильных телефонов, идя стопами европейского собрата, успешно преодолел все ступени развития. На данный момент он имеет твёрдую устойчивую структуру, как следствие баланса рыночных и государственных законов, что служит неплохим залогом дальнейшего развития.
Однако основной его проблемой остается получение прогноза на будущее, а так как прогноз это результат процесса прогнозирования, выраженный в словесной, математической, графической или другой форме суждения о возможном состоянии объекта (в частности рынка продаж мобильных телефонов) и его среды в будущий период времени. То для этого в сложившемся положение для улучшения получения прогноза о спросе создаются программы на основе нейронных сетей.
1.2 Нейронные сети как средство анализа процесса
С математической точки зрения нейронная сеть представляет собой многослойную сетевую структуру, состоящую из однотипных (и сравнительно простых) процессорных элементов - нейронов. Нейроны, связанные между собой сложной топологией межсоединений, группируются в слои (как правило, два-три), среди которых выделяются входной и выходной слои. В нейронных сетях, применяемых для прогнозирования, нейроны входного слоя воспринимают информацию о параметрах ситуации, а выходной слой сигнализирует о возможной реакции на эту ситуацию. Перед постановкой на 'боевое дежурство' нейронная сеть проходит специальный этап настройки - обучения.
Как правило, сети предъявляется большое количество (сотни и тысячи) заранее подготовленных примеров, для каждого из которых известна требуемая реакция сети. Если сеть реагирует на очередной пример неадекватно, т.е. состояние выходного слоя отличается от заданного, внутренняя структура сети подвергается некоторой модификации для минимизации ошибки (в большинстве случаев корректируются веса соединений).
После определенного периода обучения сеть достигает состояния, соответствующего минимальной суммарной ошибке. Для некоторых задач суммарная ошибка составляет 2-3%, для других может доходить до 10-15%, ряд задач вообще не поддается решению на нейронных сетях. К счастью, прикладные аспекты теории нейронных сетей сегодня настолько изучены, что практически для каждой пользовательской задачи можно найти описание наиболее подходящей для ее решения структуры нейронной сети, а также ожидаемое качество результатов.
Вкратце перечислим основные преимущества нейронных сетей:
1. Наиболее ценное свойство нейронных сетей - способность обучаться на множестве примеров в тех случаях когда неизвестны закономерности развития ситуации и какие бы то ни было зависимости между входными и выходными данными. В таких случаях (а к ним можно отнести до 80% задач финансового анализа) пасуют как традиционные математические методы, так и экспертные системы.
2. Нейронные сети способны успешно решать задачи, опираясь на неполную, искаженную, зашумленную и внутренне противоречивую входную информацию.
3. Для использования методов корреляционного анализа вам понадобится профессионал-математик. Эксплуатация обученной нейронной сети по силам и старшекласснику.
4. Нейросетевые пакеты позволяют исключительно легко подключаться к базам данных, электронной почте и т.д. и автоматизировать процесс ввода и первичной обработки данных.
5. Внутренний параллелизм, присущий нейронным сетям, позволяет практически безгранично (насколько хватит кошелька) наращивать мощность нейросистемы. Вы можете начать с простого и дешевого пакета, потом перейти на профессиональную версию, потом добавить одну-две-три платы-ускорителя, потом перейти на специализированный нейрокомпьютер - с гарантией полной преемственности всего ранее созданного программного обеспечения.
В маркетинге нейронные сети можно применять для прогнозирования изменения спроса на товары или услуги в зависимости от их стоимости, функций и т.п. Для обучения сети достаточно представить реальные данные по рынку за различные периоды. Нейросеть хороша тем, что для маркетолога неважно, какая зависимость существует между входными данными, главное - что нейросеть может предсказать будущее значение спроса, зная сегодняшнее его значение, средний уровень цен, общий объем рынка.
Рынок мобильных телефонов как система с множеством параметров прекрасно прогнозируется с помощью нейронных сетей.
1.3 Автоматизированные решения на основе нейросетевых технологий
Существует целый ряд разработок, в том числе и российских, позволяющих осуществлять прогнозирование рынка. Приведем некоторые из существующих программ и кратко опишем их.
Для автоматизации деятельности торговых компаний фирма 'BIGroup Labs' предлагает современный программный комплекс RS-Balance 3 [7]. В нем реализована высокоуровневая поддержка стандартных бизнес-процессов торгового предприятия, включая:
управление взаимоотношениями с клиентами, учет договорной деятельности, взаиморасчеты;
процесс закупки и определением рентабельности товара на этапе его закупки;
процесс оптовой, розничной и комиссионной продажи с настраиваемыми схемами ценообразования;
оперативное управление складскими запасами;
учет товарно-материальных ценностей и основных фондов внутри предприятия и внутри холдинговой структуры;
финансовый менеджмент, работу с денежными средствами;
ведение учета затрат, расчет себестоимости;
систему учета на множестве настраиваемых Планах счетов.
RS-Balance 3 разработан на основе объектно-ориентированного подхода. Набор встроенных в систему инструментальных средств дает конечному пользователю возможность модифицировать логику обработки первичных данных и настраивать клиентский интерфейс в соответствии со своими задачами и предпочтениями. Все это значительно увеличивает эффективность и удобство работы нейронных сетей торгового предприятия.
Инструментальное средство Cognos 4Thought входит в состав семейства современных программных средств обработки, анализа и прогнозирования данных, разработанного компанией Cognos [8].
В основу программного продукта Cognos 4Thought положена технология нейронных сетей. Использование нейронных сетей позволяет строить достаточно точные сложные нелинейные модели на основе неполной статистической выборки данных.
Cognos 4Thought предназначен для моделирования и прогнозирования.4Thought может анализировать исторические данные во времени, затем продолжить эту временную линию в будущее, предсказывая тенденции.
Системы Impromptu, PowerPlay, Scenario и 4Thought представляют собой взаимосвязанные и дополняющие друг друга инструментальные средства, поддерживающие наиболее эффективные технологии обработки данных и обеспечивающие решение широкого круга задач в бизнес-приложениях, от доступа к информации в распределенных базах данных до вычислительной обработки и интеллектуального анализа.
Cognos PowerPlay - это инструментальное средство для оперативного анализа данных и формирования отчетов по OLAP-технологии. Оно позволяет аналитикам исследовать данные под любым углом зрения, обеспечивая реальное многоуровневое видение текущего состояния организации. Главная особенность инструмента заключается в исключительной автоматизации процесса создания аналитического приложения, что позволяет за очень короткий срок создавать полномасштабные аналитические приложения, в основу которых положена технология OLAP.
Кроме того, инструмент отличается удобством применения: от пользователя требуются лишь навыки работы в среде Windows.
PowerPlay обеспечивает эффективный доступ ко всей имеющейся в организации информации, хранящейся в форме реляционных или не реляционных данных, таких как базы данных (Databases), склады данных (Data Warehouses), витрины данных (Data Marts) и электронные таблицы (Spreadsheets).
Созданный с помощью PowerPlay гиперкуб можно открыть в 4Thought. Гиперкуб представляет собой файл многомерных данных с расширением. mdc. Данные в таком файле организованы специальным образом для обеспечения быстрого доступа и детализации.
OLAP-кубы Cognos можно использовать как источники данных для модулей Data Mining (4Thought и Scenario), таким образом в продукции Cognos реализована интеграция технологий OLAP и Data Mining.
Cognos Impromptu - это инструмент фирмы Cognos для построения запросов любой сложности и отчетов произвольного формата пользователями, от которых не требуется навыков программирования. Отличительная черта этого средства - простота в использовании, которая достигается благодаря продуманному и интуитивно понятному интерфейсу.
Impromptu обеспечивает пользователей оперативной и детальной информацией, необходимой для принятия решений. Одним из основных достоинств Impromptu является возможность быстрого построения широкого спектра различных отчетов в зависимости от того, какие данные необходимы для принятия решения. Это означает, что пользователи могут формировать отчеты любой нужной структуры гораздо оперативнее и проще, чем при использовании других построителей отчетов.
Отчеты Impromptu также могут быть использованы в качестве входных данных для построения модели в Cognos 4Thought.
Cognos Scenario - это интеллектуальное инструментальное средство поиска (разведки) данных (Data Mining), которое позволяет руководителям (даже не знакомым с методиками статистического анализа) выявлять скрытые тенденции и модели бизнеса и 'извлекать на поверхность' его ранее неизвестные закономерности и корреляционные связи.
Система Scenario спроектирована для построения моделей, описывающих особенности бизнеса по данным, которые при использовании традиционных методов анализа могли бы быть незамеченными. Удобный интерфейс этого приложения позволяет пользователям легко визуализировать имеющиеся сведения о бизнесе. Он автоматизирует обнаружение и ранжирование наиболее важных факторов, влияющих на бизнес, и выявление скрытых связей между этими факторами. Обладая подобным интерфейсом, Scenario делает процесс анализа данных, традиционно трудоемкий и дорогостоящий, простым и оперативным.
Результаты работы Scenario (ключевые показатели и факторы) могут быть переданы в 4Thought для выполнения прогнозирования.
Cognos 4Thought использует технологии математического моделирования, которые позволяют изучить взаимную связь факторов, влияющих на выбранную сферу деятельности. Это программное средство дает возможность плановикам создавать точную модель бизнеса, используемую для сравнения, прогнозирования, интерпретации результатов измерений.
4Thought поддерживает анализ на всех этапах:
Сбор данных. Данные вводятся непосредственно или получаются из внешних источников, например, MS Excel. Данные могут быть взяты у других программных средств семейства Cognos (Impromptu, ReportNet, PowerPlay и Scenario) или прямо из хранилища. Введенные данные отображаются в 4Thought в виде электронных таблиц, что позволяет достаточно просто их просматривать и анализировать;
Преобразование данных. Прежде чем попасть в модуль 4Thought, данные обычно очищаются в модуле Impromptu, который делает запросы к источникам данных (реляционным базам данных), позволяет накладывать фильтры на выборки данных (например, исключать строки, в которых значение показателя - целевой функции равно нулю, либо превращать одинаковые строки в одну строку, либо отсеивать строки если значение показателя является аномальным - выходит за пределы двух среднеквадратичных отклонений вверх и трех вниз, и т.п., правила очистки данных можно произвольно настраивать). Отчеты Impromptu могут быть использованы в качестве входных данных для построения модели в 4Thought.
В модуле 4Thought также есть возможность просматривать данные и исключать аномалии (задавая допустимые интервалы, в которых может изменяться значение показателя), а также заменить пустые значения показателей на конкретные значения. При этом создаются новые поля: коэффициенты, пропорции, процентные соотношения, дающие более полную картину проблемы.
Исследование данных. Данные визуализируются для просмотра в виде электронных таблиц, графиков и диаграмм различного вида. Фактически, этот этап представляет собой предварительный просмотр данных перед построением модели в 4Thought (выявление аномалий, работа с дубликатами и пропусками).
Создание модели.4Thought создает модель автоматически, но позволяет детальную интерактивную настройку параметров модели; пользователь контролирует ряд параметров, включая выбор факторов (например исключение несущественных факторов), отсеивание аномальных значений и т.д.
Интерпретация. После загрузки данных в модель 4Thought создает ряд отчетов и дает возможность работы с разнообразными графиками. Таким образом модель просматривается, проверяется достоверность полученных результатов, выявляются взаимозависимости факторов.
Применение. Реализованная модель используется для прогнозирования и определения наиболее существенных факторов, задающих изменения ключевых показателей.
4Thought позволяет выполнить обучение модели на репрезентативной выборке значений входных и выходных параметров нейронной сети. Для обучения может быть использована вся выборка либо ее часть - в таком случае оставшаяся часть выборки применяется для контроля точности (качества) обучения: отклонения значений выходов обученной нейронной сети от реальных значений. Обучение сети на одном наборе данных выполняется несколько раз (перед каждым обучением начальные значения весовых коэффициентов устанавливаются автоматически случайным образом), чтобы выбрать наилучшую точность обученной сети.
Cognos 4Thought позволяет, варьируя параметры сценарных условий, автоматически получать различные прогнозы на заданный период, отвечая на вопрос: 'А что будет, если?' Результаты прогнозирования по всем отраслям региональной экономики можно получать в виде текстов, графиков, диаграмм, а также отчетных документов установленного образца, которые можно хранить в электронном виде или передавать потребителям по электронной почте. Такие возможности освобождают аналитиков от рутинной вычислительной и оформительской работы и позволяют сосредоточиться на вопросах стратегии и тактики регионального развития.
Cognos 4Thought отображает степень влияния факторов (входных переменных) на целевую переменную, что позволяет использовать его в качестве инструмента факторного анализа. То есть после настройки сети можно оценить, какие факторы вносят какой вклад в конечный результат.
4Thought может оперировать с временными рядами. Это позволяет обнаруживать и анализировать тренды в динамике экономических величин, а также строить прогноз значений показателей на несколько лет вперед.4Thought поддерживает несколько способов нормирования входных и выходных параметров, что дает возможность оперировать с экономическими величинами, влияние которых нелинейно.
При комплексном использовании продуктов семейства Cognos в единой информационно-аналитической системе возникают дополнительные преимущества (синергетический эффект). Задачи по сбору и обработке информации в системе решаются на этапе формирования витрин данных с помощью инструмента PowerPlay Transformation Server.
Вопросы безопасности в системе (защиты от несанкционированного доступа) решаются с помощью инструмента Access Manager, входящего в состав пакета PowerPlay Transformation Server.
Инструменты PowerPlay и Impromptu используются для решения задач, связанных с мониторингом показателей, многомерным анализом информации, формированием отчетов, а инструменты 4Thought и Scenario - для прогнозирования показателей социально-экономического развития, а также для факторного анализа данных. Организация передачи данных между инструментами полностью автоматизирована. Простота интерфейса продуктов Cognos и ориентированность на пользователей-непрограммистов позволяет эффективно выполнять сложные задачи анализа. Публикация информации в интранет/экстранет-среде может осуществляться с помощью инструмента Upfront, входящего в состав пакета Cognos PowerPlay Enterprise Server.
Пакет STATISTICA фирмы StatSoft [9] является интегрированной системой комплексного статистического анализа и обработки данных в среде Windows и занимает устойчивое лидирующее положение на рынке статистического программного обеспечения. Она полностью согласована со всеми стандартами Windows. Отдельные модули, из которых построена система, являются полноценными Windows-приложениями.
Прогнозирование моделей авторегрессии и проинтегрированного скользящего среднего имеет методику, реализуемую в следующей последовательности:
1. идентификация, или определение модели, которая описывает наблюдаемый временной ряд;
2. оценка параметров модели;
3. исследование адекватности модели;
4. прогноз.
Каждый из этапов методики легко доступен в пакете STATISTICA. Исследователь не испытывает перегрузок, связанных с подготовкой данных, проверкой результатов, построением графиков, рассмотрением альтернативных вариантов - все необходимые инструменты у него под рукой. Например, исследование и прогнозирование временных рядов в рамках ARIMA - Авторегрессия и проинтегрированное скользящее среднее, - реализованные в системе STATISTICA, соответствуют методическим основам Бокса и Дженкинса [9]. Образно можно сказать, что реализованный в системе диалог ARIMA является перенесением методологии Бокса и Дженкинса из мира математических идей и моделей в мир современных компьютерных технологий.
Большим достоинством системы является наличие встроенного языка STATISTICA BASIC, позволяющего моделировать временные ряды, оценивать качество прогноза, риск при использовании определенной стратегии игры.
Данный пример дает представление о ином подходе к прогнозированию, нежели нейронные сети. Несмотря на существование теории стохастического прогнозирования, программных средств реализующих эту теорию, большой интерес представляют иные подходы к решению проблемы прогнозирования - нейронные сети способны распараллеливать процесс и поэтому работать эффективнее, а кроме этого они могут таить в себе еще неоткрытые возможности.
1.4 Особенности проектируемой системы в сравнении с аналогичными
Следует отметить, что программные продукты, описанные в предыдущем разделе, претендуют на универсальное использование, поэтому их отличает большая избыточность. Она определяет высокую стоимость продукта, не всегда оправданную. Ведь основной потребитель предполагаемой разработки - магазин мобильных телефонов средней руки, пытающийся грамотным анализом рынка завоевать прочную нишу на нем, а следовательно, тратить колоссальные деньги на ПО он не может себе позволить. В этом случае оправданным будет разработать программу целевого назначения, оптимизированную под особенности именно этого сектора рынка.
Таким образом, нам предстоит исследовать особенности оптово-розничных продаж мобильных телефонов, задать схему нейронной сети и разработать программу на ее основе, отметить основную структуру типичной обучающей конструкции, собрать данные и обучить программу. После этого ею можно будет пользоваться на практике.
Выводы по разделу: нейронные сети - эффективное средство анализа рынка. Они широко используются в универсальных программных продуктах. Их избыточность и высокая стоимость дает нам право на самостоятельную разработку прикладной программы, ориентированной на задачи дипломного проектирования.
1.5 Цели и задачи разработки автоматизированной системы прогнозирования
Целью разработки автоматизированной системы прогнозирования является разработка универсальной системы, которая будет прогнозировать оптово-розничные продажи мобильных телефонов на основе нейронных сетей.
Для достижения данной цели требуется решить следующие задачи:
1) Проанализировать особенности проектирования систем;
2) Произвести анализ программной системы временных рядов;
3) Разработать программу нейросетевого прогнозирования оптово-розничных продаж мобильных телефонов;
4) Изучить меры безопасности при эксплуатации электронно-вычислительной техники;
5) Дать экономическое обоснование разработанной программе.
Именно этой актуальной теме посвящен данный дипломный проект.
2. Специальный раздел
2.1 Особенности проектирования системы в общем виде
В различных областях человеческой деятельности часто возникают ситуации, когда по имеющейся информации (данным), обозначим ее X, требуется предсказать (спрогнозировать, оценить) некоторую величину Y, стохастически связанную с X (то есть X и Y имеют некоторое распределение L (X,Y)), но которую непосредственно измерить невозможно (например, Y может относиться к будущему, а X - к настоящему). Так, например, может представлять интерес прогноз успеваемости первокурсников очередного набора по оценкам, полученным ими на вступительных экзаменах. Здесь X - средний балл студентов на вступительных экзаменах, а Y - средний балл по итогам, скажем, первой сессии; при этом совместное распределение X и Y можно в принципе определить (оценить) по аналогичным данным за прошлые годы.
В общем случае X означает некоторую совокупность {X1, X2,…} наблюдаемых случайных величин, которые в рассматриваемом контексте называются предсказывающими (или прогнозными) переменными, и задача состоит в построении такой функции Ф (Х), которую можно было бы использовать в качестве оценки для прогнозируемой величины Y: Ф (Х) =Y (т.е. чтобы она была в каком-то смысле 'близка' к Y); такие функции Ф (Х) называют предикторами величины Y по X. Разработка методов построения оптимальных (в том или ином смысле) предикторов и составляет главную задачу прогнозирования.
Если совокупность величин {X1, X2, …, Xn} представляет собой значения какого-либо параметра, изменяющегося во времени, то такую совокупность называют временным рядом, при этом каждое значение соответствует значению параметра в конкретное время t1, t2, …,tn. Задача прогнозирования в этом случае заключается в определении значения измеряемой величины X в момент времени tn+1, tn+2, tn+3,…, то есть для выполнения прогнозирования необходимо выявить закономерность этого временного ряда.
Различают многошаговый и одношаговый прогноз.
Многошаговым прогнозом называют долгосрочный прогноз, цель которого состоит в определении основного тренда, для некоторого фиксированного промежутка времени в будущем. При этом прогнозирующая система (в нашем случае - нейронная сеть) использует полученные прогнозные значения временного ряда для выполнения дальнейшего прогноза, то есть использует их как входные данные.
Одношаговым прогнозированием называют краткосрочный прогноз (на один шаг), при этом для получения прогнозированной величины используют только фактические данные. Ясно, что одношаговое прогнозирование более точно, но оно не позволяет выполнять долгосрочные прогнозы.
Уточним теперь, что целью данной работы есть разработка системы, которая могла бы выполнять одношаговое и многошаговое прогнозирование и использовала технологии искусственных нейронных сетей; при этом будет показано, каким образом задача прогнозирования сводится к задаче распознавания образов. И только после отработки данного математически-программного аппарата мы применим его к рынку продаж мобильных телефонов.
Теория стохастического прогнозирования [9] изучает методы построения предикторов. Для построения этой теории, прежде всего, требуется уточнить смысл приближенного равенства Ф (Х) ?Y. Если Ф (Х) используется для предсказания величины Y, то одной из разумных мер расхождения между ними является (Ф (Х) - Y) 2, или квадратичная ошибка, но так как величина Y неизвестна, то для измерения точности предиктора Ф используется среднеквадратичная ошибка ?Ф=М (Ф (Х) - Y) 2, где М - знак математического ожидания. Среднеквадратическая ошибка - мера, традиционно используемая в теории стохастического прогнозирования, хотя в принципе можно было бы использовать и другие меры точности, например среднюю абсолютную ошибку. Предиктор, минимизирующий среднеквадратичную ошибку в заданном классе предикторов, называют оптимальным предиктором или прогнозом.
2.2 Классификация нейронных сетей. Выбор нейронной сети для решения задачи
Нервная система человека, построенная из элементов, называемых нейронами, имеет ошеломляющую сложность. Около 1011 нейронов участвуют в примерно 1015 передающих связях, имеющих длину метр и более. Каждый нейрон обладает многими качествами, общими с другими элементами тела, но его уникальной способностью является прием, обработка и передача электрохимических сигналов по нервным путям, которые образуют коммуникационную систему мозга.
Рисунок 2.1 - Биологический нейрон
На рисунке 2.1 показана структура пары типичных биологических нейронов. Дендриты идут от тела нервной клетки к другим нейронам, где они принимают сигналы в точках соединения, называемых синапсами. Принятые синапсом входные сигналы подводятся к телу нейрона. Здесь они суммируются, причем одни входы стремятся возбудить нейрон, другие - воспрепятствовать его возбуждению. Когда суммарное возбуждение в теле нейрона превышает некоторый порог, нейрон возбуждается, посылая по аксону сигнал другим нейронам.
Искусственный нейрон имитирует в первом приближении свойства биологического нейрона. На рисунке 2.2 представлена модель, реализующая эту идею. Суммирующий блок, соответствующий телу биологического элемента, складывает взвешенные входы алгебраически, создавая выход, который мы будем называть NET. В векторных обозначениях это может быть компактно записано следующим образом: NET = XW.
Рисунок 2.2 - Искусственный нейрон
Рисунок 2.3 - Искусственный нейрон с активационной функцией
На рисунке 2.3 блок, обозначенный F, принимает сигнал NET и выдает сигнал OUT.
Если блок F сужает диапазон изменения величины NET так, что при любых значениях NET значения OUT принадлежат некоторому конечному интервалу, то F называется 'сжимающей' функцией.
прогнозирование продажа нейронная сеть
Таким образом, нейрон функционирует с большим усилением в широком диапазоне уровня входного сигнала.
. (1)
Другой широко используемой активационной функцией является гиперболический тангенс.
OUT = th (x). (2)
Рисунок 2.4 - Функция гиперболического тангенса
2.2.1 Однослойные нейронные сети
Простейшая сеть состоит из группы нейронов, образующих слой, как показано в правой части рисунка 2.5 Отметим, что вершины-круги слева служат лишь для распределения входных сигналов. Они не выполняют каких-либо вычислений, и поэтому не будут считаться слоем.
Рисунок 2.5 - Однослойная нейронная сеть
Удобно считать веса элементами матрицы W. Матрица имеет т строк и п столбцов, где m - число входов, а n - число нейронов. Например, w2,3 - это вес, связывающий третий вход со вторым нейроном. Таким образом, вычисление выходного вектора N, компонентами которого являются выходы OUT нейронов, сводится к матричному умножению N=XW, где N и Х - векторы-строки.
2.2.2 Многослойные нейронные сети
Рисунок 2.6 - Двухслойная нейронная сеть
Многослойные сети могут образовываться каскадами слоев. Выход одного слоя является входом для последующего слоя. Подобная сеть показана на рисунке 2.6, она изображена со всеми соединениями.
Многослойные сети могут привести к увеличению вычислительной мощности по сравнению с однослойной сетью лишь в том случае, если активационная функция между слоями будет нелинейной.
2.2.3 Обучение искусственных нейронных сетей
Нейросеть обучается, чтобы для некоторого множества входов давать желаемое (или, по крайней мере, сообразное с ним) множество выходов. Каждое такое входное (или выходное) множество рассматривается как вектор. Обучение осуществляется путем последовательного предъявления входных векторов с одновременной подстройкой весов в соответствии с определенной процедурой. В процессе обучения веса сети постепенно становятся такими, чтобы каждый входной вектор вырабатывал выходной вектор.
Различают стратегии обучения: 'обучение с учителем' и 'обучение без учителя'.
'Обучение с учителем' предполагает, что для каждого входного вектора существует целевой вектор, представляющий собой требуемый выход. Вместе они называются обучающей парой. Векторы обучающего множества предъявляются последовательно, вычисляются ошибки и веса подстраиваются для каждого вектора до тех пор, пока ошибка по всему обучающему массиву не достигнет приемлемо низкого уровня.
Обучение без учителя является намного более правдоподобной моделью обучения в биологической системе. Развитая Кохоненом [12] и многими другими, она не нуждается в целевом векторе для выходов и, следовательно, не требует сравнения с предопределенными идеальными ответами. Обучающее множество состоит лишь из входных векторов. Обучающий алгоритм подстраивает веса нейросети так, чтобы получались согласованные выходные векторы, т.е. чтобы предъявление достаточно близких входных векторов давало одинаковые выходы.
2.2.4 Нейросети обратного распространения
Обратное распространение - это систематический метод для обучения многослойных искусственных нейронных сетей. Он имеет солидное математическое обоснование. В [14] было дано ясное и полное описание процедуры. Вскоре выяснилось, что еще раньше метод был описан в [15]. Авторы работы [14] сэкономили бы свои усилия, знай они о работе [15]. Хотя подобное дублирование является обычным явлением для каждой научной области, в искусственных нейронных сетях положение с этим намного серьезнее из-за пограничного характера самого предмета исследования. Исследования по нейронным сетям публикуются в столь различных книгах и журналах, что даже самому квалифицированному исследователю требуются значительные усилия, чтобы быть осведомленным о всех важных работах в этой области.
На рисунке 2.7 показан нейрон, используемый в качестве основного строительного блока в сетях обратного распространения. Подается множество входов, идущих либо извне, либо от предшествующего слоя. Каждый из них умножается на вес, и произведения суммируются. Эта сумма, обозначаемая NET, должна быть вычислена для каждого нейрона сети. После того, как величина NET вычислена, она модифицируется с помощью активационной функции и получается сигнал OUT.
Рисунок 2.7 - Искусственный нейрон с активационной функцией
Рисунок 2.8 - Сигмоидальная активационная функция.
На рисунке 2.8 показана активационная функция, обычно используемая для обратного распространения. Эта функция, называемая сигмоидом, весьма удобна, так как имеет простую производную, что используется при реализации алгоритма
На рисунке 2.9 изображена многослойная сеть, которая может обучаться с помощью процедуры обратного распространения. (Для ясности рисунок упрощен.) Первый слой нейронов (соединенный с входами) служит лишь в качестве распределительных точек, суммирования входов здесь не производится. Входной сигнал просто проходит через них к весам на их выходах. А каждый нейрон последующих слоев выдает сигналы NET и OUT, как описано выше.
Рисунок 2.9 - Двухслойная сеть обратного распространения.
2.2.5 Обучение нейросетей обратного распространения
Целью обучения сети является такая подстройка ее весов, чтобы подача на нейросеть некоторого множества входов приводила к требуемому множеству выходов. Для краткости эти множества входов и выходов будем называть векторами. При обучении предполагается, что для каждого входного вектора существует парный ему целевой вектор, задающий требуемый выход. Вместе они называются обучающей парой. Как правило, нейросеть обучается на многих парах.
Обучение сети обратного распространения требует выполнения следующих операций:
1. Выбрать очередную обучающую пару из обучающего множества; подать входной вектор на вход сети.
2. Вычислить выход сети.
3. Вычислить разность между выходом сети и требуемым выходом (целевым вектором обучающей пары).
4. Подкорректировать веса сети так, чтобы минимизировать ошибку.
5. Повторять шаги с 1 по 4 для каждого вектора обучающего множества до тех пор, пока ошибка на всем множестве не достигнет приемлемого уровня.
На рисунке 2.10 показан процесс обучения для одного веса от нейрона р в скрытом слое j к нейрону q в выходном слое k. Выход нейрона слоя k, вычитаясь из целевого значения (Target), дает сигнал ошибки. Он умножается на производную сжимающей функции OUT (1-OUT), вычисленную для этого нейрона слоя k, давая, таким образом, величину д.
Рисунок 2.10 - Алгоритм настройки веса в выходном слое
д = OUT (1 - OUT) (Target - OUT) (4)
Затем д умножается на величину OUT нейрона j, из которого выходит рассматриваемый вес.
Это произведение в свою очередь умножается на коэффициент скорости обучения з (обычно от 0.01 до 1.0), и результат прибавляется к весу.
Такая же процедура выполняется для каждого веса от нейрона скрытого слоя к нейрону в выходном слое.
Следующие уравнения иллюстрируют это вычисление:
Дwpq,k = з дq,k OUT (5)
wpq,k (n+1) = wpq,k (n) + Дwpq,k (6)
где wpq,k (n) - величина веса от нейрона p в скрытом слое к нейрону q в выходном слое на шаге n (до коррекции); так что индекс k относится к слою, в котором заканчивается данный вес, т.е. с которым он объединен;
wpq,k (n+1) - величина веса на шаге n+1 (после коррекции);
дq,k - величина д для нейрона q, в выходном слое k;
OUTp,j - величина OUT для нейрона р в скрытом слое j.
Для каждого нейрона в данном скрытом слое должно быть вычислено д и подстроены все веса, ассоциированные с этим слоем. Этот процесс повторяется слой за слоем по направлению к входу, пока все веса не будут подкорректированы (рис.2.11).
Рисунок 2.11 - Настройка веса в скрытом слое
2.3 Применения нейросетей обратного распространения. Сведение прогнозирования к задаче распознавания образов
Обратное распространение было использовано в широкой сфере прикладных исследований. Фирма NEC в Японии объявила, что обратное распространение было ею использовано для визуального распознавания букв, причем точность превысила 99%. Это улучшение было достигнуто с помощью комбинации обычных алгоритмов с сетью обратного распространения, обеспечивающей дополнительную проверку.
В работе [22] достигнут впечатляющий успех с Net-Talk, системой, которая превращает печатный английский текст в высококачественную речь. Магнитофонная запись процесса обучения сильно напоминает звуки ребенка на разных этапах обучения речи.
В [23] обратное распространение использовалось в машинном распознавании рукописных английских слов. Буквы, нормализованные по размеру, наносились на сетку, и брались проекции линий, пересекающих квадраты сетки. Эти проекции служили затем входами для сети обратного распространения. Сообщалось о точности 99,7% при использовании словарного фильтра.
В [24] сообщалось об успешном применении обратного распространения к сжатию изображений, когда образы представлялись одним битом на пиксель, что было восьмикратным улучшением по сравнению с входными данными.
2.3.1 Задача распознавания образов
Распознавание образов - это одна из трудноформализованных задач, решение которой можно выполнить, используя нейросеть.
Пусть существует конечное множество графических образов, которые нужно распознать, и соответствующие им двоичные коды желаемых выходов (идентификаторов). В совокупности мы получили обучающее множество, в котором каждому графическому образу соответствует двоичный идентификатор. Спроецируем каждый образ на панель (рисунок 2.12) и сопоставим ему двоичный код - это код графического образа.
Рисунок 2.12 - Распознавание изображения
Возьмем какую-нибудь многослойную нейросеть обратного распространения и проведем обучение этой нейросети по вышеописанным правилам: подадим на вход нейросети считанный с панели двоичный код графического образа, а на выход желаемый идентификатор; будем повторять этот процесс до тех пор, пока нейросеть не обучится распознавать все обучающее множество.
После этого нейросеть можно считать способной распознавать образы из обучающего множества без искажений, а также образы, похожие, на те, которые предъявлялись нейросети при обучении.
Решение этой задачи, действительно интересно, так как ранее такие действия мог выполнять только человек.
2.3.2 Метод окон
Задача прогнозирования, рассмотренная ранее, может быть сведена к задаче распознавания образов, описанной выше, для этого применяется метод окон (метод windowing - рисунок 2.13).
Рисунок 2.13 - Метод окон
Метод windowing позволяет выявить закономерности во временном ряде на основе сведения анализа временного ряда к задаче распознавания образов и последующего ее решения на нейросети, описанным выше способом.
Основная идея метода: вводится два окна, одно из которых входное (input), второе - выходное (output). Эти окна фиксированного размера для наблюдения данных. Окна способны перемещаться с некоторым шагом S. В результате получаем некоторую последовательность наблюдений, которая составляет обучающее множество. Входному окну соответствует вход нейросети, а выходному окну - желаемый образ (идентификатор в терминологии распознавания образов).
2.4 Разработка программной системы прогнозирования временных рядов
2.4.1 Обзор объектно-ориентированного программирования в Delphi
Большинство современных языков программирования поддерживают концепцию объектно-ориентированного программирования (ООП). Эта концепция базируется на основных понятиях: классы, объекты, сообщения, наследование и полиморфизм (или позднее связывание). Среда программирование Delphi [25] использует объектно-ориентированный язык Object Pascal.
Классом (class) называется определяемый пользователем тип данных, который включает в себя состояние (представление класса) и некие операции (поведение класса). Класс имеет некоторое количество внутренних данных и несколько методов, существующих в форме процедур или функций.
Объект (object) есть экземпляр класса или, другими словами, переменная, тип которой является класс. Объекты, в отличие от классов реальны в том смысле, что во время выполнения программы они хранятся в памяти.
Класс может иметь любое число полей и методов. Однако хороший стиль ООП требует, чтобы данные в классах были инкапсулированы (скрыты). Для доступа к внутренним данным объекта нужно использовать методы - это уменьшает шансы появления ошибочной ситуации, а также позволяет автору класса модифицировать его структуру в следующих версиях. Концепция инкапсуляции весьма проста: нужно просто думать о классе как о 'черном ящике' с очень маленькой видимой частью. Эта видимая часть называется интерфейсом класса и позволяет получать доступ к данным объектов этого класса остальным частям программы. Для доступа к внутренним данным используются методы - этот подход в концепции ООП называют разграничением информации. Object Pascal заимствовал из C++ три спецификатора доступа: privat (информация доступна только для методов самого класса), protected (доступ разрешен для методов класса и его потомков) и publuc (всеобщий доступ). Есть также спецификатор published, который имеет специальное применение в Delphi.
Object Pascal позволяет определить новый класс, производя его из уже существующего для того, чтобы выразить аналогии между классами. Эта операция называется наследованием и является одной из фундаментальных элементов ООП.
Сообщением называют определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию. При классическом подходе объекты должны обмениваться только сообщениями.
Полиморфизм - это свойство ООП, при котором одно и то же сообщение может вызывать различные действия на этапе выполнения.
Delphi содержит множество стандартных подпрограмм, но еще больше и важнее имеющаяся библиотека классов VCL (Visual Component Library, библиотека визуальных компонентов), которая имеет иерархическую структуру (иерархия классов). Каждый класс этой иерархии является наследником класса TObject, который является корнем иерархии, что позволяет использовать тип TObject в качестве замены для типа данных любого системного класса. Такая иерархическая структура удобна для программиста и позволяет быстро разрабатывать приложения.
2.4.2 Объектно-ориентированный анализ задачи прогнозирования на искусственных нейронных сетях
Графический пользовательский интерфейс приложения
Для удобного обращения с создаваемой прогнозируемой системой необходимо разработать удобный и понятный графический интерфейс (окна разработанной программы - скриншоты ее выполнения - представлены в Приложении А), который должен позволять вводить различные входные данные, управлять работой программы и в удобной форме выводить результат. Все эти действия должны совершаться на форме (окне Windows), поэтому будем использовать объект класса TForm1, наследуемый от базового класса форм TForm.
В поставленной задаче (см. раздел 1), зная алгоритм ее решения (см. раздел 2.3), выделим входные и выходные данные, а также проанализируем и определим их, используя объектно-ориентированные возможности VCL.
Программа должна выполнять прогнозирование временного ряда, значит необходимо задать временной ряд, для чего нужно указать количество значений в этом ряде и задать собственно значения. Количество элементов может быть только целым и положительным числом, поэтому для его ввода выбираем класс TSpinEdit, который является визуальным компонентом Delphi, а значит, может быть помещен на форму и непосредственно участвовать в диалоге с пользователем. В зависимости от введенного значения количества элементов нужно указать эти элементы. Для решения этой проблемы будем использовать визуальный объект - строковую сетку класса TStringGrid, которая также может быть помещена на главную форму и непосредственно участвовать в диалоге. При помощи этой сетки мы будем также выводить прогноз.
Для задания параметров искусственной нейронной сети обратного распространения поместим на главную форму визуальный компонент класса TSpinEdit (для задания количества слоев в нейронной сети), визуальный компонент класса TStringGrid (для задания количества нейронов в каждом слое нейронной сети).
Для задания параметров алгоритма обратного распространения (см. п.2.2.4) и метода windowing (см. п.2.3.2) поместим на форму следующие визуальные компоненты: три компонента TSpinEdit для задания размера входного окна (выходное окно будет иметь единичный размер в нашем приложении), для указания количества элементов временного ряда для анализа (на этих элементах нейронная сеть будет обучаться) и для задания количества элементов временного ряда, которые нужно спрогнозировать; два компонента TEdit для задания погрешности обучения нейросети и для задания шага скорости обучения. Кроме того, поместим на форму переключатель, указывающий на необходимость выполнения нормализации временного ряда перед обучением, группу радиокнопок, определяющих тип результирующего прогноза, а также кнопку для запуска процесса обучения и кнопку для выполнения заданного типа прогноза. Для удобного анализа прогноза поместим на форму компонент TeeChart, инкапсулирующий возможность построения диаграмм.
Все описанные выше компоненты являются объектами классов VCL, поэтому они имеют свойства и методы, могут обрабатывать и посылать сообщения. Главная форма содержит все эти объекты в себе, то есть они описаны как поля класса TForm1, а значит, создание объекта класса TForm1 выделяет память под все эти компоненты.
Моделирование нейронной сети обратного распространения
Нейронную сеть обратного распространения можно рассматривать как объект, однако, она в свою очередь состоит из слоев, каждый их которых также может выступать объектом, а каждый слой состоит из отдельных нейронов, которые могут являться объектами. Поэтому способов описания нейросети существует большое количество.
Принципиально правильным было бы описать нейрон отдельным классом, который имел бы свойства (входы, весовые коэффициенты, выход и др.) и действие, которое заключалось бы в вычислении выхода в зависимости от входа. При обучении нейросети необходимо корректировать весовые коэффициенты нейронов, поэтому нужны методы в классе нейрона, которые позволили бы корректировать приватные значения весовых коэффициентов. Затем, нужно описать класс слоя нейросети, содержащего список объектов класса нейронов, и, наконец, создать класс нейросети.
Можно поступить иначе - создать класс нейросети, инкапсулирующий поведение и состояние всей нейросети в целом. Этот подход в меньшей мере отвечает строгой концепции ООП, однако, он выглядит более простым для моделирования нейросети на последовательном вычислителе.
Операционная система Windows 98 является многозадачной операционной системой, поэтому можно было бы класс нейрона сделать наследником класса TThread, создать нить для каждого объекта этого класса, и таким образом промоделировать параллельность работы нейрона в рамках операционной системы Windows 98. На самом же деле все расчеты будут выполняться на одном процессоре (если, конечно, нет многопроцессорной системы), и поэтому нити будут получать процессорное время последовательно, а значит, нет большой необходимости создавать нити, тем более, что в большинстве случаев возникают дополнительные трудности с распараллеливанием: синхронизация вычислений, и такие приложения зачастую на одном процессоре работают медленнее чем последовательные аналогичные алгоритмы, выполняющиеся в одной задаче.
Поэтому, после ряда опытов, было принято решение о создании класса, инкапсулирующего нейросеть обратного распространения в целом. Этот класс назван TBackPropagation и помещен в модуль bkpropag. pas. Объект этого класса будет моделировать работу нейросети в создаваемой системе прогнозирования. Следует отметить, что эти объекты можно использовать и для других задач, требующих применение нейросетей обратного распространения (класс оптимизирован именно для задачи прогнозирования), при этом нет необходимости в написании программного кода моделирования нейросети, так как он уже инкапсулирован в классе TBackPropagation, и если нужно добавить что-либо к нейросети, то можно воспользоваться наследованием.
Константы и типы модуля bkpropag
Для корректной работы объекта класса TBackPropagation необходимы следующие константы и типы, которые описаны в интерфейсной части модуля bkpropag (см. приложение Б):
· MAXLAYERS=300 - максимальное количество слоев в нейросети;
· MAXVES=300 - максимальное количество нейронов в слое;
· MAXINPUT=300 - максимальное количество входов нейросети;
· MAXTRAND=300 - максимальное количество элементов во временном ряду;
· TVesCountNeuro - тип количества нейронов в слоях;
· TVesNeuro - тип значений весов нейросети;
· TTrend - временной ряд;
· TOutPromezh - промежуточные выходные сигналы в нейросети.
Описание класса TBackPropagation
Класс TBackPropagation инкапсулирует работу нейросети обратного распространения. В приложении Б приводится описание этого класса. Приватные поля содержат данные, описывающие состояние нейронной сети, и некоторые методы, используемые внутри нейросети:
· fCountLayer: word - количество слоев в нейросети;
· fArrayVesCount: TvesCountNeuro - количество нейронов в слоях;
· fArrayVes: TvesNeuro - значения весов нейросети;
· fXCount: word - количество входных сигналов;
· fY: double - выходной сигнал нейросети;
· fCountTrend: word - количнство чисел во временном ряду;
· fTrend: Ttrend - временной ряд;
· fYPromezh: ToutPromezh - промежуточные выходные сигналы;
· procedure RandomVes - задание весов случайным образом;
· function activation (g: double): double - функция активации;
· function activation_diff (g: Double): double - производная функции активации.
Интерфейсная часть класса (общедоступные методы) содержит функции установки и считывания состояния нейросети, функции выполнения распознавания и обучения.
Функция SetArrayVesCount задает количество нейронов в слоях и возвращает true при правильной работе, она имеет такие параметры: Count содержит количество слоев нейросети; Xcount равняется количеству входных сигналов для нейросети; AVC типа TVesCountNeuro задает количество нейронов в каждом слое. Функция GetArrayVesCount возвращает результат типа TVesCountNeuro, который содержит массив количества нейронов в слоях нейросети, кроме того, в параметре Count возвращается количество слоев, в параметре XCount количество входных сигналов.
Функция SetTrend задает обучающее множество (временной ряд) и возвращает true при правильной работе, параметр Count содержит количество элементов для обучения, параметр ST типа TTrend задает массив элементов обучающего множества. Функция GetTrend возвращает массив элементов обучающего множества, а также в параметре Count возвращается количество этих элементов.
Функция DoOnePrognoz не имеет параметров и выполняет одношаговый прогноз, на основании данных временного ряда (обучающего множества). Функция DoPrognoz также выполняет прогнозирование, но исходные данные необходимо передать параметром X типа TTrend.
Функция Education выполняет обучение нейросети обратного распространения, при этом нейросети будет обучаться с погрешностью указанной в параметре epsilon и со скоростью, равной параметру alpha.
Кроме вышеперечисленных функций, интерфейсная часть класса TBackPropagation содержит конструктор класса, в котором выполняется инициализация необходимых параметров нейросети, и свойство для чтения CountLayer, которое содержит количество слоев нейросети.
Диаграмма классов и шаблон основного класса
Существует несколько графических способов представлять результаты объектно-ориентированного проектирования программы. В нашем случае рассмотрим графическую нотацию предложенную Гради Бучем [26]. На рисунке 2.14 приводится диаграмма классов во Гради Бучу.
Диаграмма не предоставляет всей информации о классе, поэтому для более детального описания класса применяют шаблоны классов. На рисунке 2.15 изображен шаблон основного класса нейросети.
В заключении данного раздела отметим, что нам удалось разработать ПО, полностью соответствующее поставленным задачам. В следующем разделе мы применим это ПО в практических исследованиях.
Рисунок 2.14 - Диаграмма классов
Рисунок 2.15 - Шаблон класса TBackPropagation
3. Технологический раздел
3.1 Информационное обеспечение задачи. Данные о продажах мобильных телефонов
Разработанная программа может найти применение в прогнозировании работы фирм по продаже мобильных телефонов. Поскольку речь идет здесь о не имеющем 'юридической' силы прогнозе, то и выходные данные программы могут иметь лишь описательный и рекомендательный характер. Входным информационным обеспечением может служить исключительно статистика продаж мобильных телефонов за определенное время - месяцы, кварталы, годы. На ее основе и выдается прогноз.
Для практического применения разработанной нами программы необходимо отталкиваться от реальных данных о продаже мобильных телефонов компанией, выносящей подобные данные на суд широкой общественности. Таковой является компания 'Евросеть'.
'Евросеть' - крупнейшая компания [26], работающая на рынке сотового ритейла и ведущий дилер крупнейших операторов связи. Основными направлениями деятельности компании являются осуществление розничной торговли сотовыми телефонами, цифровыми фотоаппаратами, телефонами DECT, персональным аудио, аксессуарами, подключение к операторам связи и оказание информационных услуг клиентам.
В настоящее время компания представлена более 5100 магазинами, расположенными в 1464 городах в России, Украине, Казахстане, Белоруссии, Молдове, Армении и Киргизии.
По результатам 2007 года оборот компании 'Евросеть' составил $5,61 млрд.
В рамках международного проекта Emerging Markets Global Players, В рейтинге Топ-25 по размеру зарубежных активов, составленном Московской школой управления СКОЛКОВО совместно с Колумбийским университетом США, 'Евросеть' заняла 24-е место, став единственной розничной компанией, представленной в данном рейтинге.
В рейтинге Топ-25 по количеству филиалов и дочерних компаний за рубежом, 'Евросеть' оказалась на 14-м месте.
В рейтинге по индексу MINI компания заняла 21-е место. MINI - Multinationality Index - индекс транснациональности, подсчитывается, как доля активов, продаж и численности сотрудников за рубежом от общих активов, продаж и численности сотрудников.
По итогам 2006 года компания 'Евросеть' впервые вошла в список '250 крупнейших розничных компаний мира', заняв 229 место в рейтинге. Данный рейтинг ежегодно составляет одна из ведущих международных аудиторских и консалтинговых компаний - Deloitte.
Для компании 'Евросеть' главным приоритетом остается клиент, главным преимуществом - высокое сервисное обслуживание.
В компании работает более 33 тысяч человек.
Компания была основана в апреле 1997 года, тогда же был открыт первый салон сотовой связи 'Евросеть' в Москве.
С самого начала Компания делала ставку на розничные продажи, с каждым годом расширяя ассортимент товара. В конце 1999 года 'Евросеть' проводит ряд масштабных рекламных кампаний.
Бурный рост сети салонов связи 'Евросеть' начался после смены стратегии развития, основным направлением которой стало резкое снижение цен на мобильные телефоны.
С января по декабрь 2002 года 'Евросеть' открывает более 100 салонов связи, в 2003 году - к этому числу добавилось еще 117 салонов, в 2004-м - более 800 новых салонов связи 'Евросеть', а 2005-м - 1934 новых магазина 'Евросеть', в 2006-м - 1976 новых магазинов, в декабре 2007 общее количество салонов 'Евросеть' составило 5143. Сегодня 'Евросеть' представлена 5185 салоном.
С 2001 по 2004 годы 'Евросеть' заключает договора с вендорами и становится официальным партнером таких компаний, как LG, Motorola, Samsung, Siemens, Sony Ericsson, Sagem, Philips, Pantech. Работая напрямую с основными производителями телефонов и аксессуаров, получая в процессе переговоров самые выгодные условия поставок, 'Евросеть' продолжает вести политику низких цен.
2003 год ознаменовался началом активного регионального развития. Экономические показатели Компании в регионах показали максимальную эффективность этого бизнеса в городах России. Приход национального ритейлера на региональный рынок обеспечивает не только стимулирование интереса к сотовой связи и рост абонентской базы операторов, но и появление на региональном рынке настоящей конкуренции, повышение профессионализма местных торговых сетей, а также, что немаловажно, появление новых рабочих мест. В этом же году наряду с сотовыми телефонами компания стала продавать цифровые фотоаппараты, персональное аудио и DECT-телефоны.
В конце 2003 года состоялся выпуск I транша векселей группой компаний 'Евросеть'.
В апреле 2004 года - выпущен II транш векселей. В октябре этого же года размещен облигационный заем компании общей номинальной стоимостью 1 млрд. рублей.
В мае 2004 года - компания 'Евросеть' переходит на новый виток деятельности, запуская в продажу цифровые фотоаппараты, MP3-плейеры и DECT-телефоны.
29 июня 2004 учреждена Некоммерческая организация Благотворительный фонд 'Евросеть'.
В этом же году открываются филиалы 'Украина' и 'Казахстан'. В конце 2005 года открыт филиал 'Киргизия'. В мае 2006 года сразу 4 первых салона открылись в Ташкенте, Узбекистан. В январе 2007 года 'Евросеть' выходит в Закавказье, открыв первые магазины в Армении и Азербайджане
В марте 2007 года в Поволжье появляется первый виртуальный оператор сотовой связи 'Евросеть' (MVNO)
2 апреля 2007 года компании 'Евросеть' исполнилось 10 лет
В октябре 2007 года 'Евросеть' провозгласила Эру Сервиса российской розницы, организовав для своих сотрудников семинар мирового эксперта в области сервиса и культуры обслуживания Джона Шоула (John Tschohl).
19 ноября 2007 года 'Евросеть' получила премию общероссийского конкурса 'Народная марка / Марка №1 в России 2007' в номинации 'Салон сотовой связи'.
В июне 2008 года 'Евросеть' провела в рамках 12 Петербургского экономического форума пресс-конференцию, посвященную влиянию избыточного регулирования на деятельность розничных компаний.
Таким образом, компания является идеальным потребителем разработанной программы, поскольку ее идеология сочетается с внедрением управленческих новшеств на сто процентов.
3.2 Возможности разработанной программы
Программа позволяет задать следующие параметры нейронной сети обратного распространения:
количество слоев (максимальное количество - 99);
количество нейронов в каждом слое (максимальное количество нейронов на слой - 299);
количество элементов исходного временного ряда (максимальное количество - 300);
значение элементов временного ряда (не ограничивается);
Кроме этого, можно задать параметры алгоритма обучения нейронной сети:
размер входного окна;
количество значений временного ряда (на диаграмме отмечены фиолетовым цветом), на основе которых будет проводиться обучение нейросети (остальные значение при этом не учитываются);
нормализация, необходимая для приведения временного ряда к значениям, на которых нейросеть может обучиться, а затем, при прогнозировании, восстановить значения обратно;
величину интегральной погрешности обучения, влияющей на длительность и точность аппроксимации (обучения);
параметр alpha, значение которого может позволить избежать локального минимума при обучении, но при этом увеличивается длительность обучения.
После обучения можно выполнить прогнозирование, задав следующие параметры:
количество предсказаний (на диаграмме отмечены зеленым цветом), определяет, сколько значений необходимо спрогнозировать, начиная с элемента, следующего за последним элементом, используемым для анализа и обучения;
выбор одношагового или многошагового прогноза.
Что касается технического обеспечения проекта, данная программа может быть установлена на любой достаточно современный ПК класса не хуже PentiumII; параметры компьютера будут определять скорость обучения, в основном. В качестве оптимальной конфигурации можно использовать ПК со следующими параметрами:
Таблица 3.1 - Персональный компьютер
Чипсет |
Intel P45/G45 |
|
Процессор |
Core 2 duo E8500 |
|
Память |
2048Mb DDR2 800 |
|
Жесткий диск |
320Gb SATA |
|
Дисковод |
нет |
|
Видеокарта |
512Mb PCI-E Radeon 3850 |
|
Сетевая карта |
OnBoard 10/100MBit |
|
Оптический привод |
DVD±RW |
3.3 Нейросетевое прогнозирование оптово-розничных продаж мобильных телефонов
Выполним прогнозирование продаж мобильных телефонов. Возьмем данные отчетов по продажам мобильных телефонов в торговой сети 'Евросеть', регулярно публикующей пресс-релизы и финансовую отчетность [27]. Будем использовать данные за 2008 год.
Примеры производимых программой прогнозов представлены в Приложении А. Полученный ряд подаем на вход нейросети и выполняем обучение со следующими параметрами (см. рисунок А.2): количество слоев - 3, количество нейронов на первом слое - 6, на втором - 7, на третьем - 1, размер входного окна - 4, размер временного ряда для анализа - 43, погрешность обучения - 0.6, коэффициент скорости обучения - 0.9. С такой конфигурацией нейросеть обучилась за 4694280 итераций и выдала прогноз, представленный на рис. А.2.
Изменим параметры нейросети следующим образом: количество слоёв в сети - 3, количество нейронов в первом слое - 4, количество нейронов во втором слое - 5, количество нейронов в третьем слое - 1, размер входного окна - 3, размер временного ряда для анализа - 30, погрешность обучения - 0.55, коэффициент скорости обучения - 0.9. Нейросеть выполнила обучение за 233436 итераций, результаты прогнозирования приводятся на рисунках А.3 и А.4, А.5.
Прогнозы, выполненные с помощью искусственных нейронных сетей, являются достаточно достоверными. Многошаговое прогнозирование показывает большую погрешность, так как оно опирается не на реальные данные, а на прогнозные величины. Одношаговое прогнозирование более точно, однако, его нельзя применять для выполнения долгосрочных прогнозов.
3.4 Выводы по проектированию
Искусственные нейронные сети предложены для задач, простирающихся от управления боем до присмотра за ребенком. Потенциальными приложениями являются те, где человеческий интеллект малоэффективен, а обычные вычисления трудоемки или неадекватны.
Имеется много впечатляющих демонстраций возможностей искусственных нейронных сетей: сеть научили превращать текст в фонетическое представление, которое затем с помощью уже иных методов превращалось в речь [22]; другая сеть может распознавать рукописные буквы [23]; сконструирована система сжатия изображений, основанная на нейронной сети [24]. Все они используют сеть обратного распространения - наиболее успешный, по-видимому, из современных алгоритмов.
Мы продемонстрировали, что искусственные нейронные сети способны решать также задачу прогнозирования путем сведение ее к распознаванию образов. Выполнили прогнозирование продаж мобильных телефонов в компании 'Евросеть' на основе данных о продажах за 2008 год.
Однако, обратное распространение не свободно от проблем. Прежде всего, нет гарантии, что сеть может быть обучена за конечное время. Много усилий, израсходованных на обучение, пропадает напрасно после затрат большого количества машинного времени. Когда это происходит, попытка обучения повторяется - без всякой уверенности, что результат окажется лучше. Нет также уверенности, что сеть обучится наилучшим возможным образом. Алгоритм обучения может попасть в 'ловушку' так называемого локального минимума и будет получено худшее решение.
Разработано много других сетевых алгоритмов обучения, имеющих свои специфические преимущества. Некоторые из них обсуждаются в [10]. Следует подчеркнуть, что никакая из сегодняшних сетей не является панацеей, все они страдают от ограничений в своих возможностях обучаться и вспоминать.
Мы имеем дело с областью, продемонстрировавшей свою работоспособность, имеющей уникальные потенциальные возможности, много ограничений и множество открытых вопросов. Для улучшения существующих сетей требуется много основательной работы. Должны быть развиты новые технологии, улучшены существующие методы и расширены теоретические основы, прежде чем данная область сможет полностью реализовать свои потенциальные возможности.
4. Безопасность жизнедеятельности
4.1 Анализ условий труда и возможных чрезвычайных ситуаций, возникающих при эксплуатации вычислительной техники
Разработанная система является стационарным устройством, в аппаратном отношении имеющим в основе ПЭВМ, и предназначена для работы в лабораторных условиях. Основной анализ по рассматриваемому предмету будем вести, исходя из данного факта. Рассмотрим воздействующие на человека опасные и вредные производственные факторы в соответствии с классификацией, приведенной в ГОСТ 12.0.003-74.
1) Физические опасные и вредные производственные факторы.
1.1) Движущееся оборудование, подвижные части.
Опасность травмирования полностью исключается. На рабочей поверхности аппаратуры в местах вентиляционных отверстий запрещено располагать какие-либо вещи, для рабочего инструмента имеется специально отведенный шкаф.
1.2) Повышенная запыленность и загазованность воздуха рабочей зоны.
ПК с системой прогнозирования не включает в себя источников образования пыли и газа. Нормами обслуживания офисных помещений установлена ежедневная влажная уборка помещения. Вытяжная вентиляция помещения не допускает превышения предельно допустимой концентрации вредных веществ в соответствии с ГОСТ 12.1.005-88.
1.3) Повышенная или пониженная температура поверхностей оборудования, материалов.
ПК с системой прогнозирования - стационарная лабораторная установка, состоящая из компьютерного стола, персонального компьютера (системного блока, монитора, клавиатуры) и кабелей соединения. Устройств, генерирующих холод, в описываемой системе нет. Устройства, вырабатывающие тепло, скрыты защитной оболочкой и имеют радиаторы (процессор в системном блоке, радиаторы блоков питания, лампа освещения над столом закрыта плафоном и т.д.). Оператор (обслуживающий персонал) не имеет права снимать кожух с системного блока и проводить работы, он должен вызвать соответствующий персонал. Все необходимое для работы выведено на лицевую панель (дверь) монтажного шкафа.
1.4) Повышенная или пониженная температура воздуха рабочей зоны.
Лаборатория имеет автоматическую систему поддержания температуры воздуха в пределах, соответствующих группе 2 по ГОСТ 22261-76, с помощью кондиционеров и обогревателей.
1.5) Повышенный уровень шума на рабочем месте.
Основным источником шума является компьютерное оборудование.
Воздействие шума отражается как на органах слуха, так и на общем психологическом состоянии человека. Возможны глухота, нервные расстройства.
1.6) Повышенный уровень вибрации.
Источников вибрации нет.
1.7) Повышенный уровень инфра-, ультразвуковых колебаний
Источников колебаний нет.
1.8) Повышенное или пониженное барометрическое давление в рабочей зоне и его резкое изменение.
ПК не оказывает влияния на барометрическое давление.
1.9) Повышенная или пониженная влажность воздуха.
ПК управления не оказывает влияния на влажность воздуха.
1.10) Повышенная или пониженная подвижность воздуха.
ПК располагается в лаборатории. Под него специально отведено место. Высота лаборатории четыре метра. Поэтому нет преграды для нормальной циркуляции воздуха. Повышенная циркуляция воздуха возможна при неправильной настройке вытяжной вентиляции в лаборатории.
1.11) Повышенная или пониженная ионизация воздуха.
Воздух в помещениях, где много людей и вычислительной техники, насыщен положительно заряженными ионами кислорода. В то время как А.Л. Чижевский доказал необходимость для жизнедеятельности организма отрицательно заряженного кислорода воздуха. Повышенное содержание положительно заряженных ионов приводит к ухудшению здоровья, угнетению нервной системы, наступает недостаток кислорода, который необходим глазам, мышцам /4 БЖД/.
1.12) Повышенное значение напряжения в электрической цепи, замыкание которой может произойти через тело человека.
Питание системы осуществляется от напряжения 220 В частотой 50 Гц. Монтаж исключает соприкосновение оператора с токоведущими частями. Режим сети - с заземленной нейтралью. Для обеспечения электробезопасности применяется защитное зануление.
1.13) Повышенный уровень статического электричества.
Эксперты полагают, что низковольтный разряд способен изменить/прервать клеточное развитие. Также происходит положительный заряд частиц пыли, что повышает вероятность возникновения дерматитов лица и открытых частей кожи (прыщи, зуд, экземы) /4 БЖД/.
1.14) Повышенный уровень электромагнитных излучений.
В системе основным источником электромагнитного излучения является монитор компьютера. В случае нахождения источника излучения в непосредственной близости от человека, возможны патологические изменения в органах зрения, нарушение обмена веществ.
1.15) Отсутствие или недостаток естественного света, недостаточное освещение рабочего места.
Причина возникновения заключается в несоответствии естественного и искусственного освещения установленным нормам. Слабое освещение приводит к напряжению глаз, что при длительном воздействии ведет к ухудшению зрения. Также возникает головная боль, нервное напряжение.
2) Биологические опасные и вредные производственные факторы.
2.1) Бактерии, вирусы, грибы, простейшие и т.п.
Скапливаются в местах, труднодоступных для проведения уборки: например, клавиатура. Могут повлечь различные по тяжести заболевания.
3) Психофизиологические опасные и вредные производственные факторы.
3.1) Физические перегрузки.
3.1.1) Статические.
3.1.2) Динамические.
ПК в рабочем состоянии при нормальных условиях труда не является источником статических и динамических физических перегрузок.
3.2) Нервно-психические перегрузки.
3.2.1) Умственное перенапряжение.
3.2.2) Перенапряжение анализаторов.
3.2.3) Монотонность труда.
3.2.4) Эмоциональные перегрузки.
Влияние данных факторов можно ослабить правильным режимом труда и отдыха, также стоит уделить внимание физкультминуткам.
4.2 Разработка безопасных и безвредных условий труда. Организация рабочего места
4.2.1 Расчёт естественного и искусственного освещения. Их характеристика
Основными понятиями, характеризующими свет, являются световой поток, сила света, освещённость и яркость.
Световой поток - Ф, лн (люмены). Поток лучистой энергии, оцениваемый по зрительному ощущению, характеризует мощность светового излучения, основан на зрительном восприятии.
Сила света - J, кд (кандела). Так как световой поток распространяется в пространстве неравномерно, вводится понятие силы света. J - пространственная плотность светового потока; - телесный угол.
Освещённость - Е, лк (люкс). Поверхностная плотность светового потока. S - освещаемая площадь. Е = Ф / S
L, кд/м2. Поверхностная плотность силы света. Коэффициент отражения - . Блескость - повышенная яркость.
Качественные характеристики.
Фон - поверхность, прилегающая к объекту различения. Объект различения - деталь минимальных размеров, знак, символ, буква, которые человек различает в результате деятельности.
Фон характеризуется коэффициентом отражения: > 0.4 - светлый фон; 0.2 - средний; < 0.2 - тёмный; контраст объекта с фоном: > 0.5 - большой; < 0.2 - малый. Контраст объекта с фоном определяется отношением разности яркости объекта (L) и фона (L) к яркости фона, т.е. .
Коэффициент пульсации освещенности (Кп) - это характеристика относительной глубины колебаний освещенности (при использовании газоразрядной лампы).
.
Наиболее важную роль в трудовом процессе имеют такие функции зрения, как контрастная чувствительность, острота зрения, быстрота различения деталей, устойчивость видения и цветовая чувствительность.
Контрастную чувствительность характеризует видимость (V) - это способность глаза воспринимать объект наблюдения:
где: К - контраст объекта и фона, Кп - пороговый контраст, т.е. наименьший контраст, различимый глазом.
Наличие в поле зрения больших яркостей вызывает ослепленность и может привести к повреждению сетчатой оболочки.
Под остротой зрения понимается максимальная способность различать отдельные объекты.
Расчёт естественного освещения
Естественное освещение создается солнечным светом через световые проемы. Оно зависит от многих объективных факторов, как-то: времени года и дня, погоды, географического положения и т.п. Основной характеристикой естественного освещения служит коэффициент естественного освещения (КЕО), то есть отношение естественной освещенности внутри здания Ев к одновременно измеренной наружной освещенности горизонтальной поверхности (Ен). КЕО обозначается через 'е': .
Естественная освещенность нормируется согласно СНиП 23-05-95. Для установления необходимого нормативного значения КЕО, т.е. ен необходимо учесть размер объекта различения, т.е. разряд зрительной работы, контраст объекта различения и фона, а также характеристику фона. Помимо этого, учитывается географическая широта местоположения здания (коэффициентом светового климата m) и ориентировка помещения по сторонам горизонта (с).
Тогда е = енсm, где ен - табличное значение КЕО, определяемое на основании разряда зрительной работы и вида естественного освещения. При естественном освещении нормируется его неравномерность, т.е. отношение максимальной к минимальной освещенности .
Чем выше разряд зрительной работы, тем меньше допускается неравномерность освещенности.
Для определения потребных площадей световых проемов используются зависимости:
для бокового освещения (площадь окон): ;
для верхнего освещения (площадь световых фонарей):
где Sп - площадь пола, м2;
ен - нормированное значение КЕО;
ho, hф - световая характеристика соответственно окон и фонарей;
К - коэффициент учета затенения окон противоположными зданиями;
r1, r2 - коэффициенты, учитывающие повышение КЕО при боковом и верхнем освещении благодаря свету, отраженному от поверхностей помещения;
фо - общий коэффициент светопропускания светопроемов.
В основе расчета КЕО лежит зависимость его от прямого света небосвода и света, отраженного от поверхностей зданий и помещений. Так, при боковом освещении eд = (Eдq + E3qK) фоr, где: Eд, E3q - геометрические коэффициенты освещенности от небосвода и противоположного здания; q - коэффициент учета неравномерной яркости небосвода; К - коэффициент учета относительной яркости противостоящего здания; фо - коэффициент светопропускания световых проемов; коэффициент учета роста КЕО за счет отражения света от поверхностей помещения.
Геометрические коэффициенты освещенности определяются графически по методу Данилюка путем подсчета числа участников (секторов) небосвода, видимых в светопроеме в вертикальной и горизонтальной плоскости.
КЕО определяется для характерных точек помещения. При одностороннем боковом освещении принимается точка, расположенная на расстоянии 1 м от стены, наиболее удаленной от световых проемов. При двустороннем боковом освещении определяется КЕО в точке посредине помещения.
Расчёт искусственного освещения
Нормы освещенности рабочих мест регламентируются СНиП 23-05-95.
При установлении нормы освещенности необходимо учитывать: размер объекта различения (установлено восемь разрядов от 1 до УП), контраст объекта с фоном и характер фона. На основании этих данных по таблицам НиП 23-05-95 определяется норма освещенности.
При выборе источников искусственного освещения должны учитываться их электрические, светотехнические, конструктивные, эксплуатационные и экономические показатели. На практике используются два вида источников освещения: лампы накаливания и газоразрядные. Лампы накаливания просты по конструкции, обладают быстротой разгорания. Но световая отдача их (количество излучаемого света на единицу потребляемой мощности) низкая - 13-15 лм/вт; у галогенных - 20-30 лм/вт, но срок службы небольшой. Газоразрядные лампы имеют световую отдачу 80-85 лм/вт, а натриевые лампы 115-125 лм/вт и срок службы 15-20 тыс. часов, они могут обеспечить любой спектр. Недостатками газоразрядных ламп является необходимость специального пускорегулирующего аппарата, длительное время разгорания, пульсация светового потока, неустойчивая работа при температуре ниже 0°С.
Для освещения производственных помещений используются светильники, представляющие собой совокупность источника и арматуры.
Назначением арматуры является перераспределение светового потока, защита работающих от ослепленности, а источника от загрязнения. Основными характеристиками арматуры являются: кривая распределения силы света, защитный угол и коэффициент полезного действия. В зависимости от светового потока, излучаемого светильником в нижнюю полусферу, различают светильники: прямого света (п), у которых световой поток, направленный в нижнюю сферу, составляет более 80 %; преимущественно прямого света (Н) 60-80%; рассеянного света (Р) 40-60%; преимущественно отраженного света (В) 20-40%; отраженного света (О) менее 20 %.
По форме кривой распределения силы света в вертикальной плоскости светильники разделяют на семь классов Д Л, Ш, М, С, Г, К.
Защитный угол светильника характеризует угол, который обеспечивает светильник для защиты работающих от ослепленности источником.
Расчет искусственного освещения производственного помещения ведется в следующей последовательности.
Выбор типа источников света.
Выбор системы освещения. При однородных рабочих местах, равномерном размещении оборудования в помещении принимается общее освещение. Если оборудование громоздкое, рабочие места с разными требованиями к освещению расположены неравномерно, то используется локализованная система освещения. При высокой точности выполняемых работ, наличии требования к направленности освещения применяется комбинированная система (сочетание общего и местного освещения).
Выбор типа светильника. С учетом потребного распределения силы света, загрязненности воздуха, пожаровзрывоопасности воздуха в помещении подбирается арматура.
Размещение светильников в помещении. Светильники с лампами накаливания можно располагать на потолочном перекрытии в шахматном порядке, по вершинам квадратных полей, рядами. Светильники с люминисцентными лампами располагают рядами.
Определение потребной освещенности рабочих мест. Нормирование освещенности производится в соответствии со СНиП 23-05-95, как это было изложено выше.
Расчет характеристик источника света. Для расчета общего равномерного освещения применяется метод коэффициента использования светового потока, а расчет освещенности общего локализованного и местного освещения производится с помощью точечного метода.
В методе коэффициента использования расчет светового потока источника производится по формуле: , где Ен - нормативная освещенность, лк; S - освещаемая площадь, м2;
Z - коэффициент минимальной освещенности;
К - коэффициент запаса, учитывающий ухудшение характеристик источников при эксплуатации;
N - число светильников;
з - коэффициент использования светового потока.
Коэффициент использования определяется по индексу помещения In и коэффициентам отражения потока, стен и пола по специальной таблице.
Индекс помещения расчитывается по формуле:
где а и b длина и ширина помещения; h - высота подвеса светильников.
В расчете освещенности точечным методом используется формула:
(лк),
где Jб - нормативная сила света на данную точку поверхности, кд;
г - расстояние от источника до точки поверхности, м;
б - угол, образованный нормалью к освещаемой поверхности и падающим на поверхности лучом.
Для ориентировочного расчета мощности потребного источника используется метод удельных мощностей. Мощность источника определяется по формуле: Pл = PS/N,
где Р - потребная удельная мощность осветительных приборов на единицу освещаемой поверхности, вт/м2;
S - площадь освещаемой поверхности, м2;
N - принятое число светильников.
4.2.2 Расчёт вентиляции
Нормы производственного микроклимата установлены ГОСТ 12.1.005-88 ССПТ. Общие санитарно-гигиенические требования к воздуху рабочей зоны'. Они едины для всех производств и всех климатических зон.
Вентиляция - это комплекс устройств для обеспечения нормальных метеорологических условий и удаления вредных веществ из производственных помещений. Вентиляция может быть естественной (аэрация) и механической в зависимости от способа перемещения воздуха. В зависимости от объема вентилируемого помещения различают обще обменную и местную вентиляцию. Обще обменная вентиляция обеспечивает удаление воздуха из всего объема помещения. Местная вентиляция обеспечивает замену воздуха в месте его загрязнения. По способу действия различают вентиляцию приточную, вытяжную и приточно-вытяжную, а также аварийную. Аварийная предназначена для устранения загазованности помещения в аварийных ситуациях.
Независимо от типа вентиляции к ней предъявляются следующие общие требования: объем приточного воздуха должен быть равен объему вытяжного воздуха; элементы системы вентиляции должны быть правильно размещены в помещении; потоки воздуха не должны поднимать пыль и не должны вызывать переохлаждения работающих; шум от системы вентиляции не должен превышать допустимого уровня.
В основе устройства вентиляции лежит воздухообмен, то есть объем воздуха помещения, заменяемый в единицу времени L (м/ч). Потребный воздухообмен определяется в соответствии со СНиП 2.04.05-86 расчетным путем из условий удаления из воздуха помещения избыточных вредных веществ, теплоты и влаги:
а) При выделении в воздух помещения вредных веществ:
,
где Lрз - количество воздуха, удаляемого местной вентиляцией;
М - количество вредных веществ, поступающих в помещение, мг/ч;
Срз - концентрация вредных веществ в воздухе, удаляемом местной вентиляцией, мг/м;
Сп, Сух - концентрация вредных веществ в воздухе, подаваемом в помещение и уходящем из него, мг/м.
б) При удалении избыточной явной теплоты, повышающей температуру воздуха:
где Он - избыточная явная теплота в помещении, Дж/с;
Трз - температура воздуха, удаляемого местной вентиляцией, С;
Тп, Тух - температура воздуха, подаваемого в помещение и уходящего из него, С.
в) При удалении избытка влаги:
где W - избыток влаги в помещении, г/ч;
dрз - влагосодержание воздуха, удаляемого местной вентиляцией, г/кг;
dп, dyx - влагосодержание воздуха, подаваемого в помещение и уходящего из него, г/кг.
Механическая вентиляция распределяет воздух по всему производственному помещению. В общем случае в ее состав входят: воздухоприемное устройство, фильтр, калорифер, вентилятор и сеть воздуховодов. Расчет механической вентиляции включает:
Определение на плане производственного помещения конфигурации вентиляционной системы, расположение ее элементов.
Определение проходного сечения воздуховодов (скорость движения воздуха в воздуховодах принимается V = 6-10 м/с) FV=L/ (3600V), где V - потребный воздухообмен, м /ч.
Определение потери давления в воздуховодах на участке воздуховода: Робщj = Ртрj + Рмj,
где Ртрj - сопротивление на преодоление сил трения воздуха при перемещении по воздуховодам; Рм - местное сопротивление воздуховодов.
Общие потери в сети воздуховодов: , где з - число участков, на которые разбита система воздуховодов вентиляции.
Подбор вентилятора для системы вентиляции по величине потребного воздухообмена и потерям давления в сети воздуховодов. Полное давление Р, которое должно создаваться вентилятором, принимается Р = Робщ, а производительность вентилятора G (м /ч) принимается G = L.
Определение потребной мощности электродвигателя вентилятора N: N = G Pk (3,6 106 зб зп).
где К - коэффициент запаса мощности электродвигателя (1,05-1,5);
Р - потери полного давления в сети. Па;
зб зп - КПД вентилятора и передачи от электродвигателя к вентилятору.
Естественная вентиляция производственных помещений осуществляется под воздействием разности температур наружного и внутреннего воздуха (тепловое давление) и ветра (ветровое давление).
Расчет естественной вентиляции в соответствии со СНиП 2.04.05-86 заключается в определении площадей вентиляционных проемов здания и включает следующие этапы.
Определение скорости движения воздуха (м/с) в нижнем проеме
V: ,
где h - расстояние между центрами нижнего и верхнего проемов, м;
сн, св - плотность наружного и внутреннего воздуха, кг/м.
Определение площади (м2) нижних вентиляционных проемов: F = L / (м1 V1), где м1 - коэффициент расхода воздуха через нижние проемы (м1 = 0,15-0,65).
Определение потери давления (Па) в нижних проемах H1 = V12 сн/2. Определение избыточного давления (Па) в верхних проемах: Н2 =Hr-Hi, где Hr - гравитационное давление воздуха. Па, Нr = h (сн - св) g.
Определение площади (м2) верхних вентиляционных проемов:
где м2 - коэффициент расхода воздуха через верхние проемы.
4.2.3 Нормы шума и вибрации
Шум, вибрация и ультразвук являются результатом колебания тел, передаваемого непосредственно или через газообразные, жидкие и твердые среды. Шум представляет собой беспорядочное сочетание разнообразных звуков. Производственный шум различной интенсивности, длительно воздействуя на рабочих, может привести к понижению слуха, а иногда к развитию профессиональной глухоты. Помимо действия на орган слуха, шум оказывает влияние и на весь организм, в результате чего наступает перенапряжение центральной нервной системы. Вследствие этого нарушается координирующая деятельность нервной системы, что ведет к расстройству функций внутренних органов и систем.
Не маловажную роль в борьбе с шумом и вибрацией играют архитектурно-строительные и планировочные решения. Необходимо наиболее шумящее и вибрирующее оборудование вынести за пределы производственных помещений, где находятся рабочие; если это оборудование требует частого наблюдения, на участке его размещения оборудуются звукоизолированные будки или комнаты. Стены и потолки в шумных помещениях покрываются звукопоглощающими материалами, акустической штукатуркой, мягкими драпировками и др.
Снижение шума, создаваемого на рабочих местах, оборудованных ПЭВМ, можно обеспечить применением упругих прокладок между основанием машины, прибора и опорной поверхностью. В качестве прокладок используются резина, войлок, пробка, различной конструкции амортизаторы. Под настольные шумящие аппараты можно подкладывать мягкие коврики из синтетических материалов, а под ножки столов, на которых они установлены, - прокладки из мягкой резины, войлока, толщиной 6_8 мм.
4.3 Анализ методов сбора, переработки и утилизации отходов вычислительной техники
Отходы вычислительной техники в основной своей массе относятся к категории твердых отходов.
Отходы образуются как при выполнении технологического процесса, так и после окончания срока эксплуатации техники, приборов, ВТ, оборудования и т.д. Все виды отходов, которые образуются в этом случае, подразделяются на группы: твердые, жидкие.
Твердые отходы - Металлы: черные; цветные; драгоценные; редкие. Неметаллы: шлаг; бумага; резина; древесина; пластмассы; керамика; шлам; стекло; ткань.
Жидкие отходы - Осадки сточных вод; Отработанные смазочно-охладительные жидкости; Химические осадки.
Отрицательное воздействие на природу
1. Прямое - засорение территории (изменение физико-химического состава почв, образование химических и биологических очагов опасности в связи с тем, что не все отходы захороняются в надлежащем месте, особенно радиоактивные отходы);
2. Косвенное - разрушение зеленого покрова, разрушение ландшафта; невосполнимые дополнительные разработки полезных ископаемых, которые идут на нужды обществу.
Переработка твердых отходов осуществляется по двум направлениям: переработка несгораемых материалов (предусматривает предварительный этап сортировки); переработка сгораемых материалов.
Переработка сгораемых материалов строится по технологии сжигания и извлечения материалов для последующего использования. Для этого используется метод пиролиза и реализуется в пиролизном реакторе.
Загрязнение литосферы компьютерным ломом связано с тем, что техника быстро устаревает. Производство ПК обновляется 1 раз в 7 лет. По международным меркам ПК необходимо заменять 1 раз в 3 года. Из 1 т компьютерного лома извлекается: черных металлов - 480 кг, меди - 200 кг, алюминия - 32 кг, серебра - 3 кг, золота - 1 кг, палладия - 0,3 кг, галлий, олово.
Технологическая схема переработки печатных плат: сортировка печатных плат по доминирующим металлам; дробление и измельчение; обжиг полученной массы в печи для удаления сгораемых составляющих; измельчение, гранулирование, сепарация; расплавление массы; рафинирование (очистка); прецизионное измельчение отдельных металлов.
5. Организационно-экономический отдел
5.1 Оценка конкурентоспособности в сравнении с аналогом
В качестве программы для сравнения при разработке АРМ принята описанная выше программа STATISTICA.
Эта разработка принята в качестве примера для сравнения исходя из трех факторов:
1) смежный профиль;
2) соответствие требованиям технического задания проекта;
3) доступность для исследования и сравнения с разрабатываемым проектом реальной версии программы.
Для оценки конкурентоспособности разрабатываемого продукта для АРМ необходимо провести анализ и сравнение с выбранным аналогом по функциональному назначению, основным техническим и эксплуатационным параметрам, областям применения. Подобный анализ осуществляется с помощью оценки эксплуатационно-технического уровня разрабатываемого продукта.
Эксплуатационно-технический уровень (ЭТУ) разрабатываемого продукта - это обобщенная характеристика его эксплуатационных свойств, возможностей, степени новизны, являющихся основой качества продукта. Для определения ЭТУ продукта можно использовать индекс эксплуатационно-технического уровня , который рассчитывается как сумма частных индексов, куда входят показатели качества программного продукта.
Для учета значимости отдельных параметров применяется балльно-индексный метод.
Тогда
, (5.1)
где - комплексный показатель качества продукта по группе показателей;
n - число рассматриваемых показателей;
Вj - коэффициент весомости j-го показателя в долях единицы, назначаемый в соответствии с потребностями организации - заказчика программного продукта;
Xj - относительный показатель качества, устанавливаемый экспертным путем по выбранной шкале оценивания
В таблице 5.1 представлены результаты расчета балльно-индексным методом при 5-ти балльной шкале оценивания.
Таблица 5.1 - Расчет показателя качества балльно-индексным методом
Показатель качества |
Коэффициент значимости, Вj |
Базовый вариант |
Аналог |
|||
1. Удобство работы (пользовательский интерфейс) |
0,1 |
4 |
0,45 |
2 |
0,35 |
|
2. Новизна (соответствие современным требованиям) |
0,06 |
4 |
0,3 |
3 |
0,15 |
|
3. Соответствие профилю деятельности заказчика |
0,15 |
4 |
0,6 |
2 |
0,3 |
|
4. Операционная система (многозадачность, графика) |
0,05 |
4 |
0,2 |
4 |
0,2 |
|
5. Надежность (защита данных) |
0,13 |
3 |
0,4 |
3 |
0,4 |
|
6. Скорость доступа к данным |
0,09 |
4 |
0,3 |
4 |
0,2 |
|
7. Гибкость |
0,05 |
3 |
0,15 |
3 |
0,15 |
|
8. Функции обработки информации |
0,13 |
5 |
0,6 |
1 |
0,3 |
|
9. Соотношение стоимость/возможности |
0,09 |
4 |
0,4 |
2 |
0,2 |
|
10. Время обучения персонала |
0,15 |
4 |
0,6 |
2 |
0,3 |
|
Обобщенный показатель качества |
=4,00 |
=2,55 |
Отношение двух найденных индексов называют коэффициентом технического уровня первого программного продукта по отношению ко второму:
, (5.2)
Так как коэффициент больше 1, то разработка проекта с технической точки зрения оправдана.
5.2 Планирование комплекса работ по разработке темы и оценка трудоемкости
Трудоемкость работ определяется с учетом срока окончания работ, объема выполняемых функций, выбранной среды программирования.
Для определения ожидаемой продолжительности работы применяется формула:
, (5.3)
где - кратчайшая продолжительность заданной работы (оптимистическая оценка);
- самая большая продолжительность работы (пессимистическая оценка);
- наиболее вероятная продолжительность работы (реалистическая оценка).
Оценка трудоемкости отдельных видов работ приведена в таблице 5.2
Таблица 5.2 - Оценка трудоемкости отдельных видов работ
Вид работ |
tmin, дни |
tнв, дни |
tмакс, дни |
Тож, дни |
|
1 |
2 |
3 |
4 |
5 |
|
Исследование и обоснование разработки |
3 |
4 |
5 |
4 |
|
Поиск аналогов и прототипов |
1 |
2 |
3 |
2 |
|
Анализ требований |
5 |
6 |
7 |
6 |
|
Проектирование программной архитектуры |
1 |
2 |
3 |
2 |
|
Техническое проектирование компонентов программы |
3 |
4 |
5 |
4 |
|
Программирование модулей в выбранной среде программирования |
5 |
6 |
7 |
6 |
|
Тестирование программных модулей |
7 |
9 |
10 |
9 |
|
Сборка и испытание программы |
3 |
4 |
6 |
4 |
|
Проведение расчетов показателей БЖД |
1 |
1 |
2 |
1 |
|
Проведение экономических расчетов |
1 |
2 |
3 |
2 |
|
Оформление пояснительной записки |
2 |
3 |
4 |
3 |
Для разработки проекта АРМ было задействовано два человека: руководитель проекта и исполнитель (инженер-программист).
Руководитель выполняет постановку задачи, курирует ход работ и дает необходимые консультации при разработке системы. Исполнитель отвечает за проектирование информационного обеспечения, разработку структур баз данных, реализацию вычислительных алгоритмов в виде завершенного продукта, разработку интерфейсных блоков и отладку программы.
Выбор комплекса работ по разработке проекта производится в соответствии со стандартом ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств, устанавливающие стадии разработки программных продуктов, приведены в таблице 5.3.
Таблица 5.3 - Комплекс работ по разработке проекта
Содержание работы |
Должность исполнителя |
Продолжительность, дни |
Загрузка исполнителя, дни |
|
1 |
2 |
3 |
4 |
|
Подготовка процесса разработки и анализ требований |
||||
Исследование и обоснование разработки |
||||
1.1.1 Постановка задачи |
Руководитель Программист |
1 |
1 1 |
|
1.1.2 Сбор исходных данных |
Руководитель Программист |
3 |
3 |
|
1.2 Поиск аналогов и прототипов |
||||
1.2.1 Анализ существующих методов решения задачи и программных средств |
Руководитель Программист |
1 |
1 |
|
1.2.2 Обоснование принципиальной необходимости разработки |
Руководитель Программист |
1 |
1 |
|
1.3 Анализ требований |
||||
1.3.1 Определение и анализ требований к проектируемой программе |
Руководитель Программист |
1 |
1 1 |
|
1.3.2 Определение структуры входных и выходных данных |
Руководитель Программист |
2 |
2 |
|
1.3.3 Выбор технических и программных средств реализации |
Руководитель Программист |
1 |
1 |
|
1.3.4 Согласование и утверждение технического задания |
Руководитель Программист |
2 |
1 2 |
|
Итого по этапу 1 |
Руководитель Программист |
12 |
3 12 |
|
Программирование |
||||
2.1 Проектирование программной архитектуры |
Руководитель Программист |
2 |
2 |
|
2.2 Техническое проектирование компонентов программы |
Руководитель Программист |
4 |
4 |
|
Итого по этапу 2 |
Руководитель Программист |
6 |
6 |
|
Программирование и тестирование программных модулей |
||||
3.1 Программирование модулей в выбранной среде программирования |
Руководитель Программист |
6 |
6 |
|
3.2 Тестирование программных модулей |
Руководитель Программист |
9 |
9 |
|
3.3 Сборка и испытание программы |
Руководитель Программист |
4 |
1 4 |
|
3.4 Анализ результатов испытаний |
Руководитель Программист |
2 |
1 2 |
|
Итого по этапу 3 |
Руководитель Программист |
21 |
2 21 |
|
Оформление рабочей документации |
||||
4.1 Проведение расчетов показателей безопасности жизнедеятельности |
Руководитель Программист |
1 |
1 |
|
4.2 Проведение экономических расчетов |
Руководитель Программист |
2 |
2 |
|
4.3 Оформление пояснительной записки |
Руководитель Программист |
3 |
1 3 |
|
Итого по этапу 4 |
Руководитель Программист |
6 |
2 6 |
|
Итого по проекту |
Руководитель Программист |
45 |
7 45 |
На основе данных таблицы 5.3 разработан календарный график выполнения работ (таблица 5.4), показывающий последовательность и взаимосвязь выполнения комплекса работ.
Таблица 5.4 - Календарный график выполнения работ
Содержание работы |
Должность исполнителя |
Длительность, дни |
График работ |
|
1. Постановка задачи |
Руководитель Программист |
1 1 |
20.01.09-20.01.09 20.01.09-20.01.09 |
|
2. Сбор исходных данных |
Программист |
3 |
21.01.09-23.01.09 |
|
3. Анализ существующих методов решения задачи и программных средств |
Программист |
1 |
23.01.09-23.01.09 |
|
4. Обоснование принципиальной необходимости разработки |
Программист |
1 |
24.01.09-24.01.09 |
|
5. Определение и анализ требований к программе |
Руководитель Программист |
1 1 |
25.01.09-25.01.09 25.01.09-25.01.09 |
|
6. Определение структуры входных и выходных данных |
Программист |
2 |
26.01.09-27.01.09 |
|
7. Выбор технических средств и программных средств реализации |
Программист |
1 |
28.01.09-28.01.09 |
|
8. Согласование и утверждение технического задания |
Руководитель Программист |
1 2 |
29.01.09-29.01.09 29.01.09-30.01.09 |
|
9. Проектирование программной архитектуры |
Программист |
2 |
31.01.09-01.02.09 |
|
10. Техническое проектирование компонентов программы |
Программист |
4 |
02.02.09-05.02.09 |
|
11. Программирование модулей в выбранной среде программирования |
Программист |
6 |
06.02.09-11.02.09 |
|
12. Тестирование программных модулей |
Программист |
9 |
12.02.09-20.02.09 |
|
13. Сборка и испытание программы |
Руководитель Программист |
1 4 |
21.02.09-21.02.09 21.02.09-24.02.09 |
|
14. Анализ результатов испытаний |
Руководитель Программист |
1 2 |
22.02.09-22.02.09 22.02.09-23.02.09 |
|
15. Проведение расчетов показателей безопасности жизнедеятельности |
Программист |
1 |
24.02.09-24.02.09 |
|
16. Проведение экономических расчетов |
Программист |
2 |
25.02.09-26.02.09 |
|
17. Оформление пояснительной записки |
Руководитель Программист |
1 3 |
27.02.09-27.02.09 27.02.09-01.03.09 |
На основе этих данных мы можем определить сроки окончания работ по разработке программы для АРМ.
5.3 Расчет затрат на разработку проекта
Капитальные вложения, связанные с автоматизацией обработки информации рассчитываются по формуле:
, (5.4)
где - капитальные вложения на проектирование, руб.;
- капитальные вложения на реализацию проекта, руб.
Предпроизводственные затраты представляют собой единовременные расходы на разработку обеспечивающих или функциональных систем или элементов на всех этапах проектирования, а также затраты на их усовершенствование, т.е. на проведение обследования и обработку материалов исследования, разработку технического задания, разработку технического и рабочего проекта системы и ее опытного внедрения. Сюда включаются затраты на разработку алгоритмов и программ, стоимость разработок по привязке типовых проектных решений (ТПР) и пакетов прикладных программ (ППП) к конкретному объекту автоматизации.
Суммарные затраты на проектирование системы и ее разработку и отладку на компьютере определяются по формуле:
, (5.5)
где m - количество работников, участвующих в разработке проекта;
- затраты на основную заработную плату работника i-й категории, руб.;
- коэффициент, учитывающий дополнительную заработную плату, затраченную на разработку, в долях к основной заработной плате;
- коэффициент, учитывающий отчисления на социальные нужды, в долях к сумме основной и дополнительной заработной платы разработчиков (=0,26: страховые взносы в Пенсионный фонд в долях единицы - 0,14, взносы в федеральный бюджет - 0,06, страховые взносы в ФСС - 0,029, страховые взносы в ФОМС - 0,031);
- коэффициент, учитывающий накладные расходы организации, в долях к основной заработной плате разработчиков (принимается по фактическим данным предприятия, = 0,6);
- затраты на материалы;
- затраты на использование машинного времени.
Затраты на основную заработную плату:
, (5.6)
где - среднедневная заработная плата работника i-й категории, руб. /дн.;
- количество дней, отработанных работником i-й категории.
Затраты времени на разработку системы по каждому исполнителю принимаются, исходя из его загрузки по календарному графику выполнения работ (см. таблицу 5.4).
Расчет основной заработной платы разработчиков проекта приведен в таблице 5.5 из расчета, что в месяце в среднем 21 рабочий день.
Таблица 5.5 - Данные по расчету основной заработной платы исполнителей
Должность |
Должностной оклад, руб. |
Средняя дневная ставка, руб. |
Затраты времени на разработку, человеко - дней |
ФОТ, руб. |
|
Руководитель Программист |
25000,00 18000,00 |
1190,48 857,14 |
7 45 |
8333,36 38571,30 |
|
Итого |
46904,66 |
Ввиду того, что проектируемая информационная система должна быть запрограммирована и отлажена с помощью компьютеров, к суммарным затратам на разработку добавляются затраты на использование машинного времени, исчисляемые как:
, (5.7)
где - машинное время компьютера, необходимое для разработки программного продукта;
= 112 час.;
- стоимость 1 часа машинного времени (устанавливается по данным отчетности предприятия);
=25 руб. /час.;
- коэффициент мультипрограммности;
=1.
Материалы, приобретенные в процессе выполнения работы, и их стоимость приведены в таблице 5.6.
Таблица 5.6 - Затраты на материалы
Материалы |
Единица измерения |
Требуемое количество |
Цена за единицу, руб. |
Сумма, руб. |
|
Тетрадь общая |
шт. |
1 |
10 |
10 |
|
Компакт-диск CD-RW |
шт. |
2 |
15 |
30 |
|
Тонер для лазерного принтера |
шт. |
1 |
1000 |
1000 |
|
Бумага офисная |
пачка |
1 |
120 |
120 |
|
Итого |
1160 |
Таким образом, капитальные вложения на проектирование равны:
Смета затрат на разработку представлена в таблице 5.7.
Таблица 5.7 - Затраты на разработку
Статьи затрат |
Сумма, руб. |
|
Основная заработная плата |
46904,66 |
|
Дополнительная зарплата |
18761,86 |
|
Отчисления на социальные нужды |
12195,21 |
|
Затраты на материалы |
1160 |
|
Затраты на машинное время |
2800 |
|
Накладные расходы организации |
28142,80 |
|
ИТОГО |
112764,50 |
Капитальные вложения на реализацию проекта:
, (5.8)
где Ко - затраты на основное и вспомогательное оборудование, руб.;
Кзд - затраты на строительство, реконструкцию здания и помещений, руб.;
Кпп - затраты на приобретение типовых разработок, пакетов, руб.;
Ксв - затраты на прокладку линий связи, руб.;
Киб - затраты на создание информационной базы, руб.;
Кпк - затраты на подготовку и переподготовку кадров, руб.
В связи с тем, что для внедрения системы АРМ, рассматриваемой в данной работе, не было затрат связанных с прокладкой линии связи, затрат на основное и вспомогательное оборудование, затрат на реконструкцию и строительство зданий, то данные затраты для внедрения системы не учитывают. Также не принимаются в расчет затраты по подготовке и переподготовке кадров, затраты на создание информационной базы и затраты на приобретение типовых разработок.
Таким образом, при внедрении системы, рассматриваемой в данной работе, затраты на его реализацию определяются затратами на оборудование и материалы. В оборудование и материалы входит компьютер. Стоимость компьютера 25000 руб.
Тогда затраты на основное и вспомогательное оборудование составят
, (5.9)
где Cbj - балансовая стоимость j-гo вида оборудования, руб. (22500 руб.);
Qj - количество единиц j-гo оборудования, руб. (1 шт.);
Yj - коэффициент загрузки j-гo вида оборудования при обработке информации по решению задач предметной области.
Коэффициент загрузки оборудования:
, (5.10)
где Фэфj - эффективный годовой фонд времени работы технического средства j-го вида, час. /год.
, (5.11)
где tkj - трудоемкость однократной обработки информации по к-й задаче на j-м виде технических средств, часов машинного времени (tkj=6);
Uj - частота (периодичность) решения к-й задачи, дней /год (Uj =264).
Затраты на реализацию:
Суммарные затраты на разработку проекта:
К = 114842,62+ 18750 руб. =133592,62 руб.
Суммарные затраты, связанные с внедрением аналога складываются из следующих затрат:
затраты на приобретение программного продукта (40750 руб.)
затраты по оплате услуг на установку и сопровождение продукта (12000 руб.);
затраты на подготовку пользователя (оплата курсов повышения квалификации, командировочные расходы и пр.) (9000 руб.);
Итого суммарные затраты, связанные с внедрением аналога составят 61750 руб.
5.4 Расчет эксплуатационных затрат
К эксплуатационным затратам относятся затраты, связанные с обеспечением нормального функционирования программного продукта. Эти затраты называют также текущими затратами. Это могут быть затраты на ведение информационной базы, эксплуатацию комплекса технических средств, эксплуатацию систем программно-математического обеспечения, реализацию технологического процесса обработки информации по задачам, эксплуатация системы в целом.
Текущие затраты рассчитываются по формуле
, (5.12)
где Ззп - затраты на зарплату основную и дополнительную с отчислениями во внебюджетные фонды, руб.;
Са - амортизационные отчисления от стоимости оборудования и устройств системы, руб.;
Зэ - затраты на электроэнергию, руб.;
Срем - затраты на текущий ремонт оборудования и устройств системы, руб.;
Зм - затраты на материалы и машинные носители, руб.;
Зн - накладные расходы отдела технического контроля, руб.
Эксплуатацию разработанной системы осуществляют специалисты. Затраты на заработную плату основную и дополнительную с отчислениями на социальные нужды производственного персонала рассчитывается по формуле
, (5.13)
где ti - время эксплуатации системы i-м работником, дни;
3i - среднедневная заработная плата i-го работника, руб. /день.
Данные расчета заработной платы специалистов приведены в таблицах 5.8 и 5.9.
Таблица 5.8 - Данные по заработной плате специалистов (для разрабатываемого продукта)
Должность |
Должностной оклад, руб. |
Средняя дневная ставка, руб. /день |
Затраты времени на эксплуатацию, чел. - дней |
Фонд заработной платы, руб. |
|
Специалист по складскому учету |
15000,00 |
714,29 |
14 |
10000,06 |
|
Программист |
18000,00 |
857,14 |
0,5 |
428,57 |
|
Итого |
10428,63 |
Таблица 5.9 - Данные по заработной плате специалистов (для продукта-аналога)
Должность |
Должностной оклад, руб. |
Средняя дневная ставка, руб. /день |
Затраты времени на эксплуатацию, чел. - дней |
Фонд заработной платы, руб. |
|
Специалист по складскому учету |
20000,00 |
952,38 |
14 |
13333,32 |
|
Программист |
18000,00 |
857,14 |
14 |
11999,96 |
|
Итого |
25333,28 |
Сумма амортизационных отчислений рассчитывается следующим образом:
, (5.14)
где Cbj - балансовая стоимость j-ro вида оборудования, руб.;
tj - время работы j-ro вида оборудования, час;
Fэфj - эффективный фонд времени работы оборудования в год, час;
aj - норма годовых амортизационных отчислений для j-гo вида оборудования, %;
gj - количество единиц оборудования j-гo вида.
Эффективный фонд времени работы оборудования можно вычислить по формуле
, (5.15)
где Dр - количество рабочих дней в году. Dр = 249;
Нэ - норматив среднесуточной загрузки, час. /день, Нэ = 8.
Таким образом, эффективный фонд времени работы оборудования составит
час.
Данные для расчета:
aj =20%; gj =1;
tj (для проекта) = (14 + 0,5) *8 = 116 час.;
tj (для аналога) = (14 + 14) *8 = 224 час.;
Cbj=25000 руб.
Сумма амортизационных отчислений для проекта составит
Сумма амортизационных отчислений для аналога составит
Затраты на электроэнергию рассчитываются по формуле
, (5.16)
где Nj - установленная мощность j-ro вида технических средств, кВт;
tj - время работы j-ro вида технических средств, час;
gj - коэффициент использования установленной мощности оборудования;
Тэ - тариф на электроэнергию, руб. /кВт ч.
В настоящее время тариф на электроэнергию в Санкт-Петербурге для предприятий составляет 2,10 руб. /кВт*ч, установленная мощность для компьютера равна 0,2 кВт, таким образом затраты на электроэнергию
для проекта составят,
для аналога составят
Затраты на текущий ремонт оборудования рассчитываются по формуле
, (5.17)
где Cpi - норматив затрат на ремонт (Cpi = 0,05).
Затраты на текущий ремонт оборудования составят:
для проекта
для аналога
Затраты на материалы, потребляемые в течение года, составляют 1 % от балансовой стоимости основного оборудования и равны 250 руб.
Накладные расходы включают затраты на содержание административного и управленческого персонала, на содержание помещения и т.д. Норматив накладных расходов составляет 20 % от прямых затрат, включающих первые пять статей затрат, представленных в таблице 5.10.
Накладные расходы для проекта:
Накладные расходы для аналога:
Таблица 5.10 - Расчет годовых эксплуатационных затрат для проекта
Статьи затрат |
Затраты на проект, руб. |
Затраты на аналог, руб. |
|
Основная и дополнительная зарплата с отчислениями во внебюджетные фонды |
125143,56 |
303999,36 |
|
Амортизационные отчисления |
291,16 |
562,25 |
|
Затраты на электроэнергию |
48,72 |
94,08 |
|
Затраты на текущий ремонт |
72,79 |
140,56 |
|
Затраты на материалы |
250,00 |
250,00 |
|
Накладные расходы |
25161,24 |
61009,26 |
|
Итого |
150967,50 |
366055,50 |
5.5 Расчет показателя экономического эффекта
Оценка экономической эффективности вариантов проектных решений элементов АРМ основывается на расчете показателей сравнительной экономической эффективности капитальных вложений. Годовой экономический эффект от использования разрабатываемой системы определяется по разности приведенных затрат на базовый и новый варианты в расчете на годовой объем выпуска:
, (5.18)
Где , - приведенные затраты на единицу работ, выполняемых с помощью базового и проектируемого вариантов процесса обработки информации, руб.;
Ak - коэффициент эксплуатационно-технической эквивалентности (Ak = 1,57 (формула (3.2));
N - объем работ, выполняемых с помощью разрабатываемого продукта (примем равным 1).
Приведенные затраты Зi на единицу работ, выполняемых по базовому и разрабатываемому вариантам, рассчитываются по формуле
, (5.19)
где Ci - себестоимость (текущие эксплуатационные затраты единицы работ), руб.;
Ен - нормативный коэффициент экономической эффективности (Ен =0,33);
Ki - суммарные затраты, связанные с внедрением нового проекта.
Затраты на единицу работ по аналогу:
=366055,50+0,33*61750,00=386433,00 руб.
Затраты на единицу работ по проекту:
=150967,50+0,33*133592,62 =195053,06 руб.
Экономический эффект от использования разрабатываемой системы:
Э = 386433,00 *1,57 - 195053,06 = 411646,75 руб.
Расчет экономического эффекта приведен в таблице 5.11.
Таблица 5.11 - Расчет экономического эффекта
Характеристика |
Значение |
||
продукт-аналог |
разрабатываемый продукт |
||
Себестоимость (текущие эксплуатационные затраты), руб. |
366055,50 |
150967,50 |
|
Суммарные затраты, связанные с внедрением проекта, руб. |
61750,00 |
133592,62 |
|
Приведенные затраты на единицу работ, руб. |
386433,00 |
195053,06 |
|
Экономический эффект от использования разрабатываемой системы, руб. |
411646,75 |
После определения годового экономического эффекта необходимо рассчитать срок окупаемости затрат на разработку продукта по формуле
, (5.20)
Срок окупаемости составит: Ток =133592,62/411646,75 = 0,32года.
Затем рассчитаем фактический коэффициент экономической эффективности разработки (Еф) и сопоставим его с нормативным значением коэффициента эффективности капитальных вложений Ен =0,33:
(5.21)
Фактический коэффициент экономической эффективности разработки получился больше, чем нормативный, поэтому разработка и внедрение разрабатываемого продукта для АРМ является эффективной.
Таким образом, в ходе проделанной работы найдены все необходимые данные, доказывающие целесообразность и эффективность данной разработки. Приведем эти данные в сводной таблице (5.12).
Таблица 5.12 - Сводная таблица экономического обоснования разработки и внедрения проекта АРМ
Характеристика проекта |
Значение |
|
Затраты на разработку проекта, руб. |
133592,62 |
|
Затраты на реализацию проекта, руб. |
18750,00 |
|
Общие эксплуатационные затраты, руб. |
150967,50 |
|
Экономический эффект, руб. |
411646,75 |
|
Коэффициент экономической эффективности |
3,13 |
|
Срок окупаемости, лет |
0,32 |
Заключение
В настоящем дипломном проекте была разработана автоматизированная программа прогнозирования оптово-розничных продаж мобильных телефонов на основе нейронных сетей.
Мы исследовали особенности оптово-розничных продаж мобильных телефонов, задали типовую схему нейронной сети и разработали программу на ее основе, отметили основную структуру типичной обучающей конструкции, собрали данные и провели обучение программы. После этого применили ее на практике.
Мы выяснили, что нейронные сети - эффективное средство анализа рынка. Они широко используются в универсальных программных продуктах. Их избыточность и высокая стоимость дало нам право на самостоятельную разработку прикладной программы, ориентированной на задачи дипломного проектирования.
Отметим, что нам удалось разработать ПО, полностью соответствующее поставленным задачам.
Мы продемонстрировали, что искусственные нейронные сети способны решать задачу прогнозирования путем сведение ее к распознаванию образов. Выполнили прогнозирование продаж мобильных телефонов в компании 'Евросеть' на основе данных о продажах за 2008 год.
Были выполнены также исследования по безопасности жизнедеятельности и оценена экономическая эффективность проекта.
Список использованных источников
1. Бестенс Д., В. Ван ден Берг, Д. Вуд Нейронные сети и финансовые рынки. Принятие решений в торговых операциях. - М. ТВП, 1997.
2. Fayyad, Piatetsky-Shapiro, Smyth, and Uthurusamy. Advances in Knowledge Discovery and Data Mining, (Chapter 1) AAAI/MIT Press 1996
3. Parsaye K. A Characterization of Data Mining Technologies and Processes. The Journal of Data Warehousing. 1998. № 1
4. Иванов О.В. Статистика / Учебный курс для социологов и менеджеров. Часть 1. Описательная статистика. Теоретико-вероятностные основания статистического вывода. - М. 2005.187 с
5. Л.В. Щавелёв. Способы аналитической обработки данных для поддержки принятия решений. СУБД. 1998. № 4-5
6.А.Н. Горбань. Методы нейроинформатики. КГТУ, Красноярск, 1998.205 с
7. http://www.bi-grouplabs.ru/Product/ERP/RS_balance/description.html
8. Чубукова И.А. Data Mining - БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ. ру, 2008
9. Боровиков В.П. Прогнозирование в системе STATISTICA в среде Windows. Основы теории и интенсивная практика на компьютере: Учеб. пособие. - М.: Финансы и статистика, 2000. - 384с.: ил.
10.Ф. Уоссерман Нейрокомпьютерная техника: теория и практика. 1992
11. Minsky M., and Papert S., 1969. Perseptrons. Cambridge, MA: MIT Press. (Русский перевод: Минский М.Л., Пейперт С. Персептроны. - М. Мир. - 1971.)
12. Kohonen T. 1984. Self-organization and associative memory. Series in Information Sciences, vol.8. Berlin: Springer Verlag
13. Hebb D. 1961.organization of behavior. New York: Science Edition.
14.rumelhart D. E., Hinton G. E., Williams R. J. 1986. Learning internal reprentations by error propagation. In Parallel distributed processing, vol.1, pp.318-62. Cambridge, MA: MIT Press.
15. Werbos P. J. 1974. Beyond regression: New tools for prediction and analysis in the behavioral sciences. Masters thesis, Harward University.
16. Wasserman P. D. 1988a.combined backpropagation/Cauchy machine. Proceedings of the International Newral Network Society. New York: Pergamon Press
17.rumelhart D. E., Hinton G. E., Williams R. J. 1986. Learning internal reprentations by error propagation. In Parallel distributed processing, vol.1, pp.318-62. Cambridge, MA: MIT Press.
18. Wasserman P. D. 1988b. Experiments in translating Chinese characters using backpropagation. Proceedings of the Thirty-Third IEEE Computer Society International Conference. Washington, D. C.: Computer Society Press of the IEEE.
19. Parker D. B. 1987. Second order back propagation: Implementing an optimal 0 (n) approximation to Newton's method as an artificial newral network. Manuscript submitted for publication.
20. Stornetta W. S., Huberman B. A. 1987. An improwed three-layer, backpropagation algorithm. In Proceedings of the IEEE First International Conference on Newral Networks, eds. M. Caudill and C. Butler. San Diego, CA: SOS Printing.
21. Pineda F. J. 1988. Generalization of backpropagation to recurrent and higher order networks. In Newral information processing systems, ed. Dana Z. Anderson, pp.602-11. New York: American Institute of Phisycs.
22. Sejnowski T. J., Rosenberg C. R. 1987. Parallel networks that learn to pronounce English text.complex Systems 1: 145-68.
23. Burr D. J. 1987. Experiments with a connecnionlist text reader. In Proceedings of the IEEE First International Conferense on Neural Networks, eds. M. Caudill and C. Butler, vol.4, pp.717-24. San Diego, CA: SOS Printing.
24. Cottrell G. W., Munro P., Zipser D. 1987. Image compression by backpropagation: An example of extensional programming. ICS Report 8702, University of California, San Diego.
25. Кэнту М. Delphi 7 для профессионалов - СПб: Издательство 'Питер', 2007. - 1120 с.: ил.
26. Буч Г. Объектно-ориентированное программирование с примерами применения. - Киев: Диалектика, М.: И.В.К., 1992.
27. http://corp. euroset.ru/ru/
Приложение А. Скриншоты работы программы
Рисунок А.1 - Графический пользовательский интерфейс
Рисунок А.2 - Первый прогноз
Рисунок А.3 - Второй прогноз
Рисунок А.4 - Второй прогноз (многошаговое прогнозирование)
Рисунок А.5 - Изменение прогноза
Приложение Б. Листинг программного кода
// текст основной программы
program lab7neuro;
uses
Forms,
lab7 in 'lab7. pas' {Form1}, // модуль формы
bkpropag in 'bkpropag. pas'; // модуль нейросети
{$R *. RES}
begin
Application. Initialize;
Application. CreateForm (TForm1, Form1);
Application.run;
end.
// модуль формы
unit lab7;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
bkpropag, Grids, StdCtrls, Spin, ExtCtrls, TeEngine, Series, TeeProcs,
Chart, Menus;
type
TForm1 = class (TForm) // класс формы
// Элементы управление VCL помещенные на форму
SpinEdit1: TSpinEdit; StringGrid1: TStringGrid; Panel1: TPanel; StringGrid2: TStringGrid; SpinEdit2: TSpinEdit; Label1: TLabel;
Label3: TLabel; Label4: TLabel; Chart1: TChart; Series1: TBarSeries;
Series2: TBarSeries; CheckBox1: TCheckBox; Panel2: TPanel;
Button2: TButton; Button1: TButton; SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit; Label2: TLabel; Label5: TLabel;
SpinEdit5: TSpinEdit; Label6: TLabel; Button3: TButton;
Edit1: TEdit; Label7: TLabel; RadioButton1: TRadioButton;
RadioButton2: TRadioButton; CheckBox2: TCheckBox; Edit2: TEdit;
Label8: TLabel; Label9: TLabel;
// меню
PopupMenu1: TPopupMenu; N1: TMenuItem;
RANDOM1: TMenuItem; N21: TMenuItem; N2: TMenuItem;
N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem;
N7: TMenuItem; N8: TMenuItem;
// методы, выполняющие сервисные операции
procedure FormCreate (Sender: TObject);
procedure SpinEdit2Change (Sender: TObject);
procedure SpinEdit1Change (Sender: TObject);
procedure CheckBox1Click (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure FormDestroy (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure N1Click (Sender: TObject);
procedure RANDOM1Click (Sender: TObject);
procedure N21Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure N4Click (Sender: TObject);
procedure N5Click (Sender: TObject);
procedure N6Click (Sender: TObject);
procedure N7Click (Sender: TObject);
procedure N8Click (Sender: TObject);
private
{ обособленные методы }
neuro: TBackPropagation; // объект нейросети
CountNeuro: TVesCountNeuro; // количество нейронов в слоях
trend: TTrend; // временной ряд
normal: double;
end;
var
Form1: TForm1; // создаем форму
implementation
{$R *. DFM}
// действия при создании формы
procedure TForm1. FormCreate (Sender: TObject);
var j: word;
al,da: double;
begin
// инициализация
StringGrid2. ColCount: =SpinEdit2. Value+1;
for j: =1 to SpinEdit2. Value+1 do
StringGrid2. Cells [j,0]: =IntToStr (j);
StringGrid2. Cells [0,1]: ='Ряд';
StringGrid2. Cells [0,2]: ='Прогноз';
// Задание ряда
Randomize;
da: =3*pi/ (SpinEdit2. Value); al: =0;
for j: =1 to SpinEdit2. Value do
begin
StringGrid2. Cells [j,1]: =FloatToStr (sqr (sin (al)));
al: =al+da;
end;
// количество нейронов
StringGrid1. RowCount: =SpinEdit1. Value+1;
for j: =1 to SpinEdit1. Value+1 do
StringGrid1. Cells [0,j]: =IntToStr (j);
StringGrid1. Cells [1,0]: ='Нейронов';
StringGrid1. Cells [1,1]: ='4';
StringGrid1. Cells [1,2]: ='5';
StringGrid1. Cells [1,3]: ='1';
// нормирование
normal: =1;
end; // конец функции
// обработчик изменения количество элементов во временном ряду
procedure TForm1. SpinEdit2Change (Sender: TObject);
var j: word;
begin
StringGrid2. ColCount: =SpinEdit2. Value+1;
for j: =1 to SpinEdit2. Value+1 do
StringGrid2. Cells [j,0]: =IntToStr (j);
StringGrid2. Cells [0,1]: ='Ряд';
StringGrid2. Cells [0,2]: ='Прогноз';
end;
// обработчик изменения количества нейронов
procedure TForm1. SpinEdit1Change (Sender: TObject);
var j: word;
begin
StringGrid1. RowCount: =SpinEdit1. Value+1;
for j: =1 to SpinEdit1. Value+1 do
StringGrid1. Cells [0,j]: =IntToStr (j);
StringGrid1. Cells [1,0]: ='Нейронов';
end;
// подписывать данные в диаграмме
procedure TForm1. CheckBox1Click (Sender: TObject);
var i: integer;
begin
for i: =1 to 2 do
Chart1. Series [i-1]. Marks. Visible: =CheckBox1. Checked;
end;
// изобразить диаграмму
procedure TForm1. Button1Click (Sender: TObject);
var i,j: word;
AValue: double;
begin
for i: =1 to 2 do
begin
Chart1. SeriesList [i-1]. Clear;
for j: =1 to SpinEdit2. Value do
begin
if StringGrid2. Cells [j, i] ='' then AValue: =0 else AValue: =StrToFloat (StringGrid2. Cells [j, i]);
if (j>SpinEdit4. Value) and (i=2) then Chart1. SeriesList [i-1]. Add (AValue,'',rgb (0, 200,0))
else Chart1. SeriesList [i-1]. Add (AValue,'',Chart1. Series [i-1]. SeriesColor);
end;
end;
end;
// создание и обучение нейросети
procedure TForm1. Button3Click (Sender: TObject);
// обучение
var i,j: word;
Save_Cursor: TCursor;
maxn: double;
begin
Save_Cursor: = Screen. Cursor; Screen. Cursor: = crHourglass;
try
neuro. free; neuro: =TBackPropagation. Create; // создали нейросеть
// задаем количество слоев в нейросети и количество нейронов в каждом слое
// а также размер входного окна
for i: =1 to SpinEdit1. Value do CountNeuro [i]: =StrToInt (StringGrid1. Cells [1, i]);
neuro. SetArrayVesCount (SpinEdit1. Value,SpinEdit3. Value,CountNeuro);
// задаем временной ряд
for j: =1 to SpinEdit4. Value do if StringGrid2. Cells [j,1] ='' then trend [j]: =0 else trend [j]: =StrToFloat (StringGrid2. Cells [j,1]);
// выполняем нормализацию временного ряда
maxn: =trend [1];
for j: =2 to SpinEdit4. Value do if trend [j] >maxn then maxn: =trend [j];
if maxn>1 then normal: =1.2*maxn else normal: =1;
if CheckBox2. Checked then for j: =1 to SpinEdit4. Value do trend [j]: =trend [j] /normal;
neuro. SetTrend (SpinEdit4. Value,trend);
neuro.education (StrToFloat (Edit1. text),StrToFloat (Edit2. text)); // обучение
finally
Screen. Cursor: = Save_Cursor; { восстанавливаем форму курсора }
end;
end;
// закрытие формы
procedure TForm1. FormDestroy (Sender: TObject);
begin
neuro. free;
end;
// прогнозирование
procedure TForm1. Button2Click (Sender: TObject);
var X: TTrend; i,j: word;
begin
// прогнозирование
SpinEdit2. Value: =SpinEdit4. Value+SpinEdit5. Value;
StringGrid2. ColCount: =SpinEdit4. Value+SpinEdit5. Value+1;
for i: =1 to StringGrid2. ColCount do StringGrid2. Cells [i,2]: ='';
if RadioButton1. Checked then
begin // одношаговое предсказание
for i: =1 to SpinEdit4. Value+ (SpinEdit5. Value-SpinEdit3. Value) do
begin
for j: =1 to SpinEdit3. Value do
if StringGrid2. Cells [i+j-1,1] ='' then x [j]: =0 else x [j]: =StrToFloat (StringGrid2. Cells [i+j-1,1]) /normal;
StringGrid2. Cells [i+SpinEdit3. Value,2]: =FloatToStr (neuro. doprognoz (x) *normal);
end;
end
else // многошаговое прогнозирование
begin
// переписываем реальные данные в начало
for i: =1 to SpinEdit3. Value do StringGrid2. Cells [SpinEdit4. Value-i,2]: =StringGrid2. Cells [SpinEdit4. Value-i,1];
for i: =SpinEdit4. Value-SpinEdit3. Value to SpinEdit4. Value+SpinEdit5. Value-SpinEdit3. Value do
begin
for j: =1 to SpinEdit3. Value do
if StringGrid2. Cells [i+j-1,2] ='' then x [j]: =0 else x [j]: =StrToFloat (StringGrid2. Cells [i+j-1,2]) /normal;
StringGrid2. Cells [i+SpinEdit3. Value,2]: =FloatToStr (neuro. doprognoz (x) *normal);
end;
end;
end; // procedure
// задание стандартных зависимостей временного ряда
procedure TForm1. N1Click (Sender: TObject);
var da,al: double;
j: word;
begin
da: =pi/ (SpinEdit2. Value); al: =0;
for j: =1 to SpinEdit2. Value do
begin
StringGrid2. Cells [j,1]: =FloatToStr (sqr (sin (al)));
al: =al+da;
end;
Button1Click (sender);
end;
// аналогично работают другие пункты меню
….
procedure TForm1. N8Click (Sender: TObject);
var da,al: double;
j: word;
begin
da: =1/ (SpinEdit2. Value); al: =1;
for j: =1 to SpinEdit2. Value do
begin
StringGrid2. Cells [j,1]: =FloatToStr (1/al);
al: =al+da;
end;
Button1Click (sender);
end;
end. // конец модуля lab7
// модуль bkpropag
{*Модуль реализующий нейросеть обратного распространения *}
unit bkpropag;
interface
const MAXLAYERS=100; // максимальное количество слоев
const MAXVES=300; // максимальное количество нейронов в слое
const MAXINPUT=300; // максимальное количество входов нейросети
const MAXTRAND=300; // количество значений во временном ряду
type
TVesCountNeuro=array [0. MAXLAYERS] of word; // тип количество нейронов в слоях
TVesNeuro=array [1. MAXLAYERS,1. MAXVES,1. MAXVES] of double; // тип значений весов нейросети
TTrend=array [1. MAXTRAND] of double; // временной ряд
TOutPromezh=array [0. MAXLAYERS,1. MAXVES] of double; // промежуточные выходные сигналы
type
TBackPropagation=class // описание класса
private
fCountLayer: word; // количество слоев в нейросети
fArrayVesCount: TVesCountNeuro; // количество нейронов в слоях
fArrayVes: TVesNeuro; // значения весов нейросети
fXCount: word; // количество входных сигналов
fY: double; // выходной сигнал нейросети
fCountTrend: word; // количество чисел во временном ряду
fTrend: TTrend; // временной ряд
fYPromezh: TOutPromezh; // промежуточные выходные сигналы
procedure RandomVes; // задание весов случайным образом
function activation (g: double): double; // функция активации
function activation_diff (g: Double): double; // производная функции активации
public
constructor Create;
function Education (epsilon: double; alpha: double): boolean;
function DoOnePrognoz: double; // выполняет одношаговый прогноз
function DoPrognoz (X: TTrend): double;
// входные данные
// задание количество нейронов в слоях
function SetArrayVesCount (Count: word; XCount: word; AVC: TVesCountNeuro): boolean; // задание количество нейронов в слоях
function GetArrayVesCount (var Count: word; var XCount: word): TVesCountNeuro;
// задать временной ряд
function SetTrend (Count: word; ST: TTrend): boolean; // задать временной ряд
function GetTrend (var Count: word): TTrend;
property CountLayer: word read fCountLayer; // количество слоев
end; // конец описания класса
implementation
uses Forms,Dialogs,SysUtils;
{ TBackPropagation }
procedure TBackPropagation. RandomVes;
// задание весов нейросети случайным образом
var i,j,k: word;
begin
for i: =1 to MAXLAYERS do
for j: =1 to MAXVES do
for k: =1 to MAXVES do
fArrayVes [i,j,k]: =Random (800) /1000;
end;
// функция активации
function TBackPropagation. activation (g: double): double;
begin
activation: =1/ (1+Exp (-g));
end;
// производная функции активации
function TBackPropagation. activation_diff (g: Double): double;
begin
activation_diff: =g* (1-g);
end;
constructor TBackPropagation. Create;
// конструктор
begin
// инициализируем все значения
fCountLayer: =0;
fCountTrend: =0;
fXCount: =0;
fY: =0;
Randomize;
RandomVes; // задание весов случайным образом
end;
function TBackPropagation. DoOnePrognoz: double;
// одношаговый прогноз
var i,j,k: word;
s: double;
begin
// задаем входные сигналы - нулевая строка в промежуточных выходах
for i: =1 to fXCount do fYPromezh [0, i]: =fTrend [fCountTrend-fXCount+i];
// выполняем расчет
for i: =1 to fCountLayer do // для каждого слоя
for j: =1 to fArrayVesCount [i] do // для кождого нейрона в слое
begin
s: =0;
for k: =1 to fArrayVesCount [i-1] do // каждый вес
s: =s+fArrayVes [i,j,k] *fYPromezh [i-1,k]; // умножаем на соответствующий выход предыдущего слоя
fYPromezh [i,j]: =activation (s); // функция активации
end;
DoOnePrognoz: =fYPromezh [fCountLayer,1]; // на последнем слое - один нейрон
end;
function TBackPropagation. DoPrognoz (X: TTrend): double;
// прогноз
var i,j,k: word;
s: double;
begin
// задаем входные сигналы - нулевая строка в промежуточных выходах
for i: =1 to fXCount do fYPromezh [0, i]: =X [i];
// выполняем расчет
for i: =1 to fCountLayer do // для каждого слоя
for j: =1 to fArrayVesCount [i] do // для каждого нейрона в слое
begin
s: =0;
for k: =1 to fArrayVesCount [i-1] do // каждый вес
s: =s+fArrayVes [i,j,k] *fYPromezh [i-1,k]; // умножаем на соответствующий выход предыдущего слоя
fYPromezh [i,j]: =activation (s); // функция активации
end;
DoPrognoz: =fYPromezh [fCountLayer,1]; // на последнем слое - один нейрон
end;
function TBackPropagation.education (epsilon: double; alpha: double): boolean;
// обучение
var ArrayDelta: TOutPromezh; // массив дельта-величин
i,j,k,m: word;
s,d,delta: double;
nach: word;
neuro_epsilon,neuro_epsilon2,d_epsilon: double;
kol: longint;
begin
d: =100; nach: =1; neuro_epsilon: =0; d_epsilon: =100;
kol: =0;
while (d_epsilon>epsilon) and (kol<200000000) do
begin {while}
inc (kol);
Application. ProcessMessages;
if nach<=fCountTrend-fXCount then
for i: =1 to fXCount do fYPromezh [0, i]: =fTrend [nach+i-1]
else
begin nach: =1; d_epsilon: =neuro_epsilon; neuro_epsilon: =0; continue; end; // анализируем временной ряд сначала
// выполняем прямой проход
for i: =1 to fCountLayer do // для каждого слоя
for j: =1 to fArrayVesCount [i] do // для каждого нейрона в слое
begin
s: =0;
for k: =1 to fArrayVesCount [i-1] do // каждый вес
s: =s+fArrayVes [i,j,k] *fYPromezh [i-1,k]; // умножаем на соответствующий выход предыдущего слоя
fYPromezh [i,j]: =activation (s); // функция активации
end;
// выполняем обратный проход
// для выходного слоя
for j: =1 to fArrayVesCount [fCountLayer] do // для каждого нейрона последнего слоя
begin
neuro_epsilon2: = (fTrend [nach+fXCount] - fYPromezh [fCountLayer,j]);
delta: =neuro_epsilon2*activation_diff (fYPromezh [fCountLayer,j]); // дельта-величина
ArrayDelta [fCountLayer,j]: =delta;
for k: =1 to fArrayVesCount [fCountLayer-1] do // для каждого веса нейрона последнего слоя
fArrayVes [fCountLayer,j,k]: =fArrayVes [fCountLayer,j,k] +alpha*delta*fYPromezh [fCountLayer-1,k];
end;
neuro_epsilon: =neuro_epsilon+abs (neuro_epsilon2);
// для скрытых слоев
for i: =fCountLayer-1 downto 1 do // для каждого слоя
for j: =1 to fArrayVesCount [i] do // для каждого нейрона в слое
begin // 1
// вычисляем ошибку скрытого слоя i
s: =0;
for m: =1 to fArrayVesCount [i+1] do // для каждого нейрона в следующем слое
s: =s+ArrayDelta [i+1,m] *fArrayVes [i+1,m,j];
// вычисляем дельта величину для слоя i
delta: =activation_diff (fYPromezh [i,j]) *s;
ArrayDelta [i,j]: =delta;
// корректируем веса для нейрона j слоя i
for k: =1 to fArrayVesCount [i-1] do // для каждого веса в нейроне
fArrayVes [i,j,k]: =fArrayVes [i,j,k] +alpha*delta*fYpromezh [i-1,k];
end; // 1
// определяем совокупную ошибку дельта-величины
d: =0;
for i: =1 to fCountLayer do // для каждого слоя
for j: =1 to fArrayVesCount [i] do // для каждого нейрона в слое
d: =d+abs (ArrayDelta [i,j]);
// переходим на следующее окно
inc (nach);
end; {while}
MessageDlg ('Нейросеть обучилась согласно заданным параметрам'#13+
'за '+IntToStr (kol) +' итераций'#13+
'с совокупной погрешностью '+FloatToStr (d_epsilon), mtInformation, [mbOk], 0);
end;
function TBackPropagation. GetArrayVesCount (
var Count: word; var XCount: word): TVesCountNeuro;
begin
// считываем значения
XCount: =fXCount;
Count: =fCountLayer;
GetArrayVesCount: =fArrayVesCount;
end;
// считываем тренд
function TBackPropagation. GetTrend (var Count: word): TTrend;
begin
Count: =fCountTrend;
GetTrend: =fTrend;
end;
// устанавливаем значения
function TBackPropagation. SetArrayVesCount (Count: word; XCount: word;
AVC: TVesCountNeuro): boolean;
begin
fXcount: =XCount;
fCountLayer: =Count;
fArrayVesCount: =AVC;
fArrayVesCount [0]: =fXCount; // количество входных сигналов
SetArrayVesCount: =true;
end;
// устанавливаем тренд
function TBackPropagation. SetTrend (Count: word; ST: TTrend): boolean;
begin
fCountTrend: =Count;
fTrend: =ST;
SetTrend: =true;
end;
end. // конец модуля bkpropag