Разработка нейросетевой программы прогнозирования стоимостных показателей объектов

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 24.06.2013
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Выводы

Анализ математического аппарата показал, что существует алгоритмы, способные за конечное число шагов обучить искусственную нейронную сеть. Эмпирическое сравнение моделей показало, что наилучшие результаты прогнозирования обеспечила трехслойная нейронная сеть типа «многослойный персептрон» с двадцатью нейронами в скрытом слое. Нейронные сети типа «RBF» также показывают относительно неплохие результаты, в особенности если учитывать практически нулевую ошибку прогнозирования обучающей выборки. Нейронная сеть типа «RBF» хорошо подойдет для прогнозирования в том случае, если необходимо подобрать модель в сжатые сроки, когда времени на поиск оптимальной архитектуры ИНС типа «многослойный персептрон» недостаточно. Таким образом, в приложении по прогнозированию стоимостных показателей объектов для построения моделей будут использованы искусственные нейронные сети типа «многослойный персептрон», а также РБФ-сети.

4. Разработка программно-алгоритмического обеспечения

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

4.1 Обоснование выбора средств разработки

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

фреймворк Qt;

среда разработки Embarcadero RAD Studio;

среда разработки Microsoft Visual Studio 2010.

Кросс-платформенный инструментарий разработки ПО на языке программирования C++ Qt позволяет запускать написанное с его помощью ПО в большинстве современных операционных систем путём простой компиляции программы для каждой ОС без изменения исходного кода. Фреймворк Qt включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования. Преимуществом среды является её легкая переносимость из одной ОС в другую благодаря максимальному отделению средств визуализации от программного кода. Недостатком является то, что среда является платной для коммерческих разработок, а также то, что язык С++, несмотря на его высокую производительность, обладает достаточно сложным синтаксисом, а также требует ручного управления памятью, что затрудняет отладку приложений и отрицательно влияет на время написания приложения.

Среда быстрой разработки приложений Embarcadero RAD Studio для Microsoft Windows фирмы Embarcadero Technologies, текущей версией которой является Embarcadero RAD Studio XE3, объединяет Delphi XE3 и C++ Builder XE3, Delphi Prism XE3 и HTML5 Builder в единую интегрированную среду разработки. Преимуществом среды является наличие мощных средств отладки и удобство использования. Главными недостатками можно назвать высокую стоимость лицензии, а также недостатки самих языков программирования, поддерживаемых данной средой: недостатки языка С++ перечислены выше, а язык Delphi в настоящее время используется всё реже для разработки новых продуктов.

Microsoft Visual Studio 2010 - продукт компании Майкрософт, включающий интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данный продукт позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight. Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода, добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения. Основным недостатком среды является высокая стоимость лицензии, тем не менее, существует облегченная версия Express, которая является бесплатной для разработки как коммерческих, так и некоммерческих приложений.

Исходя из анализа средств разработки, принято решение в качестве средства разработки использовать интегрированную среду разработки Microsoft Visual Studio 2010 Express, включающую редактор исходных текстов, компилятор, компоновщик и отладчик. Программу решено написать на объектно-ориентированном языке программирования высокого уровня C# с применением интерфейса прикладного программирования Windows Forms. Данная среда является современной, бесплатной, удобной в использовании и позволяет разрабатывать сложные приложения в относительно короткий срок. Язык программирования высокого уровня C# создавался параллельно с каркасом .Net Framework и в полной мере учитывает все его возможности. Сохранив основные черты своего прародителя - C++ , язык стал проще и надежнее. Простота и надежность, главным образом, связаны с тем, что в C# хотя и допускаются, но не поощряются такие опасные свойства С++ как указатели, адресация, разыменование, адресная арифметика. Существенным преимуществом языка C# является также автоматическое управление памятью.

