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

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

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

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

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

2.5. Результаты работы генетического алгоритма

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

Таблица 2.5. Примеры инвестиционных проектов

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

Стоимость проекта, руб.

Средняя чистая прибыль, руб./год

Оптимизация компрессорной станции

2 000 000

340 000

Установка теплового насоса на систему охлаждения

5 000 000

120 000

Модернизация системы освещения

3 000 000

360 000

Ремонт паропровода

1 500 000

360 000

В качестве входных параметров генетического алгоритма используем параметры, заданные по умолчанию, а именно целевая функция - бухгалтерская рентабельность инвестиций (ROI), вероятность кроссовера - 0,1, вероятность мутации - 0,1, процент элитарности - 10%. Максимальное количество доступных инвестиций - 7 000 000 руб. Так как количество проектов для оптимизации не такое большое, то достаточным количеством поколений генетического алгоритма будет 100.

Выполнение генетического алгоритма показало, что все доступные инвестиции, а именно 7 000 000 руб. необходимо вложить в проект «Установка теплового насоса на систему охлаждения». Выполнение алгоритма было выполнено за 3318,9824 миллисекунд.

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

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

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

Таблица 2.6 Примеры инвестиционных проектов

Название проекта

Минимальные инвестиции, руб.

Максимальные инвестиции, руб.

Средняя чистая прибыль, руб./год.

1

Оптимизация компрессорной станции

2 500 000

4 000 000

340 000

2

Установка теплового насоса на систему охлаждения

3 000 000

5 500 000

420 000

3

Модернизация системы освещения

2 500 000

4 000 000

360 000

4

Ремонт паропровода

500 000

3 000 000

360 000

5

Установка конденсатоотводчиков

3 000 000

3 000 000

700 000

6

Перевод освещения цехов на светодиодное

2 000 000

2 000 000

550 000

7

Теплоизоляция пропарочных котлов

1 500 000

6 500 000

400 000

8

Установка питательных насосов

5 000 000

5 000 000

200 000

9

Установка гидротурбин на стоках

2 500 000

9 000 000

450 000

10

Установка устройств компенсации реактивной мощности

3 000 000

3 000 000

400 000

11

Составление технологических карт для работы оборудования с максимальным КПД

1 000 000

7 000 000

520 000

12

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

500 000

4 000 000

340 000

13

Возврат конденсата

500 000

4 000 000

450 000

14

Корректировка удельных норм на энергоресурсы

5 000 000

10 000 000

280 000

В качестве входных параметров генетического алгоритма используем параметры, заданные по умолчанию, а именно целевая функция - бухгалтерская рентабельность инвестиций (ROI), вероятность кроссовера - 0,1, вероятность мутации - 0,1, процент элитарности - 10%. Достаточным количеством поколений установим 1000

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

Рисунок 2.3. Результаты оптимизации

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

2.6. Проектирование модели классов

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

Таблица 2.7 Соответствие функциональных требований и классов

Требование

Класс

1

Возможность добавления, удаления, изменения информации о предприятии

User (Пользователь),

System (Система),

Company (Компания)

2

Возможность добавления, удаления, изменения информации о пользователе

User (Пользователь),

System (Система)

3

Возможность добавления, удаления, изменения информации об инвестиционном проекте

User (Пользователь),

System (Система),

Project (Проект)

4

Возможность добавления, удаления, изменения информации справочников

User (Пользователь),

System (Система),

Dictionaries (Справочники)

5

Возможность отображения информации о предприятии, пользователе, инвестиционном проекте и информации из справочников

User (Пользователь),

System (Система),

Company (Компания),

Project (Проект),

Dictionaries (Справочники)

6

Возможность фильтрации отображаемых данных

User (Пользователь),

System (Система),

Filter (Фильтр)

7

Возможность авторизации пользователя в системе

User (Пользователь),

System (Система)

8

Возможность импорта информации из файлов, читаемых средствами продуктов MicrosoftOffice

User (Пользователь),

