Дипломная работа по предмету "Программирование, компьютеры и кибернетика, ИТ технологии"


Автоматизированная система построения нейронной сети методом обратного распространения ошибки


1

Содержание

Введение

Глава 1. Аналитическая часть

1.1 Исследование предметной области

1.2 Анализ существующих разработок

1.3 Техническое задание

Глава 2. Проектная часть

2.1 Математическая модель задачи

2.2 Обоснование выбора метода проектирования и средств разработки программного обеспечения

2.3 Проектирование функциональной структуры

2.4 Описание и иерархия основных классов

2.5 Проектирование экранных форм системы

Глава 3. Экспериментальная проверка ПО

3.1 Постановка задачи и подготовка тестовых данных для эксперимента

3.2 Тестирование и анализ результатов эксперимента

Глава 4. Оценка экономической эффективности проекта

Заключение

Список литературы

Приложения

Введение

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

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

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

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

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

Глава 1. Аналитическая часть

1.1 Исследование предметной области

Сферу использования нейронных сетей в настоящее время можно разделить на несколько групп:

· Финансы, экономика, производство

· Медицина

· Энергетика

· Космос и природные явления

· Искусственный интеллект

· Научные исследования

Рассмотрим крупнейшие из них.[16]

1) Финансы. Одним из наиболее интересных приложений нейронных сетей в последние годы стали задачи финансовой деятельности. На рынке появляется огромное количество как универсальных нейропакетов, которые зачастую используются для решения задач технического анализа, так и специализированных экспертных систем и нейропакетов для решения многих других, зачастую более сложных и трудно формализуемых задач из финансовой области. В настоящее время имеет место широкое появление на отечественном рынке компьютеров и программного обеспечения нейропакетов и нейрокомпьютеров, предназначенных для решения финансовых задач. Те банки и крупные финансовые организации, которые уже используют нейронные сети для решения своих задач, понимают, насколько эффективным средством могут быть нейронные сети для задач с хорошей статистической базой, например при наличии достаточно длинных временных рядов, в том числе и многомерных. Пока ситуация складывалась так, что в финансовой системе, сложившейся в настоящее время, наблюдается повышенный интерес к отдельным видам задач, например предсказанию фьючерсных контрактов или курсов ГКО, при недостаточном внимании к структурному макроэкономическому анализу с использованием нейронных сетей как нелинейных моделей процесса. Лишь в последнее время начинает появляться интерес к использованию нейронных сетей для оценки ситуации, применению нечеткой логики для принятия решений и других более сложных приложений. При этом в качестве потребителя такой информации выступают либо люди, хорошо знающие потенциальные возможности нейронных сетей, либо решающие такие задачи традиционными методами и вынужденные искать другие, более эффективные способы решения задач.

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

Основные задачи:

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

- Страховая деятельность банков.

- Прогнозирование банкротств на основе нейросетевой системы распознавания.

- Определение курсов облигаций и акций предприятий с целью вложения средств в эти предприятия.

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

- Прогнозирование экономической эффективности финансирования проектов.

- Предсказание результатов займов.

- Общие приложения нейронных сетей

Приведем краткое пояснение каждого из основных приложений

1.1. Прогнозирование временных рядов на основе нейросетевых методов обработки.

- Прогнозирование кросс-курса валют

- Прогнозирование котировок и спроса акций для биржевых спекуляций (не для долгосрочного вложения)

- Прогнозирование остатков средств на корреспондентских счетах банка.

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

1.2 Страховая деятельность банков

- оценка риска страхования инвестиций на основе анализа надежности проекта

- оценка риска страхования вложенных средств

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

1.3 Прогнозирование банкротств на основе нейросетевой системы распознавания

- анализ надежности фирмы с точки зрения возможности ее банкротства с помощью нейросетевой системы распознавания и выдача результата в дискретном виде (да. нет)

- анализ величины вероятности банкротства фирмы на основе многокритериальной оценки с построением нелинейной модели с помощью нейронных сетей (пример результата - 74% вероятности банкротства).

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

1.4 Определение курсов облигаций и акций предприятий с целью вложения средств в эти предприятия

- выделение долгосрочных и краткосрочных скачков курсовой стоимости акций на основе нелинейной нейросетевой модели

- предсказание изменения стоимости акций на основе нейросетевого анализа временных экономических рядов

- распознавание ситуаций, когда резкое изменение цены акций является результатом биржевой игры с помощью нейросетевой системы распознавания

- определение соотношения котировок и спроса

Прогнозирующая система может состоять из нескольких нейронных сетей, которые обучаются взаимосвязям между различными техническими и экономическими показателями и периодами покупки и продажи акций. Целью прогноза является выбор наилучшего времени для покупки и продажи акций. Здесь рассматриваются также задачи формирования портфеля ценных бумаг и распознавания шаблонов на графике изменения курсов акций, которые позволяют прогнозировать курс акций на последующем отрезке времени. На рынке акций шаблон «треугольника» в диаграмме (графике) изменений курса акций является индикатором важного направления будущего изменения цены акций. Однако никакие методы основанные на правилах не дают хорошего результата, только высококвалифицированные эксперты. Нейросетевой подход дал весьма многообещающие результаты для Токийской фондовой биржи после обучения сети на 15 обучающих шаблонах треугольника и проверке на одном нейросетевом шаблоне. После чего были проведены 16 экспериментов на данных по ценам акций за последние 3 года. Шаблон треугольника был успешно определен в 15 случаях.

Применение нейронных сетей к задачам анализа биржевой деятельности - нейросетевая система распознавания всплесков биржевой активности - анализ деятельности биржи на основе нейросетевой модели - предсказание цен на товары и сырье с выделением трендов вне зависимости от инфляции и сезонных колебаний - нейросетевая система выделения трендов по методикам <японских свечей> и других гистографических источников отображения информации.

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

1.5 Прогнозирование экономической эффективности проектов

- предсказание на основе анализа реализованных ранее проектов;

- предсказание на основе соответствия предлагаемого проекта экономической ситуации.

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

1.6 Предсказание результатов займов

- определение возможности кредитования предприятий

- предоставление кредитов и займов без залога

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

1.7 Общие приложения нейронных сетей

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

Это из самых «модных» применений нейрокомпьютеров в финансовой области. Один из решаемых вопросов - установление цены на новый вид товара на основе многокритериальной оценки.

- моделирование динамики цен на сельскохозяйственную продукцию в зависимости от климатических условий

- моделирование работы коммунальных служб на основе нейросетевой модели для многокритериального анализа

- построение модели структуры расходов семьи.

2) Энергетика

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

Ниже представлен перечень основных задач, решаемых нейрокомпьютерами в современных энергетических системах:

· предсказание нагрузки;

· прогнозирование температуры окружающей среды с целью прогнозирования нагрузки;

· управление потоками электроэнергии в сетях;

· обеспечение максимальной мощности;

· регулирование напряжения;

· диагностика энергосистем с целью определения неисправностей;

· оптимизация размещения датчиков для контроля безопасности энергосистем;

· мониторинг безопасности энергосистем; обеспечение защиты трансформаторов;

· обеспечение устойчивости, оценка динамического состояния и диагностика генераторов;

· управление турбогенераторами;

· управление сетью генераторов;

· управление мощными переключательными системами.

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

3) Медицина. Статистика такова: врач правильно диагностирует болезнь у 88% больных и ошибочно ставит этот диагноз в 29% случаев. Ложных тревог (гипердиагностики) чересчур много. История применения различных методов обработки данных для повышения качества диагностики насчитывает десятилетия, однако лучший из них помог сократить число случаев гипердиагностики лишь на 3%.

В 1990 году Вильям Бакст из Калифорнийского университета в Сан-Диего использовал нейронную сеть - многослойный персептрон - для распознавания инфаркта миокарда у пациентов, поступающих в приемный покой с острой болью в груди. Его целью было создание инструмента, способного помочь врачам, которые не в силах справиться с потоком данных, характеризующих состояние поступившего больного. Другой целью может быть совершенствование диагностики. Свою задачу исследователь усложнил, поскольку анализировал данные только тех пациентов, кого уже направили в кардиологическое отделение. Бакст использовал лишь 20 параметров, среди которых были возраст, пол, локализация боли, реакция на нитроглицерин, тошнота и рвота, потение, обмороки, частота дыхания, учащенность сердцебиения, предыдущие инфаркты, диабет, гипертония, вздутие шейной вены, ряд особенностей ЭКГ и наличие значительных ишемических изменений.

Сеть продемонстрировала точность 92% при обнаружении инфаркта миокарда и дала только 4% случаев сигналов ложной тревоги, ошибочно подтверждая направление пациентов без инфаркта в кардиологическое отделение. Итак, налицо факт успешного применения искусственных нейронных сетей в диагностике заболевания. Теперь необходимо пояснить, в каких параметрах оценивается качество диагноза в общем случае. Предположим, что из десяти человек, у которых инфаркт действительно есть, диагностический метод позволяет обнаружить заболевание у восьми. Тогда чувствительность метода составит 80%. Если же мы возьмем десять человек, у которых инфаркта нет, а метод диагностики заподозрит его у трех человек, то доля ложных тревог составит 30%, при этом дополнительная к нему характеристика - специфичность метода - будет равна 70%.

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

4) Нейронные сети для задач диагностики

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

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

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

Принцип функционирования, основные понятия и определения нейросетей.

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

Модели НС могут быть программного и аппаратного исполнения. В дальнейшем речь пойдет в основном о первом типе.[15]

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

Рис.1.1 Искусственный нейрон

Основу каждой НС составляют относительно простые, в большинстве случаев - однотипные, элементы (ячейки), имитирующие работу нейронов мозга. Далее под нейроном будет подразумеваться искусственный нейрон, то есть ячейка НС. Каждый нейрон характеризуется своим текущим состоянием по аналогии с нервными клетками головного мозга, которые могут быть возбуждены или заторможены. Он обладает группой синапсов - однонаправленных входных связей, соединенных с выходами других нейронов, а также имеет аксон - выходную связь данного нейрона, с которой сигнал (возбуждения или торможения) поступает на синапсы следующих нейронов. Общий вид нейрона приведен на рисунке 1. Каждый синапс характеризуется величиной синаптической связи или ее весом, который по физическому смыслу эквивалентен электрической проводимости.