Динамическая библиотека для работы с нейронными сетями, созданными в среде Matlab, должна быть скомпилирована в среде Matlab r2010a с использованием инструментов dotnetbuilder и deploytool. Существует среда исполнения Matlab Compiler Runtime, которая является свободно распространяемой и которая позволяет приложениям вызывать функции среды Matlab без необходимости установки самой среды.

4.2 Разработка структуры программы

Программа представляет собой приложение SDI (single document interface) - программа с интерфейсом единого документа. Структура программы определяется структурой приложений SDI, а также системой модулей, созданных разработчиком.

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

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

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Рисунок 4.1 - Структура программы

Модуль работы с данными подразделяется на два модуля: модуль работы с файлами Excel и модуль контроля формата данных. Функции, выполняемые модулем работы с данными, обусловлены функциями, выполняемыми модулем работы с файлами Excel и модулем контроля формата данных.

Модуль работы с файлами Excel обеспечивает выполнение следующих функций:

загрузка файлов формата Excel;

возбуждение исключений при несоответствии расширения файла Excel его формату, а также при возникновении ошибок прав доступа к файлу;

сохранение отредактированных файлов;

визуальное представление файлов формата Excel.

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

Модуль работы с проектами программы обеспечивает выполнение следующих функций:

сохранение проектов программы в формате xml;

загрузка проектов программы;

создание проектов программы с помощью мастера;

проверка файлов проектов на корректность.

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

Модуль работы с нейронными сетями подразделяется на два модуля: модуль работы с нейронными сетями, созданными в среде Matlab и модуль работы с нейронными сетями, созданными в рамках приложения. Функции, выполняемые модулем работы с нейронными сетями, обусловлены функциями, выполняемыми модулем работы с нейронными сетями, созданными в среде Matlab и модулем работы с нейронными сетями, созданными в рамках приложения.

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

загрузка нейронных сетей, созданных в среде Matlab;

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

определение параметров загруженной нейронной сети (количество слоёв, количество входов, количество выходов и т.д.);

непосредственная работа с нейронной сетью (прогнозирование).

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

создание новой нейронной сети типа «многослойный персептрон» или «РБФ»;

обучение созданной нейронной сети;

сохранение созданной нейронной сети в файле;

загрузка ранее созданной нейронной сети из файла;

непосредственная работа с нейронной сетью (прогнозирование).

В качестве элементов ввода и отображения в дочерних окнах программы используются стандартные визуальные компоненты Microsoft .NET Framework: Label, Button, TextBox, ComboBox, CheckBox, GroupBox, ListBox, ToolStripMenu, tabControl. Для формы ввода и вывода данных используется компонент DataGridView.

4.3 Разработка модулей программы

нейросетевая программа интерфейс модуль

Модуль работы с данными реализован в виде класса public class DataSets, который находится в файле DataSets.cs. Данный класс имеет следующие поля:

private list<double[]> _data - все данные, с которыми в итоге работают нейронные сети в программе, являются числовыми данными;

private string[] _headers - массив заголовков отдельно взятого набора (таблицы) данных;

В классе DataSets реализованы следующие методы:

public void FillGridView (DataGridView gridView) - реализует заполнение компонента DataGridView данными из полей _data и _headers.

public void GetDataFromGridView (DataGridView gridView) - реализует заполнение полей _data и _headers данными, считываемыми из компонента DataGridView.

Модуль работы с файлами Excel реализован методом public list<string[][]> LoadDataFromExcelFile (string filename) класса DataSets Данный метод принимает строковый параметр, указывающий путь к файлу Excel в системе и возвращает коллекцию (список), состоящую из двумерного строкового массива. Каждый элемент возвращаемой коллекции является строковым представлением таблицы, а каждый элемент двумерного строкового массива представляет собой отдельную ячейку таблицы. Данный метод находится в файле DataSets.cs.

Модуль контроля формата данных реализован как вспомогательный метод public <list<double[]>> ParseTable (string[][] table), который отвечает за преобразование строковых данных из таблиц (Excel или компонента DataGridView) в список массивов чисел.

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

Рисунок 4.2 - Диаграмма классов модуля работы с нейронными сетями

Данные классы расположены в файле NeuralNet.cs.

NeuralNet - абстрактный класс, содержащий следующие основные поля:

protected string _netName - имя сети;

protected list<int> Layers - количество элементов списка - количество слоев сети, значение элемента списка - количество нейронов в слое;

protected int _numInputs - количество входов сети;

protected int _numOutputs - количество выходов сети;

protected int type - тип сети.

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

В абстрактном классе NeuralNet определена следующая чистая виртуальная функция public abstract DataSets simulateNetwork(DataSets inputData) - получает данные для прогнозирования, возвращает набор ответов(прогнозов) для этих данных.

Модуль работы с нейронными сетями Matlab реализуется в виде динамической библиотеки matnets.dll, скомпилированной в среде Matlab, а также в виде класса MatlabNeuralNet, который реализует чистые виртуальные функции базового класса и ряд вспомогательных функций. Библиотека matnets.dll предоставляет интерфейс для работы с нейронными сетями, созданными в среде Matlab.

Модуль работы с нейронными сетями приложения реализуется в виде класса CustomNeuralNet, который реализует чистые виртуальные функции базового класса, а также методы для создания, обучения и настройки параметров нейронных сетей типа «РБФ» и «Многослойный персептрон» и ряд вспомогательных методов. К модулю работы с нейронными сетями приложения относится также свободно распространяемая библиотека Encog (encog-core-cs.dll), которая предоставляет функции для создания, обучения и использования нейронных сетей.

Модуль работы с проектами программы реализован в видe класса public class NesProject, который находится в файле NesProject.cs. Данный класс имеет следующие поля:

поле public List<Column> Columns;

поле public List<Netwok> Networks;

поле Column является структурой с полями:

public string Header - заголовок столбца;

public int type - тип столбца: «1» - числовой, «2» - «да/нет», «3» - выпадающий список;

Network является структурой с полями:

public string Path - путь к нейронной сети в файловой системе;

public string Name - имя нейронной сети;

public int Type - тип нейронной сети.

Поля класса NesProject и вспомогательные структуры Column и Network имеют достаточно простые типы данных для обеспечения удобства и простоты сериализации экземпляров класса NesProject в xml-файлы.

Класс NesProject реализует следующие методы:

public void FillGridColumnHeaders(DataGridView dataGrid, List<Column> columns) - заполнеяет заголовки полей и определяет типы полей компонента DataGridView (расположенный в главном окне программы на вкладке «НЭС») на основе информации, взятой из поля Columns;

public void LoadNetworks() - загружает нейронные сети в среду программы из файлов, путь к которым содержится в поле Networks;

public static void SerializeProjectToXML(NesProject nesProject, string path) - статический метод, обеспечивающий сериализацию экземпляра класса NesProject в xml-файл, создаваемый в файловой системе в директории, определяемой параметром path.

public static NesProject DeserializeFromXML(string path) - статический метод, обеспечивающий получение экземпляра класса NesProject из xml-файла, путь к которому указан в параметре path. Текст программы представлен в приложении Д.

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

Main.cs - файл компонента главной экранной формы;

DataForm.cs - файл компонента окна с отображаемыми выборками данных;

WizardRb.cs - файл компонента первого окна «Мастера создания НЭС»;

WizardParams.cs - файл компонента окна редактирования и добавления входных и выходных параметров «Мастера создания НЭС»;

WizardData.cs - файл компонента окна загрузки данных для обучения нейронной сети и сопоставления данных с созданными входными и выходными параметрами «Мастера создания НЭС»;

WizardNewNet.cs - файл компонента окна обучения нейронной сети;

LearnInfo.cs - файл компонента окна с информацией об обучении нейронной сети;

DropDowListEditForm.cs - файл компонента окна сопоставления элементов параметра типа «выпадающий список» с их числовыми значениями;