System (Система),

File (Файл импорта)

9

Возможность расчета оптимального распределения инвестиций с помощью генетического алгоритма

System (Система),

Optimizer (Генетический алгоритм)

10

Возможность предоставления результатов обработки в удобном пользователю виде

Result (Результат)

11

Возможность генерации отчетов об оптимизации распределения инвестиций на предприятии

Report (Отчет)

12

Возможность экспорта отчетов в файлы, читаемые средствами продуктов MicrosoftOffice

User (Пользователь),

System (Система),

File (Файл импорта)

Таким образом, получились следующие классы:

· класс System - реализует общий функционал системы;

· класс User - реализует функционал работы с информацией о пользователях системы;

· класс Company, - реализует функционал работы с информацией о компаниях;

· класс Project - реализует функционал работы с информацией о проектах;

· класс Dictionaries - реализует функционал работы с информацией справочников;

· класс Filter - реализует функционал фильтра информации;

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

· класс Result - реализует функционал работы с результатами оптимизации распределения инвестиций;

· класс Report, - реализует функционал формирования отчетов;

· класс File - реализует функционал импорта и экспорта файлов.

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

Таблица 2.8. Поля и методы классов

Класс

Поля

Методы

1

System

Authorize() - авторизация пользователя,

Validate() - валидация данных

2

User

Id - уникальный номер пользователя,

Name - имя пользователя,

Login - логин пользователя,

Password - пароль пользователя,

CompanyId - компания пользователя

AddUser() - добавления пользователя,

ChangeUser() - изменение пользователя,

DeleteUser() - удаление пользователя

3

Company

Id - уникальный идентификатор компании,

Name - название компании,

CIF[] - денежные притоки,

COF[] - денежные оттоки

AddCompany() - добавление коспании,

ChangeCompany() - изменение компании,

DeleteCompany() - удаление компании,

4

Project

Id - уникальный идентификатор проекта,

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

Description - описание проекта,

CompanyId - компания проекта,

UserId - пользователь проекта

AddProject() - добавлениепроекта,

ChangeProject() -изменение проекта,

DeleteProject() -удаление проекта,

ApplyFilter() - отфильтровать данные,

Show() - отобразить данные проекта,

ShowAll() - отобразить все проекты

5

Dictionary

Id - уникальный идентификатор справочника,

Name-название справочника,

Elements[] - элементы справочника

AddDictionary() - добавление справочника,

ChangeDictionary() - изменение справочника,

DeleteDictionary() - удаление справочника,

ShowAll() - отобразить элементы справочника

6

Filter

Elements() - параметры фильтра

7

Optimizer

Population[Individuals] -популяция,

Mutation_Probability - вероятностьмутации,

Fitness_Function - целеваяфункция,

Count - количество особей в популяции,

Crossover_Probability - вероятность скрещивания,

SelectionProbability - вероятность селекции

SetParams() - установка параметров генетического алгоритма,

Initialize() - инициализация популяции,

FitnessFunction() - инициализация целевой функции,

Selection() - реализация оператора селекции,

Crossover() - реализация оператор кроссовера,

Mutation - реализация оператора мутации,

Decode() -декодирование хромосом особи,

GetResult() -получение результата

8

Result

Population[] - популяция,

Individual - особь

GetResult() - получение результата,

Show() - отображение результата

9

File

Extension - разрешение файла,

Size - размер файла,

Path - путь файла,

Content - содержание файла

ImportFile() - импорт файла,

ExportFile() - экспорт файла

10

Report

Content - содержание отчета в формате XML

GetReport() - получение отчета

На рисунке 2.4 представлена диаграмма классов, сформированная на основании вышеописанных таблиц.

Рисунок 2.4. Диаграмма классов

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

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

Рисунок 2.5. Схема взаимодействия

2.8. Проектирование базы данных

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

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

Таблица 2.9. Отношения базы данных

Отношение

Атрибут

Тип данных

Размер поля

Условие на значение

Значение по умолчанию

Account

