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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    4,21 Мб
  • Опубликовано:
    2012-07-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

ДГТУ

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

«ПОВТ и АС»


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к преддипломной практике на тему

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

Практикант Олипир Михаил Викторович Группа ВИS-31

Специальность 230105 - Программное обеспечение вычислительной техники и автоматизированных систем

Руководитель работы /Жуков А.И./

Нормоконтролер ______________ Котельникова И. В./



Ростов-на-Дону 2012 г.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

ДГТУ

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

«ПОВТ и АС»

Задание

на преддипломную практику

Студент Олипир Михаил Викторович Группа ВИS-31

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

Срок представления отчета к защите " 03 " марта 2012 г.

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

Руководитель работы / Жуков А. И. /

Задание принял к исполнению _______________ Олипир М.В./

« ____» ___________2012 год

Реферат

Отчет содержит: листов - 60, рисунков - 11, таблица 1, приложений - 1.

Ключевые слова: ГЕНЕТИЧЕСКИЙ АЛГОРИТМ, ХИМИЧЕСКОЕ РАВНОВЕСИЕ, ВЕБ-ПРИЛОЖЕНИЕ.

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

Введение

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

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

При сведении задач кинетики к задачам термодинамики удается, с одной стороны, упростить описания изучаемых объектов, а с другой - сделать эти описания более разносторонними [1].

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

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

Математически проблема расчета равновесного состава формулируется как задача условной нелинейной многопараметрической оптимизации (математического программирования). Ее решение традиционными регулярными [3] и стохастическими [5] методами сопряжено с рядом сложностей. В результате возникают жесткие ограничения как на число разрешаемых в модели компонентов (веществ), так и на качество начального приближения к искомому равновесному составу [4]. Для преодоления названных ограничений в последнее время интенсивно развиваются эволюционные подходы к решению оптимизационных задач, адаптирующиеся к специфике конкретных задач на базе гибкого эволюционирующего сочетания преимуществ регулярных [3] и стохастических [5] методик. Одним из известных эволюционных подходов является генетический алгоритм (ГА).

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

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

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

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

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

1. Аналитический обзор методов и средств расчета химического равновесия

.1 Математическая модель задачи расчета химического равновесия

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

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

Химический потенциал j-го компонента идеального газа определяется формулой (1)

,                                            (1)

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

 - абсолютная температура;

 - общее давление смеси;

;

 - количества молей j-го компонента в смеси в целом.

Формула (1) справедлива для любых идеальных термодинамических систем, и ее выполнимость может служить определением последних.

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

,                              (2)

при ограничениях, отражающих сохранение количества вещества (поэлементно)

,                                                       (3)

где  - матрица размерностью  содержаний элементов в компонентах системы;

 - вектор количества молей i-го элемента.

Особенность такой модели в том, что исходными данными служит вектор параметров, характеризующих физико-химические свойства всех веществ в системе - вектор  с характеристиками вещества и. Выбор ведущих веществ и реакций не слишком сложен для изученных процессов и существенно проблематичен для вновь исследуемых систем. Однако именно такие процессы представляются актуальным объектом термодинамического анализа. При исследовании таких задач в модель включают компоненты «с большим запасом», что повышает размерность минимизационной задачи, представленной зависимостями (2,3). Следует отметить, что наряду с методами прямой условной минимизации термохимического потенциала системы существуют методы констант равновесия [2,3], основанные на составлении системы уравнений частичного равновесия - между отдельными веществами. Эти методы, однако, оказываются более чувствительными к выбору начального приближения (причем уже на уровне базовых веществ и реакций), и их практическое применение сильно затрудняется с ростом размерности системы.

Запишем модель в удобной для минимизации постановке, зафиксировав температуру Т, давление Р и исходный состав вещества

,                                    (4)

 ,                                                    (5)

,                   (6)

где  - массовая доля атомов i-го сорта в компоненте j;

 - вектор масс компонентов;

 - минимальная масса j-ого компонента;

 - вектор масс атомов сорта;

 и - соответственно молярная масса j-ого компонента и его химический потенциал;

M и P - общие масса и давление соответственно.

В первом приближении [2,3]:

,                            (7)

где , , - соответственно энтальпия образования, теплоемкость при постоянном давлении и энтропия j-ого компонента при T = 298 K.

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

Для решения задачи (4-7) обычно применяются регулярные (метод линеаризации, метод линейного программирования и метод квадратичной аппроксимации) и стохастические (метод Монте-Карло) методы. Рассмотрим подробнее эти методы для определения их достоинств и недостатков.

.2 Математические методы решения задачи расчета химического равновесия

.2.1 Метод множителей Лагранжа

Метод множителей Лагранжа [3] заключается в нахождении условного экстремума функции f(x), относительно m ограничений φi(x), где i=1..m. Он состоит из нескольких этапов:

·      составление функции Лагранжа в виде линейной комбинации функции f и функций φi , взятых с коэффициентами, называемыми множителями Лагранжа (λi);

·        составление системы из n+m уравнений, путем приравнивания частных производных функции Лагранжа по xj и λi;

·        если полученная система имеет решение относительно параметров xj‘ и λi‘, тогда точка x’ может являться условным экстремумом, т.е. решением исходной задачи.

Будем рассматривать газовую смесь M составляющих с потенциалом

;                                                              (8)

и условиями

,                                                                                         (9)

 ;                                            (10)

Минимизация G при этих условиях, согласно уравнениям (8-10) эквивалентна отысканию безусловного экстремума функции

            (11)

где  и  - неопределенные множители Лагранжа.

.2.2 Метод линеаризации

Линеаризация является одним из методов аппроксимации нелинейных систем до линейных систем, в некотором смысле эквивалентных исходным нелинейным. Необходимые условия экстремума  (i=1,2,…,M) и  приводят к системе M+1 уравнений

, ,                          (12)

где

.

Из последнего уравнения в этой системе (8-12) при учете (9) следует равенство , так что это уравнение впредь можно опустить.

Равновесный состав, следовательно, определяется следующей системой M+m+l уравнений (13-15)

;                                                             (13)

;                                                                                  (14)

,                                                                                   (15)

относительно M+m+l неизвестных ,  и , при этом i = 1, 2 ,…, M, j=1,2,…,m.

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

; ,                                            (16)

где ;

;

 и  - некоторые значения неизвестных, которые определяются из системы линейных уравнений, получающейся из (13-15) после подстановки в нее выражений (16) и замены ni, n на  и .

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

.2.3 Метод линейного программирования

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

Рассматриваемая задача есть не что иное, как задача нелинейного программирования при наличии линейных ограничений - уравнений материального баланса. Однако может быть непосредственно использован метод линейного программирования для отыскания решений исходной системы уравнений равновесного состава [3]. Для этого достаточно представить функцию G в виде:

;                                                   (17)

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

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