WizardNet.cs - файл компонента окна загрузки нейронной сети в проект Мастера создания НЭС».

4.4 Разработка пользовательского интерфейса

Пользовательский интерфейс программы реализован как оконный интерфейс. Оконный интерфейс приложения реализуется в графическом режиме с использованием стандартных средств Windows Forms - части Microsoft .NET Framework. На рисунке 4.3 показано основное окно программы в расширенном режиме работы.

Пункт меню файл состоит из подпунктов загрузить проект НЭС, сохранить проект НЭС как, выход.

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

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

При выборе подпункта выход программа завершает свою работу.

Пункт меню режим работы состоит из подпунктов НЭС упрощенный и продвинутый.

Рисунок 4.3 - Основное окно программы в продвинутом режиме

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

Рисунок 4.4 - основное окно программы в упрощенном режиме

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

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

Рисунок 4.5 - Первое диалоговое окно мастера создания НЭС

Если пользователь выбирает пункт «Да, нейронная сеть уже обучена», открывается окно с выбором нейронной сети. Окно с выбором нейронной сети изображено на рисунке 4.6.

Рисунок 4.6 -Диалоговое окно выбора нейронной сети мастера создания НЭС

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

Если выбранный файл успешно прошел проверки на корректность, появляется окно с информацией об успешной загрузке сети (рисунок 4.7).

Рисунок 4.7 - Окно с информацией об успешном импортировании нейронной сети Matlab

При нажатии на кнопку «Далее» информация о выбранной из списка нейронной сети сохраняется в свойстве текущего проекта и вызывается окно ввода параметров мастера создания НЭС, изображенное на рисунке 4.8.

Рисунок 4.8 - Окно ввода характеристик объекта мастера создания НЭС

Окно ввода характеристик объекта мастера создания НЭС вызывается с уже предустановленным набором входных и выходных параметров по умолчанию. Количество входных и выходных параметров в данном наборе обусловлено количеством входов и выходов выбранной нейронной сети. Имена входных и выходных параметров, а также тип поля каждого входного параметра можно редактировать нажатием на соответствующие кнопки «Редактировать». При её нажатии открывается окно редактирования параметра (рисунок 4.9).

Рисунок 4.9 - Окно редактирования параметра

При нажатии на кнопку «Список» если тип поля задан как «Список параметров», открывается окно добавления и сопоставления элементов списка с числовыми параметрами (рисунок 4.10).

Рисунок 4.10 - Окно добавления и сопоставления элементов списка с числовыми параметрами

После редактирования параметров при нажатии на кнопку «Далее» окна ввода характеристик объекта мастера создания НЭС, мастер создания завершает свою работу и на вкладке НЭС (рисунок 4.3) предлагается ввести параметры для прогнозирования и предоставляется возможность непосредственно спрогнозировать нужный показатель.

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

После того, как все характеристики заданы и нажата кнопка «Далее» окна ввода характеристик объекта мастера создания НЭС, открывается окно выбора данных для обучения нейронной сети мастера создания НЭС (рисунок 4.12) с пустыми полями параметр и имя столбца в таблице. При нажатии на кнопку «Загрузить» появляется диалоговое окно выбора файла формата Excel. Первый ряд листа файла Excel должен содержать наименования столбцов, а остальные ряды должны содержать соответствующие числовые данные, относящиеся к тому или иному столбцу. При несоответствии файла Excel вышеописанному шаблону в программе возникает исключение и выводится окно с информацией о несоответствии загружаемого файла Excel требуемому шаблону. Предлагается заново загрузить другой файл Excel. Если файл успешно загружен, открывается окно с загруженными данными для обучения (рисунок 4.11). Данное окно может быть закрыто и впоследствии восстановлено нажатием на кнопку «Просмотр данных».

Рисунок 4.11 - Окно с загруженными данными для обучения

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

Рисунок 4.12 - Окно выбора данных для обучения

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

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

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

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