Account_id

int

Длинное целое

Name

Nvarchar

30

Login

Nvarchar

20

Password

Nvarchar

50

Company_id

int

Длинное целое

Company

Company_id

int

Длинное целое

Name

Nvarchar

30

Company_periods

Period_id

int

Длинное целое

Company_id

int

Длинное целое

Period_start

datetime

Краткий формат даты

Period_end

datetime

Краткий формат даты

>Period_Start

CIF

float

Число с плавающей запятой

>0

0

COF

float

Число с плавающей запятой

>0

0

IC

float

Число с плавающей запятой

>0

0

r

float

Число с плавающей запятой

>0

0

Project

Project_id

int

Длинное целое

Name

Nvarchar

100

Company_id

int

Длинное целое

Account_id

int

Длинное целое

Description

Nvarchar

500

Projects_periods

Period_id

int

Длинное целое

Project_id

int

Длинное целое

Period_start

datetime

Краткий формат даты

Period_end

datetime

Краткий формат даты

>Period_Start

CIF

float

Число с плавающей запятой

>0

0

COF

float

Число с плавающей запятой

>0

0

IC_min

float

Число с плавающей запятой

>0

0

IC_max

float

Число с плавающей запятой

>0

0

RV

float

Число с плавающей запятой

>0

0

PN

float

Число с плавающей запятой

>0

0

Optimization

Optimization_id

int

Длинное целое

Company_id

int

Длинное целое

Period_start

datetime

Краткий формат даты

Period_end

datetime

Краткий формат даты

>Period_Start

Function_id

int

Длинное целое

Mutation_probability

float

Число с плавающей запятой

>0

0

Crossover_probability

float

Число с плавающей запятой

>0

0

Elitism_percentage

int

Длинное целое

>0

0

Max_generations

int

Длинное целое

>0

0

OptimizationProject

OptimizationProject_id

int

Длинное целое

Optimization_id

int

Длинное целое

Project_id

int

Длинное целое

IC

float

Число с плавающей запятой

>0

0

Function_value

float

Число с плавающей запятой

>0

0

Function

Function_id

int

Длинное целое

Name

Nvarchar

30

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

Рисунок 2.6. Схема базы данных

Глава 3. Разработка информационной системы

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

Для разработки был выбран стандартный шаблон проектирования Model-View-Controller (MVC). Схема его архитектуры разделяет приложение на три основных компонента: модель, представление и контроллер. Платформа MVC определяется в сборке System.Web.Mvc.

В состав платформы MVC входят следующие компоненты.

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

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

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

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

3.1. Разработка модели данных

Для разработки модели данных воспользуемся технологией доступа к данным Entity Framework, разработанной Microsoft. Entity Framework опирается на концептуальную модель сущностей предметной области, называемую Entity Data Model (EDM). Так как база данных для приложения уже создана заранее, то выберем рабочий процесс для создания этой модели Database First, то есть используем мастер для генерации на ее основе концептуальной модели. Модель данных представлена на рисунке 3.1.

Рисунок 3.1. Модель данных

3.2. Разработка форм клиентского приложения

Для разработки форм клиентского приложения был выбран шаблон SmartAdminWebApp[24]. Этот шаблон включает в себя версию для ASP.NET, поэтому его легко интегрировать в MVCприложение. SmartAdminимеет обширную коллекцию различных повторно используемых компонентов пользовательского интерфейса, интегрированных с различными плагинами. SmartAdminсодержит в себе файлы HTML, CSS, JSи LESSдля построения пользовательского интерфейса. Кроме того, SmartAdminпозволяет адаптировать верстку Web-страницы практически для любого размера.

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

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

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

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

Рисунок 3.2. Форма оптимизации

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

Рисунок 3.3. Форма для отображения списка проектов

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

Рисунок 3.4 Форма для отображения, создания и изменения проекта

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

Рисунок 3.5. Форма для изменения и добавления периода в проекте

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

Рисунок 3.6. Форма для отображения периодов

Рисунок 3.7. Форма для добавления и изменения периода

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

Рисунок 3.8. Форма авторизации

Рисунок 3.9 Форма восстановления пароля

Рисунок 3.10 Форма регистрации

Заключение

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

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

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

В результате были выполнены следующие задачи:

1. Выполнен анализ предметной области.

2. Выполнено проектирование информационной системы.

3. Выполнена разработка прототипа информационной системы.

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

Библиографический список

1. Батищев Д. И., Неймарк Е. А., Старостин Н. В. Применение генетических алгоритмов к решению задач дискретной оптимизации. - Н. Новгород: Изд-во Нижегородского госуниверситета. - 2006.

2. Васина А.А. Финансовая диагностика и оценка проектов.- СПб.: Питер, 2004.- С.365-389.

3. Долан Э.Дж., Линдсей Д. Макроэкономика. СПб.: Литера плюс. - 1994. С. 35.

4. Закон Ф. Об инвестиционной деятельности в Российской Федерации, осуществляемой в форме капитальных вложений. - 1999.

5. Захарова Е. М., Минашина И. К. Обзор методов многомерной оптимизации. Информационные процессы. - 2014. - Т. 14. - №. 3. - С. 256-274.

6. Звонков В. Б., Попов А. М. Сравнительное исследование классических методов оптимизации и генетических алгоритмов. Вестник Сибирского государственного аэрокосмического университета им. академика МФ Решетнева. - 2013. - №. 4 - С. 50.

7. Ивасенко А. Г., Никонова Я. И., Сизова А. О. Управление проектами. - Новосибирск: СГГА. - 2007.

8. Игошин Н. В. Инвестиции. Организация управления и финансирование. - 2001.

9. Кейнс Д. М. Антология экономической классики. Общая теория занятости, процента и денег. М.: ЭКОНОВ, Ключ. - 1993.

10. Костенко В.А. Задачи синтеза архитектур: формализация, особенности и возможности различных методов для их решения. Программные системы и инструменты. Тематический сборник. М.: Изд-во МГУ. - 2000. - №1.

11. Липсиц И.В., Косов В.В. Экономический анализ реальных инвестиций: Учебное пособие.- М.: Экономистъ,2004. - С. 347.

12. Лукасевич И. Я. Инвестиции: учебник для студентов высших учебных заведений, обучающихся по направлению "Экономика" и специальностям"Финансы и кредит" и "Бухгалтерский учет, анализ и аудит". М.: ИНФРА-М. - 2013.

13. Лядова Л.Н. Основы СУБД Access: учеб.-метод. пособие / Л.Н. Лядова. Пермский филиал НИУ ВШЭ. - Пермь, 2013. - 100 с.: ил.

14. Макконнелл К. Р., Брю С. Л. Экономикс: В 2-х т. М.: Республика. - 1992. - Т. 2. - С. 320.

15. Минаков И. А. Сравнительный анализ некоторых методов случайного поиска и оптимизации. Известия Самарского научного центра Российской академии наук. - 1999. - Т. 1. - №. 2.

16. Скурихин А. Н. Генетические алгоритмы. Новости искусственного интеллекта. - 1995. - Т. 4. - С. 5-48.

17. Староверова Г. С.,Медведев А. Ю., Сорокина И.В. Экономическая оценка инвестиций: учебное пособие. М.: КНОРУС. - 2006.

18. Цапунов С. Игонина Л. Л. Инвестиции: учебное пособие. Под ред. В. А. Слепова. М.: Экономистъ. - 2004. - С. 106-112.

19. Graham J. R., Harvey C. R. The theory and practice of corporate finance: Evidence from the field. Journal of financial economics. - 2001. - Т. 60. - №. 2. - С. 187-243.

20. Graham J., Harvey C. How do CFOs make capital budgeting and capital structure decisions? Journal of applied corporate finance. - 2002. - Т. 15. - №. 1. С. 8-23.