.2.4 Метод Монте-Карло

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

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

·        производим случайные броски, т.е. выбираем значения , для каждой переменной  по формуле (18)

,                                                              (18)

где .

·      сравниваем значения функции

·       

          (19)

и если неравенство (19) выполняется, то новым значением минимума принимаем z(m), иначе - z(m+1);

·      процесс случайных бросков продолжается до достижения заданной точности ξ, при это число случайных бросков удовлетворяет условию

,                                                                               (20)

где ,

.

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

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

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

.3 Средства автоматизации расчета задачи химического равновесия

.3.1 Реализация методов оптимизации в стандартных пакетах прикладной математики

Пакеты символьных вычислений обеспечивают автоматическое выполнение многих аналитических выкладок. В иностранной литературе этот класс пакетов обозначается аббревиатурой CAS - COMPUTER ALGEBRA SYSTEMS. Среди них можно назвать такие пакеты, как MAPLE, MATHEMATICA, MACSYMA, DERIVE,AXIOM.

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

В системах Mathematica 4.1/4.2 были следующие две функции для поиска глобального максимума и минимума аналитически заданной функции:

·      ConstrainedMax[f, {inequalities}, {x, y, ...}] - ищет глобальный максимум функции f в области, определяемой неравенствами inequalities. Полагается, что все переменные x, y, ... неотрицательны.

·        ConstrainedMin[f, {inequalities}, {x, y,...}] - ищет глобальный минимум функции f в области, определяемой неравенствами inequalities. Полагается, что все переменные x, y, ... неотрицательны.

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

Maplesoft <#"552431.files/image073.gif">

Рисунок 1 - Пример заполнения «CEC» начальными данными

Как видно на рисунке 1, эксперимент проводился при T=300 C и давлении P=1 ат. Результаты работы «СЕС» представлены на рисунке 2.

Рисунок 2 - Результаты работы программы CEC

Нетрудно убедиться, что добавление в систему таких веществ как C8H18 (октан - простейшая модель бензина) переводит расчет состава при помощи СЕС в разряд коммерческих.

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

.4 Постановка задачи на разработку программного средства расчета химического равновесия

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

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

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

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

2. Алгоритмическое конструирование программного средства расчета химического равновесия

.1 Классический генетический алгоритм

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

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

Популяция - конечное множество особей.

Особь - объект реального мира, входящий в популяцию и представляемый хромосомами с закодированными в них параметрами задачи, т.е. особь представляет собой решение из пространства поиска [6,8,9].

Хромосомы - упорядоченные последовательности генов, где ген - это атомарный элемент генотипа, в частности, хромосомы [6,8,9].

Генотип - это набор хромосом некоторой особи [6].

Фенотип - это набор значений, соответствующих некоторому генотипу, т.е. декодированная структура или множество параметров задачи [6].

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

Функция приспособленности представляет собой меру приспособленности каждой особи в популяции. Эта функция выбирает наиболее приспособленные особи в соответствии с эволюционным принципом «выживает сильнейший» [6].

Каждая новая популяция в ГА называется поколением. В каждом следующем поколении мы можем наблюдать возникновение совершенно новых решений исходной задачи. Среди них будут как плохие, так и хорошие, но благодаря «естественному» отбору число хороших решений будет возрастать [6,8,9]. Блок-схема классического ГА представлен на рис.3.

Рисунок 3 - Блок-схема классического генетического алгоритма

Рассмотрим суть представленных этапов генетического алгоритма:

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

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

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

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

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

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

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

Перейдем к рассмотрению конкретных вопросов реализации классического ГА, связанных с задачей расчета химического равновесия.

генетический алгоритм химический равновесие

2.2 Кодирование входных данных и представление особей

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

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

,                                                             (21)

где α и β принимают целые значения из интервала [0,1];

[bin]10 - десятичное значение двоичной последовательности bin.

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

Алгоритм выполнения кодирования (декодирования) значений масс компонентов задачи представлен на рис. 4.

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

Константа CODING определяет значение, соответствующее выбору функции кодирования. Параметр Binary представляет бинарный массив значений, а параметр Number - вещественное число.

Выбранный алгоритм предполагает необходимость представления вещественного числа в двоичной форме. Воспользуемся известным способом представления вещественных чисел, применяемых в ЭВМ, а именно в виде с плавающей запятой. Этот способ, как известно, опирается на нормализованную запись действительных чисел с использованием мантиссы и порядка [10].

Рисунок 4 - Кодирование/декодирование массы

Алгоритм представления числа с плавающей запятой состоит из следующей последовательности шагов [10]:

·      перевести число из десятичной системы счисления в двоичную;

·        представить двоичное число в нормализованной экспоненциальной форме;

·        рассчитать смещённый порядок числа;

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

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

.3 Расчет функции приспособленности

В рассматриваемой задаче необходимо обеспечить минимизацию химического потенциала G, поэтому функцию приспособленности (22) представим в виде

,                                                                                   (22)

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

G(x) - химический потенциал особи x, полученный на основании зависимостей (4-7).

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

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

.4 Селекция хромосом

.4.1 Задача метода селекции хромосом

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

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

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

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

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

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

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

.4.2 Алгоритм селекции методом рулетки

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

,                                                                                (23)

где e - представляет относительную величину сектора рулетки;

F(chi) - значение функции приспособленности для i-ой хромосомы;

 - среднее значение функции приспособленности.

Входными данными алгоритма (23) является вектор значений функций приспособленности особей текущей эпохи - Fitness. Функция Count возвращает количество элементов переданного вектора.

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

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

Рисунок 5 - Получение данных для метода рулетки

К недостаткам этого метода относят:

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

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

.4.3 Алгоритм турнирной селекции

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

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

Рисунок 6 - Схема турнирной селекции

Исследования подтверждают, что применение турнирного метода селекции более эффективно, чем метода рулетки [6].

.4.4 Алгоритм пороговой селекции

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

Рисунок 7 - График пороговой функции метода пороговой селекции

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

.4.5 Алгоритм уплотненной селекции

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

В алгоритме предопределяется целочисленный параметр CF (crowding factor), который определяет количество родителей, похожих на заданную особь. Если таких родителей больше, то лишние особи исключаются из родительской популяции. Также в качестве параметра задается целое число HamLim, определяющее максимальное значение меры Хемминга, при которой особи считаются похожими.

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

Рисунок 8 - Блок-схема метода уплотненной селекции

В качестве входных данных метода выступают вектор особей, полученный на предыдущей эпохе - CH1 и вектор особей, полученных из СН1 с применением генетических операторов скрещивания, мутации и инверсии - CH2. При этом Count(CH2) > Count(CH1).

.5 Увеличение сходимости генетического алгоритма