В поле макс. циклов задается максимальное количество циклов обучения нейронной сети (Бесконечно или положительное целое число).

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

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

Рисунок 4.13 - Окно обучения нейронной сети

Можно также настроить дополнительные параметры, специфические для каждого типа сети при нажатии на кнопку «Дополнительные параметры» (например, выбор алгоритма обучения и архитектуры для искусственной нейронной сети типа многослойный персептрон). После настройки всех параметров можно обучить искусственную нейронную сеть нажатием кнопки «Обучить сеть», при этом появляется окно с информацией об обучении (рисунок 4.14).

Рисунок 4.14 - Окно с информацией об обучении нейронной сети

Можно остановить обучение сети, нажав кнопку «СТОП», отменить обучение, нажав кнопку «ОТМЕНА». Возможность нажать кнопку «ОК» появляется только при достижении заданной ошибки обучения или максимального цикла (как критериев останова).

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

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

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

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

При выборе подпункта импортировать из Matlab появляется диалоговое окно с предложением выбрать один из доступных .mat файлов, содержащих созданную и обученную в среде Matlab нейронную сеть типа многослойный персептрон или РБФ. Если нейронная сеть Matlab не может быть импортирована по какой-либо причине (например, если нейронная сеть была создана и обучена в версии Matlab, отличной от 2010a и является несовместимой с данной версией или если в выбранном .mat файле не может быть найдена нейронная сеть с именем «network»), в программе возникает исключение и выводится окно с информацией об ошибке.

При выборе подпункта «Загрузить готовую нейронную сеть» появляется диалоговое окно с предложением выбрать один из доступных .ncnet файлов, содержащих созданную и обученную в разработанном приложении нейронную сеть типа «многослойный персептрон» или «РБФ».

При выборе подпункта «Создать новую нейронную сеть» появляется окно с предложением создать новую нейронную сеть, в котором можно задать тип сети, количество слоёв сети и количество нейронов в каждом из слоев (только для ИНС типа «многослойный персептрон»), предпочитаемый алгоритм обучения сети, максимальное количество циклов обучения, желаемая ошибка обучения (рисунок 4.13) .

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

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

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

В режиме работы НЭС упрощенный доступна только одна вкладка НЭС. На ней располагается компонент DataGridView с возможностью ввода параметров одного или нескольких объектов для получения некоторого множества ответов (прогнозов) относительно его стоимостных показателей, например, предлагается заполнить такие параметры как «Количество этажей в доме», «Далеко ли от центра расположен дом», «Год постройки дома», «Количество квадратных метров» для прогнозирования стоимости квартиры в зависимости от этих параметров. Параметры и типы параметров задаются в процессе работы «мастера создания НЭС».

Также на этой вкладке расположена кнопка «Получить ответы», которая передает заполненные данные на выбранную в раскрывающемся списке «ИНС» нейронную сеть и выдает окно с полученными ответами.

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

В режиме работы «Продвинутый» помимо вкладки НЭС доступны вкладки «Данные» и «Нейронная сеть».

Вкладка «Данные» (рисунок 4.15) содержит информацию о загруженных данных для обучения и тестирования и предоставляет возможность нормализации данных в одном из следующих интервалов: [-1;1], [0;1], [-0,5;0,5].

Рисунок 4.15 - Вкладка «Данные» основного окна программы

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

Вкладка «Нейронная сеть» (рисунок 4.16) содержит информацию о загруженных и созданных нейронных сетях.

Рисунок 4.16 - Вкладка «Нейронная сеть» основного окна программы

Предоставляется возможность тестирования и удаления выбранной нейронной сети (тестовыми данными считаются выбранные данные для тестирования на вкладке «Данные»). При нажатии на кнопку «Удалить сеть» удаляется выбранная из списка искусственная нейронная сеть. При нажатии на кнопку «Тестирование» появляется окно со списком ответов для каждого тестируемого входного вектора.