21. Holland J. H. Adaptation in natural and artificial systems. An introductory analysis with application to biology, control, and artificial intelligence. Ann Arbor, MI: University of Michigan Press. - 1975. - С. 205.

22. Holland J. H., Goldberg D. Genetic Algorithms in Search, Optimization and Machine Learning. Ed: Addison-Wesley, Reading, MA. - 1989.

23. Martello S., Toth P. Knapsack problems: algorithms and computer implementations. - John Wiley & Sons, Inc.,- 1990.

Приложение А

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

Таблица А.1. Прецедент «Работа с данными о компании»

Краткое описание

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

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Ввод информации о компании, сохранение;

· Выбор записи компании, удаление, сохранение;

· Выбор записи компании, изменение, сохранение.

Альтернативные потоки

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

Постусловия

Добавление, удаление, изменение записи о компании в базе данных

Таблица А.2. Прецедент «Работа с данными о пользователе»

Краткое описание

Прецедент дает возможность добавлять, удалять и изменять данные о пользователе в базе данных

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Ввод информации о пользователе, сохранение;

· Выбор записи пользователя, удаление, сохранение;

· Выбор записи пользователя, изменение, сохранение.

Альтернативные потоки

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

Постусловия

Добавление, удаление, изменение записи о пользователе в базе данных

Таблица А.3. Прецедент «Работа с данными об инвестиционном проекте»

Краткое описание

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

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Ввод информации об инвестиционном проекте, сохранение;

· Выбор записи инвестиционного проекта, удаление, сохранение;

· Выбор записи инвестиционного проекта, изменение, сохранение.

Альтернативные потоки

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

Постусловия

Добавление, удаление, изменение записи об инвестиционном проекте в базе данных

Таблица А.4. Прецедент «Работа с данными справочников»

Краткое описание

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

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Ввод информации, сохранение;

· Выбор записи в справочнике, удаление;

· Выбор записи в справочнике, изменение, сохранение изменения;

· Добавление нового справочника, сохранение.

Альтернативные потоки

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

Постусловия

Добавление, удаление, изменение записи в справочнике в базе данных

А.5. Прецедент «Отображение информации»

Краткое описание

Прецедент дает возможность отображать выбранную информацию на экране

Актеры

Пользователь, Информационная система

Предусловия

Выполнено подключение к базе данных, выбор Пользователем информации для отображения

Основной поток

· Чтение информации из базы данных;

· Формирование экранной формы с информацией.

Альтернативные потоки

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

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

Постусловия

На экране отображается выбранная пользователем информация

Таблица А.6. Прецедент «Фильтрация данных»

Краткое описание

Прецедент дает возможность отфильтровывать отображаемую информацию по заданным пользователем параметрам

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Выполнение запроса на фильтрацию данных;

· Отображение отфильтрованных данных.

Альтернативные потоки

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

Постусловия

На экране отображаются выбранные пользователем данные, отфильтрованные по выбранным пользователем параметрам

Таблица А.7. Прецедент «Авторизация»

Краткое описание

Авторизация пользователя в Информационной системе для доступа к ее функционалу и данным

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Выполнение запроса в базу данных;

· Вход пользователя систему;

· Получение данных пользователя.

Альтернативные потоки

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

· При неверном вводе пользователя логина и пароля пользователю выдается сообщение о том, что введены неверные данные

Постусловия

Работа Пользователя в Информационной системе

Таблица А.8. Прецедент «Импорт данных»

Краткое описание

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

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Выбор пользователем файла импорта;

· Чтение файла импорта информационной системой;

· Запись данных в базу данных.

Альтернативные потоки

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

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

· При неверном формате файла пользователю выдается сообщение о том, что формат выбранного файла неверен

· При неверном формате данных в файле пользователю выдается сообщение о том, что формат данных в выбранном файле неверен

Постусловия

Добавление записи в базу данных

Таблица А.9. Прецедент «Оптимизация распределения инвестиций»

Краткое описание

Прецедент дает возможность рассчитать оптимальное распределение инвестиций

