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.  

 

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

59741. Сценарій уроку: Свято Матері 42.5 KB
  Шановні гості Дорогі діти батьки Вітаємо Вас з Святом Матері Мати. ВЕДУЧА II: У травні коли прокидається від сну природа коли дзвенить у блакиті пташиний спів коли травами і квітами замаїться земля теплий весняний вітер приносить до нас Свято Матері.
59742. Сценарій уроку Масляна 38.5 KB
  Тиждень перед Великоднім постом називається Масляна. Щодня жінки, молодь і діти гуляли, пригощались варениками з сиром. Набиралися сил перед довгим постом. Молодь збиралась на вечорниці і гуляла до ранку (досвітки).
59743. Сценарій уроку: Де коза ходить, там жито родить 41 KB
  В цей вечір ватаги дівчат і дітей ходять по хатах і щедрують. Сценарій бажано доповнити книжковою виставкою Щедрий вечір добрий вечір. Щедрий вечір Розкажіть онуку...
59744. Сценарій уроку Золота осінь 44 KB
  Осінь завжди красива барвиста. Осінь ведуча одягнена у однокольорове плаття на якому нашите листя клена. На сцені 5 дітей: 1й: Непомітно з’явилася осінь Заходить Осінь вклоняється тим хто в залі Все коротшає день щодоби Глянь берізки уже злотокосі І в дубів багряніють чуби.
59745. Прийди, прийди, весно, прийди, прийди, красна 45.5 KB
  До залу заходить Весна дівчина у квітчастому вбранні на голові віночок з квітів. ВЕСНА: Добрий день мої любі друзі Я Весна я Весна. ВЕСНА: Яка ж бо ти люта сестро Лютуй не лютуй а час твій пройшов. ВЕСНА: Так сестро це було та все пройшло.
59746. Сценарій уроку: Святий Спас прийшов до нас 46 KB
  У серпні Спас крім 19-го святкується ще двічі 14-го та 29-го. Правда назва його Спас мені не зрозуміла. Що воно означає ВЕДУЧА: На Русі свято відоме під назвою Спаса від слова спаситель рятівник яким православна церква іменує Ісуса Христа.
59747. Сценарій уроку: Несу кутю на покутю… 41.5 KB
  Дійові особи: Батько; мати; Оленка – старша дочка 1012 р. БАТЬКО: Піду кину сіна вівцям коням та корові. БАТЬКО: Заходячи в хату. БАТЬКО: Обовязково зайду а потім піду кликати Мороза вечеряти з нами.
59748. Сценарій уроку Вечорниці 44.5 KB
  На передньому плані появляється Галя яка поспішає на вечорниці. Галя йде потім зупиняється: Он хтось стоїть чи не Степан Голохвастов уздрівши її: А на ловця і звір біжить ціпціп куріпочко Галя хоче його обійти а Голохвастов заступа їй дорогу Голохвастов...
59749. Сценарій уроку: Різдвяний вертеп 38.5 KB
  ДІТИ: Христос рождається ГОСПОДАР: Славімо його ЗВІЗДАР: Щедрий вечір добрий вечір Мир українській світлій хаті ЗВОНАР: дзвонить виступає вперед хору Добрий вечір тому Хто в цьому дому Старому молодому І Богу святому. Всі проходять до хати і співають: Добрий вечір тобі пане господарю радуйся...