Рассмотрим два метода, позволяющих увеличить сходимость рассматриваемого ГА. Первый из них - элитарная стратегия - подразумевает гарантированное попадание в родительский пул следующей популяции особи с наилучшим значением функции приспособленности, тем самым защищая наилучшие решения. Эта стратегия позволяет увеличить скорость сходимости ГА [6,8].

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

,                                                                                    (24)

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

F, F’ - значение функции приспособленности соответственно до и после масштабирования.

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

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

,                                                                 (25)

где t - номер текущей (последней) эпохи;

n - число эпох, влияющих на принятие решения;

Vi - функции приспособленности лучшей особи в эпохе i;

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

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

.6 Разработка алгоритма работы программы

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

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

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

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

Рисунок 9 - Общий алгоритм работы программы

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

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

.7 Взаимодействия с пользователем

.7.1 Авторизация пользователей на ресурсе

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

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

Рассмотрим алгоритм авторизации пользователя на ресурсе (рис. 10).

Рисунок 10 - Алгоритм авторизации пользователя

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

.7.2 Модификация контента системных справочников

Как уже было отмечено выше, авторизованному пользователю доступно изменение структуры и содержимого справочников о химических элементах. Рассмотрим более подробно алгоритм выполнения обновления/удаления данных из справочников БД (рис.11).

Рисунок 11 - Алгоритм выполнение модификации данных в системных справочниках

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

В следующем разделе рассмотрена программная реализация представленных алгоритмов.

3. Программная реализация Генетического Алгоритма для расчета химического равновесия

.1 Архитектура программного средства

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

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

Классическое веб-приложение сегодня может быть представлено как совокупность серверных сценариев на одном из популярных языков разработки (например, PHP), функциональность которых обеспечивается веб-сервером (например, Apache) [11]. Пользователь адресует свой запрос веб-серверу, который по параметрам запроса (таким как url, массив post и т.д.) определяет какой скрипт должен быть выполнен. Результат работы скрипта возвращается пользователю. Для выполнения функций по модификации и представлению контента на клиентской стороне, как правило, используются возможности языка Java Script.

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

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

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

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

Рисунок 12 - Архитектура программного средства

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

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

Как уже было отмечено выше в качестве средств разработки модулей для работы с базой данных, а также для представления интерфейса пользователя был выбран язык PHP 5.3. PHP - широко используемый язык скриптинга (сценариев) общего назначения, который особенно подходит для web-систем и может быть внедрен в HTML. Одна из наиболее сильных и привлекательных черт PHP - поддержка им большого количества СУБД.

В качестве СУБД нами выбрана PostgreSQL 9.0. PostgreSQL - свободная объектно-реляционная система управления базами данных <mhtml:file://C:\Documents%20and%20Settings\Artem\Рабочий%20стол\tempy\PostgreSQL%20%20Википедия.mht!/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85> (СУБД). Она является свободной альтернативой коммерческим СУБД (таким как Oracle <mhtml:file://C:\Documents%20and%20Settings\Artem\Рабочий%20стол\tempy\PostgreSQL%20%20Википедия.mht!/wiki/Oracle> Database <mhtml:file://C:\Documents%20and%20Settings\Artem\Рабочий%20стол\tempy\PostgreSQL%20%20Википедия.mht!/wiki/Oracle_(%D0%A1%D0%A3%D0%91%D0%94)>, Microsoft <mhtml:file://C:\Documents%20and%20Settings\Artem\Рабочий%20стол\tempy\PostgreSQL%20%20Википедия.mht!/wiki/Microsoft> SQL Server <mhtml:file://C:\Documents%20and%20Settings\Artem\Рабочий%20стол\tempy\PostgreSQL%20%20Википедия.mht!/wiki/Microsoft_SQL_Server>). Сильными сторонами PostgreSQL считаются:

·        поддержка БД практически неограниченного размера;

·        мощные и надежные механизмы транзакций и репликации;

·        наследование;

·        легко расширяемая система типов.

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

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

.3 Схема отношений БД

Для хранения данных о компонентах системы используется следующая схема отношений БД (табл. 1).

Таблица 1 - Схема отношений реляционной БД

Element

Отношение «Химический элемент»

Id

Целое

Идентификатор (PK)

letter

Строка(5)

Обозначение химического элемента, например H

name

Строка(20)

Название химического элемента, например «водород»

am

Целое

Атомная масса элемента

Component

Отношение «Компонент расчета»

Id

Целое

Идентификатор (PK)

name

Строка(40)

Название компонента, например «вода»

enthalpy

Целое

Энтальпия компонента

entropy

Вещественное

Энтропия компонента

heat_capacity

Вещественное

Теплоемкость

Composition

Отношение «Состав»

element_fk

Целое

Внешний ключ на кортеж отношения Element

component_fk

Целое

Внешний ключ на кортеж отношения Component


Объекты предметной области и характер связей между ними представлены на ER-диаграмме (рис. 11).

Рисунок 13 - ER-диаграмма БД

Очевидно, что для организации связи «многие-ко-многим», имеющей место между сущностями «Химический элемент» и «Компонент расчета», необходимо создать дополнительное отношение. Мы реализовали отношение «Composition», состоящее из пар внешних ключей на объекты отношений «Element» и «Component», что отражено на ER-диаграмме (рис.13). Скрипт создания реляционной базы данных в соответствии с описанной схемой отношений представлен в приложении Б.

.4 Реализация веб-приложения

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


Рисунок 14 - Концепция MVC

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

Рассмотрим структуру реализованного веб-приложения с точки зрения архитектуры выбранного программно-алгоритмического каркаса:

·  контроллеры:

§ Auth - базовый контроллер авторизации, реализующий методы по выполнению аутентификации пользователей, управлению данными о пользователях в сессиях веб-сервера, формированию меню и отображению общих для всех страниц элементов веб-приложения (шапка сайта, общие js-скрипты и css-стили);

§  Dicts - контроллер, определяющий процедуру взаимодействия авторизованных пользователей с системными справочниками (их создание, модификация и наполнение данными);

§  Calc - контроллер выполнения расчета, реализующий методы по представлению данных пользователю о параметрах расчета, а также предоставляющий доступ к методам модели расчета;

·  модели:

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

§  Dict_model - модель для взаимодействия с системными справочниками (получение метаинформации о существующим справочниках, получение данных справочников, выполнение скриптов создания и удаления справочников);

§  Calc_model - модель, определяющая логику взаимодействия веб-приложения с внешними программными модулями (рис. 12), реализующими алгоритм расчета;

·  представления:

§ dict/add - добавление справочника;

§  dict/composition - определение состава химических компонентов;

§  dict/data - модификация контента справочников;

§  dict/list - просмотр списка существующих справочников;

§  calculate - представление данных для расчета;

§  foot - нижняя часть страницы (общая для всех страниц сервиса);

§  head - верхняя часть страницы (включая скрипты и стили);

§  login - форма авторизации;

§  menu - представление главного меню;