Актеры

Информационная система

Предусловия

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

Основной поток

· Выбор пользователем инвестиционных проектов для оптимизации;

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

· Формирование результата.

Альтернативные потоки

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

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

Постусловия

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

Таблица А.10. Прецедент «Отображение результатов»

Краткое описание

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

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Выбор пользователем параметров отображения;

· Чтение данных из базы данных;

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

· Вывод результатов на экран.

Альтернативные потоки

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

Постусловия

Вывод результатов вычислений на экран

Таблица А.11. Прецедент «Генерация отчетов»

Краткое описание

Прецедент дает возможность сгенерировать отчет по результатам расчетов оптимального распределения инвестиций по заданным пользователем параметрам

Актеры

Пользователь, Информационная система

Предусловия

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

Основной поток

· Выбор пользователем параметров отчета;

· Чтение данных из базы данных;

· Генерация отчета;

· Вывод отчета на экран.

Альтернативные потоки

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

Постусловия

Вывод отчета на экран

Таблица А.12. Прецедент «Экспорт данных»

Краткое описание

Прецедент дает возможность экспортировать данные из базы данных

Актеры

Пользователь, Информационная система

Предусловия

Выполнено подключение к базе данных, пользователь авторизован

Основной поток

· Выбор пользователем данных для экспорта;

· Выбор пользователем формата экспорта данных;

· Генерация файла для экспорта;

· Предоставление сгенерированного файла пользователю.

Альтернативные потоки

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

Постусловия

Просмотр сгенерированного файла средствами MicrosoftOffice

Приложение Б

Построение диаграмм активности

Рисунок Б.1. Диаграмма деятельности для прецедентов «Работа с данными о компании», «Работа с данными о пользователе», «Работа с данными об инвестиционном проекте», «Работа с данными справочников»

Рисунок Б.2. Диаграмма деятельности для прецедента «Отображение информации»

Рисунок Б.3. Диаграмма деятельности для прецедента «Фильтрация данных»

Рисунок Б.4. Диаграмма деятельности для прецедента «Авторизация»

Рисунок Б.5. Диаграмма деятельности для прецедента «Импорт данных»

Рисунок Б.6. Диаграмма активности для прецедентов «Оптимизация распределения инвестиций» и «Отображение результатов»

Рисунок Б.7. Диаграмма деятельности для прецедентов «Генерация отчетов» и «Экспорт данных»

Приложение В

Реализация генетического алгоритма

usingSystem;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using SmartAdminMvc.Models;

using GAF;

using GAF.Extensions;

using GAF.Operators;

namespace SmartAdminMvc.InvestmentsGeneticAlgorithm