Рис.1.2 Однослойный перцептрон

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

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

Выбор структуры НС осуществляется в соответствии с особенностями и сложностью задачи. Для решения некоторых отдельных типов задач уже существуют оптимальные, на сегодняшний день, конфигурации. Если же задача не может быть сведена ни к одному из известных типов, разработчику приходится решать сложную проблему синтеза новой конфигурации. При этом он руководствуется несколькими основополагающими принципами: возможности сети возрастают с увеличением числа ячеек сети, плотности связей между ними и числом выделенных слоев; введение обратных связей наряду с увеличением возможностей сети поднимает вопрос о динамической устойчивости сети; сложность алгоритмов функционирования сети (в том числе, например, введение нескольких типов синапсов - возбуждающих, тормозящих и др.) также способствует усилению мощи НС. Вопрос о необходимых и достаточных свойствах сети для решения того или иного рода задач представляет собой целое направление нейрокомпьютерной науки. Так как проблема синтеза НС сильно зависит от решаемой задачи, дать общие подробные рекомендации затруднительно. В большинстве случаев оптимальный вариант получается на основе интуитивного подбора.

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

Этот этап называется обучением НС, и от того, насколько качественно он будет выполнен, зависит способность сети решать поставленные перед ней проблемы во время эксплуатации. На этапе обучения кроме параметра качества подбора весов важную роль играет время обучения. Как правило, эти два параметра связаны обратной зависимостью и их приходится выбирать на основе компромисса.[11]

Обучение НС может вестись с «учителем» или без него. В первом случае сети предъявляются значения как входных, так и желательных выходных сигналов, и она по некоторому внутреннему алгоритму подстраивает веса своих синаптических связей. Во втором случае выходы НС формируются самостоятельно, а веса изменяются по алгоритму, учитывающему только входные и производные от них сигналы.

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

Развивая дальше вопрос о возможной классификации НС, важно отметить существование бинарных и аналоговых сетей. Первые из них оперируют с двоичными сигналами, и выход каждого нейрона может принимать только два значения: логический ноль ("заторможенное" состояние) и логическая единица ("возбужденное" состояние). К этому классу сетей относится и рассмотренный выше персептрон, так как выходы его нейронов, формируемые функцией единичного скачка, равны либо 0, либо 1. В аналоговых сетях выходные значения нейронов спо-соб-ны принимать непрерывные значения.

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

Рис.1.3 Двухслойный персептрон

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

1.8 Анализ существующих разработок

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

1) Компания StatSoft Russia - российское представительство американской компании StatSoft Inc., которая на сегодняшний день является одним из крупнейших в мире разработчиков статистического и аналитического программного обеспечения. Программные продукты StatSoft поддерживаются глобальной сетью филиалов и дистрибуторов в разных странах и используются в основных университетах, корпорациях и правительственных учреждениях во всем мире. Основной продукт компании - система STATISTICA, предназначенная для анализа данных, визуализации, прогнозирования и проведения многих других статистических анализов[20].

STATISTICA Neural Networks является богатой и мощной средой анализа нейросетевых моделей, предоставляющей следующие возможности:

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

· Исключительная простота в использовании плюс непревзойденная аналитическая мощность; так например, не имеющий аналогов Мастер решений проведет пользователя через все этапы создания различных нейронных сетей и выберет наилучшую (эта задача, в противном случае, решается длительным путем "проб и ошибок" и требует основательного знания теории);

· Мощные методы разведочные и аналитические технологии, в том числе Анализ главных компонент и Понижение размерности для выбора нужных входных переменных в разведочном (нейросетевом) анализе данных (выбор нужных входных переменных для нейронных сетей часто занимает длительное время; система STATISTICA Neural Networks может выполнять эту работу за пользователя);

· Самые современные, оптимизированные и мощные алгоритмы обучения сети (включая методы сопряженных градиентов и Левенберга-Маркара); полный контроль над всеми параметрами, влияющими на качество сети, такими как функции активации и ошибок, сложность сети;

· Поддержка комбинаций нейросетей и нейросетевых архитектур практически неограниченного размера, созданных в Наборах сетей - Network Sets; выборочное обучение нейросетевых сегментов; объединение, и сохранение наборов сетей в отдельных файлах;

· Богатые графические и статистические связи, предоставляющие интерактивные разведочные анализы;

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

· Полная интеграция с мощными автоматическими инструментами STATISTICA; запись полноценных макросов для любых анализов; создание собственных нейросетевых анализов и приложений с помощью STATISTICA Visual Basic, вызов STATISTICA Neural Networks из любого приложения, поддерживающего технологию СОМ (например, автоматическое проведение нейро-сетевого анализа в таблице MS Excel или объединение нескольких пользовательских приложений, написанных на С++, С#, Java и т.д.).

2) BaseGroup Labs. занимается разработкой аналитического программного обеспечения и консультациями в области анализа данных. Фирма расположена в Рязани, основана 22 ноября 1995 года.

Основной продукт компании - Аналитическая платформа Deductor. [21]

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

Deductor предоставляет аналитикам инструментальные средства, необходимые для решения самых разнообразных аналитических задач: корпоративная отчетность, прогнозирование, сегментация, поиск закономерностей - эти и другие задачи, где применяются такие методики анализа, как OLAP, Knowledge Discovery in Databases и Data Mining. Deductor является идеальной платформой для создания систем поддержки принятий решений.

Решаемые задачи

Реализованные в Deductor технологии могут использоваться как в комплексе, так и по отдельности для решения широкого спектра бизнес-проблем:

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

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

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

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

· Управление рисками. Реализованные в системе алгоритмы позволят достаточно точно определиться с тем, какие характеристики объектов и как влияют на риски, благодаря чему можно прогнозировать наступление рискового события и заблаговременно принимать необходимые меры к снижению размера возможных неблагоприятных последствий.

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

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

· Обнаружение объектов на основе нечетких критериев. Часто встречается ситуация, когда необходимо обнаружить объект, основываясь не на четких критериях, таких, как стоимость, технические характеристики продукта, а на размытых формулировках, например, найти продукты, похожие на ваши, с точки зрения потребителя.

Проанализировав эти продукты по таким критериям как стоимость(Deductor-1000$, Statistica Neural Networks-2595$), скорость, функциональность, требовательность к ресурсам, мы пришли к выводу, что целесообразнее разработать своё приложение, более быстрое, менее ресурсоёмкое и имеющее оптимальный набор функций для построения нейронной сети обратного распространения ошибки.

1.9 Техническое задание

Данное техническое задание распространяется на разработку системы автоматизированного построения нейронных сетей методом обратного распространения ошибки.[6] Предполагается, что её будут использовать финансисты, экономисты, медики, энергетики, то есть те люди, которые по роду своей деятельности занимаются планированием, прогнозированием, диагностированием либо просто принимают решения, зависящие от большого числа критериев. Данная система предназначена для построения многослойной нейронной сети, обучаемой по алгоритму обратного распространения ошибки. Система может применяться для решения широкого спектра задач, связанных с обработкой структурированных, представленных в виде таблиц, данных, при этом область приложения системы может быть практически любой. Механизмы, реализованные в системе, с успехом применяются на финансовых рынках, в страховании, торговле, телекоммуникациях, промышленности, медицине, в логистических и маркетинговых задачах и множестве других. Для её работы необходимо проделать следующие операции: собрать статистику по процессу, обучить нейросеть на приведенных данных, проверить полученные результаты. В результате обучения нейросеть самостоятельно подберет такие значения коэффициентов и построит такую модель, которая наиболее точно описывает исследуемый процесс. В настоящее время существует несколько подобных очень дорогих систем, выполняющих схожие функции, но они не узко специализированы, следовательно, массивны, более ресурсоемки и медлительны, поэтому мы считаем работу над этим проектом вполне актуальной.

НАЗНАЧЕНИЕ

Основным назначением программы является программное построение многослойной нейронной сети, обучаемой по алгоритму обратного распространения ошибки.

1. ТРЕБОВАНИЯ К ПРОГРАММЕ ИЛИ ПРОГРАМНОМУ ИЗДЕЛИЮ

1.1. Требования к функциональным характеристикам

1.1.1. Система должна обеспечивать возможность выполнения следующих функций:

· Импорт данных

· Обработка данных

· Нормализация данных

· Настройка параметров нейронной сети

· Обучение нейронной сети

· Визуализация данных

· Эксперимент

· Сохранение обученной нейронной сети

· Экспорт данных

4.1.2.Исходные данные:

· Статистические данные

· Параметры нормализации

· Количество слоёв и нейронов

· Параметры обучения нейронной сети

· Условия завершения обучения нейронной сети

· Параметры визуализации данных

· Данные для эксперимента

4.1.3. Результаты:

· Временные параметры обучения сети

· График обучения

· Обученная сеть

· Результаты эксперимента

4.2. Требования к надёжности

4.2.1. Предусмотреть контроль вводимой информации.

4.2.2. Предусмотреть блокировку некорректных действий пользователя при работе с системой.

4.2.3. Обеспечить целостность хранимой информации.

4.3. Требования к составу и параметрам технических средств

4.3.1. Система должна работать на IBM совместимых компьютерах.

4.3.2. Минимальная конфигурация:

· Типпроцессора……………….……..…………..Pentium I и выше;

· Частота процессора………………………………..100Mhz и выше;

· Объём оперативного запоминающего устройства(зависит от количества слоёв и нейронов в сети)………………64 Мб и более;

4.4. Требования к информационной и программной совместимости

Система должна работать под управлением семейства операционных систем Win 32 (Windows 95, Windows 98, Windows Me, Windows 2000, Windows NT, Windows XP).