§  result - представление результатов рачета.

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

// Контроллер auth.php

// Выполнение авторизации

public function login()

{

// загрузить модель авторизации

$this->load->model('auth_model','auth');

// Обрабатываются только AJAX запросы($this->input->is_ajax_request() === false)

{

return $this->index(); // иначе выкинуть на главную страницу

}

// Проверить логин (данные передаются в POST)

$login = $this->input->post('login');

$password = $this->input->post('pass');

// если не залогинен, то вывести форму авторизации

if ( ! $this->auth->isSmbLogin() )

{($this->auth->login($login, $password))

{

$this->messages[] = 'Вы успешно зарегистрированы в системе';

}// ошибка

{

$this->errors[] = 'Неверный логин и/или пароль, либо пользователь уже неактивен. Для восстановления пароля обратитесь к администратору.';

}

} else {

$this->errors[] = 'Уже авторизован!';

}

// возврат данных в виде JSON( count($this->errors) > 0 ||($this->messages) > 0 ||($this->callback_data) > 0 ) {json_encode(array('errors' => $this->errors,

'messages' => $this->messages,

'data' => $this->callback_data));

}

}

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

// Контроллер dicts.php

// Модификация справочников

// $id - номер справочника в БД

public function edit_dict($id = null)

{

// если номер редактируемого справочника не установлен

if ( is_null($id) )

{

$this->redirect("dicts");

return;

}

// проверка не переданы ли данные для обновления/удаления

if ( isset($_POST['need_remove']) &&

$_POST['need_remove'] == "1" )

{

$name = $this->input->post("name");

$status = $this->mDict->remove_dict($id);( $status ) {

$this->messages[] = 'Справочник "' . $name . '" был успешно удален!' ;

$this->redirect("dicts");;

}

{

$this->errors[] = 'При удалении справочника произошла ошибка';

}

}

// обновление справочника( isset($_POST['name']) )

{

$name = $this->input->post("name");

$status = $this->mDict->update_dict($id, $name);( $status ) {

$this->messages[] = 'Справочник "' . $name . '" был успешно обновлен!' ;

}

{

$this->errors[] = '

Допускается только обновление названия справочника. Для изменения структуры справочника воспользуйтесь менеджером управления БД.'

}

}

// загрузка формы редактирования

$this->showHead( array(

'paJSScripts' => array('add.js'),

'paStyles' => array('add.css'),

)

);

$data['tfields'] = $this->mDict->get_fields_types();

$data['dictInfo'] = $this->mDict->get_dict_info($id);

$this->load->view('dict/add', $data);

$this->showFoot();

}

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

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

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

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

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

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

// Модель Calculate_model

/**

* Начать выполнение программы расчета

* $component - компоненты, участвующие в расчете

* $massa - массы компонентов

* $temperature - температура

* $pressure - давление

* $itercount - число итераций генетического алгоритма

*/function start_calc($component, $massa, $temperature, $pressure, $itercount)

{

$res_code = '';

// создание файла с параметрами расчета

do {

// выбираем имя файла таким образом,

// чтобы оно не повторялось

// при многопользовательском доступе

$res_code = md5( date('d.m.y H:m:s') );

} while ( file_exists(RESULTSPATH . $res_code) );

// файла нет - создать

$fhandle = fopen(RESULTSPATH . $res_code, "w+");

// запись параметров в файл

foreach($this->params as $param) {($fhandle, $param . "\n" );

}($fhandle, $temperature . "\n" );($fhandle, $pressure . "\n" );($fhandle, $itercount . "\n" );

// получить данные о компонентах

$where_id = ''; $sep = '(';($component as $comp_id) {

$where_id .= $sep . $comp_id;

$sep = ',';

}

$where_id .= ')';

// запрос данных о выбранных компонентах из БД

$q = $this->db->query(

'select c.id as comp_id,          c.enthalpy,          c.entropy,.heat_capacity,       cm.cnt, e.letter, e.am,(e.am * cm.cnt) OVER (PARTITION BY c.id) as massacomponent c, composition cm, element ec.id = cm.component_fk and.id = cm.element_fk and c.id in ' . $where_id . 'by c.id'

);

// запись данных о компонентах в файл

if ($q->num_rows > 0)

{( $q->result_array() as $row ) {($fhandle,       $row['comp_id'] . ' ' .

$row['enthalpy'] . ' ' . $row['entropy'] . ' ' .

$row['heat_capacity'] . ' ' .

$row['cnt'] . ' ' . $row['am'] . ' ' .

$row['massa'] . ' ' .

$massa[$row['comp_id']] . "\n"

);

}

}

else

{

// данные о компонентах не были получены

$res_code = 0;

}($fhandle);$res_code;

}

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

// Функция перезагрузки полей формы

function resetForm(form) {

form.find('input:text, input:password, input:file, select').val('');.find('input:hidden').val('');.find('input:radio, input:checkbox')

.removeAttr('checked').removeAttr('selected');

}

// Выполнение клонирования объектаclone(o) {(!o || 'object' !== typeof o) {o;

}c = 'function' === typeof o.pop ? [] : {};p, v;(p in o)

{(o.hasOwnProperty(p))

{= o[p];(v && 'object' === typeof v)

{[p] = clone(v);

}

{[p] = v;

}

}

}c;

}

// обработка ответа в формате jsonprocessing_callback(cbck, action) {= action || '';(cbck) {(cbck.errors != undefined && cbck.errors.length > 0) {_errors(cbck.errors,action);

}(cbck.messages != undefined && cbck.messages.length > 0) {_messages(cbck.messages,action);

}

}

}

// получение всех значения формы, переданной в виде селектора

function get_form_vals(frm) {ret = {};

$.each($(frm).find('input'),function(id,el){idx = '';($(el).attr('id') != undefined && $(el).attr('id').length > 0) {= $(el).attr('id');

} else if ($(el).attr('name') != undefined && $(el).attr('name').length > 0) {= $(el).attr('name');

}(idx != '') {val = $(el).val();( $(el).attr('type') == 'checkbox' ) {= $(el).attr('checked');

}[idx] = val;

}

});

return ret;

}

Полный текст модулей приведен в листинге в приложении.

.5 Реализация исполняемого модуля расчета

Программный модуль расчета реализован на языке C++ с использованием популярной библиотеки разработки приложений QT и является консольным приложением.

Структурно приложение состоит из следующих классов:

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

·        Chromosome - класс, определяющий одну хромосому особи, участвующей в ГА;

·        Individual - класс, определяющий одну особь, участвующей в ГА.

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

#include "iostream"

#include "stdio.h"

#include "genalg.h" namespace std;

// точка входа в программу

int main(int argc, char *argv[])

