77231

Создание среды разработки библиотек формул подсчета технико-экономических показателей теплоэлектростанций

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-02-02

443 KB

2 чел.

Санкт-Петербургский Государственный Университет

Математико-механический факультет

Кафедра системного программирования

Создание среды разработки библиотек формул подсчета технико-экономических показателей теплоэлектростанций

Курсовая работа студента 444 группы
Иноземцева Дмитрия Сергеевича

Научный руководитель      к.ф.-м.н. Иванов А.Н.

Санкт-Петербург

2009


Оглавление

[0.0.1]

[0.0.2] Введение

[0.0.3] Характеристика существующей системы

[0.0.4] Постановка задачи

[0.0.5] Предлагаемое решение

[0.0.6] Проблемы

[0.0.7] Результаты

[0.0.8] Заключение

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


Введение

Данная курсовая работа выполнена в рамках проекта разработки Программного Обеспечения для планирования, расчёта и учёта Технико-Экономических Показателей ТЭС (ПО ТЭП ТЭС). Цель всего проекта ПО ТЭП ТЭС – разработать тиражируемое приложение учета технико-экономических показателей ТЭС, которое может быть легко развернуто на всех станциях ТГК-1 и в центральном офисе ТГК-1.

Характеристика существующей системы

Существующая система «ИС ТЭП ТЭС ОАО <ТГК 1> Невский филиал» состоит из двух основных модулей – модуля ТЭС и модуля ТГК.

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

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

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

Постановка задачи

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

  1.  ввод перечня технико-экономических показателей
  2.  ввод формул для вычисления отдельные показатели
  3.  задание источников данных
  4.  хранение и интерпретация введенных формул, с возможностью вычисления значений
  5.  отображение и редактирование формул

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


Эта задача разбивается на следующие подзадачи:

  1.  Разработка языка для ввода показателей
  2.  Модуль для хранения и интерпретации формул
  3.  Модуль вычислений значений показателей по хранимым формулам
  4.  Визуализация формул на разработанном языке

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

Предлагаемое решение

Выбор языка 

Существуют следующие виды технико-экономических показателей:

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

Язык для ввода формул должен обладать следующими свойствами:

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

Существует два широко распространенных языка с открытым форматом для набора математических формул: TeX и MathML

MathML [1] (от англ. Mathematical Markup Language, язык математической разметки) — это приложение XML, используемое для представления математических символов и формул в документах WWW. MathML рекомендован математической группой W3C. Поскольку MathML основан на XML, он позволяет представить структуру формулы в виде синтаксического дерева. На основе этого дерева можно генерировать исполняемый код динамической библиотеки.

Также MathML поддерживается основными офисными программами, такими как Microsoft Word и OpenOffice.org, а также математическими программными продуктами, например, Mathematica, Maple. В Windows 7 реализована поддержка рукописного ввода формул. Результат распознавания представлен в виде выражения MathML.

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

TEΧ [6] — система компьютерной вёрстки, разработанная американским профессором информатики Дональдом Кнутом. Многие считают TeX лучшим способом для набора сложных математических формул. В частности, из-за этих возможностей, TeX популярен в академических кругах, особенно среди математиков и физиков.


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

Из всего выше сказанного следует, что язык MathML лучше всего подходит для решения данной задачи.

Модуль для хранения и интерпретации формул

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

  •  хранение формулы в текстовом виде или в виде синтаксического дерева и интерпретация при необходимости при каждом вычислении
  •  перевод формулы на язык SQL, для использования процедур хранимых [7] в базе данных
  •  компиляция формул в динамические библиотеки, для последующего подключения к другим модулям системы

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

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

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

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

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

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


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

Разрабатываемая в проекте ПО ТЭП ТЭС система разбивается на несколько модулей. Некоторые из них будут использовать модуль вычисления технико-экономических показателей (рис. 1).

Рис. 1

Отображение формул

Существует несколько способов решения этой подзадачи:

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

Применение первого способа не оправдано из-за его трудоемкости и возможных ошибок, как в графическом отображении и редактировании формул, так и в совместимости с другими редакторами MathML.

Интеграция с MS Office и использование Microsoft Equation [5] затруднена из-за того, что в программу придется импортировать большое количество библиотек. В этом случае неоправданно возрастет объем исполняемых файлов, хотя будет использоваться лишь малая часть функциональности подключенных библиотек.

Реализованная в Windows 7 [8] поддержка рукописного ввода формул, результатом работы которой является выражения на языке MathML, не может быть использована в данной работе, т.к. Windows 7 находится в стадии тестирования.

В качестве редактора формул был выбран элемент управления MathML .NET Control, разработанный компанией soft4science. Это .NET-элемент управления представляет собой "WYSIWYG-style"-редактор формул, обладающий возможностями импорта и экспорта формул в различные текстовые и графические форматы. Также этот элемент управления имеет широкие возможности настройки, что позволяет адаптировать его для решения данной задачи.

Оптимизация библиотек, вычисляющих показатели

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

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

Рис. 2

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

В приведенном на рис. 2 примере в случае, если надо вычислить только показатели p2 и p4, показатели p1, p2 и p5 вычисляться не будут.

Разработанный алгоритм обхода основан на алгоритме топологической сортировки [3, 4]. Этот алгоритм реализован в модуле вычисления показателей (см. рис 1).


Рис. 3

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

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

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

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

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

  1.  пользователь выбирает список показателей для отображения
  2.  этот список передается модулю вычислений
  3.  по графу зависимостей, загруженному из библиотеки, строится список показателей, хранящихся в базе
  4.  производится выборка значение из базы данных
  5.  последовательно вычисляются значения показателей, от содержащихся в базе к показателям, зависящим от наибольшего количества уже посчитанных
  6.  пользователю передаются значения всех запрошенных им показателей