4.5 Разработка алгоритма загрузки нейронной сети в проект

Алгоритм загрузки нейронной сети в проект представляет собой последовательность действий, необходимых для добавления нейронной сети, созданной в программной среде Matlab, или пользовательской нейронной сети в «проект НЭС».

Процесс загрузки состоит из взаимосвязанных, последовательных этапов.

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

На втором этапе выполняется проверка содержания открытого файла. Если был открыт файл с расширением .mat, выполняется предположение о том, что загружается нейронная сеть, созданная и обученная в программной среде Matlab. Вызывается функция созданной в среде Matlab динамической библиотеки matnets.dll, которая открывает загруженный .mat файл как проект Matlab, в котором выполняется поиск переменной с именем «network». Если переменная с именем «network» не найдена, функция возбуждает исключение, которое перехватывается в программе и выводится сообщение о невозможности загрузки нейронной сети с описанием причины неудачи, работа алгоритма прекращается. Если переменная с именем «network» найдена, выполняется предположение о том, что данная переменная представляет собой объект нейронной сети и у него средствами библиотеки matnets.dll запрашивается ряд свойств (количество слоев, нейронов и т.п.). Если функция, запрашивающая свойства нейронной сети возбуждает исключение, оно перехватывается и выводится сообщение о невозможности загрузки нейронной сети с описанием причины неудачи, в случае же успешного вызова функции, нейронная сеть добавляется в проект. Работа алгоритма прекращается.

Если был открыт файл с расширением .ncnet, то средствами библиотеки Encog выполнятся преобразование файла к объекту типа object. При успешном преобразовании файла к объекту, у объекта вызывается метод GetType(). Если тип объекта соответствует типу BasicNetwork или RBFNetwork, выполняется приведение типа и определение параметров сети, сеть добавляется в проект, работа алгоритма завершается. Если любое из вышеперечисленных действий возбуждает исключение или не выполняется одно из условий, то выдается сообщение о невозможности загрузки нейронной сети с описанием причины неудачи, работа алгоритма завершается. Схема данного алгоритма представлена в приложении Б.

4.6 Разработка алгоритма работы конструктора создания нейросетевой экспертной системы

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

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

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

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

На этапе выбора данных для обучения нейронной сети мастера создания НЭС пользователю необходимо при нажатии на кнопку «Загрузить» выбрать файл формата Excel для его дальнейшей обработки. Если файл успешно загружен, то после нажатия кнопки «Далее» выполняется переход к этапу сопоставления данных из таблицы с введенными на этапе ввода характеристиками объекта. После того, как все параметры сопоставлены, при нажатии на кнопку «Далее» закрывается окно выбора данных и выполняется переход к этапу создания и обучения искусственной нейронной сети мастера создания НЭС. Если нажата кнопка «Отмена», то мастер создания НЭС завершает работу без сохранения результатов.

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

4.7 Разработка алгоритма загрузки данных в проект

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

Процесс загрузки состоит из взаимосвязанных, последовательных этапов.

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

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

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

Выводы

Обзор основных средств разработки и языков программирования показал, что для решения поставленной задачи наилучшим образом подходит бесплатная среда разработки Microsoft Visual Studio 2010 Express и современный объектно-ориентированный язык программирования C#. Разработана структура программы с использованием нисходящего метода проектирования. Реализованы основные модули программы. При разработке пользовательского интерфейса программы решено выбрать оконный интерфейс, реализованный в графическом режиме с использованием стандартных средств Windows Forms - части Microsoft .NET Framework. Также произведена разработка основных алгоритмов работы программы.

5. Организационно-экономический раздел

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

5.1 Экономическое обоснование необходимости разработки программного обеспечения

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

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

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

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

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

5.2 Расчёт затрат на создание программного обеспечения, цены и прибыли от его реализации

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

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

Таблица 5.1 - Профессионально-квалификационный состав разработчиков

Наименование должности

Численность, чел

Месячный оклад, руб