{(argc < 2)

{<< "Need input file!" << endl;

return -1;

}

// 1. Открыть файл с входными параметрами

FILE * fin = fopen(argv[1], "rt");( !fin )

{<< "Input file open error!" << endl;-2;

}

// 2. Прочитать данные и инициализировать параметры алгортма

GenAlg GA(fin);

// 3. Файл результатов* fout;(argc > 2)

{= fopen(argv[2], "w+t");

}

{= fopen(argv[1], "w+t");

}

//( !fout )

{<< "Output file open error!" << endl;-3;

}

// запуск алгоритма расчета.run_alg(fout);

// закрыть файлы(fout);(fin);

return 0;

}

Схема взаимодействия представленных выше классов в терминах объектно-ориентированной парадигмы приводится на UML-диаграмме
(рис. 15).

Рисунок 15 - UML-диаграмме классов программного средства

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

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

4. Эксперементальная часть

.1 Тестирование приложения

Для тестирования веб-приложения была использована встроенный в фреймворк CodeIgniter класс тестирования Unit Testing, который позволяет разработчикам тестировать написанный код. Этот класс позволяет протестировать вызовы скриптов сайта на предмет соответствия типов данных переменных, передаваемых между различными методами приложения, а также на соответствие их значений заранее определенным доменам.

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

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

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

Таблица 2 - Результаты тестирования утилитой Apache Benchmark

№ теста

Параметры теста


Кол-во польз.

Число запросов

Ср. время ответа

1

20

1000

0,587 мс

2

60

500

0,867 мс

3

60

1000

1,234 мс

4

100

500

2,112 мс

5

100

1000

2, 890 мс


Результаты данного теста подтверждают возможность одновременного использования данного приложения не менее чем 100 пользователями одновременно, при этом среднее время ответа сервера на запросы пользователей составляет порядка 5 секунд, что является приемлемым результатом.

Традиционно для исследования работоспособности и функциональности приложения проводятся так называемые альфа- и бета-тестирования программного средства. Альфа-тестирование подразумевает всестороннюю проверку функций программы ее разработчиками, а бета-тестирование предполагает привлечение добровольцев. Данные этапы тестирования были направлены на проверку соответствия функционала программного средства заявленным требованиям, а также на корректность отображения дизайна программного средства в различных современных браузерах (FF 7, Chrome 14, IE 8, Opera 10).

В качестве добровольцев были привлечены студенты группы ВИS31, а также сотрудники лаборатории мониторинга и автоматизации образовательного процесса ДГТУ. Результаты альфа- и бета-тестирования в целом, показали соответствие разработанного приложения поставленным задачам, и выявили список недочетов, большинство из которых относились к случаям не связанным с логикой функционирования приложения, а скорее с качеством кодирования:

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

·        игнорирование обработки пустого списка справочников при их выводе;

·        ошибка в отображении меню при модификации размеров окна в браузере IE.

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

4.2 Верификация полученных результатов

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