Глава 2. Проектная часть

2.1 Математическая модель задачи

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

Искусственный нейрон.

Несмотря на большое разнообразие вариантов нейронных сетей все они имеют общие черты. Так все они, также как и мозг человека, состоят из большого числа однотипных элементов - нейронов, которые имитируют нейроны головного мозга, связанных между собой. [10]

Рис.2.1 Схема нейрона

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

,(1)

Где:

n - число входов нейрона

xi - значение i-го входа нейрона

wi - вес i-го синапса

Затем определяется значение аксона нейрона по формуле

Y = f(S),(2)

Где f - некоторая функция ,которая называется активационной. Наиболее часто в качестве активационной функции используется так называемый сигмоид, который имеет следующий вид:

(3)

Основное достоинство этой функции в том, что она дифференцируема на всей оси абсцисс и имеет очень простую производную:

(4)

При уменьшении параметра ??сигмоид становится более пологим, вырождаясь в горизонтальную линию на уровне 0,5 при ?=0. При увеличении ? сигмоид все больше приближается к функции единичного скачка.

Нейронные сети обратного распространения.

Нейронные сети обратного распространения - это мощнейший инструмент поиска закономерностей, прогнозирования, качественного анализа. Такое название - сети обратного распространения (back propagation) они получили из-за используемого алгоритма обучения, в котором ошибка распространяется от выходного слоя к входному, т.е. в направлении, противоположном направлению распространения сигнала при нормальном функционировании сети.

Нейронная сеть обратного распространения состоит из нескольких слоев нейронов, причем каждый нейрон слоя i связан с каждым нейроном слоя i+1, т.е. речь идет о полносвязной НС.

В общем случае задача обучения НС сводится к нахождению некой функциональной зависимости Y=F(X) где X-вектор входной, а Y -выходной векторы. В общем случае такая задача, при ограниченном наборе входных данных имеет бесконечное множество решений. Для ограничения пространства поиска при обучении ставится задача минимизации целевой функции ошибки НС, которая находится по методу наименьших квадратов:

,(5)

Где:

yj - значение j-го выхода нейросети

dj- целевое значение j-го выхода

p - число нейронов в выходном слое

Обучение нейросети производится методом градиентного спуска, т.е. на каждой итерации изменение веса производится по формуле

(6)

где ?- параметр определяющий скорость обучения

,(7)

Где:

yj- значение выхода j-го нейрона

Sj - взвешенная сумма входных сигналов, определяемая по формуле (1). При этом множитель

,(8)

где xi - значение i-го входа нейрона

Далее рассмотрим определение первого множителя формулы (7)

(9)

где k - число нейронов в слое n+1.

Введем вспомогательную переменную

(10)

Тогда мы сможем определит рекурсивную формулу для определения n-ного слоя если нам известно следующего n+1-го слоя.

(11)

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

(12)

И наконец запишем формулу (6) в раскрытом виде

(13)

Рассмотрим теперь полный алгоритм обучения нейросети

подать на вход НС один из требуемых образов и определить значения выходов нейронов нейросети

рассчитать для выходного слоя НС по формуле (12) и рассчитать изменения весов выходного слоя N по формуле (13)

Рассчитать по формулам (11) и (13) соответственно и для остальных слоев НС, n=N-1..1

Скорректировать все веса НС

(14)

Если ошибка существенна, то перейти на шаг 1

На этапе 2 сети поочередно в случайном порядке предъявляются вектора из обучающей последовательности.

1

Повышение эффективности обучения НС обратного распространения

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

Простейшим методом усовершенствования градиентного спуска является введение момента ? ,когда влияние градиента на изменение весов изменяется со временем. Тогда формула (13) примет вид

(13.1)

Дополнительным преимуществом от введения момента является способность алгоритма преодолевать мелкие локальные минимумы.

Представление входных данных

Основное отличие НС в том, что в них все входные и выходные параметры представлены в виде чисел с плавающей точкой обычно в диапазоне [0..1]. В тоже время данные предметной области часто имеют другое кодирование. Так это могут быть числа в произвольном диапазоне, даты, символьные строки. Таким образом данные о проблеме могут быть как количественными так и качественными. Рассмотрим сначала преобразование качественных данных в числовые, а затем рассмотрим способ преобразования входных данных в требуемый диапазон.

Качественные данные мы можем разделить на две группы: упорядоченные и неупорядоченные. Для рассмотрения способов кодирования этих данных мы рассмотрим задачу о прогнозировании объёма продаж. Примером упорядоченных данных могут, например, являться данные о свойствах дня продаж.

Таблица 2. 1

Обычный

Без осадков

Праздничный

Выходной

День выдачи зарплаты покупателям

А также возможным примером может быть например время года.

Таблица 2. 2

Осень

Зима

Весна

Лето

Благоприятность каждого фактора возрастает в таблицах при движении слева направо.

В первом случае мы видим, что день может обладать несколькими свойствами одновременно. В таком случае нам необходимо использовать такое кодирование, при котором отсутствует ситуация, когда разным комбинациям факторов соответствует одно и то же значение. Наиболее распространен способ кодирования, когда каждому фактору ставится в соответствие разряд двоичного числа. 1 в этом разряде говорит о наличии фактора, а 0 о его отсутствии. Параметру «Обычный» можно поставить в соответствии число 0. Таким образом, для представления всех факторов достаточно 4-х разрядного двоичного числа. Получается, что число 10102 = 1010 означает, что у покупателя день выдачи зарплаты, да к тому же и праздничный день, а числу 00002 соответствует обычный день. Таким образом, факторы дня будут представлены числами в диапазоне [0..15].

Во втором случае мы также можем кодировать все значения двоичными весами, но это будет нецелесообразно, т.к. набор возможных значений будет слишком неравномерным. В этом случае более правильным будет установка в соответствие каждому значению своего веса, отличающегося на 1 от веса соседнего значения. Так число 3 будет соответствовать «Осени». Таким образом возраст будет закодирован числами в диапазоне [0..3].

В принципе аналогично можно поступать и для неупорядоченных данных, поставив в соответствие каждому значению какое-либо число. Однако это вводит нежелательную упорядоченность, которая может исказить данные, и сильно затруднить процесс обучения. В качестве одного из способов решения этой проблемы можно предложить поставить в соответствие каждому значению одного из входов НС. В этом случае при наличии этого значения соответствующий ему вход устанавливается в 1 или в 0 при противном случае. К сожалению данный способ не является панацеей, ибо при большом количестве вариантов входного значения число входов НС разрастается до огромного количества. Это резко увеличит затраты времени на обучение. В качестве варианта обхода этой проблемы можно использовать несколько другое решение. В соответствие каждому значению входного параметра ставится бинарный вектор, каждый разряд которого соответствует отдельному входу НС. Например если число возможных значений параметра 128, то можно использовать 7 разрядный вектор. Тогда 1 значению будет соответствовать вектор 0000000 а 128 - вектор 1111111, а, например, 26 значению - 0011011. Тогда число требуемых для кодирования параметров входов можно определить как

N=log2n(15)

Где:

n- количество значений параметра

N- количество входов

Преобразование числовых входных данных

Для НС необходимо чтобы входные данные лежали в диапазоне [0..1], в то время как данные проблемной области могут лежать в любом диапазоне. Предположим что данные по одному из параметров лежат в диапаз оне [Min..Max]. Тогда наиболее простым способом нормирования будет

(16)

Где: x- исходное значение параметра

-значение, подаваемое на вход НС

К сожалению этот способ кодирования не лишен недостатков. Так в случае если то распределение данных на входе может принять вид

1

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

(17)

2.2 Обоснование выбора метода проектирования, и средств разработки программного обеспечения

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

Структурная декомпозиция ЭИС на основе объектно-ориен-тированного подхода отличается от функционально-ориентиро-ванного подхода лучшей способностью отражать динамическое поведение системы в зависимости от возникающих событий. В этом плане модель проблемной области рассматривается как со-вокупность взаимодействующих во времени объектов. Тогда кон-кретный процесс обработки информации формируется в виде последовательности взаимодействий объектов. Одна операция обработки данных может рассматриваться как результат одного взаимодействия объектов.[7]

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

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

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

Конструктивное использование языка UML основывается на понимании общих принципов моделирования сложных систем и особенностей процесса объектно-ориентированного анализа и проектирования в частности. Выбор средств для построения моделей сложных систем предопределяет те задачи, которые могут быть решены с использованием данных моделей. При этом одним из основных принципов построения моделей сложных систем является принцип абстрагирования, который предписывает включать в модель только те аспекты проектируемой системы, которые имеют непосредственное отношение к выполнению системой своих функций или своего целевого предназначения. При этом все второстепенные детали опускаются, чтобы чрезмерно не усложнять процесс анализа и исследования полученной модели.[4]

Другим принципом построения моделей сложных систем является принцип многомодельности. Этот принцип представляет собой утверждение о том, что никакая единственная модель не может с достаточной степенью адекватности описывать различные аспекты сложной системы. Применительно к объектно-ориентированному подходу это означает, что достаточно полная модель сложной системы допускает некоторое число взаимосвязанных представлений, каждое из которых адекватно отражает некоторый аспект поведения или структуры системы. При этом наиболее общими представлениями сложной системы принято считать статическое и динамическое представления. Феномен сложной системы как раз и состоит в том, что никакое ее единственное представление не является достаточным для адекватного выражения всех особенностей моделируемой системы[5].

Прежде чем приступать к разработке, необходимо определиться с программными продуктами, которые будут использоваться в ходе построения системы. По мере повышения сложности программных проектов резко возрастают требования к эффективности их реализации. Это тем более важно сегодня, когда разработчики ПО вовлечены практически во все аспекты работы предприятий и число таких специалистов растет. В то же время данные исследований в этой области говорят о том, что результаты как минимум половины "внутренних" проектов разработки программных средств не оправдывают возложенных на них надежд. В этих условиях становится особенно актуальной задача оптимизации всего процесса создания программных средств с охватом всех его участников - проектировщиков, разработчиков, тестеров, служб сопровождения и менеджеров. Управление жизненным циклом приложений (Application Lifecycle Management, ALM) рассматривает процесс выпуска программных средств как постоянно повторяющийся цикл взаимосвязанных этапов:

· определение требований (Requirements);

· проектирование и анализ (Design & Analysis);

· разработка (Development);

· тестирование (Testing);

· развертывание и сопровождение (Deployment & Operations).

Каждый из этих этапов должен тщательно отслеживаться и контролироваться. Правильно организованная ALM-система позволяет:

· сократить сроки вывода продуктов на рынок (разработчикам приходится заботиться лишь о соответствии их программ сформулированным требованиям);

· повысить качество, гарантируя при этом, что приложение будет соответствовать потребностям и ожиданиям пользователей;

· повысить производительность труда (разработчики получают возможность делиться передовым опытом разработки и внедрения);

· ускорить разработку благодаря интеграции инструментов;

· уменьшить затраты на сопровождение, постоянно поддерживая соответствие между приложением и его проектной документацией;

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

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


Реализация ALM-стратегии в исполнении Borland заключается в предоставлении комплекса взаимосвязанных инструментов для всех этапов жизненного цикла приложений, таких, как определение требований, анализ и проектирование, разработка, тестирование, развертывание и управление[17]. В рамках данной стратегии компания выпустила ряд продуктов, часть которых мы собираемся использовать в своей работе, главным преимуществом которых является тесная интеграция друг с другом:

· Borland CaliberRM 2006

· Borland Together Designer 2006

· Borland StartTeam 2006

· Borland Developer Studio 2006

Borland Developer Studio 2006, как и вся линейка ALM инструментов является новейшим решением Borland в своем сегменте[18].

Как известно, корпорация Borland еще в 2001 году одной из первых среди независимых поставщиков подключалась к программе Visual Studio .NET Integration Partner и, более того, первой получила лицензию на SDK .NET Framework, объявив о намерении создания собственных средств разработки для новой по тем временам платформы Microsoft .NET.

В 2003 г. Borland представила C#Builder и Delphi 8 -- первые два инструмента для создания .NET-приложений, реализованные на базе нового ядра IDE(Integrated Development Environment) для Windows, поддерживающего несколько различных систем разработки для Win32 и .NET (проект с кодовым названием Gallileo). Потом на смену им пришел новый пакет Delphi 2005, объединивший оба средства (для .NET) с возможностями Delphi 7 (Win32).

По мнению представителей Borland, нынешний вариант инструмента -- это самое значительное обновление Delphi за последние годы, выполненное в полном соответствии со стратегией оптимизации процесса создания программного обеспечения Software Delivery Optimization, разработанной корпорацией.

Среда Delphi 2006 не только поддерживает несколько языков, SDK Win32 и .NET, но и обладает целым рядом принципиально новых усовершенствований. В ее состав входит большое количество принципиально новых функциональных возможностей IDE, призванных упростить выполнение разработчиками своих повседневных задач, повысить производительность их труда и оптимизировать работу с исходными текстами программ.[19]

В числе этих возможностей:

Продуктивность работы в cреде

§ Интеллектуальный редактор кода (история изменений, свертывание кода, подсказки)

§ Шаблоны кода

§ Рефакторинг (изменение структуры кода без влияния на функциональность)

§ Отладка (в т.ч. удаленная, включая Web-приложений)

§ Модульное тестирование (Unit-testing)

Прозрачность работы с СУБД

§ Работа с базами данных через разные механизмы
(BDE, IB Express, dbExpress, ADO, ADO.NET, BDP - Borland Data Providers)

ECO: высокоуровневая прикладная разработка для .NET

§ Объектный подход при работе с СУБД (Object-Relational Mapping)

§ Модели бизнес-сущностей и состояний - первичны и обновляемы

ALM-интеграция: эффективная командная работа

§ CaliberRM: управление требованиями

§ StarTeam: управление версиями, изменениями/дефектами, задачами

§ Together: моделирование (бизнес) и проектирование (код)

Новый менеджер памяти

§ Качественно сокращено время загрузки среды, ускорена работа IDE

Новая система шаблонов кода

§ Для всех поддерживаемых языков

§ Возможна “обертка” выделенного кода через вызов меню Surround

§ Возможно редактирование шаблонов “на лету”

Block Completion

§ Автоматическое завершение блоков код (напр. begin … end)

Diff highlighting

§ Подсветка изменений в коде, сделанных после последнего сохранения в текущей сессии редактирования

Удаленная отладка для Win32-приложений

Sort by load order

CPU view

Правила визуального размещения визуальных элементов в формах

Новые компоненты и классы VCL

§ TGridPanel, TFlowPanel, TCustomTransparetControl

Кроме того, Delphi 2006 помогает группам разработчиков осуществлять сопровождение и доработку уже выпущенных ими приложений для Windows с использованием новых технологий и возможностей.

Borland Together Designer 2006 - CASE-средство, предназначенное для визуального моделирования и проектирования программных систем на основе стандарта UML, позволяющая моделировать как компоненты программного обеспечения, так и бизнес-процессы. Borland Together обладает открытой архитектурой и предоставляет уникальный уровень интеграции инструментов моделирования и анализа со средой управления требованиями Borland CaliberRM, средством конфигурационного управления Borland StarTeam, а также с такими средами разработки и проектирования приложений, как Borland JBuilder, Borland C++ BuilderX, Microsoft Visual Studio .NET и Eclipse.

Использование технологий Borland Together 2006 для проектирования и реализации IT - архитектуры значительно ускоряет процесс разработки приложений, начиная от определения требований и заканчивая написанием кода. Возможности Together обеспечивают синхронную работу разработчиков архитектур, аналитиков и программистов при создании новых приложений или в процессе извлечения проектной информации из существующих приложений, и обеспечивают общее визуальное представление об архитектуре модели.

Технологии Borland Together 2006 помогают:

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

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

· добиваться более высокой эффективности и качества при разработке программных продуктов

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

Технологии Borland Together 2006 используют передовые методы проектирования с возможностью визуализации IT-архитектуры:

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

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

Технологии Together предоставляют возможность всестороннего блочного тестирования, проведения аудитов и использование метрик, что еще больше улучшает стандарты качества:

· Измерение качества ПО с помощью аудита: группы разработчиков могут измерять качество и вводить в действие корпоративные стандарты уже на раннем этапе проектирования ПО - еще во время программирования. Аудиты можно настраивать и сохранять, впоследствии проектные группы могут установить стандарты программирования и контролировать приведение в норму сторонних кодов.

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

· Поддержка стандартов Компания Borland предлагает заказчикам возможность взаимодействия, а не аналитические патентованные методы, и является приверженцем указанных ниже стандартов моделирования. Эта приверженность очевидна в семействе продуктов Together, в которых обеспечивается согласование с ключевыми стандартами MDA: UML, XMI и OCL. На ранней стадии обсуждения сейчас находятся стандарты для четвертой технологии MDA - преобразование модели (QVT); Компания Borland занимает лидирующие позиции в области разработки QVT с помощью технологии преобразования моделей. На сегодняшний день эта технология позволяет разработчикам создавать сложные платформенно-зависимые коды из обычных моделей UML.

Borland укрепляет свою приверженность стандартам MDA, участвуя в разработке важных спецификаций. Сотрудничая с другими участниками и ведущими пользовательскими организациями, компания Borland играла ключевую роль в последнем успешном завершении определений стандарта UML 2.0 и стала лидером в специальной группе OMG по разработке спецификаций OCL 2. Среди сопредседателей подкомитета OMG, занятого разработкой руководства по MDA, есть представители компании Borland.

· Поддержка на протяжении жизненного цикла приложения Технологии проектирования и моделирования Together предоставляют поддержку на протяжении всего жизненного цикла приложения и обеспечивают плавный переход от одной фазы к другой. Интеграция с Borland CaliberRM обеспечивает соответствие проектных моделей требованиям, а поддержка ведущих IDE, таких как Borland JBuilder, Borland C++BuilderX, Microsoft Visual Studio for.NET и Eclipse позволяет разработчикам преобразовывать модели в конкретные платформы. Более того, технологии Together интегрированы с Borland StarTeam и другими системами управления версиями программного обеспечения, позволяя гибко управлять конфигурацией при выборе репозитария.

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

Borland Together обладает следующими ключевыми функциями:

· LiveSource (Class-диаграммы)- two-way - изменения в коде отображаются в модели и наоборот

· Базовый набор UML 1.5 и UML 2.0 диаграмм - Class, Use Case, Sequence, Collaboration, State Chars, Deployment, Activity, Component

· Design Patterns (шаблоны проектирования)

· Refactorings (рефакторинг)

· Audits & Metrics (аудит и метрики)-оценка качества кода по заданным критериям

· Генерация документации

2.3 Проектирование функциональной структуры

Визуальное моделирование в UML можно представить, как некоторый процесс поуровневого спуска от наиболее обшей и абстрактной концептуальной модели исходной системы к логической, а затем и к физической модели соответствующей программной системы. Для достижения этих целей вначале строится модель в форме так называемой диаграммы вариантов использования (use case diagram), которая описывает функциональное назначение системы или, другими словами, то, что система будет делать в процессе своего функционирования. Диаграмма вариантов использования является исходным концептуальным представлением или концептуальной моделью системы в процессе ее проектирования и разработки. [7]

Разработка диаграммы вариантов использования преследует цели:

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

· Сформулировать общие требования к функциональному поведению проектируемой системы.

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

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

Суть данной диаграммы состоит в следующем: проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью так называемых вариантов использования. При этом актером (actor) или действующим лицом называется любая сущность, взаимодействующая с системой извне. Это может быть человек, техническое устройство, программа или любая другая система, которая может служить источником воздействия на моделируемую систему так, как определит сам разработчик. В свою очередь, вариант использования (use case) служит для описания сервисов, которые система предоставляет актеру. Другими словами, каждый вариант использования определяет некоторый набор действий, совершаемый системой при диалоге с актером. При этом ничего не говорится о том, каким образом будет реализовано взаимодействие актеров с системой.

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

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

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

1

Детализированные диаграммы использования представлены в приложении 1.

2.4 Описание и иерархия основных классов

Центральное место в ООП занимает разработка логической модели системы в виде диаграммы классов. Нотация классов в языке UML проста и интуитивно понятна всем, кто когда-либо имел опыт работы с CASE-инструментариями. Схожая нотация применяется и для объектов - экземпляров класса, с тем различием, что к имени класса добавляется имя объекта и вся надпись подчеркивается.

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

Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывает их внутреннюю структуру и типы отношений. На данной диаграмме не указывается информация о временных аспектах функционирования системы. С этой точки зрения диаграмма классов является дальнейшим развитием концептуальной модели проектируемой системы.

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

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

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

1

Рис. 2.5.Общая диаграмма классов иерархии нейронной сети

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

· TNeuron -Базовый класс нейрона, несет основную функциональность, состоит из весов, сумматора и выхода.

- Output: double- Свойство содержит выход нейрона (результат вычисления).

- Weights[Index: integer]: double - Индексированное свойство, содержит значения весовых коэффициентов нейрона.

- Create(ALayer: TLayer) -Конструктор нейрона, в качестве параметра передается номер слоя, в котором он находится.

- ComputeOut(const AInputs: TVectorFloat) - Виртуальный метод, вычисляет выход нейрона, фактически это взвешенная сумма нейрона так как в базовом классе активационная функция не используется.

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

- WeightCount: integer - Свойство устанавливает размерность вектора весовых коэффициентов.

- ComputeOut(const AInputs: TVectorFloat) -Вычисляет выход нейрона, использует пороговую активационную функцию.

· TNeuronBP - Класс-потомок нейрона для многослойной нейронной сети, обучаемой по алгоритму обратного распространения (Back Propagation)

- OnActivationD: TSigmoid - Свойство процедурного типа, реализующее производную активационной функции.

- OnActivationF: TSigmoid - Свойство процедурного типа, реализующее активационную функцию.

- ComputeOut(const AInputs: TVectorFloat) - Вычисляет выход нейрона, используя нелинейную активационную функцию.

- Delta: double - Свойства содержит локальную ошибку при обратном распространении.

· TLayer - Базовый класс слоя нейронной сети.

- NeuronCount: integer - Свойство содержит количество нейронов в текущем слое нейронной сети.

- Neurons[Index: integer]: TNeuron - Индексированное свойство содержит нейроны слоя, индекс указывает на соответствующий нейрон в текущем слое.

Create(ALayerNumber: integer; ANeuronCount: integer) - Конструктор слоя нейронной сети. В качестве параметров, соответственно, передаются порядковый номер слоя и количестве нейронов в создаваемом слое.

Destroy - Деструктор слоя нейронной сети. При разрушении нейронной сети вызывается автоматически. Использование напрямую нежелательно.

· TLayerBP- Класс-потомок слоя для многослойной нейронной сети, содержащий нейроны класса TNeuronBP.

NeuronsBP[Index: integer]: TneuronBP - Индексированное свойство содержит нейроны слоя, индекс указывает на соответствующий нейрон в текущем слое.

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

- InputNeuronCount: integer -Свойство содержит количество нейронов в первом слое нейронной сети.

- LayerCount: integer - Свойство содержит количество слоев нейронной сети.

- Layers[Index: integer]: TLayer - Индексированное свойство, индекс указывает на соответствующий слой нейронной сети.

- OutputNeuronCount: integer - Свойство содержит количество нейронов в выходном (последнем) слое.

- AddPattern(const AInputs: TVectorFloat; const AOutputs: TVectorFloat) - Метод добавляет пример в обучающую выборку.

- DeletePattern(Index: integer) - Метод удаляет пример из обучающей выборки.

- Init(const ANeuronsInLayer: TVectorInt) - Метод инициализирует нейронную сеть, фактически это построитель заданной конфигурации сети.

- ResetPatterns - Метод удаляет все примеры из обучающей выборки.

- Input[Index: integer]: double - Индексированное свойство устанавливает выходные значения нейронной сети, индекс указывает на соответствующий вход.

· TNeuralNetBP - Класс-потомок многослойной нейронной сети, обучаемой по алгоритму обратного распространения.

- Alpha: double - Свойство задает крутизну сигмоиды (активационной функции), и является одним из глобальных параметров нейронной сети.

AutoInit: boolean - При установлении этого свойства в True, происходит инициализация многослойной нейронной сети.

- ContinueTeach: Boolean - При установлении значения этого свойства в True, сеть будет дообучаться, т.е. не вызывается метод InitWeights.

- Epoch: boolean - При установлении этого свойства в True, процесс обучения остановится при достижении числа эпох равного EpochCount.

- EpochCount: integer - Свойства задает необходимое количество эпох для обучения многослойной нейронной сети.

- EpochCurrent: integer - Свойство содержит номер текущей эпохи при обучении.

- LayersBP[Index: integer]: TLayerBP - Индексированное свойство, индекс указывает на соответствующий слой нейронной сети.

Рис 2.6. Диаграмма основных классов TNeuralNetBP и TNeuralNetExtand

- Momentum: double - Свойство задает величину момента, один из глобальных параметров параметр нейронной сети. Данный параметр оптимизирует процесс обучения нейронной сети.

- Output[Index: integer]: double - Свойство содержит результат работы нейронной сети, индекс указывает на соответствующий нейрон выходного слоя.

- PatternCount: integer -Свойство задает количество примеров в обучающем множестве.

- TestSetPatternCount: integer - Свойство задает количество примеров в тестовом множестве.

- StopTeach: boolean - При установлении значения этого свойства в True, останавливается процесс обучения.

- TeachError: double - Свойства содержит ошибку нейронной сети на всем обучающем множестве.

- MaxTeachResidual: integer -Свойство содержит максимальную ошибку нейронной сети на обучающем множестве.

- MidTeachResidual: integer - Свойство содержит среднюю ошибку нейронной сети на обучающем множестве.

- MaxTestResidual: integer - Свойство содержит максимальную ошибку нейронной сети на тестовом множестве.

- TeachRate: double - Значением этого свойства, является параметр нейронной сети, определяющий скорость обучения. Определяет насколько сильно веса корректируются после каждой итерации.

- MaxTestResidual: integer - Свойство содержит среднюю ошибку нейронной сети на тестовом множестве.

- RecognizedTeachCount: integer - Свойство содержит количество распознанных примеров из обучающего множества.

- RecognizedTestCount: integer - Свойство содержит количество разпознанных примеров из тестового множества.

- ActivationD(Value: double): double -Производная сигмоидальной функции.

ActivationF(Value: double): double - Активационная функция - сигмоида.

AddLayer(ANeurons: integer) - Метод добавляет слой с указанным количеством нейронов. Добавленный слой будет являться выходным.

Compute(AVector: TVectorFloat) - Метод вычисляет выход нейронной сети, выполняя проход вперед.

Init - Инициализирует многослойную нейронную сеть, фактически это построитель заданной конфигурации сети.

ResetLayers - Метод удаляет все слои многослойной нейронной сети.

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

OnAfterInit: TNotifyEvent - Событие происходит после инициализации нейронной сети.

OnAfterTeach: TNotifyEvent - Событие происходит после обучения нейронной сети.

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

AvailableFieldsCount: integer - Свойство задает количество полей в наборе данных.

Fields[Index]: integer: TNeuroField - Индексированное свойство, содержит поля набора данных, индекс указывает на соответствующее поле в наборе данных.

FileName: TFileName - Свойство задаёт имя файла с сохранённой нейронной сетью

IdentError: double - Значением этого свойства, является параметр, используемый для решения задача классификации. Определяет, при какой ошибке пример считается правильно распознанным.

InputFieldCount: integer - Значением этого свойства, является количество входных полей из набора данных.

MaxTeachError: Boolean - При значении True, процесс обучения останавливается, если максимальная ошибка MaxTeachErrValue, при обучении стала меньше определенного значения.

- MaxTeachErrValue: double - Свойство задает максимальную ошибку при обучении.

MaxTestError: Boolean - При значении True, процесс обучения останавливается, если максимальная ошибка MaxTestErrValue, при тестировании стала меньше определенного значения.

- MaxTestErrValue: double - Свойство задает максимальную ошибку при тестировании.

MidTeachError: Boolean -При значении True, процесс обучения останавливается, если средняя ошибка MidTeachErrValue, при обучении стала меньше определенного значения.

- MidTeachErrValue: double - Свойство задает среднюю ошибку при обучении.

- MidTestError: Boolean - При значении True, процесс обучения останавливается, если средняя ошибка MidTestErrValue, при тестировании стала меньше определенного значения.

- MidTestErrValue: double - Свойство задает среднюю ошибку при тестировании.

- OutputFieldCount: integer - Свойство определяет количество выходных полей из набора данных.

- SourceFileName: TFileName - Имя файла, содержащего набор данных.

- TeachIdent: boolean - При значении True, процесс обучения останавливается, если при обучении стала распознано определенное количество примеров.

- TeachIdentCount: integer - Свойство определяет какой процент примеров при обучении должен быть распознан.

- TestAsValid: Boolean - При значении True, тестовое множество будет используется как валидационное. Обучение будет прекращено с выдачей сообщения как только ошибка на тестовом множестве начнет увеличиваться. Это помогает избежать ситуации переобучения нейросети.

При значении True, процесс обучения останавливается, если при тестировании стала распознано определенное количество примеров.

- TestIdentCount: integer - Свойство определяет какой процент какой процент примеров при тестировании должно быть распознано.

- UseForTeach: integer - Свойство определяет сколько процентов набора данных используется для обучения.

- LoadDataFrom - Загружает данные из текстового файла

- LoadNetwork - Метод загружает из файла конфигурацию нейронной сети.

- LoadPhaseX - Метод загружает из файла настройки сети, секцию PhaseX.

- SaveNetwork - Метод сохраняет в файл конфигурацию нейронной сети.

- SavePhaseX - Метод сохраняет настройки сети, в секцию PhaseX файла.

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

- Train - Метод обучающий/дообучающий нейронную сеть.

2.5 Проектирование экранных форм системы

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

Если же пользователь собирается создать новую сеть, то он должен пройти следующие шаги:

- Импорт данных

- Обработка данных

- Настройка параметров архитектуры сети

- Настройка параметров обучения сети

- Обучение сети

- Эксперимент

1

Мастер импорта может в интерактивном пошаговом режиме выбрать тип источника данных и настроить соответствующие параметры. На первом шаге Мастера импорта открывается список всех предусмотренных в системе типов источников данных, сгруппированных по способу доступа к данным:

База данных - импорт данных из баз данных различных типов

Прямой доступ к файлам:

- Текстовый файл с разделителями - текстовый файл в формате, в котором столбцы данных разделены однотипными символами-разделителями.

- Импорт из DBF - прямой доступ к файлам плоских баз данных типа DBF, который поддерживается такими приложениями как dBase, FoxBase, FoxPro.

Механизм MS ADO:

- Microsoft Excel - книга Microsoft Excel (*.xls).

- Microsoft Access - файл СУБД Microsoft Access (*.mdb).

- Импорт из DBF (ADO) - доступ через ADO к файлам плоских баз данных типа DBF, который поддерживается такими приложениями как dBase, FoxBase, FoxPro.

С помощью Мастера обработки поможет в интерактивном пошаговом режиме настроить все необходимые этапы обработки данных. В окне Мастера обработки представлены все доступные в системе методы обработки данных, сгруппированные по типу выполняемой обработки:

1

- Восстановление, сглаживание и редактирование аномальных данных.

- Понижение размерности входных факторов.

- Устранение незначащих факторов.

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

- Фильтрация записей выборки по заданным условиям.

1

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

1

После этого пользователь настраивает параметры обучения сети. Он указывает скорость обучения, величину ошибки при распознавании примера, момент(учитывает величину последнего изменения веса при коррекции весов (задается в интервале 0…1)) и условия остановки обучения.

1

1

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

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

1

Глава 3. Экспериментальная проверка программного обеспечения

3.1 Постановка задачи и подготовка тестовых данных для эксперимента

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

Руководство риэлторской фирмы «Зодчий», занимающейся куплей-продажей и обменом недвижимости в г. Белгороде и Белгородской области недавно столкнулось с такой проблемой: эксперт-оценщик, занимавшийся оценкой квартир, неожиданно уволился и уехал из города, а найти за неделю квалифицированного оценщика не удалось. Они попросили бета-версию программы для обучения нейронной сети, которая смогла бы временно (а может быть и навсегда) заменить эксперта-оценщика и выполнять функцию оценки квартир.

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

Таблица 3. 1

Параметр

Цифровой вид

1) Материал

· Другой

· Панель

· Кирпич

0

1

2

2) Этаж

· Первые и последние этажи

· Остальные

0

1

3) Наличие лифта

· Есть + 1 грузовой

· Есть

· Нет

2

1

0

4) Эксплуатационное состояние

· Новая

· Уже жилая

1

0

5) Расстояние до центра

· Центр

· Средняя полоса

· Окраина

2

1

0

6) Состояние квартиры

· Голые стены

· Обычное

· Ремонт

· Евроремонт

0

1

2

3

7) Наличие балкона

· Есть

· Нет

1

0

8) Возраст квартиры

9) Год купли-продажи(этот показатель введён для того чтобы учитывать ежегодное повышение цен на недвижимость)

10) Площадь квартиры

11) Количество комнат

После этого была поднята документация о сделках купли-продажи за последние 5 лет, выписаны интересующие нас параметры и цены квартир(см. Приложение 2).

3.2 Тестирование и анализ результатов эксперимента

В тестировании участвовало 104 записи о сделках купли-продажи за последние 5 лет. После импортирования данных, поля: «Материал», «Этаж», «Возраст квартиры», «Наличие лифта», «Эксплуатационное состояние», «Расстояние до центра», «Состояние квартиры», «Наличие балкона», «Год купли-продажи», «Площадь квартиры», «Количество комнат», были отнесены к входным параметрам, а поле «Цена» к результирующему(выходному). Выборка разделилась на обучающую и тестовую в соотношении 9:1. Было выделено 2 скрытых слоя по 11 нейронов в каждом, % распознавания примера был выставлен на 4%, остальные параметры остались по умолчанию. Обучение прошло за 54356 эпох(циклов) при распознавании 100% и тестовой и обучающей выборки.

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

Таблица 3. 2

Материал

Возраст квартиры

Этаж

Наличие лифта

Эксплуатационное состояние

Расстояние до центра

Состояние квартиры

Наличие балкона

Год купли-продажи

Площадь квартиры

Количество комнат

Реальная Цена

Цена Эксперимента

Разница в %

1

4

1

0

0

1

1

1

2001

44

2

516000

497246

3.7

2

0

0

1

1

1

0

1

2002

81

4

717000

696732

2.9

1

1

1

1

0

0

1

1

2003

44

2

741000

734312

1

1

7

1

0

2

2

1

2004

61

3

996000

968604

2.8

1

5

1

2

0

1

2

1

2005

23

1

728000

738410

1.4

Как видно из таблицы разница цен не превышает 4%, что считается вполне хорошим результатом. Однако заметим что разница реальной и экспериментальной цены за 2001 год заметно выше по сравнению с другими годами, что объясняется неоднородностью выборки. То есть, как видно из таблицы исходных данных количество сделок за 2001 год заметно меньше чем за другие годы, поэтому сеть как бы «недообучилась» определять цену за 2001 год с такой же точностью, как и в другие годы. Что в очередной раз доказывает знаменитую фразу специалистов в области нейронных технологий: «Качество входных данных на 90% гарантирует успех».

Глава 4. Расчет экономической эффективности проекта

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

I. Расчет единовременных затрат разработчика

К единовременным затратам разработчика относятся:

· теоретические исследования;

· разработка алгоритмов и программ;

· отладка;

· опытная эксплуатация;

· исследование рынка;

· реклама.

Таблица 4.1 представляет фактическую трудоемкость работ по стадиям проектирования.

Таблица 4.1 Содержание стадий научно-исследовательской работы

Стадия

Трудоемкость, дн.

Трудоемкость, %

Техническое задание

11

5,4

эскизный проект

28

13,7

технический проект

54

26,3

рабочий проект

106

51,7

внедрение

6

2,9

Итого

205

100,0

К затратам на научно-исследовательские работы относятся:

- материальные затраты;

- основная и дополнительная заработная плата;

- отчисления на социальные нужды;

- стоимость машинного времени на подготовку и отладку программ;

- стоимость инструментальных средств;

- накладные расходы.

1. Материальные затраты

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

В процессе работы использовались материалы и принадлежности, представленные в табл. 4.2

Таблица 4. 2 Использованные материалы и принадлежности

Наименование

Цена

Количество

Стоимость

Бумага

120

1

120

Диски CD-RW

35

2

70

Flsh накопитель

1200

1

1242

Итого

1432

2. Основная и дополнительная заработная плата

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

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

Основная заработная плата (Зосн) при выполнении научно-исследовательских работ рассчитывается по формуле:

,

где

Зсрднj - зарплата j-го сотрудника, руб.;

n - количество сотрудников, принимающих непосредственное участие в разработке программного продукта.

Для расчета заработной платы разработчика (Зраз) необходимо сразу указать, что всего научно-исследовательские работы производились в течение 205 дней. Среднедневная зарплата разработчика определена из расчета 7000 руб. в месяц и равна:

Заработная плата исполнителя в целом составляет:

Зраз=205 дн.*350 руб./день=71750 руб.

На консультации запланировано: 23 часов - дипломный руководитель и 3 часа - консультант по экономике.

Заработная плата дипломного руководителя составляет 45 руб./час. Следовательно, среднедневная зарплата дипломного руководителя равна:

Зрук=23*45=1035 руб.

Заработная плата консультанта по экономике составляет 40 руб./час. Следовательно, среднедневная зарплата равна:

Зконс=3*40=120 руб.

Получаем, что основная заработная плата при выполнении научно-исследовательских работ равна сумме заработных плат разработчика (студента), дипломного руководителя и консультанта по экономике:

Зоснразрукконс=71750+1035+120=72905 руб.

Дополнительная заработная плата составляет 10 % от основной:

Здоп=0,1*Зосн=0,1*72905=7290,5 руб.

Итого основная и дополнительная заработная плата составляют:

Зобщосндоп=72905+7290,5=80195,5 руб.

3. Отчисления на социальные нужды

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

Осоц=0,26*Зобщ=80195,5*0,26=20850,83 руб.

4. Затраты на оплату машинного времени

Затраты на оплату машинного времени (Зомв) зависят от времени работы на ЭВМ (Тэвм), себестоимости машино-часа работы ЭВМ (Смч) и включают в себя амортизацию ЭВМ и оборудования, затраты на электроэнергию. Стоимость одного машинного часа работы равна:

Смч=0,24 кВт/час*1,16 руб./кВт=0,28 руб./час

Время работы ЭВМ:

Тэвм=0,35*Тэск+0,6*Ттех пр+

+0,8*Траб пр+0,6*Твн=0,35*25+0,6*30+0,8*39+0,6*10=131 день,

где

Тэск, Ттех пр, Траб пр, Твн - фактические затраты времени на разработку эскизного, технического, рабочего проектов и внедрения соответственно, с учетом поправочных коэффициентов, дни.

С учетом того, что ЭВМ работала по восемь часов в сутки получаем:

Тэвм=131 дн*8ч=1048 ч

Себестоимость электроэнергии рассчитывается следующим образом:

Сэл= Тэвммч=1048*0,28=293,44 руб.

Затраты на амортизацию (Ам) ЭВМ и оборудование - это затраты на приобретение оборудования и его эксплуатацию, причем в статью расходов включают только амортизацию, начисленную за время работы над проектом. Имеем формулу:

Ам=(Офамэвм)/(365*100),

где

Оф - персональная стоимость оборудования, руб.;

Нам - норма амортизации, % (принято 20%);

Тэвм - время использования оборудования, дн.

Таблица 4. 3 Себестоимость оборудования и амортизационные отчисления

Наименование оборудования

Количество, шт.

Первоначальная стоимость, руб.

Общая стоимость, руб.

Компьютер Pentium IV (3GHz)

1

23000

23000

Принтер HP 1020

1

6840

6840

Итого

29840

Согласно таблице 4 первоначальная стоимость оборудования составила 29840 руб. Произведем расчет затрат на амортизацию:

Ам=(29840*20*131)/(365*100)=2135,40 руб.

Затраты на оплату машинного времени (Зовм) включают:

1. Затраты на оборудование в размере 2135,40 руб.

2. Затраты на электроэнергию в размере 290,87 руб.

Получаем, что стоимость машинного времени составляет:

Зовм=2135,40+290,87=2426,27 руб.

5. Стоимость инструментальных средств

Стоимость инструментальных средств включает стоимость системного программного обеспечения, использованного при разработке программного продукта в размере износа за этот период. Норма амортизации для системного программного обеспечения - 30%, а время использования 131 день.

Таблица 4. 4 Стоимость системного программного обеспечения

Наименование продукта

Первоначальная стоимость, руб.

Delphi 2006 Professional

12586

Borland Together 2006(с академической скидкой)

18339

Итого

30925

Амортизационные отчисления, входящие в стоимость разрабатываемого программного обеспечения, рассчитываются по формуле:

Аис=(Офамэвм)/(365*100),

где

Оф - первоначальная стоимость инструментальных средств, руб.;

Нам - норма амортизации, % (принято 30%);

Тэвм - время использования оборудования, дней.

Аис=(30925*30*131)/( 365*100)= 3319,57 руб.

6. Накладные расходы

Накладные расходы составляют 30 % от суммы основной заработной платы:

Рносн*0,3=72905*0,3=21871,5 руб.

Далее в таблицу 6 заносится смета затрат на программное обеспечение.

Таблица 4. 5 Смета затрат на программное обеспечение

Элемент затрат

Сметная стоимость, руб.

Материальные затраты

1432

Основная и доп. з/п

80195,5

Отчисления на соц. нужды

20850,83

Затраты на оплату машинного времени

2426,27

Амортизация стоимости инструментальных средств

3319,57

Накладные расходы

21871,5

Итого затраты:

130095,67

Сумма затрат на разработку распределяется по этапам проектирования пропорционально трудоемкости. В результате составляется инвестиционный план, отраженный в таблице 4.6.

Таблица 4. 6 План инвестиций

Этапы реализации проекта

Полугодия

2 полугодие 2005

1 полугодие 2006

Техническое задание

6980,74

эскизный проект

17769,16

технический проект

34269,10

рабочий проект

36807,55

30461,42

внедрение

3807,68

Итого:

95826,56

34269,10

II. Тиражирование и реализация программного обеспечения

Перед построением плана реализации программного обеспечения был произведен анализ его рыночных возможностей. В процессе анализа было выявлено наличие двух сегментов рынка, на которых может быть реализован данный программный продукт: кредитные организации и обучающие организации. Так же было обнаружено, что существуют крупные системы, в которых реализованы подобные функции. При этом качество реализации данных подфункций находится на низком уровне. Ни одна из представленных на рынке систем не является настраиваемой. Поэтому можно говорить об отсутствии конкурентных товаров на рынке. План по реализации программного обеспечения (приложение 3, таблица 1) показывает объем тиражирования, цену, выручку от реализации и доходы от сопровождения на соответствующий период по каждому из сегментов.

Смета затрат на тиражирование, рекламу и сопровождение программного обеспечения составляется на основании плана по реализации программного обеспечения. Затраты на рекламу планируются на основании того, что она будет осуществляться путем рассылки буклетов потенциальным покупателям системы и помещения объявлений в специализированных журналах. Затраты на сопровождение планируются из расчета 5% от выручки от реализации за этот период. Итоги расчетов по затратам тиражирование, рекламу и сопровождение представлены в таблице 4.7.

Таблица 4. 7 Смета затрат

Показатели

Период

2 полугодие 2005

1 полугодие 2006

2 полугодие 2006

1 полугодие 2007

2 полугодие 2007

1 полугодие 2008

2 полугодие 2008

1 полугодие 2009

Затраты на тиражирование:

-стоимость документации

0

1125

3125

2275

1975

1675

800

625

-затраты на копирование

0

675

1875

1365

1185

1005

480

375

-стоимость машинных носителей и упаковочных материалов

0

1800

5000

3640

3160

2680

1280

1000

-затраты на рассылку

0

1350

3750

2730

2370

2010

960

750

-амортизация ЭВМ и оборудования

0,00

0,93

2,60

1,89

1,64

1,39

0,66

0,52

Итого:

0,00

4950,93

13752,60

10011,89

8691,64

7371,39

3520,66

2750,52

Затраты на рекламу

0,00

13009,57

10407,65

10407,65

6504,78

5203,83

2601,91

1300,96

Затраты на сопровождение ПО

0

6300

15000

10920

9480

7370

3520

2500

Итого затраты:

0,00

24260,50

39160,25

31339,54

24676,42

19945,22

9642,58

6551,48

III. План прибыли от продаж

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

Таблица 4. 8 План прибыли

Показатели

Период

2 полу-годие 2005

1 полугодие 2006

2 полугодие 2006

1 полугодие 2007

2 полугодие 2007

1 полугодие 2008

2 полугодие 2008

1 полугодие 2009

Выручка от реализации и сопровождения

0

141120

336000

244608

212352

165088

78848

56000

Затраты на тиражирование и сопровождение

0,00

24260,50

39160,25

31339,54

24676,42

19945,22

9642,58

6551,48

Процентные платежи за кредит

0

0

0

0

0

0

0

0

Прибыль валовая

0,00

116859,50

296839,75

213268,46

187675,58

145142,78

69205,42

49448,52

Налог (24%)

0,00

28046,28

71241,54

51184,43

45042,14

34834,27

16609,30

11867,65

Прибыль чистая

0,00

88813,22

225598,21

162084,03

142633,44

110308,51

52596,12

37580,88

I. IV. Финансовый план проекта

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

Из таблицы видно, что данный проект потребует 95826,56 рублей инвестиций в первое полугодие, так как в этот период продажа программного продукта не осуществляется. Эти средства можно получить вложив собственные средства, как в представленном случае, либо взяв банковский кредит. За второе полугодие планируется осуществить продажу сорока пяти копий программы и прибыль от продажи покроет появившиеся на данном периоде затраты.

V. Определение экономической эффективности проекта

Таблица 4.9 отражает денежные потоки за весь период жизненного цикла программного продукта. Здесь определяется чистый денежный поток (ЧДП), дисконтированный денежный поток (ДДП) и чистая текущая стоимость проекта (NPV).

Таблица 4. 9 Денежные потоки

Показатели

Период

2 полугодие 2005

1 полугодие 2006

2 полугодие 2006

1 полугодие 2007

2 полугодие 2007

1 полугодие 2008

2 полугодие 2008

1 полугодие 2009

Эффект от инвестиционной деятельности

95826,56

34269,10

0,00

0,00

0,00

0,00

0,00

0,00

Эффект от операционной, деятельности

0,00

88813,22

225598,21

162084,03

142633,44

110308,51

52596,12

37580,88

Чистый денежный поток

-95826,56

54544,12

225598,21

162084,03

142633,44

110308,51

52596,12

37580,88

Коэффициент дисконтирования (б)

0,92

0,85

0,79

0,72

0,67

0,62

0,57

0,52

Дисконтированный денежный поток (ДДП=ЧДП*б)

-88400,16

46417,54

177107,51

117383,93

95292,10

67984,78

29903,60

19710,78

Дисконтированный денежный поток нарастающим итогом (NPV)

-88400,16

-41982,61

135124,89

252508,83

347800,92

415785,70

445689,30

465400,08

Ставка дисконтирования (r) рассчитывается по формуле:

При этом ставка рефинансирования равна 13%, инфляция - 11%, а риск - 13%. Таким образом, получаем:

Коэффициент дисконтирования (б) рассчитывается по формуле:

,

где

r - ставка дисконтирования,

t - период времени.

Дисконтированный денежный поток представляет собой произведение коэффициента дисконтирования на сумму чистого денежного потока за соответствующий период. Чистая текущая стоимость проекта (NPV) показывает прибыль, получаемую от выполнения проекта, приведенную на начало периода.

Индекс доходности (SRR) определяется как отношение суммарного дисконтированного дохода к суммарным дисконтированным капитальным вложениям:

,

где

Пчt - прибыль чистая,

At - амортизационные отчисления,

Kt - капитальные вложения в основные и оборотные фонды,

бt - коэффициент дисконтирования.

Таким образом, индекс доходности равен:

.

Индекс доходности показывает во сколько раз суммарный дисконтированный доход от выполнения проекта больше суммарных дисконтированных капитальных вложений в проект.

Пороговое значение рентабельности (rпор) или внутренний коэффициент эффективности проекта (IRR) рассчитывается по формуле:

где

r1 - исходная ставка дисконтирования,

r2 - ставка дисконтирования, при которой NPV меньше нуля,

rпор - внутренний коэффициент эффективности проекта,

NPVr1 и NPVr2 - NPV соответственно при r1 и r2