Руководитель проекта

1

15000

Ведущий инженер-программист

1

12500

Инженер-программист

1

10000

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

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

,(5.1)

где Тp - расчетная трудоемкость выполнения работы;

tmin - минимальное время, необходимое для выполнения работы;

tmax - максимальное время, необходимое для выполнения работы.

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

Таблица 5.2 - Трудоёмкость выполнения работ

Наименование работы

Tmin,

час

Tmax,

час

Tp,

час

В том числе

руково-дитель

ведущий прог-

раммист

прог- раммист

Изучение технического задания

13

17

15

10

3

2

Подбор и изучение литературы, выбор прототипов

15

25

20

15

5

0

Анализ проблемы и существующих алгоритмов

30

60

45

25

10

10

Разработка структуры ПО, выбор инструментальных средств

35

55

45

25

12

8

Разработка входных и выходных форм

30

50

40

10

15

15

Разработка алгоритмов

40

70

50

25

15

10

Написание программы

200

300

205

5

50

150

Ввод программы в ЭВМ, ее отладка и тестирование

80

120

80

0

30

50

Разработка документации и чертежей

20

50

35

0

30

5

Написание инструкций для пользователя

12

20

16

0

8

8

Финансово-экономическое обоснование разработки ПО

6

10

8

8

0

0

Оформление документации с использованием ЭВМ

24

32

29

0

24

5

Маркетинговые исследования

12

20

16

16

0

0

Всего:

517

829

604

129

212

263

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

Таблица 5.3 - Комплексы работ по созданию программного обеспечения

Наименование
комплекса работ

Обозна-чение

Tp,

час

В том числе занят

руково-дитель

ведущий программист

програм-мист

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

Вмо

356

65

100

191

Ввод программы в ЭВМ, редактирование, трансляция, отладка и тестирование программы

Вм

80

0

30

50

Прочие затраты по разработке программы

Впр

88

58

18

12

Оформление программного продукта

Воф

64

0

64

10

Маркетинговые исследования

Вми

16

16

0

0

Всего:

Впо

604

129

212

263

Данные таблицы 5.3 служат исходной базой для расчета затрат на создание ПО.

Общие затраты на создание ПО определяются по формуле

, (5.2)

где Зсп - общие затраты на создание ПО;

Зрп - затраты на разработку ПО;

Нсп - налоги, включаемые в затраты по созданию ПО;

Зоф - затраты на оформление программного продукта и подготовку его к продаже, принимаются в размере 15 % от Зрп;

Зми - затраты на маркетинговые исследования, принимаются в размере 10 % от Зрп.

Величины налогов, включаемые в затраты по созданию ПО, рассчитываются укрупненно по формуле

,(5.3)

где ФОТоб - общий фонд оплаты труда работников, участвующих в создании ПО;

Сн - взносы в фонды ПФР (22%), ФСС (2,9%), ФОМС (5,1%), итого: 30%.

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

,(5.4)

где - время участия специалиста определённой квалификации в создании программного обеспечения, в часах;

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

- месячный оклад работника;

ds - длительность смены (восемь часов);

Др - среднее число рабочих дней в месяце (21 день);

П - премия, предусмотренная для работников, участвующих в создании программного продукта (25 % от Зпоб);

Врк - выплаты по районному коэффициенту (установлены для г. Кирова в размере 15 % от (ЗПоб + П)).

Затраты на разработку программного обеспечения рассчитываются по формуле

Зрп = Змо + Зком + Зпр ,

(5.5)

где Змо - затраты на создание математического обеспечения и написание программы;

Зком - затраты, связанные с работой компьютера при разработке ПО (ввод программы в ЭВМ, ее трансляция и редактирование, отладка, тестирование, корректировка и выполнение ПО);

Зпр - прочие затраты, связанные с разработкой ПО (изучение задания, литературы, патентов, анализ проблемы и существующих алгоритмов, проведение экономических расчетов и др.), принимаются 40 % от Змо.