Для проверки работоспособности системы был проведен сравнительный анализ разработанной программы с существующим аналогом (рассмотренным ранее) «Chemical Equilibrium Calculation» (#"552431.files/image094.gif">

Рисунок 16 - Главное окно программного средства

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

Рисунок 17 - Выбор параметров генетического алгоритма

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

Рисунок 18 - Окно ожидания результатов расчета

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

Рисунок 19 - Окно авторизации на web-сервисе

После успешной авторизации в главном меню программы становятся доступны дополнительные пункты (рис. 20):

·      просмотр справочников - просмотр и изменение структуры справочников системы и их данных;

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

·        определить состав компонентов - позволяет определить состав химических реагентов;

·        выполнение расчета - переход к странице выполнения расчета;

·        выход - завершение сессии авторизованного пользователя.

Рисунок 20 - Окно авторизации на web-сервисе

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

Окно просмотра и редактирования структуры справочника (рис. 21), а также содержащихся в нем данных (рис. 22) представлены ниже.

Рисунок 21 - Редактирование системного справочника «Химический элемент»

Рисунок 22 - Редактирование данных системного справочника «Химический элемент»

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

Рисунок 23 - Определение состава химических элементов

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

5. Экономическое обоснование дипломного проекта

.1 Концепция бизнеса

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

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

Разработка и реализация данного ПП является экономически целесообразной. Затраты на разработку ПП составляют 102439 рублей. Из них капитальные (единовременные) вложения составляют 34900 рублей. Срок окупаемости составляет 3,4 года. Прибыль от реализации ПП в 2012 году составит 5924 рублей.

.2 Характеристика программного продукта

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

Наименование программы: «Разработка программного средства расчета химического равновесия».

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

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

·  сайт должен содержать полную и актуальную информацию о химических элементах;

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

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

§ посетителю:

°  помочь выбрать нужный состав компонент для проведения расчета;

°        обеспечить возможность поиска информации о компонентах и элементах по их названиям;

°        обеспечить возможность просмотра и выгрузки результатов расчета;

§ администратору ресурса:

°  предоставить инструмент редактирования и добавления информации о химических элементах и доступных компонентах;

°        обеспечить возможность просмотра показателей проведенных расчетов;

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

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

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

Эксплуатационное назначение заключается в использовании программного средства в качестве образовательного web-ресурса информационно-образовательного портала УМУ ДГТУ в локальной и глобальной сетях.

Рассмотрим представленный программный продукт с позиции маркетинга.

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

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

.3 Исследование и анализ рынка

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

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

·      на предприятии города Ростова-на-Дону;

·      на предприятиях, других заказчиков со сходными видами деятельности на территории ЮФО.

Сегментация потенциальных потребителей приведена в таблице 3.

Таблица 3 - Сегментация потенциальных потребителей

Сегменты рынка

Планируемое количество заказов, шт.


2012год

2013 год

2014 год

Итого


1 кв.

2 кв.

3 кв.

4 кв.

1 п/г

2 п/г

Год


г. Ростов-на-Дону



5

7

17

40


ЮФО



15

20

33

35

100


Итого:



20

27

50

60

140

297


.4 Производственный план

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

.5.1 Расчёт единовременных затрат

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

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

,                                                                         (26)

в соответствии с данными, содержащимися в таблице 4 и формулой (26)

Таблица 4 - Расчёт единовременных затрат


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

Цена, руб.

Кол-во, шт.

Сумма затрат, руб.

1.

Компьютер Intel Pentium 1

12000

1

12000

2.

Монитор CTX PR705F

2000

1

2000

3.

Диски с ПО



11300

4.

web-сервер Apache 2

9600

1

9600

5.

Итого



34900


 руб.                                    (27)

.5.2 Расчёт текущих затрат на разработку программного продукта

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

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

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

Обозначим:- трудоемкость разработки программного продукта, чел./мес.;

Т - длительность разработки программного продукта, месяц.и Т определяются по формулам (28-31):

,                                                                                   (28)

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

G = 2.4* 11.05=2.4,                                                                       (29)

T = 2,5*G0,38                                                                                (30)= 2,5*2,40,38 = 3,25                                                                    (31)

Количество разработчиков n определяется по формуле (32):

= ent (G/T)                                                                            (32)

где операция ent означает округление до большего целого.

n = 2,4/3,25                                                                                              (33)

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

Оплата труда производится на основе повременной оплаты, исходя из часовой ставки (Сч) и времени на разработку программного изделия (Тпр). В этом случае заработная плата рассчитывается по формуле (34):

Зпр = (Сч)*Тпр                                                                              (34)

Расчет заработной платы, исходя из потребностей в персонале, приведен в таблице 5.

Таблица 5 - Потребности в персонале и оплате труда

Должность

Кол-во

Среднечас. тариф. ставка, руб.

Трудоемкость работ, час

Сумма з/п, руб.

Руководитель

1

240

10

2400

Программист

1

180

100

18000

Итого




20400


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

С = Зпр + Нз + Змаш + Зн                                                            (35)

где Зпр - затраты на заработную плату проектировщиков и программистов:

Зпр = 20 400 (руб.)                                                                       (36)

Нз - cтраховые взносы:

Нз = 30% Зпр;

Нз = 0.3 * 20 400 = 6120 (руб.)                                                    (37)

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

Змаш = Тмаш * Смаш                                                                   (38)

где Тмаш - машинное время на разработку и отладку программы:

Тмаш = 110 (час); (39)

Смаш - стоимость 1 часа машинного времени ВТ:

Смаш = 1,99 (руб.); (40)

Змаш = 110 * 1,99 = 219 (руб.)                                                    (41)

Зн - накладные расходы, связанные с проектированием и отладкой ПП, в том числе стоимость используемых материалов:

Зн - 200-300 % от Зпр

Зн = 20 400 * 2 = 40800 (руб.)                                                               (42)

C = 20 400 + 6120 + 219 + 40 800 = 67539 (руб.)                                 (43)

После расчета единовременных и текущих затрат (26-43) составим обобщенную таблицу потребности в инвестициях таблице 6.

Таблица 6 - Обобщенная таблица потребности в инвестициях

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

Формула для расчета

Сумма

1.Единовременные затраты (Зк)

Зк=К

34900

1.1.Капитальные вложения (К)

К=Кот+Кппп+Кос

34900

1.1.1.Затраты на приобретение ВТ (Кот)


23600

1.1.2.Затраты на приобретение ППП и ОС (Кппп+Кос)


11300

2.Текущие затраты (С)

С=Зпр+Нз+Змаш+Зн

67539

2.1.Затраты на заработную

Зпр=Сч*Тпр

20400

плату персоналу (Зпр)



2.2.Начисления на заработную плату (Нз)

Нз=0.3*Зпр

6120

2.3.Затраты,связанные с использованием машинного времени ВТ на разработку и отладку программ (Змаш)

Змаш=Тмаш*Смаш

219

2.4.Накладные расходы (Зн)

200 % от Зпр

40800

Итого затрат (З)

З=Зк+С

102439


Таким образом, согласно (26-43) общие затраты по проекту составят 102439 рублей.

.5.3 Определение цены программного продукта

Рассчитав потребность в инвестициях на разработку ПП (З), можно определить себестоимость одной копии ПП (С1) по формуле (44):

С1 = (З*ЕН)/NГОД+Ртир                                                              (44)

где ЕН - коэффициент приведенных затрат (0,33-0,5). Если срок привлечения кредита составляет 2 года, то Ен принимается равным 0,5; если ожидаемый срок - 3 года, то Ен = 0,33;

NГОД - объем продаж в натуральном выражении за первый год;

Ртир - затраты на тиражирование в расчете на одну копию, руб.

Ртир= РНОС+ЗПР ТИР +СЦ ТИР+РН ТИР                                (45)

где РНОС - затраты на приобретение электронного носителя для производства ПП;

ЗПР ТИР - заработная плата оператора ЭВМ на производство одной копии ПП, которая определяется по формуле (46):

ЗПР ТИР = СЧ * ТПР К                                                                         (46)

где СЧ - часовая тарифная ставка оператора ЭВМ, руб.;

ТПРК - время, необходимое оператору ЭВМ на тиражирование одной копии ПП, его проверку и установку на него защиты, час.

Зпр тир=237*0,16=38                                                                   (47)

СЦ ТИР - социальные выплаты с заработной платы оператора ЭВМ, руб.

РН ТИР - накладные расходы на производство одной копии программного продукта (РН ТИР - 200-300% от ЗПР ТИР )

Ртир=10+38+11+81=140                                                              (48)

С1=(102439*0,33)/47+140=859,2                                                 (49)

Определяется оптовая цена 1 копии ПП (Цо1) по следующей формуле (50):

Цо1 = С1+ П1                                                                                (50)

Цо1 = 440+ П1                                                                              (51)

Прибыль ( П1) определяется исходя из предполагаемой рентабельности программного продукта (52):

П1 = С1* Р/100                                                                              (52)

где Р - процент предполагаемой рентабельности, (ориентировочно Р = 20 - 35%).

П1 = 860* 25/100 = 215 (руб.)                                                               (53)

Цо1 = 860+215=1075 (руб.)                                                         (54)

Свободная отпускная цена программного продукта (Цпр), т.е. цена продажи программного продукта согласно (44-54) рассчитывается по формуле (55):

Цпр.р = Цо1+ НДС                                                                       (55)

где НДС - налог на добавленную стоимость:

НДС - 18 % от Цо

Цпр.р = 1075 + 0.18 * 1075 = 1268,5 (руб.)                                (56)

Таким образом, окончательная цена программного продукта согласно (55-56) принимается:

Цпр = 1269 (руб.)                                                                                   (57)

5.5 План маркетинговых действий

.5.1 Товарная политика

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

.5.2 Ценовая политика

Для увеличения рынка потенциальных потребителей программного продукта можно:

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

·        установить цены на сервисное обслуживание ниже цен конкурентов;

·        использовать при разработке все новые CRM-технологии.

.5.3 Сервисное обслуживание

Стратегия по организации сервисного обслуживания предполагает предпродажный и послепродажный сервис.

Предпродажный сервис:

·    консультации по программе (какие имеет возможности);

·        модификация программы в связи с предложениями заказчика.

Послепродажный сервис:

·        установка программного продукта;

·        тестирование ПП.

.5.4 Потенциальные риски

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

·    производственные;

·        коммерческие;

·        финансовые;

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

.5.5 Производственные риски (ПР)

Производственные риски - это риски, связанные с нарушением процесса разработки ПП.

Мероприятия по их снижению:

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

·        следить, чтобы не вышла из строя ВТ и другая аппаратура.

.5.6 Коммерческие риски (КР)

КР - связаны с реализацией продукции.

Мероприятия по их снижению:

·        систематическое изучение конъюнктуры рынка;

·        соответствующая ценовая политика;

·        образование сети сервисного обслуживания;

·        реклама;

·        web-сайт.

.5.7 Финансовые риски (ФР)

ФР - вызываются инфляционными процессами, неплатежами, колебанием валютных курсов.

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

.6 Финансовый план

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

Предполагаемые доходы от продаж (Qпр) определяются по формуле (57):

пр = Цопт * Ni                                                                               (57)

где Цопт - цена оптовая ПП: Цопт = 1075 (руб.)- объем продаж по периодам в соответствии с исследованиями рынка, шт.

Издержки производства (И) (58) включают, кроме текущих затрат, расходы на маркетинг и некоторые виды налогов (на имущество, рекламу, местные налоги и т.п.):

И = С1 * N + Зм + Н                                                                      (58)

где С1 - себестоимость ПП: С1 = 860 (руб.)

Зм - затраты на маркетинг и коммерческие расходы:

Зм = С1*15%                                                                                 (59)

Зм = 860 * 0,15 = 129                                                                    (60)

Н - налоги:

Н = Ни + Нпр                                                                                (61)

где Ни - налог (2% от Квт) на имущество:

Ни = 0.008 * 23600= 200(руб.)                                                     (62)

Нпр - прочие налоги (5-7% от Зпр):

Нпр = 0.05 * 20 400 = 1020 (руб.)                                                (63)

Н = 200 + 10 20 = 1220 (руб.)                                                                (64)

Расчеты (57-68) производятся по годам и сводятся в таблицу 7.

Прибыль от реализации (65-66):

Пр = Qпр - И                                                                                 (65)

Пр = 376893 - 256769 = 120124 (руб.)                                        (66)

Налог на прибыль (Нпр = 20% от Пр)                                        (66)

Нпр = 120124*0,20 = 24025 (руб.)                                                        (67)

Пч = 120124 -24025 = 96099 (руб.)                                                       (68)

Расчёты (57-68) представим в таблице 7.

Таблица 7 - Финансовый план

Показатели

2012 год

2013 год

2014год


1 кв

2 кв

3 кв

4 кв

1п/г

2п/г

год

1. Доходы от продаж - (Qпр)



21500

29025

53750

64500

150500

2. Издержки производства



18549

24569

44349

52949

121749

3. Прибыль от реализации



2951

4456

9401

11551

28751

4. Налог на прибыль



590,2

891,2

1880,2

2310,2

5750,2

5. Чистая прибыль



2360,8

3564,8

7520,8

9240,8

23000,8

Объем продаж ПП (шт)



20

27

50

60

140


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

Cрок окупаемости ПП определяется по формуле (69-71):

Ток = К/(П1*N)                                                                              (69)

где К - необходимые капитальные вложения, руб.;

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

Ток = 34900/ (215 * 47)                                                                          (70)

Ток = 3,4 года                                                                                (71)

.7 Расчёт безубыточности

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

Расчет достижения безубыточности производится по следующей формуле (72):

Qкр =                                                                             (72)

где Qкр - критический объем продаж ПП, при котором будет достигнута безубыточность, шт.

ФЗ - сумма условно-постоянных (фиксированных) затрат (73), тыс.р.

ФЗ = Зн + Зм + Н                                                                                    (73)

где Зн - накладные расходы:

Зн = 40800 (руб.)                                                                                    (74)

Зм - затраты на маркетинг:

Зм = 129 (руб.)                                                                              (75)

Н - налоги:

Н = 1220 (руб.)                                                                              (76)

- объем продаж ПП в год окупаемости:

ФЗ = 40800+ 129 + 1220 = 42149(руб.)                                       (77)

ПЗ - сумма условно-переменных затрат, для одного ПП, руб.

ПЗ = Зпр + Нз + Змаш                                                                  (78)

где Зпр - заработная плата на разработку одного ПП:

Зпр = 20 400 (руб.)                                                                       (79)

Нз - начисления на заработную плату:

Нз = 6120 (руб.)                                                                            (80)

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

Змаш = 219 (руб.)                                                                                   (81)

ПЗ = 20 400 + 6120 + 219 = 26739 (руб.)                                              (82)

ПЗ1=(Зпр+Нз+Змаш)/N = 26739/297 = 96 (руб.)                                 (83)

Цпр - цена продажи одного ПП, (руб.)

Цпр = 1269 (руб.)                                                                                   (84)кр = 42149 / (1269-96) = 36 (шт.)                                                    (85)

Таблица 8 - Таблица безубыточности


Ед. изм.

Формула

в 2012 г.

Доходы от продаж

руб.

Qпр=Цпр*N

59643

Издержки

руб.

И=С*N*Зм+Н

41769

Постоянные затраты

руб.

Фз=Зн+Зм+Н

42149

Переменные затраты

руб.

ПЗ1=(Зпр+Нз+Змаш)/N

96

Критический объем продаж

шт.

Qкр =36



После расчета критического объема продаж (72-85) (таблица 8) построим график безубыточности приведённый на рисунке 16.

Рисунок 16 - График безубыточности

6. Безопасность и экологичность проекта

.1 Характеристика

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

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

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

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

Существуют различные вредные факторы, которые делятся на:

·  ОВПФ физического воздействия:

·   шум, повышенная температура поверхностей оборудования;

·   вибрация;

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

·   опасность поражения электрическим током;

·  ОВПФ химического воздействия (загрязнение воздуха пылью);

·        ОВПФ психофизиологического воздействия:

·   физические перегрузки (статические и динамические);

·   нервно-психологические (умственное перенапряжение, монотонность труда).

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

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

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

Каждый компьютер, с которым работает оператор, должен иметь заземление, чтобы не допустить поражение работника током.

Освещение должно иметь не тусклый и не яркий характер.

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

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

·      электромагнитные излучения;

·        неудовлетворительные параметры микроклимата;

·        недостаток циркуляции воздуха;

·        опасность увеличения температуры в помещении;

·        опасность увеличения влажности;

·        опасность возникновения пожара

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

.2 Обеспечение безопасных условий эксплуатации ПЭВМ

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

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

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

·        ослабить шум самих источников (применение демпфирующих материалов, экранов, звукоизолирующих кожухов);

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

·        применять рациональное расположение оборудования;

·        соблюдать «звуковую культуру».

В офисных помещениях естественное освещение является основным. Световые проемы (окна) должны быть ориентированы преимущественно на север и северо-восток. Также применяются другие средства освещения.

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

В центре мониторинга, необходимо обеспечить следующие величины коэффициента отражения: для потолка: 60…70%, для стен: 40…50%, для пола: около 30%. Для других поверхностей и рабочей мебели: 30…40%.

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

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

Нулевой защитный проводник при вводе в здание и через каждые последующие 100-150 м заземляется.

Полное сопротивление петли “фаза-нуль” (складывающееся из собственного сопротивления петли + сопротивление одной из фаз питающего трансформатора) должно обеспечивать в аварийной ситуации ток короткого замыкания, в три и более раз превышающий номинальный (Iкз3Iном).

Рассчитаем сопротивление петли “фаза-нуль” (86-89).

Сопротивление петли “фаза-нуль” является определяющим для выбора плавкой вставки или теплового автомата по току короткого замыкания.

Полное сопротивление петли “фаза-нуль” рассчитывается по формуле (86)

                                                        (86)

где  - индуктивное сопротивление петли “фаза-нуль”, принимаем равным 0.6 Ом/м;

ZТР - сопротивление входного трансформатора, равное 3.1Ом;

, - активное сопротивление фазного и нулевого провода

                                                                               (87)

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

 - длина проводника, равная 50 м;

 - сечение проводника, равное 2.5 мм2.

                                                          (88)

                                   (89)

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

Для того, чтобы зануление выполняло свои функции, необходимо соблюдение условия (90):

                                                                                              (90)

где  - коэффициент кратности, принимается для тепловых автоматов и плавких вставок равным 3;

Iкз определяем из отношения (91-92):

                                                                                              (91)

где  - фазное напряжение, равное В;

 - сопротивление петли “фаза-нуль”;

                                                                           (92)

Так как максимальный ток нагрузки не превышает 10А (90-92), в качестве защиты используем плавкий предохранитель с номинальным током 15А.

.3 Экологичность проекта

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

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

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

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

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

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

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

·  либо падения какого-либо прибора;

·        либо падения самого оператора;

·        из-за взрыва кинескопа монитора (как самого взрывоопасного прибора в лаборатории).

Поражение электрическим током возможно по причинам:

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

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

А возникновение пожара, в свою очередь, следует из наличия горючего материала в ВЦ и возникновения очага воспламенения. Очаг воспламенения может возникнуть вследствие следующих причин:

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

·        перенапряжения в сочетании с нарушением техники безопасности;

·        перегрева проводов вследствие перегрузки проводов током;

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

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

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

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

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

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

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

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

Промышленность выпускает углекислотные огнетушители ручные (ОУ-2, ОУ-5, ОУ-8) и передвижные (ОУ-25, ОУ-80).В соответствии со [13] категорию производства по пожарной опасности можно отнести к группе В, так как в помещениях не производятся работы с легковоспламеняющимися жидкостями и горючими газами. Степень огнестойкости основных строительных конструкций лаборатории можно отнести к I степени.

Анализируемое оборудование может стать источником пожара при неисправностях токоведущих частей.

Наиболее частые причины пожаров:

·    перегрев проводов;

·        короткое замыкание;

·        большие переходные сопротивления в электрических сетях;

·        электрическая дуга или искрение.

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

·    наличие системы автоматической пожарной сигнализации;

·        наличие эвакуационных путей и выходов;

·        наличие первичных средств тушения пожаров: пожарные стволы, внутренние пожарные водопроводы, сухой песок, огнетушители.

Для предотвращения возможного возгорания помещение оборудовано ручным углекислотным огнетушителем ОУ-2. Для поддержания нормальных метеорологических условий в производственном помещении в холодное время года предусмотрена система водяного отопления.

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

На стадии проектно-конструкторской разработки выполнен анализ возможных ОВПФ. Наиболее значимыми факторами опасности в проектируемых условиях труда менеджера являются:

·    электроопасность;

·        электромагнитные поля и излучения;

·        недостаточная освещенность рабочей зоны;

·        психофизиологические перегрузки пользователя ПЭВМ.

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

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

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

Заключение

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

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

Список используемых источников

1.     Чепмен С., Каулинг Т. Математическая теория неоднородных газов. М.: Иностр. лит., 1960.

2.      Бенсон С. Термохимическая кинетика. М.: Мир, 1971.

.        Степанов Н.Ф., Ерлыкина М.Е., Филиппов Г.Г. Методы линейной алгебры в физической химии. М.: Изд-во МГУ, 1976.

.        Физико-химические процессы в газовой динамике: Компьютеризованный справочник. В 3-х томах / Под ред. Г.Г. Черного и С.А. Лосева. М.: Изд-во МГУ, 1995-2002.

.        Ермаков С.М., Михайлов Г.А. Курс статистического моделирования. М.: Наука, 1976.

.        Лешек Рутковский. Методы и технологии искусственного интеллекта. М.: Горячая линия - Телеком, 2010 г.

7.      Chemical Equilibrium Calculation [Электронный ресурс] - URL: <#"552431.files/image117.gif">

Рисунок П.Б.1 - Игровое окно

Управление игровым персонажем происходит с помощью клавиатуры (рис. П.Б.2):

·  W - движение вперед;

·        S - остановка;

·        A - поворот налево;

·        D - поворот направо;

·        Q - выстрел из левой пушки;

·        E - выстрел из правой пушки.

Рисунок П.Б.2 - Управление игровым персонажем

Цель игры попасть с помощью выстрела ядром в игровой персонаж соперника (рис. П.Б.3):

Рисунок П.Б.3 - Выстрел

Игроку, который попадает в персонаж соперника, начисляются очки (рис. П.Б.4)

Рисунок П.Б.4 - Начисление очков

Игровое пространство представлено ландшафтом и морской поверхностью (рис. П.Б.5)

Рисунок П.Б.5 - Игровое пространство

Приложение В

Инструкция системного программиста

П.В.1         Общие сведения о программе

Наименование программы - многопользовательская он-лайн игра

«Морское сражение». Областью применения данного программного продукта являются сетевая игровая индустрия. Использование игрового приложения в глобальных или локальных сетях.

П.В.1.1 Требования к техническим средствам

Данное игровое приложение обладает следующими требованиями к техническому обеспечению:

Для сервера:

·  операционная система Windows XP и выше;

·  32 или 64 разрядный процессор семейства Intel Pentium с тактовой частотой 1,0 Ghz или выше;

·        оперативная память не менее 512 МБ;

·        стандартные устройства ввода - вывода.

Для клиента:

·  операционная система Windows XP и выше;

·  32 или 64 разрядный процессор семейства Intel Pentium с тактовой частотой 1,0 Ghz или выше;

·        оперативная память не менее 512 МБ;

·        стандартные устройства ввода - вывода.

П.В.1.2 Требования к программным средствам

Дополнительное программное обеспечение не требуется.

П.В.1.3 Функции программы

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

П.В.2         Структура программы

П.В.2.1 Сведения о структуре программы

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

П.В.3         Настройка программы

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

Рисунок П.В.1 - Шейдеры

П.В.4         Проверка программы

Игроку, который попадает в персонаж соперника, начисляются очки (рис. П.В.2).

Похожие работы на - Разработка программного средства расчета химического равновесия

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!