Для определения внутреннего коэффициента эффективности проекта возьмем такую ставку дисконтирования (r2=2,40), при которой NPV станет меньше нуля. Полученные результаты сводятся в таблицу 4.10.

Таблица 4. 10 Нахождение отрицательной чистой текущей стоимости проекта

Показатели

Период

2 полугодие 2005

1 полугодие 2006

2 полугодие 2006

1 полугодие 2007

2 полугодие 2007

1 полугодие 2008

2 полугодие 2008

1 полугодие 2009

NPVr1 =

-88400,16

-41982,61

135124,9

252508,83

347800,92

415785,70

445689,30

465400,08

б2=

0,45

0,21

0,09

0,04

0,02

0,01

0,00

0,00

ДДП2=

-43557,53

11269,45

21186,91

6919,10

2767,63

972,91

210,86

68,48

NPVr2=

-43557,53

-32288,08

-11101,17

-4182,08

-1414,45

-441,54

-230,68

-162,19

Рассчитаем пороговое значение рентабельности:

(239,2 % в полугодие или 572,3% в год)

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

Срок окупаемости проекта находится по формуле:

где

tx - количество периодов, при которых NPV меньше нуля,

NPVt - последнее отрицательное значение NPV,

ДДПt+1 - величина ДДП в t+1 периоде.

Получим:

полугодия (1,12 года)

Такое значение срока окупаемости проекта говорит о том, что через 1,12 года проект окупит денежные средства, вложенные в него, а затем начнет приносить доход.

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


Сальдо реальных накопленных денег во всех временных интервалах положительно. Это говорит о том, что при реализации проекта не возникнет ситуация, связанная с нехваткой денежных средств. Значение интегрального экономического эффекта больше нуля (NPV=465400>0). Это значит, что проект по его окончании не только окупит вложенные в него средства, но и принесет прибыль.

Значение индекса доходности более единицы (SRR=4,96>1) так же говорит о прибыльности проекта.

Внутренний коэффициент эффективности значительно больше заданной ставки дисконтирования (IRR=5,72>0,15), следовательно, инвестирование денежных средств в проект гораздо выгоднее чем помещение средств на банковский депозит. Срок окупаемости проекта составляет 1,12 года.

Заключение

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

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

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

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

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

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

Каждый этап работ сопровождался использованием соответствующих инструментальных средств компании Borland. Все работы по проектированию велись с использованием новой версии визуального языка моделирования UML 2.0.

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

Список использованной литературы

1. Delphi 7 в подлиннике. А. Хомоненко. СПб: BHV, 2003 - 1216 стр.

2. Delphi. Советы программистов (2-е издание): В.Озеров. - СПб: Символ-Плюс, 2002. - 976 стр.

3. Borland Delphi 6. Руководство разработчика: С.Тейксейра, К.Пачеко. - М: Вильямс, 2002. - 1120 стр.

4. Принципы проектирования и разработки программного обеспечения. Учебный курс MCSD: Скотт Ф. Уилсон, Брюс Мэйплс, Тим Лэндгрейв. - М: Русская редакция, 2002. - 736стр.

5. Проектирование экономических информационных систем: Учебник/Г.Н.Смирнова, А.А.Сорокин, Ю.Ф.Тельнов. - М: Финансы и статистика, 2003. - 512стр.

6. Вендров А.М. Проектирование программного обеспечения экономических информационных систем. М.: «Финансы и статистика»,2002.

7. Самоучитель UML. Эффективный инструмент моделирования информационных систем: А. Леоненков. - СПб: BHV, 2001. - 304стр.

8. Delphi 7 на примерах/Под ред. Ю. С. Ковтанюка -- К.: Издательство Юниор, 2003. -- 384 с., ил.

9. Нестандартные приемы программирования на Delphi. -- СПб.: БХВ-Петербург, 2005. -- 560 с : ил.

10. Учебное пособие к курсу "Нейронные сети" для студентов 5 курса магистратуры к. электроники физического ф-та Воронежского Государственного университета, 1999. - 76стр.

11. Джеффри Е. Хинтон. Как обучаются нейронные сети.// В мире науки - 1992 - N 11 - N 12 - c. 103-107.

12. Картавцев В. В. Нейронная сеть предсказывает курс доллара? // Компьютеры + программы - 1993 - N 6(7) - с. 10-13.

13. Трикоз Д. В. Нейронные сети: как это делается? // Компьютеры + программы - 1993 - N 4(5) с. 14-20.

14. Барский А.Б. Нейронные сети: распознавание, управление, принятие решений. - издательство "Финансы и статистика" - 2004 г. - 176 стр.

15. Сайт о нейронных сетях. WWW: http://neuroschool.narod.ru

16. Введение в теорию нейронных сетей. WWW: http://www.orc.ru/~stasson/neurox.html

17. Borland AML Portal. WWW: http://www.almportal.ru

18. Компания Borland. WWW: http://www.borland.com

19. Русскоязычный сайт компании Borland. WWW: http://www.borland.ru

20. Сайт компании Statsoft. WWW: http://statsoft.ru

21. Сайт компании Base Group Labs. WWW: http://basegroup.ru

22. Сайт компании НейроПроект. WWW: http://www.neuroproject.ru

Приложение 1

Приложение 2

Сводная информация о сделках за 5 лет

N п/п

Материал

Возраст квартиры

Этаж

Наличие лифта

Эксп-ое сост-е (жилая не жилая)

Расстояние до центра

Состояние квартиры

Наличие балкона

Год купли продажи

Площадь

Кол-во комнат

Цена

1

2

10

0

1

0

1

2

0

2001

42

2

470000

2

2

25

1

0

0

2

2

1

2002

63

3

714000

3

2

2

1

1

0

1

1

0

2005

42

2

1011000

4

1

13

1

1

0

2

2

0

2003

41

2

751000

5

1

19

1

1

0

0

2

1

2004

64

3

1077000

6

1

20

1

1

0

2

1

0

2004

42

2

924000

7

2

3

0

2

1

1

0

0

2002

83

4

760000

8

2

4

1

1

0

1

1

0

2005

45

2

1008000

9

1

2

1

1

0

0

1

1

2006

22

1

850000

10

1

11

0

0

0

2

2

0

2005

40

2

1059000

11

2

6

1

1

0

1

2

0

2004

23

1

641000

12

2

20

1

1

0

2

2

1

2004

22

1

691000

13

1

2

1

2

1

2

0

0

2004

80

4

1127000

14

1

0

1

1

1

1

0

1

2002

100

5

818000

15

2

13

1

1

0

1

2

1

2004

23

1

660000

16

1

4

1

1

0

0





Не сдавайте скачаную работу преподавателю!
Данную дипломную работу Вы можете использовать как базу для самостоятельного написания выпускного проекта.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем дипломную работу самостоятельно:
! Как писать дипломную работу Инструкция и советы по написанию качественной дипломной работы.
! Структура дипломной работы Сколько глав должно быть в работе, что должен содержать каждый из разделов.
! Оформление дипломных работ Требования к оформлению дипломных работ по ГОСТ. Основные методические указания.
! Источники для написания Что можно использовать в качестве источника для дипломной работы, а от чего лучше отказаться.
! Скачивание бесплатных работ Подводные камни и проблемы возникающие при сдаче бесплатно скачанной и не переработанной работы.
! Особенности дипломных проектов Чем отличается дипломный проект от дипломной работы. Описание особенностей.

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

Виды дипломных работ:
выпускная работа бакалавра Требование к выпускной работе бакалавра. Как правило сдается на 4 курсе института.
магистерская диссертация Требования к магистерским диссертациям. Как правило сдается на 5,6 курсе обучения.

Другие популярные дипломные работы:

Дипломная работа Формирование устных вычислительных навыков пятиклассников при изучении темы "Десятичные дроби"
Дипломная работа Технологии работы социального педагога с многодетной семьей
Дипломная работа Человеко-машинный интерфейс, разработка эргономичного интерфейса
Дипломная работа Организация туристско-экскурсионной деятельности на т/к "Русский стиль" Солонешенского района Алтайского края
Дипломная работа Разработка мероприятий по повышению эффективности коммерческой деятельности предприятия
Дипломная работа Совершенствование системы аттестации персонала предприятия на примере офиса продаж ОАО "МТС"
Дипломная работа Разработка системы менеджмента качества на предприятии
Дипломная работа Организация учета и контроля на предприятиях жилищно-коммунального хозяйства
Дипломная работа ЭКСПРЕСС-АНАЛИЗ ФИНАНСОВОГО СОСТОЯНИЯ ООО «АКТ «ФАРТОВ»
Дипломная работа Психическая коммуникация

Сейчас смотрят :

Дипломная работа Использование средств наглядности на уроках математики в начальных классах
Дипломная работа Бухгалтерский учет и аудит товарных операций в розничной торговле
Дипломная работа Правовое регулирование деятельности коммерческих банков в России
Дипломная работа Технологическое проектирование производственной зоны технического обслуживания
Дипломная работа Банкет с полным обслуживанием "Золотая свадьба"
Дипломная работа Обоснование средств механизации возделывания кормовой свеклы в СПК "Орловский" с разработкой зубового рыхлителя
Дипломная работа Учет расчетов с бюджетом по налогообложению
Дипломная работа Организация кредитования физических лиц в Северо-Западном банке Сбербанка России
Дипломная работа Трудовое воспитание детей в процессе хозяйственно–бытового труда
Дипломная работа Развитие сюжетных композиций в рисунках детей среднего дошкольного возраста в процессе ознакомления с творчеством Ю.А. Васнецова
Дипломная работа Организация работы участка по ремонту автосцепного оборудования вагонов
Дипломная работа Совершенствование деятельности предприятия на внешних рынках (на примере ОАО "Горизонт")
Дипломная работа Совершенствование организации учета расчетов с дебиторами и кредиторами
Дипломная работа Бухгалтерский учет и анализ дебиторской и кредиторской задолженности на предприятии
Дипломная работа Разработка мероприятий по повышению качества услуг населению