Затраты на создание математического обеспечения и написание программы определяются по формуле

Змо = ЗПмо + П + Врк + Ссн · ФОТмо + Нр,

(5.6)

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

Ссн - общая ставка отчислений на социальные нужды (30 % от ФОТмо );

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

Нр - накладные расходы организации, где разрабатывается ПО (затраты на отопление, освещение, на содержание административно-управленческого персонала и др.), принимается в размере 100 % от ЗПмо.

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

ФОТмо = ЗПмо + П + Врк.

(5.7)

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

, (5.8)

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

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

Затраты, связанные с работой компьютера при разработке ПО, можно рассчитать укрупненно по формуле:

,

(5.9)

гдеЗе - затраты на электроэнергию, потребляемую компьютерами;

За - амортизационные отчисления от стоимости парка компьютеров.

Затраты на электроэнергию, потребляемую компьютерами определяются по формуле

Зе = N*T*C,

(5.10)

гдеN - установленная мощность одного компьютера, кВт (0,7 кВт);

T - время работы компьютеров, используемых при разработке ПО, час;

С - стоимость одного кВт/час, руб.

T = 212 + 263 = 475 часов

Зе = 0,7*475*2,57 = 854,53 руб.

Затраты на амортизационные отчисления определяются по формуле

За = Tпр*n*S/Tам,

(5.11)

гдеTпр - продолжительность осуществления проекта, месяц;

n - число компьютеров, используемых при разработке ПО, штук;

S - стоимость одного компьютера, руб;

Tам - срок полезного использования компьютеров, месяцев.

263

Tпр = = 1,565 месяца

8*21

1,565 *3*20000

Зa = = 2608,33 руб.

36

Зком = 854,53 + 2608,33 = 3462,86 руб.

Таким образом, согласно формуле (5.8), затраты на заработную плату работников, участвующих в создании математического обеспечения и написании программы равны

Фонд оплаты на создание математического обеспечения определяется по формуле (5.7)

ФОТмо = (25524,69+ 25524,69 0,25)(1 + 0,15) = 36691,74 руб.

Затраты на создание математического обеспечения и написание программы вычисляются по формуле (5.6) и составляют

Змо = 36691,74 (1+0,30)+ 25524,69= 73223,95 руб.

Затраты на разработку программного обеспечения определяются по формуле (5.5)

Зрп = 73223,95 (1 + 0,4) + 3462,86 = 105976,4 руб.

Фонд оплаты труда по созданию программы определяется по формуле (5.4)

ФОТоб =(1 + 0,25)(1 + 0,15)= 64021,99 руб.

Налоги, включаемые в затраты, согласно формуле (5.3), равны

Нсп = 64021,99 0,30 = 19206,6 руб.

Общие затраты на создание программного обеспечения вычисляются по формуле (5.2)

Зсп = 105976,4 (1 + 0,15 + 0,1) + 19206,6 = 151677,1 руб.

Смета затрат на создание программного обеспечения приведена в таблице 5.4.

Таблица 5.4 - Смета затрат на создание программного обеспечения

Наименование статьи затрат

Обозначение

Сумма, руб

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

ЗПмо

25524,69

Премия

П

6381,17

Выплаты по районному коэффициенту

Врк

4785,88

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

Ссн

9539,85

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

Нр

25524,69

Итого затрат на создание МО и написание программы

Змо

73223,95

Затраты, связанные с работой ЭВМ при разработке программного обеспечения

Зком

3462,86

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

Зпр

29289,59

Итого затрат на разработку программного обеспечения

Зрп

105976,40

Налоги, включаемые в затраты на создание программы

Нсп

19206,60

Затраты на оформление программного продукта

Зоф

15896,46

Затраты на маркетинговые исследования

Зми

10597,64

Всего затрат на создание программного обеспечения

Зсп

151677,10

После расчёта общих затрат на создание программного обеспечения определяются его проектные цены:


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.