Автор работы: Пользователь скрыл имя, 23 Мая 2013 в 17:44, дипломная работа
В рамках дипломного проекта необходимо разработать программу, которая по-зволяла бы студенту изучать особенности построения и использования нейронных сетей.
Разрабатываемая программа должна позволять студенту создавать нейронную сеть и обучать ее для решения определенных задач. Программа должна предоставлять удобный интерфейс и давать студенту возможность сохранять модель созданной нейрон-ной сети и загружать ее для дальнейших исследований. Также программа должна иметь локальную базу данных для хранения информации, необходимой для обучения сети.
Перечень условных обозначений 3
Введение 5
1 Анализ технологии обработки информации в предметной области и определение требований к АСОИ 6
1.1 Сбор и анализ исходной информации 6
1.2 Определение требований к проектируемой АСОИ 17
1.2.1 Диаграмма вариантов использования 21
1.2.2 Диаграмма деятельности 33
1.2.3 Модель данных 34
Выводы 37
2 Создание модели АСОИ 38
2.1 Диаграмма классов 38
2.2 Диаграмма последовательности 45
2.3 Диаграмма состояний 46
2.4 Диаграмма деятельности 54
2.5 Диаграмма компонентов 54
2.6 Диаграмма размещения 57
Выводы 58
3 Разработка программного обеспечения 59
3.1 Выбор среды программирования 59
3.2 Разработка таблиц баз данных АСОИ 59
3.3 Разработка запросов 59
3.4 Разработка форм 61
3.5 Разработка вычислительных процедур обработки данных 62
3.6 Тестирование программного обеспечения 65
Заключение по проекту 69
4 Экономическая часть 70
4.1 Общая постановка к технико-экономическому обоснованию 70
4.2 Расчет трудоемкости (производительности) 71
4.3 Расчет единовременных затрат 76
4.4 Расчет годовых текущих издержек 80
4.5 Расчет показателей экономической эффективности 83
4.6 Организация внедрения системы и рекомендации по ее эксплуатации 84
4.7 Выводы и рекомендации 85
5 Охрана труда 86
5.1 Идентификация и анализ вредных и опасных факторов в проектируемом объекте 86
5.2 Технические, технологические, организационные решения по устранению опасных и вредных факторов, разработка защитных средств 89
5.3 Разработка мер безопасности при эксплуатации объекта проектирования 93
6 Энерго- и ресурсосбережение 96
Список использованных источников 104
Таблица 9 – Ограничения таблицы LearningPair
Name |
Type |
Columns |
FK_LearningPair_LearningArray |
Public |
LearningArrayId |
PK_LearningPair |
Public |
Id LearningArrayId |
Таблица 10 – Связи таблицы LearningPair
Columns |
Association |
(LearningPairId = Id) |
0..* OutputSignal.FK_ 1 LearningPair.PK_ |
(LearningPairId = Id) |
0..* InputSignal.FK_ 1 LearningPair.PK_ |
(LearningArrayId = Id) |
0..* LearningPair.FK_ 1 LearningArray.PK_ |
3. Таблица InputSignal
Таблица для хранения значений входных сигналов
Таблица 11 – Колонки таблицы InputSignal
PK |
Name |
Type |
Not Null |
Unique |
Len |
Prec |
Scale |
Init |
Notes |
True |
Id |
int |
True |
False |
Уникальный номер входного сигнала | ||||
True |
LearningPairId |
int |
True |
False |
Уникальный номер обучающей пары, которой принадлежит входной сигнал | ||||
False |
Value |
numeric |
True |
False |
21 |
15 |
0 |
Значение входного сигнала |
Таблица 12 – Ограничения таблицы InputSignal
Name |
Type |
Columns |
FK_InputSignal_LearningPair |
Public |
LearningPairId |
PK_InputSignal |
Public |
Id LearningPairId |
Таблица 13 – Связи таблицы InputSignal
Columns |
Association |
(LearningPairId = Id) |
0..* InputSignal.FK_ 1 LearningPair.PK_ |
4. Таблица OutputSignal
Таблица для хранения значений выходных сигналов
Таблица 14 – Колонки таблицы OutputSignal
PK |
Name |
Type |
Not Null |
Unique |
Len |
Prec |
Scale |
Init |
Notes |
True |
Id |
int |
True |
False |
Уникальный номер выходного сигнала | ||||
True |
LearningPairId |
int |
True |
False |
Уникальный номер обучающей пары, которой принадлежит выходной сигнал | ||||
False |
Value |
numeric |
False |
False |
21 |
15 |
0 |
Значение выходного сигнала |
Таблица 15 – Колонки таблицы OutputSignal
Name |
Type |
Columns |
FK_OutputSignal_LearningPair |
Public |
LearningPairId |
PK_OutputSignal |
Public |
Id LearningPairId |
Таблица 16 – Связи таблицы OutputSignal
Columns |
Association |
(LearningPairId = Id) |
0..* OutputSignal.FK_ 1 LearningPair.PK_ |
В результате анализа описаны варианты использования, выявлены основной поток событий, альтернативные потоки и поток ошибок. Определены варианты использования, разработана диаграмма модели данных (таблиц данных) предметной области, построена диаграмма деятельности.
Собранной информации достаточно для разработки модели АСОИ (программы для выполнения лабораторного практикума по созданию и исследованию нейронных сетей).
Программа включает в свой состав пять основынх частей.
Класс Program является основным управялющим классом, запускающий программу на выполнение и хранящий данные о текущей нейронной сети NeuralNet и имя последнего файла, в который производилось сохранение модели текущей нейронной сети для более быстрого повторного ее сохранения.
Диаграмма классов представлена на в графической части.
Пользовательские формы.
Пользовательские формы предназначены для организации взаимодействия пользователя с вычислительной средой.
В данной программе используются следующие пользовательские формы.
NeuralNetForm – основная форма программы. С помощью нее пользователь может создавать новую нейронную сеть, задавая количество слоев и нейронов в каждом слое, сохранять модель нейронной сети в файл и загружать ее из файла. Также через данную форму осуществляется открытие формы для создания и редактирования обучающих массивов, формы обучения сети, формы-схемы сети и формы опроса сети.
NeuralNetVizForm – форма для отображения схемы нейронной сети.
UseNeuralNetForm – форма, предназначенная для опроса нейронной сети. Содержит схему нейронной сети и таблицу для ввода значений входных сигналов. Позволяет пользователю проверить работу нейронной сети, отображая значения выходных сигналов.
LearningNeuralNetForm – форма, предназначенная для обучения нейронной сети. Содержит схему нейронной сети до и после обучения и позволяетпользователю выбрать обучающий массив из базы данных с целью проведения обучения сети.
LearningSettingsForm – форма, позволяющая пользователю задавать дополнительные параметры обучения (максимальное число итераций и допустимую погрешность значений выходных сигналов по сравнению с контрольными). Вызывается из формы LearningNeuralNetForm.
LearningArraysEditorForm– форма, предназначенная для создания и редактирвания обучающих массивов и обучающих пар. Также содержит схему текущей нейронной сети.
CreateLearningArrayForm – форма, используемая для создания обучающего массива, а именно ввода его обязательного описания. Вызывается из формы LearningArraysForm.
Классы-контроллеры пользовательских форм.
Диаграмма классов-контроллеров форм аналогична диаграмме пользовательских форм, так как каждый класс-контроллер содержит определения методов, используемых для обработки событий (нажатие кнопок, выбор пункта меню, переключение значений числа и т.д.), а также определения локальных переменных, являющихся общими для всех методов внутри данных классов.
Классы-модели нейронной сети и ее элементов.
Данные классы предназначены для описания элементов нейронной сети и всей сети вцелом.
Рассмотрим данные классы более потробно.
ActivationFunctionTypes
Перечисление типов
Таблица 17 – Атрибуты перечисления ActivationFunctionTypes.
Атрибут |
Описание |
LinearFunction Public |
Линейная активационная функция |
SigmaFunction Public |
Сигмоидальная активационная функция |
Tanh Public |
Гиперболический тангенс |
Layer
Слой нейронной сети.
Таблица 18 – Атрибуты класса Layer.
Атрибут |
Описание |
m_neurons List<Neuron> Private |
Список нейронов, входящих в слой. |
Таблица 19 – Методы и свойства класса Layer.
Метод или свойство |
Описание |
Layer() Public |
Конструктор по умолчанию. |
Neurons() List<Neuron> Public |
Свойство, принимающее или возвращающее список нейронов, входящих в слой. |
LearningArray
Обучающий массив
Таблица 20 – Атрибуты класса LearningArray.
Атрибут |
Описание |
m_description string Private |
Описание обучающего массива |
m_id int Private |
Уникальный номер обучающего массива |
m_learningPairs List<LearningPair> Private |
Список обучающих пар, входящих в массив |
Таблица 21 – Методы и свойства класса LearningArray.
Метод или свойство |
Описание |
Id() Public |
Свойство, принимающее или возвращающее уникальный номер обучающего массива. |
Description() string Public |
Свойство, принимающее или возвращающее описание обучающего массива. |
LearningPairs() List<LearningPair> Public |
Свойство, принимающее или возвращающее список обучающих пар, входящих в массив. |
LearningPair
Обучающая пара
Таблица 22 – Атрибуты класса LearningPair.
Атрибут |
Описание |
m_id int Private |
Уникальный номер обучающей пары |
m_xValues List<double> Private |
Список значений входных сигналов |
m_yValues List<double> Private |
Список значений выходных сигналов |
Таблица 23 – Методы и свойства класса LearningPair.
Метод или свойство |
Описание |
Id() Public |
Свойство, принимающее или возвращающее уникальный номер обучающей пары. |
XValues() List<double> Private |
Свойство, принимающее или возвращающее список значений входных сигналов. |
YValues () List<double> Public |
Свойство, принимающее или возвращающее список значений выходных сигналов. |
Net
Нейронная сеть
Таблица 24 – Атрибуты класса Net.
Атрибут |
Описание |
m_description string Private |
Описание сети. |
m_id Guid Private |
Уникальный номер сети. |
m_layers List<Layer> Private |
Список слоев, входящих в сеть. |
m_name string Private |
Наименование сети. |
Таблица 25 – Методы и свойства класса Net.
Метод или свойства |
Описание |
Параметры |
AddNeuron() void Public |
Добавление нейрона в сеть. |
int [in] layerNum Номер слоя. ActivationFunctionTypes [in] activationFunctionType Тип активационной функции. double [in] threshold Значение порога. |
Ask() List<decimal> Public |
Опрос сети. |
List<decimal> [in] inputSignals Массив входных сигналов. |
BackPropagation() decimal Public |
Обучение сети (алгоритм обратного распространения). |
LearningArray [in] lArray Обучающий массив. decimal [in] nu Коэффициент скорости обучения decimal [in] inaccuracy Допустимая погрешность. int [in] iterationsCount Максимальное число итераций. string [out] message |
Net() Public |
Конструктор по умолчанию. |
|
RemoveNeuron() void Public |
Удаление заданного нейрона в заданном слое. |
int [in] layerNum Номер слоя int [in] neuronNum Номер нейрона |
RemoveNeuron() void Public |
Удаление последнего нейрона в слое. |
int [in] layerNum Номер слоя. |
Neuron
Нейрон
Таблица 26 – Атрибуты класса Neuron.
Атрибут |
Описание |
m_activationFunctionType ActivationFunctionTypes Private |
Тип активационной функции. |
m_synapses List<Synapse> Private |
Список синапсов, входящих в нейрон. |
m_threshold double Private |
Порог (для линейной активационной функции). |