Рис. 4

Этот алгоритм также представлен на диаграмме последовательностей на рис. 4

Выбор платформы

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

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


Для реализации предложенного решения рассматривались следующие платформы:

  •  Windows API и MFC
  •  Java
  •  .NET

Платформа Windows API [11] и ее объектная оболочка MFC [10] позволяют создать дружественный пользовательский интерфейс и обеспечивают необходимую скорость расчетов. Но на этой платформе затруднена работа с базами данных и динамической компиляцией кода. Также для нее нет подходящих готовых решений по использованию языка MathML. Еще одним минусом данной платформы является то, что она написана с использованием не управляемого кода – это чревато большим количеством трудно находимых ошибок.

Платформа Java [12] обеспечивает удобную работу с базами данных и поддерживает динамическую компиляцию библиотек. Но на данный момент Java не позволяет создать достаточно гибкий и дружественный пользовательский интерфейс. Для рассматриваемой платформы нет подходящих готовых решений по использованию языка MathML. Так же существенным минусом Java является низкая скорость (по сравнению с другими рассматриваемыми платформами) математических вычислений.

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

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

Дополнительные результаты

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

Проблемы

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

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

Результаты

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

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

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

Заключение

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

Дальнейшие планы

Эта работа может быть продолжена в нескольких направлениях:

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


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

  1.  Язык MathML
    http://www.w3.org/Math/
  2.  Технология .NET
    http://www.microsoft.com/net/ 
  3.  Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн Алгоритмы: построение и анализ. — 2-е изд. — М.: «Вильямс», 2006
  4.  Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. Глава 5 «Алгоритмы на графах» М: «Мир», 1979
  5.  Microsoft Equation Editor
    http://www.microsoft.com/education/InsertEquation.mspx 
  6.  TeX
    http://en.wikipedia.org/wiki/TeX 
  7.  SQL Stored Procedures
    http://infolab.stanford.edu/~ullman/fcdb/oracle/or-plsql.html
    http://msdn.microsoft.com/en-us/library/aa174792.aspx
  8.  Windows 7
    http://www.microsoft.com/windows/windows-7/ 
  9.  MathML .NET Control
    http://soft4science.com 
  10.  MFC
    http://msdn.microsoft.com/en-us/library/d06h2x6e(VS.80).aspx 
  11.  Windows API
    http://msdn.microsoft.com/en-us/library/aa383750.aspx
    http://msdn.microsoft.com/en-us/library/ms809754.aspx
  12.  Java
    http://java.sun.com/

EMBED Visio.Drawing.11  

  1.  

 

А также другие работы, которые могут Вас заинтересовать

7792. Педагогическая технология Руссо 31.5 KB
  Педагогическая технология Руссо Основу педагогических взглядов Руссо составляет теория естественного воспитания, которая тесно связана с его социальными взглядами, с его учением о естественном праве Руссо утверждал, что человек родится совершенным, ...
7793. Педагогическая деятельность и теория Яна Амоса Коменского 36 KB
  Педагогическая деятельность и теория Яна Амоса Коменского О роли воспитания, его целях и задачах Взгляды Коменского на ребенка, его развитие и воспитание коренным образом отличались от средневековых представлений. Вслед за гуманистами эпохи Возрожде...
7794. Педагогическая мысль и школа в период Французской буржуазной революции XVIII века 43 KB
  Педагогическая мысль и школа в период Французской буржуазной революции XVIII века В 70-х годах XVIII века во Франции создалась революционная ситуация. В недрах феодального общества выросли и созрели формы нового, капиталистического уклада. О...
7795. Педагогическая мысль эпохи Возрождения 37.5 KB
  Педагогическая мысль эпохи Возрождения Наиболее ярко педагогическая мысль эпохи Возрождения представлена трудами итальянских, немецких и французских ученых-гуманистов. Среди итальянских гуманистов эпохи Возрождения особенно выделяется Витторино да Ф...
7796. Педагогическое сознание Гербарта (цели, средства) 43 KB
  Педагогическое сознание Гербарта (цели, средства) Педагогическое сознание Гербарта впитало и переработало многие передовые идеи той эпохи французских мыслителей 18 века, немецкой классической философии, филантропистов, Песталоцци, что и позволило ем...
7797. Послереформенные изменения в России (вторая половина 19 века) 27.5 KB
  Послереформенные изменения в России (вторая половина 19 века) Новые условия хозяйственной и общественной жизни пореформенной России настоятельно требовали подготовлённых и грамотных людей. Необходимо было значительно расширить базу народного образов...
7798. Просвещение абсолютизма 41 KB
  Просвещение абсолютизма Просвещённый абсолютизм - политика, проводимая во второй половине XVIII века рядом монархических стран Европы и направленная на устранение остатков средневекового строя в пользу капиталистических отношений. Основы просве...
7799. Развитие системы образования в России в начале 20 века 32 KB
  Развитие системы образования в России в начале 20 века Основным типом школы в России к началу ХХ века, как и раньше, была начальная школа, отличавшаяся пестротой не только по ведомственной принадлежности, но и по срокам и содержанию обучения. Самыми...
7800. Реформы Петра 1 29.5 KB
  Реформы Петра 1. Преобразования в сфере культуры Пётр I изменил начало летосчисления с так называемой византийской эры (от сотворения Адама) на от Рождества Христова. 7208 год по византийской эре стал 1700 годом от Рождества Христова. Однако...