{

publicenumFitnessFunctionType

{

PP = 1,

ROI = 2,

DPP = 3,

NPV = 4,

IRR = 5,

PI = 6

}

publicclassInvestmentsGeneticAlgorithm

{

publicList<Projects> projects { get; set; } //проекты

publicProjects[] projectsArray

{

get

{

return projects.ToArray();

}

} //массивпроектов

publicFitnessFunctionType ffType { get; set; } //типфункциифитнесса

publicdouble crossoverProbability { get; set; } //вероятностькроссовера

publicdouble mutationProbability { get; set; } //вероятностьмутации

publicint elitismPercentage { get; set; } //вероятностьэлитизма

publicdouble maxInvestment { get; set; } //максимальновозможныеинвестиции

publicint maxGenerations { get; set; } //максимально возможное количество поколений

DateTime begin { get; set; } //началопериода

DateTime end { get; set; } //конецпериода

double totalCost { get; set; } //общая сумма (для пропорции)

//конструктор

public InvestmentsGeneticAlgorithm(FitnessFunctionType type,

double crossProb, double mutatProb,

List<Projects> Projects,

DateTime start, DateTime finish,

double investments, int elPerc,

int generations)

{

ffType = type;

crossoverProbability = (crossProb >= 1) ? 0 : crossProb;

mutationProbability = (mutatProb >= 1) ? 0 : mutatProb;

projects = Projects;

maxInvestment = (investments >= 0) ? investments : 0;

begin = start;

end = finish;

elitismPercentage = (elPerc >= 0 && elPerc <= 100) ? elPerc : 0;

maxGenerations = (generations >= 0) ? generations : 1000;

}

//самалгоритм

publicvoid Algorithm()

{

var population = newPopulation(); //генерацияпопуляции

var chromosome = newChromosome(); //генерацияхромосомы

double[] costs = newdouble[projectsArray.Count()];

totalCost = 0;

for (int i = 0; i < projectsArray.Count(); i++)

{

var period = projectsArray[i].ProjectPeriods.Where(x => x.Period_begin >= begin && x.Period_end <= end).FirstOrDefault();

while (!(costs[i] >= period.IC_min && costs[i] <= period.IC_max))

{

Random random = newRandom();

costs[i] = random.NextDouble() * (maxInvestment - 0) + 0; //случайнозаданнаявеличинаинвестицийвпроект

}

totalCost += costs[i];

}

for (int i = 0; i < projectsArray.Count(); i++)

{

chromosome.Genes.Add(newGene(costs[i] / totalCost)); //добавлениегенавхромомму

}

chromosome.Genes.ShuffleFast(); //перемешиваниехромосом

population.Solutions.Add(chromosome); //добавлениехромосом

//операторыГА

var elite = newElite(elitismPercentage);

var crossover = newCrossover(crossoverProbability, true)

{

CrossoverType = CrossoverType.SinglePoint

};

var mutation = newBinaryMutate(mutationProbability, true);

//ГА

var ga = new GAF.GeneticAlgorithm(population, CalculateFitness);

//добавлениесобытий

ga.OnGenerationComplete += ga_OnGenerationComplete;

ga.OnRunComplete += ga_OnRunComplete;

//добавлениеоператоров

ga.Operators.Add(elite);

ga.Operators.Add(crossover);

ga.Operators.Add(mutation);

ga.Run(TerminateAlgorithm);

}

//позавершениипоколения

publicvoid ga_OnRunComplete(object sender, GaEventArgs e)

{

var fittest = e.Population.GetTop(1)[0];

for (int i = 0; i < fittest.Genes.Count(); i++)

{

try

{

Console.WriteLine(projectsArray[i].Name + ": " + (double)fittest.Genes[i].RealValue*totalCost);

}

catch { }

}

}

//позавершенииалгоритма

privatevoid ga_OnGenerationComplete(object sender, GaEventArgs e)

{

var fittest = e.Population.GetTop(1)[0];

var evaluation = CalculateROI(fittest);

Console.WriteLine("Generation: {0}, Fitness: {1}, ROI: { 2}", e.Generation, fittest.Fitness, evaluation);

}

//условиеостановаалгоритма

publicbool TerminateAlgorithm(Population population,

int currentGeneration, long currentEvaluation)

{

return currentGeneration > maxGenerations;

}

//рассчетфитнесс-функции

publicdouble CalculateFitness(Chromosome chromosome)

{

return CalculateROI(chromosome);

}

//рассчетфункциибухгалтерскойрентабельностиинвестиций

publicdouble CalculateROI(Chromosome chromosome)

{

double totalROI = 0;

for (int i = 0; i < chromosome.Genes.Count(); i++)

{

try

{

var project = projectsArray[i];

var period = project.ProjectPeriods.Where(x => x.Period_begin >= begin && x.Period_end <= end).FirstOrDefault();

double ROI = (Common.ToDouble(chromosome.Genes[i].RealValue * totalCost) - Common.ToDouble(period.RV) != 0)

? Common.ToDouble(project.PN) * 2 / Common.ToDouble(chromosome.Genes[i].RealValue * totalCost) - Common.ToDouble(period.RV) : 0;

totalROI += ROI;

}

catch { }

}

return totalROI;

}

}

}

Размещено на Allbest.ur


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

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