SprutExPro: программирование для непрограммистов
Данная публикация продолжает цикл статей, посвященных деятельности одной из ведущих фирм на рынке средств автоматизации инженерной деятельности — СПРУТ-Технология. В настоящей статье рассматривается принципиально новая технология компьютеризации знаний, соединяющая лучшие качества объектно-ориентированного программирования и экспертных систем искусственного интеллекта. Эта технология с помощью инструментальной системы SprutExPro позволяет непрограммирующим специалистам создавать интеллектуальные конструкторско-технологические системы проектирования с производительностью на порядок выше, чем профессиональные программисты.
При автоматизации проектирования применяют две принципиально различные технологии использования компьютеров:
- в качестве электронного кульмана;
- в качестве интеллектуального генератора конструкторской и технологической документации.
Первая технология рассчитана на «ручную» работу, так как не содержит инженерных знаний, которыми руководствуется пользователь в процессе проектирования.
Вторая технология дает пользователям возможность оговорить свои цели в виде технического задания и не растолковывать программе, как их достичь. Интеллектуальный генератор проектов решает промежуточные задачи незаметно для пользователя и ведет его прямо к достижению цели — генерации модели изделия и комплекта рабочей документации. При этом трудоемкость проектирования сокращается на порядок.
Однако для внедрения второй технологии необходимо ввести в компьютер инженерные знания, что при традиционном алгоритмическом подходе весьма трудоемко и дорого.
В настоящей статье описывается технология экспертного программирования, позволяющая непрограммирующим специалистам создавать интеллектуальные конструкторско-технологические системы проектирования с производительностью в 7-10 раз выше, чем профессионалы.
Экспертное программирование основано на представлении знаний в форме функциональных блоков, которые можно назвать «объект-функциями». Графически объект-функция представляется в форме прямоугольника (рис. 1), каждая из четырех сторон которого имеет определенное назначение: левая — «входы», правая — «выходы», верхняя — «управление», нижняя — «механизмы».
Внутри прямоугольника записывается наименование объект-функции. «Входы» представляют собой информацию, необходимую для выполнения функции, в результате выполнения которой они преобразуются в «выходы». «Входы» показывают все характеристики, которые необходимы для выполнения функции; без получения их значений функция не может быть выполнена. «Управление» описывает условие, оказывающее влияние на выполнение функции, но само не подвергается переработке. К нижней части изображения объект-функции присоединяются стрелки «механизмов», обозначающие программное средство, обеспечивающее выполнение функции. Таким образом, «входы» и «выходы» показывают, что делает функция, «управление» — почему она это делает, а «механизмы» — с помощью чего.
Приведенную выше теоретическую схему необходимо представить в форме, удобной для ее задания человеком при вводе знаний в компьютер. Наиболее простой формой является таблица («Словарь системы»). Такая таблица содержит все элементы функционального блока, представленного на рис. 1.
Наименования параметров должны выбираться из словаря системы, так же как и их имена-идентификаторы, необходимые для написания формул.
Условия модулей знаний (МЗ) представляют собой ограничения, накладываемые на входные и управляющие параметры и указывающие область определения функции, реализуемой модулем.
Неструктурированная совокупность МЗ в определенной прикладной области представляет собой базу знаний этой области, аналогичную базе знаний продукционных систем искусственного интеллекта, которые используются в экспертных системах.
Механизмы модулей знаний должны обеспечивать реализацию всех функций, которые могут потребоваться при формировании баз знаний. В число основных таких функций входят следующие:
- вычисление по формулам (в том числе присвоение значений переменным);
- определение значений по многовходовым таблицам;
- работа с базами данных;
- вычисление значений с использованием подпрограмм;
- вычисление значений с помощью номограмм (графиков функций);
- вычисление значений с помощью методов, сгенерированных из модулей знаний;
- вычисление значений с помощью исполняемых модулей существующих систем, входные и выходные данные которых хранятся в базах данных.
Внешнее представление «модуля-формулы» приведено на рис. 2.
Если рассматривать этот МЗ как правило-продукцию, то он эквивалентен следующему предложению: «Если тип оси ось гладкая или ось с буртиком и изгибающий момент (Mi) больше 0 и меньше 95000 Нмм, а допустимое напряжение изгиба (Ti) больше или равно 0,6 и меньше или равно 0,95 МПа, то диаметр оси расчетный вычисляется по формуле: dr=(Mi/(0,1ЅTi))^(1/3)».
Методику использования экспертного программирования мы продемонстрируем на примере компьютеризации знаний о проектировании осей из второго тома cправочника конструктора В.И.Анурьева. Выбор этой простейшей детали позволяет в рамках небольшой статьи осветить с достаточной полнотой элементы технологии. Глава, посвященная осям, начинается с изображения параметризованных чертежей всех стандартных типов этих деталей. Эти чертежи содержат геометрические знания, которые необходимо ввести в компьютер.
Компьютеризация геометрических и графических знаний осуществляется с помощью системы SprutCAD. Эта система, описанная в журнале «САПР и графика» № 9’2001, позволяет автоматически генерировать текст программы в процессе работы в графическом редакторе (рис. 3).
Текст геометрической подпрограммы используется при формировании модуля знаний, обеспечивающего автоматическую генерацию чертежа (рис. 4).
Формирование модуля геометрических знаний заключается в согласовании входных переменных подпрограммы, которые автоматически выводятся на экран в левый столбец после ее выбора, и переменных словаря базы знаний. В нижнем окне на рис. 4 показано формирование условия выполнения модуля: он будет выполняться, если тип оси равен 2. После нажатия на клавишу «Транслировать» автоматически генерируется подпрограмма, которую можно тут же оттестировать, нажав на клавишу «Моделировать» и задав значения размеров.
За чертежами деталей в справочнике конструктора следует таблица стандартных значений параметров осей. Эта таблица практически один к одному помещается в таблицу базы данных. Информация из базы данных выбирается с помощью модуля знаний, процесс формирования которого представлен на рис. 5. После выбора базы данных и необходимой таблицы из нее на экран выводятся идентификаторы полей, которым должны быть поставлены в соответствие переменные словаря базы знаний, как это было и в предыдущем случае. Далее необходимо сформировать запрос на выбор данных. Этот запрос представлен внизу экрана. В данном случае будет выбрана запись, в которой величина диаметра равна диаметру, определенному базой знаний. Сформированный модуль знаний может быть тут же транслирован и оттестирован.
Имеется возможность использования сетевых баз данных, обслуживаемых системой BDE. Описанный механизм согласования идентификаторов полей таблиц баз данных с переменными словаря баз знаний позволяет использовать существующие базы данных, надстраивая над ними интеллектуальные информационно-поисковые системы.
За таблицей стандартных диаметральных размеров в справочнике следует таблица стандартных длин осей (рис. 6). Эта таблица преобразуется в таблицу базы знаний с помощью модуля, экран формирования которого изображен на рис. 6. Модули знаний с механизмом типа «таблица» позволяют генерировать многовходовые таблицы с многоярусными шапками и боковиками. Разработан высокоэффективный способ графической генерации структуры таблицы и заполнения ее содержания.
Раздел справочника конструктора, посвященный проектированию осей, завершается описанием формул, необходимых для расчета диаметров осей исходя из допустимой величины прогиба. Формирование модуля знаний, выполняющего эту функцию, представлено на рис. 7.
Формулы расчета записываются в окне специализированного редактора, в котором предусмотрены возможности быстрого поиска необходимых идентификаторов из словаря базы знаний, подсказки по номенклатуре допустимых функций и знаков операций.
В нижней части рис. 7 видно окно задания условия применения данного модуля знаний: записанная в этом модуле формула справедлива только для сплошных осей и не может быть использована для осей полых.
После того как разработаны все необходимые модули знаний, они объединяются в метод, обеспечивающий решение комплексной задачи. Иными словами, производится автоматическая генерация алгоритма решения задачи. Экран генерации метода представлен на рис. 8.
В левой верхней панели экрана «Состав Метода» — модули инженерных знаний, ранжированные в порядке определения необходимых для их работы входных переменных. В нижней части экрана — словарь метода. Каждый метод, так же как и модуль знаний, представляет собой объект-функцию со структурой, приведенной на рис. 1. Входные переменные метода проектирования оси отображены в левой нижней панели. К числу этих переменных относятся все свойства, не являющиеся выходными в модулях метода. Остальные переменные составляют множество выходных и локальных свойств метода. Выходные помечаются галочками, как это можно видеть на правой нижней панели рис. 8.
После нажатия на клавишу «Транслировать» генерируется программа, являющаяся механизмом метода. В данном случае это программа проектирования оси, позволяющая после задания значений входных переменных сгенерировать чертеж оси (см. рис. 3).
В SprutExPro предусмотрена возможность создания циклических методов, что в совокупности с описанными выше возможностями превращает эту среду в полномасштабную систему программирования.
С применением экспертного программирования разработаны большие промышленные базы знаний конструкторского и технологического назначения. База знаний по электромагнитному расчету трехфазных асинхронных электродвигателей, разработанная в НИПТИЭМ, содержит 405 продукционных правил, использующих 679 переменных.
SprutExPro позволяет превращать сгенерированные с ее помощью методы в автономные программные средства со своим интерфейсом. Так, упомянутый электромагнитный расчет, разработанный как часть интегрированной системы генерации проектов асинхронных электродвигателей, был отчужден от этой системы и превращен в модуль, интерфейс которого представлен на рис. 9.
Технология экспертного программирования является универсальным средством представления как конструкторских, так и технологических знаний. С помощью SprutExPro была создана база знаний проектирования технологических процессов механической обработки, включающая более 600 правил. Эта база разработана и оттестирована одним экспертом за четыре месяца. При этом было автоматически сгенерировано 56 589 операторов языка программирования со средней производительностью 700 операторов в день.
Таким образом, описанная технология позволяет реализовать идеи, провозглашаемые CALS-технологией, и ликвидировать барьеры, существующие между различными фазами жизненного цикла изделий: между проектными расчетами и конструированием, а также между конструированием и проектированием технологических процессов по всем технологическим переделам.
В процессе развития цивилизации происходило изменение системы ценностей: на первом этапе, в условиях неразвитых производительных сил и товарно-денежных отношений, наибольшую ценность представляли изделия и продукты, на втором этапе, в условиях индустриального общества, наибольшую ценность приобрели деньги. Сегодня мы находимся на этапе информационного общества, когда наибольшую ценность приобретают знания: кто обладает наиболее передовыми знаниями, тот в состоянии производить наилучшие товары с наименьшими затратами и зарабатывать больше денег. Описанная среда SprutExPro позволяет непрограммирующим специалистам с минимальными затратами времени вводить свои знания в компьютер и превращать их в высокоэффективные прикладные программные системы. Введенные знания могут быть распечатаны в виде книг на ограниченном естественном языке (см. рис. 2), доступном для понимания, модификации и использования другими специалистами. Такие банки знаний станут ценнейшим достоянием физических и юридических лиц.
«САПР и графика» 1'2002