автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Трехуровневая инструментальная среда поддержки корпоративного проектирования
Оглавление автор диссертации — кандидата физико-математических наук Смирнов, Демид Владимирович
Введение
I Обзор методов и средств проведения численных расчётов и проектирования
1 Требования к методам и средствам корпоративного проектирования
1.1 Поддержка большого объёма сложноструктурированных распределённых проектных данных
1.2 Внесение изменений, контроль и сбор информации
1.3 Открытость, документированное^ и переносимость.
1.3.1 Поддерживаемые парадигмы программирования.
2 Среды проведения численных расчётов и проектирования
2.1 Системы численных и аналитических расчётов, работающие по принципу выражение->результат.
2.1.1 Общая характеристика.
2.1.2 Mathematica. 2.1.3 Mathcad.
2.1.4 Mathlab.
2.1.5 Marple.
2.2 Специализированные расчётные программы.
2.3 Сценово-ориентированные объектные системы.
2.3.1 Open Modeler & Visualizer.
2.3.2 Инструментальная система подготовки данных и визуализации результатов газодинамических расчётов.
2.3.3 Система газодинамических расчётов на кластерах "Поток-3".
3 Библиотеки и модули языков программирования
3.1 valarray в С++.
3.2 Numeric Python
3.3 OpenGL.
3.4 LinPack, Quadpack и др.
4 Различное ПО для проведения расчётов и проектирования
4.1 Пакеты компонент пользовательского интерфейса GTK+Extra и DIA-Canvas
4.2 Визуализация данных с помощью Scigraphica.
4.3 Визуализация данных на базе OpenGL с помощью Superficie.
4.4 Язык численных расчётов Octavia.
5 Средство интеграции низкоуровневых библитек и командных языков SWIG.
5.1 Принципы работы.
5.2 Создание модулей промежуточного уровня.
5.3 SWIG — средство интеграции модулей
6 Информационные, информационно-поисковые и многоагентские системы
6.1 Информационные системы.
6.2 Многоагентские системы.
6.3 Информационно-поисковые системы
7 Основные направления и перспективы развития методов и средств численных расчётов и корпоративного проектирования
7.1 Свободнораспространяемое, специализированное и универсальное программное обеспечение.
7.2 Базы знаний и командные языки.
7.3 Использование современных методов сетевого взаимодействия.
7.4 Выводы.
II Основные принципы организации инструментальной среды и модели вычислений
8 Распределение вычислительной нагрузки и алгоритмы взаимодействия модулей
8.1 Трёхуровневая архитектура инструментальной среды.
8.2 Простые и объёмные вычисления на языке С
8.3 Высокоуровневые типы данных языка Python
8.4 Планирование и поиск решений на языке Prolog.
9 База знаний проекта и алгоритмы обновления знаний
9.1 Модель знаний. Переменные, области определения и правила вычисления
9.2 Прямой и обратный поиск решений.
9.3 Спецификация объектов и поддержка этапов разработки.
10 Разработанный диспетчер проекта и алгоритмы его работы
10.1 GUI-компонент просмотра древовидной структуры объектов.
10.2 Редактирование объектов.
10.3 Библиотеки компонент.
11 Разработанный демон агентов и алгоритмы его работы
11.1 Общая характеристика.
11.2 Распределённая база знаний.
11.3 Агентские платформы
III Реализация
12 Внешние компоненты, включённые в инструментальную среду.
12.1 ОС UNIX. С-компиляторы.
12.2 Python-интерпретатор.
12.3 SWI-Prolog.
13 Алгоритмы работы с массивами, принятые в инструментальной среде
13.1 Numeric Python. Массивы. Универсальные функции. Модификаторы применимости.
13.2 Модуль работы с разреженными матрицами sparce.
13.3 Модуль решения задач линейного программирования Ipsolve.
14 Многоагентские возможности
14.1 Агентская платформа
14.2 Межагентное взаимодействие
14.3 Передача агента.
Оглавление
15 Визуализация данных и автоматизация подготовки проектной документации
15.1 Трёхмерные объекты OpenGL.
15.2 Графики и диаграммы.
15.3 Просмотр документов. Шаблоны отчётов.
IV Примеры расчётов и проектов
16 Проектирование Internet-информационных систем
16.1 Принципы работы проектируемых систем.
16.2 Разработанная CGI-библиотека.
16.3 Разработанная архитектура базы знаний.
16.4 Разработанные дополнительные модули.
16.5 Иерархия объектов проекта.
16.6 Технические приёмы проектирования на примере фрагментов информационных систем
16.7 Использование среды в информационных системах.
17 Проектирование поверхностей сложной формы в машиностроении
17.1 Общая характеристика.
17.2 Топология и геометрия поверхности. Обозначения.
17.3 Ограничения и критерии оптимальности поверхности
17.4 Разработанная архитектура базы знаний.
17.5 Теоретический чертеж корпуса судна.
17.6 Пример спроектированной поверхности корпуса судна.
18 Проектирование нейронных сетей
18.1 Поддерживаемые типы нейронных сетей и алгоритмы обучения.
18.2 Разработанная архитектура базы знаний
18.3 Примеры спецификаций сетей.
Введение 2003 год, диссертация по информатике, вычислительной технике и управлению, Смирнов, Демид Владимирович
Общая характеристика работы
Актуальность темы
Программные инструментальные средства компьютерной поддержки корпоративного проектирования1 (CAD, САМ, CAE, MRP, PDM, CASE, АСУ и другие большие распределённые программные системы [38, 73]) являются многоуровневыми и должны:
• поддерживать большой объём, сложноструктурированность и распределенность корпоративных данных и алгоритмов без излишних затрат процессорного времени, оперативной памяти и пропускной способности сетевых каналов связи,
• обеспечивать оперативное внесение изменений, контроль и сбор информации по текущему состоянию проекта,
• обладать открытостью, документированностью и переносимостью как программного кода, так и применяемых алгоритмов.
Для упрощения создания систем, удовлетворящих вышеперечисленным требованиям, необходимы соответствующие инструментальные средства, которые как любые большие распределённые корпоративные программные средства также должны удовлетворять вышеперечисленным требованиям. К настоящему времени создано большое количество инструментальных средств поддержки проектирования и расчётов (см. стр. 7), но они не в полном объёме реализуют предъявляемые к ним требованиям. Созданию инструментальных средств, упрощающих управление жизненным циклом больших программных систем, включая разработку, сопровождение и документирование, на примере систем корпоративного проектирования посвящена диссертационная работа.
Одним из первых шагов по упрощению создания многоуровневых систем явились SWIG-спецификации [106] (см. стр. 7), позволяющие описать отображение типов данных командного языка на типы данных языка С и являющиеся основой для проектирования систем с двууровневой иерархией. Разработчики текстового редактора Vim [94], системы визуализации данных Scigraphica [81] и средства формирования диаграмм Dia [84] (см. стр. 7) предлагают интерпретатор командно-функционального языка Python [99] и С-модули разместить на одном языковом уровне, что не позволяет осуществлять взаимодействие между фрагментами программного кода разных систем в рамках одного интерпретатора Python. Кроме того на современном этапе развития компьютерных сетей разрабатываются новые методы взаимодействия распределенных программ: на смену клиент-серверным методам [63] приходят многоагентские среды [15,12, 93], позволяющие существенно снизить влияние задержек сети на выполнение распределённых программ.
Учитывая вышеизложенное, целесообразно преимущества систем типа SWIG, Vim, Python и возможности логического программирования объединить в единую инструментальную среду, но для этого необходимо исследовать и разработать специальную архитектуру, в рамках которой было бы возможно в распределённых вычислительных средах
1 Под корпоративным проектированием понимается разработка больших проектов в крупных организациях, где программы и проектные данные распределены по многим серверам корпоративной сети. поддерживать и компоновать программы обновления большого объёма проектных данных с помощью командных языков и баз знаний из программных заготовок на компилируемом языке для выполнения задач, требующих большого объёма машинных ресурсов (времени, памяти и т.д.). Без подобных алгоритмов интеграция большого количества узкоспециализированных программных средств из-за различий в принципах работы и хранении данных обычно затруднена. Так по данным [64] корпорации испытывают потребность в "ПО для интеграции приложений". В значительной степени вышеуказанные проблемы проявляются при использовании в гетерогенных распределённых системах современных средств сетевого взаимодействия. Решению данной задачи в основном и посвящена диссертационная работа.
Цели работы
Цели работы:
• Разработать модель проекта, которая позволила бы в распределённых вычислительных средах осуществлять корпоративное проектирование с учётом вышеизложенных требований (см. стр. 4);
• Создать инструментальную среду, которая позволила бы конструировать и поддерживать корпоративные системы проектирования;
• Опробовать созданную инструментальную среду корпоративного проектирования в различных предметных областях.
Методы исследования
В работе использованы методы логического, функционального и объектно-ориентированного программирования. В некоторых модулях использованы комбинаторные алгоритмы. При проектировании поверхностей сложной формы использована теория поверхностей, теория сплайнов от барицентрических координат и методы алгебры для построения сечений. При проектировании информационных Internet-систем использованы методы проектирования и нормализации реляционных СУБД. Использованы различные собственно разработанные и заимствованные модули просмотра и редактирования [94, 81, 84], численных расчётов [87, 88], а также ряд других.
Основные результаты работы
Общие результаты На основании анализа требований, предъявляемым к инструментальным системам корпоративного проектирования, анализа преимуществ и недостатков ряда промышленных и научно-исследовательских систем, программ и библиотек языков программирования:
• Предложена специальная трехуровневая модель программных систем корпоративного проектирования, которая отражает специфику процесса проектирования и позволяет на каждом из трёх уровней разрабатывать программные модули на языках, адекватных задачам соответствующего уровня.
• Разработана инструментальная среда поддержки разработки программных систем трёхуровневого корпоративного проектирования с использованием языков Prolog, Python и С для конструирования архитектурных уровней, что позволяет производить управляемую базой знаний проекта сборку программ из отдельных заготовок, согласованное обновление проектных данных, расположенных в различных узлах сети.
• Разработана методика и реализованы алгоритмы диспетчера (см. стр. 10) и сервера-платформы агентов (см. стр. 10) [80], управляющими распределённой обработкой как в инструментальной системе, так и в программных системах корпоративного проектирования. Диспетчер позволяет запускать агенты, обновлять редактировать и просматривать проектные данные. Сервера-платформы запускаются на некоторых узлах сети для кэширования, обновления проектных данных и поддержки работы и передачи агентов. Передаваемые агенты могут быть запущены до полной загрузки программного кода и данных по сети;
Дополнительные результаты. Проведена экспериментальная работа по отработке взаимодействия модулей на различных языковых уровнях и предложены архитектуры базы знаний в различных примерах (см. стр. стр. 11). Показаны возможности среды по интеграции модулей, упрощению и унификации скриптов и спецификаций объектов и методов эффективного обновления данных на примерах из различных предметных областей. Элементы предлагаемой инструментальной среды внедрены в двух авторских проектах: информационно-поисковой системе "СААНД-АВТО" и системе управления кадрами и учёта рабочего времени сотрудников "Фундамент-Банка" в Москве, Санкт-Петербурге и Новосибирске.
Научная новизна
Принципиально новым в предлагаемой инструментальной среде поддержки корпоративного проектирования является:
• Предложенная трёхуровневая архитектура, позволяющая использовать в проекте и интегрировать между собой наиболее известные парадигмы программирования, командные языки и базы знаний;
• Предложенные алгоритмы вызова модулей из Python- или Prolog-интерпретатора, что позволяет вызывать из интерпретатора одновременно произвольное количество модулей и, как следствие, обеспечивать взаимодействие между модулями не только через буфер обмена и файлы, а с использованием средств инструментальной среды, управляемой базой знаний;
• Созданная трёхуровневая иерархия агентов в сочетании с разработанными алгоритмами передачи агентов и работы агентских платформ. Алгоритмы позволяют запустить трёхуровневый агент до завершения загрузки, что снижает влияние задержек сети и увеличивает асинхронность системы в целом.
Теоретическая и практическая ценность.
Разработанные принципиально новые алгоритмы взаимодействия модулей, позволяющие использовать методы логического и функционального программирования для решения проектных задач являются теоретически и практически значимыми. Предлагаемая инструментальная среда позволяет использовать многоагентность для решения практических проектных задач, выполняемыми рассмотренными системами, программами и библиотеками (см. стр. 6). Поэтому созданные методы и средства представляют практическую ценность для широкого круга разработчиков, проектировщиков и экспериментаторов.
Основное содержание работы. Введение.
Во введении кратко рассмотрены методы и средства проектирования и численных расчётов, применяемые ныне, а также даны обоснования преимущества предлагаемой инструментальной среды.
Обзор и сравнение.
Средства проектирования и расчётов. В обзорной части работы подробно рассматриваются средства проектирования и численных расчётов, как вошедшие в среду, так и не включённые по разным причинам.
Рассмотрены системы:
• системы работающие по принципу выражение-*результат [91,11,43, 2, 97], в некоторых случаях дающие ошибочные результаты и рассчитанные на начинающих пользователей;
• узкоспециализированные программы [62, 34, 3, 67, 70, 76, 92, 59, 60, 13], специализация которых ограничивает интеграцию;
• сценово-ориентированные объектные системы, подготавливающие в полу-ручном режиме единственный эксперимент-сцену[2, 97, 5];
• SWIG, библиотеки и модули языков программирования [42], подготовка расчётов в которых связана с необходимостью следить за низкоуровневым распределением памяти и копированием объектов;
• свободно распространяемые программные продукты [84, 81, 94, 106], части которых вошли в систему.
• информационные, информационно-поисковые и многоагентские системы [58, 14];
• программы визуализации и редактирования данных, создания схем, диаграмм и графиков [94, 81, 84]
Языковые уровни рассмотренных программных средств. Подавляющая часть многих программ проектирования содержат один языковый уровень, например, однопользовательские программы анализа эквивалентных схем GRAPH-PA, ORCAD-Pspice, ЕМс-CAD, МикЭМС [3], CAE-программа Омега [62], система моделирования газодинамических и радиационных процессов CFX [67], генераторы расчётных сеток HYPERMESH и FEMAP [70, 76], программа моделирования MARS [92]. С увеличением сложности программ появилась возможность добавления пользователями новых команд с помощью командных языков. Многие большие программные системы являются двууровневыми: на верхнем уровне используется внутренние языки и интерпретаторы, в некоторых случаях созданные индивидуально под данную систему, а на нижнем уровне — компилируемые языки типа С или С++. Например, в каждой из наиболее известных однопользовательских систем численных и аналитических расчётов MathLab [11], Mathematica [105] и Marple [91] свой специализированный командный язык верхнего уровня. В каждой из двухуровневых систем проектирования в машиностроении и электронике SolidWorks [51], PCAD и OrCAD — свой. Исключением является система машиностроительного проектирования AutoCAD, использующая LISP в качестве внутреннего языка, однако интерпретатор LISP разработан специально под AutoCAD и его интерфейс является закрытым, что делает невозможным расширение системы с помощью разработанных пользователями С-модулей. Использование специализированных языков и интерпретаторов существенно усложняет перенос модулей из одной системы в другую, а также совместную работу систем в одной организации. Некоторые системы имеют двухуровневую архитектуру: на верхнем уровне — управляющая С или С++-программа, а на нижнем — расчётные С-модули. Например, ориентированные на жёсткий жизненный цикл проекта система моделирования волн ACCORD [34], система газодинамических расчётов в МАИ [5] и Open Modeler & Visualizer [61]. Большинство вышеперечисленных программ и систем являются закрытыми однопользовательскими Windows-приложениями. Лишь некоторые из них поддерживают сетевое взаимодействие, а открытый исходный код предоставляют только разработчики Open Modeler & Visualizer. Основное внимание при разработке подобных систем уделялось функциональным возможностям [10], а не решению вышеперечисленных проблем корпоративного проектирования [72, 52].
SWIG. Одним из первых шагов по унификации модульных интерфейсов явились SWIG-спецификации [106], позволяющие описать отображение типов данных командного языка на типы данных языка С. Такое отображение позволяет легко подключать библиотеки на языке С к различным командным языкам (см. рис. 1), при помощи промежуточного модуля, переводящего объекты интерпретатора командного языка в объекты языка С и обратно. SWIG (см. рис. 2) при этом автоматически генерирует исходный код промежуточного модуля по спецификации модуля, создаваемой пользователями из заголовочного h-файла модуля. Для создания не требуется большого количества ручной работы. Как утверждают разработчики SWIG [106], почти готовый модуль может быть сгенерирован в большинстве случаев непосредственно по h-файлу. аргументы команды интерпретатора
Интерпретатор командного языка результаты команды интерпретатора
Промежуточный модуль аргуметгтБГ
С-функции результаты С-функции
С-модуль
Рис. 1: Работа промежуточного модуля, созданного с помощью SWIG
Рис. 2: Создание промежуточного модуля с помощью SWIG.
Теория и практика логического программирования. В последние годы логическое программирование развивается в двух различных направлениях: абстрактных теоретических исследований (например, NCL [90], KADS [14], FDS [75] и др.) и применении в практических задачах (Makefile-ы, правила преобразования запросов реляционных баз данных [96, 73] и т.п.) скромной части арсенала продукционных средств математической логики. Исследователями предпринимались попытки разработать различные экспертные системы принятия технических решений [14], но наличие сложных объектных моделей баз знаний затрудняло практическое применение.
Выводы. На основании анализа соответствия программных средств вышеизложенным требованиям были выборочно включены в инструментальную среду модули рассмотренных программных средств и выбрана трёхуровневая модель корпортивного проектирования.
Основные принципы организации инструментальной среды и модели вычислений
Трёхуровневая иерархия. За основу построения инструментальной среды выбрана трёхуровневая организация, которая соответствует как требованиям, предъявляемым к системам проектирования, так и требованиям построения инструментальной среды, являющейся большой программной системой. Требования являются противоречивыми, что обуславливает зачастую копромиссные решения, принятые в инструментальной среде. Например, обеспечение эффективности требует применения компиляции и оптимизации под конкретную платформу, что противоречит платформенной независимости и переносимости. В разработанной трёхуровневой архитектуре для её реализации за основу приняты три языка Python, Prolog и С. Применение трёх языков позволяет производить оперативное и согласованное внесение изменений в проектные данные и алгоритмы. Те части программного кода, которые несут большую вычислительную нагрузку, многократно используются без внесения изменений, работают по простой логике, и не требуют переносимости, динамической модификации типов данных, структуры объектов и т.д. пишутся на компилируемом языке С. Те части, которые не несут большой вычислительной нагрузки, а осуществляют управление взаимодействием низкоуровневых модулей на языке С написаны на командно-функциональном языке Python. Из-за значительно меньшего по сравнению с С объёма изменения в Python-программы вносятся быстрее. Python-программы могут вводится пользователями-разработчиками в интерактивном режиме с возможностью просмотра документации по создаваемым в процессе интерактивного диалога объектам и с возможностью интерактивного поиска имён атрибутов и методов созданных объектов.
С-модули. На нижнем уровне—С-модули, берущие на себя основную вычислительную нагрузку. Среди них модули работы с многомерными массивами Numeric Python, модуль решения разреженных систем линейных уравнений sparse, модули визуализации данных Gtk+Extra и др. Как правило, С-модули производят объёмные вычисления, не требующие сложной логики и поиска решения. С-модули являются машинно-зависимыми и для их написания, отладки и модификации нужны средства разработки. Это требует создания высокоуровневых механизмов управления и связывания С-модулей в единое целое.
Python. Язык Python [99] — это полу-интерпретируемый командно-функциональный язык с возможностями объектно-ориентированного программирования. Команды, в т.ч. содержащие многострочные блоки циклов и условий, можно вводить в интерактивном режиме.
Prolog и база знаний проекта. Язык Prolog [56, 55, 44, 103, 75, 90] — это средство, позволяющее на основе языка математической логики определять архитектуру проекта, соответствие между модулями редактирования и объектами проекта, зависимости между данными и скриптами и т.д. В предлагаемой инструментальной среде используются в основном продукционные методы предстваления знаний, но при редактировании с помощью диаграмм Dia используются также семантические сети. Алгоритмическая база знаний проекта на языке Prolog основана на переменных. Каждая переменная имеет область определения: переменная может быть скалярной, задаваться на некоторой сетке, в вершинах и рёбрах графа и т.д. Все переменные сгруппированы по объектам. Идентификатором переменной является Prolog-терм следующего вида: терм-идентификатор объекта>:<атом-имя переменной>: <терм-идентификатор точки области определения>
Зависимости между переменным описываются с помощью продукционных правил под предикатом calc. Например, calc((obj1:х:1) = (obj 2:у:2) + (obj 3:z:3)).
В рамках среды проектирование понимается как вычисление результатов по исходным данным. Все исходные данные представляют собой набор переменных объектов, редактируемых различными способами. Результаты проектирования могут быть в виде отчётов, графиков и диаграмм, полученных после вычисления переменных-результатов. Поддерживается две стратегии поиска последовательности правил вычисления результата: от переменных-результатов (обратный поиск) и от исходных данных (прямой поиск). Поиск всегда ведётся вширь, что обеспечивает минимальное количество подстановок.
Поддержка этапности разработки. Предлагаемая инструментальная среда и создаваемые ей средства корпоративного проектирования не ориентрованы на жёстко фиксированные этапы разработки. Вместо этого допускаются недоопределённые объекты, что позволяет адаптировать среду к правилам этапности разработки, принятым в той или иной организации. Рассмотрим возможность применения инструментальной среды для реализации этапности разработки, принятой в корпорации Sun (см. рис. 3). На этапе требований среда позволяет поддерживать документацию, техническое задание и иные материалы. На этапах декомпозиции и спецификации формируется в базе знаний проекта иерархия объектов проекта с кратким описанием. Затем при дизайне и кодировании
Требования)
Дизайн)
--^Документация)
Декомпозиция) (Спецификация)
Кодирование)
Тести рование)
Использование)
Развитие)
Рис. 3: Этапы разработки программных проектов, принятые в корпорации Sun [73]. реализуются интерфейсы и модули уровней Python и С. Тестирование облегчает база знаний, позволяющая накладывать, формулировать и проверять различные дополнительные тестовые условия как на содержимое базы знаний, так и на работу модулей на языках С и Python. Различные текстовые материалы могут быть сформированы как по завершению кодирования, так и независимо от него. Далее при использовании и внедрении спроектированных программных средств часть этапов может быть повторена с помощью поддерживаемых инструментальной средой методов обновления данных.
Диспетчер проекта. Весь контроль за вычислением возлагается на диспетчер проекта. Все объекты проекта образуют древовидную иерархию. На каждый объект в базе знаний назначается редактор, который запускается в окне диспетчера при выборе объекта в иерархии. Кроме того объект может содержать ссылки на библиотеки компонент, из которых можно выбирать подобъекты данного объекта.
Многоагентность. База знаний предполагается распределённой, т.е. значения переменных и правила вычисления переменных могут хранится на разных узлах сети (хостах). При этом в системе имеется специальная сетевая служба управления базой знаний, которая поддерживает экспортно-импортные предикаты-правила. Правила действуют следующим образом: если терм-идентификатор переменной унифицируется с образцом экспортно-импортного правила, то дальнейшие вычисления следует вести на узле сети, указанном в экспортно-импортном правиле. При этом на узел сети, указанный в экспортно-импортном правиле отправляется программа-агент [104, 86, 77, 12, 80, 14], которая и производит вычисления. Управление передачей агентов по сети осуществляется описанным выше диспетчером проекта и специальной программой — платформой агентов. По сравнению с клиент-серверной архитектурой [93, 41], где на узлы сети отправляется заявка на выполнение определённой процедуры, SQL-запроса и т.д., агент позволяет снизить влияние сетевых задержек на скорость выполнения операции, поскольку реакции на запросы процедур обрабатываются агентом, а не передаются по сети.
Реализация
Реализация компонент трёхуровневой архитектуры. С-модули предлагаемой инструментальной среды разработаны и заимствованы автором под компилятор дсс в UNIX-подобных ОС, удовлетворяющих требованиям открытости и безотказости, но основные принципы функционирования (см. стр. 8) могут быть реализованы на большинстве современнных платформ. Интерпретаторы языка Python разработаны под большинство современных платформ Guido Fon Rosum-ом [99]. В предлагаемой инструментальной среде используется SWI-Prolog [103], поддерживающий модульность и обладающий широкими возможностями продукционного программирования, который за счёт предлагаемой архитектуры и алгоритмов взаимодействия модулей позволяет эффективно решать практические проектные задачи, как показано на конкретных примерах из различных предметных областей.
Массивы Одной из основных компонент численных расчётов являются массивы чисел различной размерности. Для эффективной работы с ними используется Numeric Python [87]. Массивы Numeric Python имеют в своём составе размерность по каждому направлению или "форму", указатель на массив с элементами и некоторую другую информацию. Функции Numric Python, аргументами которых могут быть либо скалярные аргументы, либо массивы называют универсальными. Бинарные универсальные функции имеют дополнительно модификаторы применимости, позволяющие изменить стандартный порядок применения функции к массиву. Работать с разреженными матрицами помогает модуль sparce [88]. В нём вся матрица представлена двусвязным списком ненулевых элементов. Кроме того поддерживаются около двух десятков вспомогательных указателей на диагональные элементы, на первые ненулевые элементы слева и сверху, а также индексы Марковича. Для решения задач линейного программирования [82, 83, 35] в среду включён модуль Ipsolve, позволяющий учитывать ограничения типа равенств и неравенств.
Многоагентность. Агентны всегда выполняются под агентскими платформами. Агентские платформы бывают 2-х видов: диспетчер проекта, выполняемый под управлением пользовательского интерфейса и программа-демон, которая запускается на некоторых узлах корпоративной сети для обеспечения запуска агентов от многих пользователей. Обе платформы поддерживают разработанный алгоритм асинхронной передачи агентов по сети, с использованием которого агенты могут запускаться до полной загрузки по сети.
Визуализация данных. Для визуализации графиков и даиграмм используется 2 подхода: генерация по спецификации и редактирование в интерактивном режиме. Достоинства и недостки каждого из подходов рассматриваются в работе. В модулях визуализации используется OpenGL [89].
Примеры расчётов и проектов.
Рассмотрены 3 примера применения среды.
CASE-средство для построения информационных Internet-систем [23] (CRM, ERP, MRP, АСУ). В информационной системе выделяется 3 уровня: уровень базы данных, уровень CGI-программ и HTTP-сервера и уровень пользователя. В результате проектирования (см. рис. 5) формируются исполняемые CGI-программы, не требующие в процессе выполнения интерпретаторов Python и Prolog. Основными отличиям от разнообразных HTML-редакторов интерпретируемых языков типа Perl [101], PHP [68], Рефал [53, 4] и т.д. являются компилируемые CGI-программы и шаблоны документов, которые можно просматривать стандартным browser-oM без СУБД из-за отсутствия дополнительных встроенных тегов типа XML [100].
Использование Makefile-ов для большого количества программ создает проблемы при определении опций компиляции и подключаемых модулей. В предлагаемой инструментальной среде функции программы make выполняет Рго1од-интерпретатор, что позволяет группировать программы по разным критериям и в зависимости от группы подключать опции компиляции и модули.
•В связи с чем автором разработана и опробована структура базы знаний на языке Prolog и CGI-библиотека на языке С, позволяющая работать с шаблонами HTML-документов и сервером СУБД (см. рис. 4).
Проектирование поверхностей сложной формы на примере судовых корпусов.
В работе показано как инструментальная среда может использоваться для создания средств CAD, САМ, CAE, PDM, АСУ [54, 1, 38]. Исходные данные в виде точек, нормалей и опорных линий корпуса вносятся в базу знаний проекта, предложенной автором архитектуры на основе треугольных сплайн-элементов от барицентрических координат. По ним вычисляется конечно-элементная сплайновая модель корпуса, а также сечения. Использование в качестве элементов сплайн-треугольников от барицентрических координат позволяет, по сравнению с бикубическими сплайнами, уменьшить степени полиномов и улучшить приближение поверхности. База знаний позволяет учитывать опорные
Рис. 4: Работа спроектированных CGI-программ
Рис. 5: Проектирование CGI-программ линии поверхности, гладкость и разрывы, а также находить аналитическое выражение вектора градиента различных задач оптимизации поверхностей. Дополнительно имеется возможность построения различных сечений поверхности плоскостью, нанесения сечений на чертежи и формирования данных прог-рамм для различного технологического оборудования с использованием разработанных алгоритмов. Ввиду того, что сечения представляют собой неявные кривые 3-го порядка, они строятся с определённой точностью, обычно совпадающей с точностью, обеспечиваемой чертёжными графопостроителями (плоттерами) или точностью оборудования для которого готовятся данные. После чего модель можно испытать на остойчивость и сгенерировать окто-дерево для различных задач моделирования.
База знаний по проектированию нейросетей [57]. Изучались возможности применения инструментальной среды для проектирования нейросетей, их обучения и генерации модулей, работающих отдельно от инструментальной среды. Для нейросетей обратного распространения спроектирована архитектура базы знаний для описания топологии нейросети, типа её нейронов и алгоритмов обучения. База знаний позволяет с помощью нескольких утверждений описать правила определения топологии сетей типа преобразования Фурье или принцип связи только с ближайшими соседями.
Часть I
Обзор методов и средств проведения численных расчётов и проектирования
Заключение диссертация на тему "Трехуровневая инструментальная среда поддержки корпоративного проектирования"
Основные результаты. На основании анализа современных промышленных и научно-исследовательских сред проведения численных расчётов и моделирования (см. п. 2.2 стр. 20, п. 2.3 стр. 20), систем численного и аналитического решения задач (см. п. 2.1 стр. 18), библиотек языков программирования (см. п. 3 стр. 23), программ визуализации и редактирования данных, создания схем, диаграмм и графиков (см. п. 4.2 стр. 25, п. 4.1 стр. 25) разработаны алгоритмы взаимодействия модулей (см. п. 9 стр. 41, п. 10 стр. 47, п. 11 стр. 51), на базе которых создана инструментальная среда (см. ч. Ill стр. 55).
Проведены эксперименты по оценке времени работы и объёма кода на каждом из 3-х языковых уровней (см. п. 8 стр. 37), по отработке взаимодействия модулей на различных языковых уровнях и предложены архитектуры базы знаний в различных примерах (см. ч. IV стр. 69). Применение трёх языков даёт возможность использовать для реализации модулей различные парадигмы (см. п. 1.3.1 стр. 16), что позволяет оптимально сочетать скорость проектирования и эффективность обновления данных. Показаны возможности среды по интеграции модулей, упрощению и унификации скриптов и спецификаций объектов и методов эффективного обновления данных на примерах из различных предметных областей.
Примеры использования.
• Для информационных Internet-систем (см. п. 16 стр. 69) разработана и опробована структура базы знаний на языке Prolog и CGI-библиотека на языке С, позволяющая работать с шаблонами HTML-документов и сервером СУБД (см. п. 16.1 стр. 69). По базе знаний (см. п. 16.3 стр. 72) формируются С-файлы, подключаемые к исходному коду CGI-программы. В предлагаемой инструментальной среде функции программы make выполняет Prolog-интерпретатор, что позволяет группировать программы по разным критериям и в зависимости от группы подключать опции компиляции и модули (см. п.16.4). Предлагаемые методы и средства были опробованы в информационно-поисковой системе "СААНД-АВТО" [26], полностью разработанной автором, и в "Системе управления кадрами и учёта рабочего времени сотрудников предприятия".
• Для поверхностей сложной формы в машиностроении (см. рис. 17.11 стр. 88) предложена архитектура базы знаний (см. п. 17.4 стр. 79) для поверхности из треугольных сплайн-элементов от барицентрических координат (см. п. 17.4 стр. 79). База знаний позволяет учитывать опорные линий поверхности, гладкость и разрывы, а также находить аналитическое выражение вектора градиента различных задач оптимизации поверхностей, строить различные сечения поверхности плоскостью (см. п. 17.5 стр. 80, рис. 17.6 стр. 83, рис. 17.9 стр. 86, рис. 17.10 стр. 87, рис. 17.7 стр. 84, рис. 17.8 стр. 85) с использованием разработанных алгоритмов.
• Для проектирования нейросетей сформулированы основные принципы организации базы знаний (см. п. 18 стр. 89), что позволяет на основе приведённой базы знаний создать нейросимулятор, который позволит облегчить подготовку обучающей и тестирующей выборок, формирования отчётов и результатов обучения нейросетей.
Заключение
93
Во всех трёх рассмотренных примерах систем, как в любых создаваемых с помощью инструментальной среды системах корпоративного проектирования, инвариантными остаются методы и средства обновления данных, многоагентского и межязкового взаимодействия.
А. Графический интерфейс пользователя инструментальной среды
I I 1 t I 'г 1 I I 1
I I"? I I I I 1 I I I I31? 1 1 I I t I I I
111
Iterator
TFiHtTJ-
J-IJV-CT/*!' I ■hCltiiert tltmO'
1
Preorderlterator tfirstlJ
4-NeKtO d-IsDoneH ♦Current!tem() ro pt
Arrajlterator If Listlteralor
-fhirstl J
NeKt(3 +IsDone г+Current,
II
Firstf) Ne-nt (J tf i
IsDonel'l i:ifIsDone( Item;) ):{+'
Currentltemf j
Gljph
Nulllterator
FirstU
M-HentO
IsDone(j J л-CurrentI tm (1 [ returns TF ureateiteratoru ^ returns new HullIterator К
Масштаб 50.0^
Рис. A.1:
Dia:Hcncmb30BaHHe UML-диаграмм при проектировании.
Hide Row Titles
Hide Column Titles
А12 А в / j
Z
В С и Е
10
11
12
13
Cj"tksh.c с t
G'tkSheet is a matrix where you can allocate cells of Cell contents can be edited interactively with an spe You can change colors, borders, arid many other att Drag & drop or resize the selection clicking the com Store the selection on the clipboard pressing Ctrl-С (The selection handler has riot been implemented ye' You can add buttons, charts, pixmaps, and other wic me a plot
J.
Folder 1
Fol
---1
Рис. A.2: Gtk+Extra: компонент-таблица, используемый в инструментальной среде в качестве модуля редактирования.
О)
1.0
Pixmap 1
Ctb PixmaP 2
1.0
X Title.
Рис. A.3: Gtk+Extra:Использование иконок при визуализации результатов проектирования. R
1.0 0.8 0.6 0.4 0.2 0.0 0.2 0.4 0.6 0.8 1.0
150
- 180
210
270
Рис. А.4: Gtk+Extra:l/1cnonb30BaHMe полярных координат для визуализации результатов проектирования.
I I I1! 1 Н h I I 1 Fl II 1 14I I 1 1 Г5! I I 1 161 I I I 171 13
02 VTifle 1
-I
I.-U
2D id
3D
Polar О
Refresh Arrange Contr
IIZZ it it H
Рис. A.5: scigraphica:ncnonb30BaHne диалоговых окон для управления визуализацией результатов проектирования в виде трехмерного графика с линиями уровня.
Библиография Смирнов, Демид Владимирович, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
1. Автоматизация конструктороско-технологической подготовки производства на базе программных продуктов T-FLEX CAD/CAM/CAE/PDM. www.topsystems.ru.
2. В.А. Семёнов П.Б. Крылов С.В. Морозов О.А. Тарлан. Объектно-ориентированная архитектура для приложений научной визуализации и математического моделирования. "Программирование.", (2), 2000.
3. А.П.Иншаков В.Ф.Белов Г.И.Шабанов С.А.Корпушкина А.В.Шамаев, О.А.Томилина. Математическое моделирование. Саранск.Издательство Мордовского университета., 2001.
4. Турчин В.Ф. Рефал-5. Руководство по программированию и справочник. www.refal.net.
5. И.Э. Иванов И.А. Крюков И.В. Терехов. Объектно-ориентированная програмная система подготовки данных и визулизации газодинамических расчётов. "Математическое моделирование", 13(7), 2000.
6. А.В. Аграновский М.А. Болотин А.А. Букатов. Организация сетевых вычислений на основе многоагентных систем. Тематический выпуск Интеллектуальные САПР. Известия ТРТУ, (2), 2000.
7. Чень Ван Лоун Дж. Голуб. Матричные вычисления. М. "Мир", 1999.
8. Хювянен Э. Степянен Й. Мир ЛИСПа.в 2-х т. М. "Мир", 1991.
9. В.П. Иванов А.С. Батраков. Трёхмерная компьютерная графика. Москва. Радио и Связь, 1995.
10. Ю.Н. Тюрин А.А. Макаров. Анализ данных на компьютере. М. "Финансы и статистика", 1995.
11. Н.А. Сливина А.И. Плис. MathCad: Математический практикум. Финансы и статистика, 1999.
12. Фомичёв B.C. Холод И.И. Организация и модели системы мобильных агентов. "Програмные продукты и системы.", (4), 2000.
13. Г.А. Тарнавский С.И. Шпак. Декомпозиция методов и распараллеливание алгоритмов решения задачи аэродинамики и физической газовой динамики "Поток-3". "Программирование", (6), 2000.
14. В.Ф. Хорошевский ТА. Гаврилова. Базы знаний интеллектуальных систем. Санкт-Петербург Москва Харьков Минск "Питер", 2001.
15. Е.А. Луговская В.Б. Тарасов. Многоагентные системы поддержки открытого образования в техническом университете. "Програмные продукты и системы", (2), 2001.
16. Д.А. Староверов А.А. Камустин. Лесосплавной флот. Расчёт плавучести и остойчивости. Москва. Издательство университета леса., 2002.17. Aglets workbench.
17. GNU General Public License, www.gnu.org.
18. GTK+ 2.0 Tutorial, www.gtk.org.
19. GTS Library Reference, gts.sourceforge.net.21. nt.excite.ru/newstrader/.22. www.agentware.com.23. www.business2business.ru.24. www.geomagic.com.25. www.metlica.com/HSL/Progects/concorida/.26. www.saand.ru.27. www.scriptics.com.28. www.w3c.org.
20. MySQL Reference Manual, www.mysql.org.30. Pdl documentation.31. под ред. Я.И.Войткунского. Справочник по теории корабля, в 3-х томах. Ленинград. "Судостроение", 1985.
21. М.М. Горбунов-Посадов. Конфигурации программ. М. "Малип", 1994.
22. М.М. Горбунов-Посадов. Как растёт программа. Институт прикладной математики им. М.В. Келдыша РАН, 2000.
23. К.Е. Афанасьев A.M.Гудов. Информационные технологии в численных расчётах. Издательство Кемеровского университета., 2001.
24. Дж. Данциг. Линейное программирование и его обобщения. М."Прогресс", 1966.
25. ФуксманА.Л. Технологические аспекты создания программных систем. М. "Статистика", 1979.
26. Т.А. Гаврилова. Представление знаний в экспертной диагностической системе АВАНТЕСТ. "Изв. АН СССР. Техническая кибернетика", (5):165-173, 1984.
27. Наталья Дубова. Системы управления производственной информацией. "Открытые системы.", 17(4), 1996.
28. И.Н. Овсянникова. Алгоритм нахождения линий пересечения между двумя бикубическими поверхностями. Програмное обеспечения САПР, 1997.
29. А.П. Кулаичев. Методы и средства анализа данных в среде Windows.STADIA 6.0. Информатика и компьютеры., 1998.
30. Ахтырченко КБ. Применение технологии c&rba при построении распределённых информационных систем. "СУБД", (1-2), 1998.
31. Бьерн Страуструп. Язык программирования С++. AT&T Labs Мюрей-Хилл, Нью-Джерси, 1999.
32. О.В. Лобанова. Практикум по решению задач в математической система Derive. Финансы и статистика, 1999.
33. С.И. Шаповалова. Представление на Прологе условий переходя для ускоренного поиска по графу. "Математическое моделирование", 13(6), 2000.
34. Ирина Бочаева. Ермак в Сургуте. Enterprise Partner., 31(14), 2001.
35. Наталия Мозгунова. Система управления Сенежским ЦБК. Enterprise Partner., 28(11), 2001.47 4849 5051 52 [535455 5657
-
Похожие работы
- Разработка методов управления доступом в трехуровневых распределенных реляционных СУБД
- Поведенческий и инструментальный аспекты проектирования встроенных вычислительных систем
- Разработка и исследование методов применения систем поддержки принятия решений на основе нечетких моделей в задачах проектирования информационно-вычислительных сетей
- Инструментальные средства формирования информационного базиса
- Корпоративные электронные информационные среды поддержки научно-образовательной деятельности на основе процессно-ролевого подхода
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность