© А.М. Валуев, А.И. Голенковский, 2009
УДК 517.977
А.М. Валуев, А.И. Голенковский
РЕАЛИЗАЦИЯ ЯЗЫКОВОГО ПОДХОДА К ОПИСАНИЮ И РАСЧЕТУ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ И ПЕРСПЕКТИВЫ ЕЕ ПРИМЕНЕНИЯ В ЗАДАЧАХ ПЛАНИРОВАНИЯ ГОРНОГО ПРОИЗВОДСТВА
Описаны средства реализации языкового подхода к представлению и решению нелинейных задач планирования, соответствующих требованиям горного производства. Работа созданной библиотеки классов иллюстрируется на примерах построения графика и вычислений над матрицами в человеко-машинном диалоге. Ключевые слова: программный комплекс, библиотека классов, языковое описание моделей, нелинейное программирование, планирование горного производства.
Существенными отличиями оптимизационных задач планирования горного производства (в особенности при открытом способе разработки) от задач большинства предметных областей является: 1) практически обязательное наличие нелинейных зависимостей, характеризующих запасы полезного ископаемого, рельеф местности и проч.; 2) своеобразная структура ограничений, которая даже для статических задач имеет черты динамических задач (т.н. задачи квазидинамического типа); 3) многовариантность постановки задачи, отражающая многообразные связи производства с его внешней средой. Дополнительной особенностью большинства таких задач является также невозможность определения совокупности взаимосвязей при произвольных значениях переменных, которым заведомо не соответствует допустимое решение — например, когда линии, приближенно описывающие бровки уступов, самопересекаются.
Отмеченные черты выдвигают систему требований к построению методов оптимизации и их программной реализации:
1. методы должны быть ориентированы на решение задач, включающих нелинейные многоэкстремальные зависимости, причем определенные, возможно, не на всем пространстве аргументов;
2. методы должны учитывать особенности структуры ограничений задачи;
3. целесообразно иметь средства как можно более удобного описания задачи, в т.ч. для доопределения и переопределения задачи в человеко-машинном диалоге.
Можно сказать, что по отдельности эти требования, в особенности второе и третье, выдвигались и реализовывались в последние десятилетия. Для нахождения локального минимума для нелинейных задач общего вида предложен ряд методов, такие, как методы модифицированных функций Лагранжа, простой итерации, штрафных функций, возможных направлений, линеаризации и проч. [1]. Однако только последние два класса методов не выводят за пределы окрестности допустимой области, тогда как остальные же могут в ходе итерационного процесса сильно нарушать ограничения, что ставит под сомнение саму возможность продолжать вычисления для задач, соотношения которых не определены на всем векторном пространстве. Перспективным направлением является новый тип численных методов, основанных на специальном представлении невыпуклых зависимостей [2] и позволяющий для некоторых классов задач находить глобальный минимум, однако опыт применения их невелик. Таким образом, следует ориентироваться в первую очередь на прямые методы.
Последние, когда речь идет о динамических задачах и задачах квазидинамического типа, наиболее эффективны при использовании декомпозиционного подхода [3, 4]. При этом, однако, общие схемы методов могут быть реализованы в многочисленных вариантах [5]. Анализ построения декомпозиционных методов показывает, однако, что все они представляют собой комбинации немногих базовых типов вычислений — расчетов нелинейных зависимостей моделей и их производных, нескольких общих или специализированных алгоритмов линейной алгебры, а также решения задач линейного или (реже) квадратичного программирования, которое также сводится к вычислениям линейной алгебры.
Исследование и применение математических моделей становится значительно более удобным, если оно обеспечивается диалоговым режимом, включающим средства интерпретации формул для описания зависимостей модели, записываемых в виде, близком к традиционному. В известной степени эта возможность реализуется уже в табличных процессорах, но в очень урезанном виде. Недостатки электронных таблиц (ЭТ) заключаются в том, что, во-первых, кроме собственно вычисления значений величин по заданным
формулам и построения графиков функций, других возможностей практически не предлагается, причем графики могут быть построены только «по точкам», т.е. на основе заранее рассчитанных рядов значений для отдельных значений аргумента. Надстройки над ЭТ с функциями выполнения более сложных вычислений вычислительно неэффективны и предлагают достаточно неудобные способы описания задач.
Гораздо более эффективным становится интерактивный процесс исследования моделей, если интерпретатор сочетается с программными модулями, решающими различные задачи на основе введенных зависимостей — таких, как поиск корней системы нелинейных уравнений, задачи условной и безусловной оптимизации. Этот подход был успешно реализован в диалоговом комплексе ДИСО [6]. На аналогичных принципах построена система интерпретации языковых описаний моделей систем с иерархической структурой величин и зависимостей [7]. Однако в последней формульные соотношения модели вводятся в текстовых файлах исходных данных, а не в диалоге, а набор используемых функций описывается программным путем и не может быть расширен без внесения изменений в программу. Построение оптимизационного ядра программного комплекса для решения задач планирования, используемого совместно с системой интерпретации моделей, до сих строилось на основе чисто процедурного подхода, что существенно затрудняет реализацию в программной системе расширяемой библиотеки декомпозиционных методов.
Таким образом, сформулированные требования к построению программного комплекса планирования горного производства до сих пор не были полностью реализованы. В настоящей работе описаны новые решения, нацеленные на их реализацию на основе объектно-ориентированного подход к программированию с использованием языка JAVA [8]. Его достоинством является возможность создания кросс-платформен-ных приложений, благодаря чему широко используется при разработке многих типов современных программ. В силу реализованного в JAVA объектно-ориентированного подхода при разработке любой программы необходимо строить иерархическую модель классов для реализации необходимых задач и алгоритмов. В данной работе речь пойдет о модели классов для решения задач оптимизации и систем нелинейных уравнений.
После получения набора классов, построения последовательности вычислений и вызова функций из библиотеки выражение (формула) для вычисления переводится в «байт-код» - это набор упрощенных команд для VJM (Virtual Java Machine), которые укладываются в 1 байт. Основное преимущество байт-кода заключается в возможности создания унифицированного образа программы, который будет одинаково (в принципе) выполняться на любом компьютере, оснащенном виртуальной машиной Java. Однако у этого набора команд есть еще два важных достоинства: Во-первых, байткод программы в отличие от двоичного машинного кода полностью безопасен. Предварительно он проверяется виртуальной машиной Java. Такая проверка гарантирует корректность программы. Другим важным преимуществом байт-кода является его высокая плотность или, иными словами, относительно небольшое число байт, необходимое для представления программы. Измерение образов одной и той же программы, написанной на языке Java и C++ и скомпилированной соответственно в виде байт-кода и машинных инструкций, показывает, что объем машинных команд приблизительно в два раза превышает объем байт-кода. (В некоторых случаях разница может оказаться еще более значительной.)
Опираясь на вышесказанное можно говорить о том, что для полноценного решения задач оптимизации необходим комплексный подход, с использованием современных вычислительных средств и алгоритмов расчета, средств для представления матриц как типа данных, операций с матрицами (сложение, вычитание, вычисление детерминанта и (или) ранга и проч.), интерпретации текстовой записи формул сложных функций и их дифференцирование (как численное, так и аналитическое). Далее речь пойдет о конкретных способах реализации таких инструментов и алгоритмах их работы.
Работа интерпретатора основана на механизме перевода введенной строки в иерархическую структуру. В этой структуре сначала каждому символу (или группе символов) в строке ставится в соответствие определенный класс, пронаследованный от абстрактного класса Node («узловая точка»), и создается обьект такого класса. Таким образом, получается некоторая абстрактная таблица соответствий, поначалу без правил приоритета операций. Примерами классов-потомков могут стать: класс операций
(“+”,“-”,“*”,“/”); класс операций-скобок “(“, “)“; либо класс функ-
ций (“sin”, “cos”, “ln” и т.п.). Отдельно стоит класс переменных, который имеет методы для хранения промежуточных значений реализованный в виде стека. Реализация классов-операций, или проще — «расчет значения» — выполняется при помощи единого метода абстрактного класса — evaluate, который перегружен на различные варианты аргументов — объектов класса операций. В случае математических функций ситуация похожа - идет перегрузка по аргументу, но в методе происходит вызов функции из библиотеки математических функций, в которой описано большинство стандартных функций. Если наша «узловая точка» является скобкой, то добавляется отметка о добавлении приоритета вычислений в стек.
Проведение расчета выражения проводится в 2 этапа. На первом этапе происходит расстановка приоритетов выполнения операций и подскобочных выражений. Для этого составляется некий стек, в котором записываются шаги вычислений, в зависимости от типа операции. На втором этапе в соответствии с этим стеком рекурсивно вызывается метод evaluate для всех типов узловых точек. Таким образом, происходит фактически интерпретация строки в некий условный язык, который и был описан выше. Для корректной постановки и решения задач оптимизации предстоит реализовать аналитическое дифференцирование функции, задаваемой вводимой формулой. Это позволит производить постоптимизацион-ный анализ решения задачи и производить пересчет значений переменных при изменении входных параметров без повторных аппроксимаций исходной функции. Принципиально последовательность вычисления градиентов «узловая точка» повторяет вычисление значений самих «узловых точек» и может быть организована как единое целое с ним, но в данном случае речь идет о векторных аргументах.
Рис. 2 иллюстрирует использование интерпретатора для графического отображения зависимости, выражаемой вводимой пользователем формулой.
Рис. 1. Система узловых точек при расчете выражения
Заметим, что графическое отображение процесса решения оптимизационных задач может быть важным элементом человекомашинного диалога [6].
Создание набора средств для работы с матрицами в том виде, в котором мы привыкли работать с ними в линейной алгебре, необходим для простой реализации алгоритмов линейного и нелинейного программирования. На данный момент создан набор классов, позволяющий создавать двухмерные матрицы заданных размеров, генерировать матрицы со случайными элементами, складывать и умножать матрицы и скаляры, транспонировать, находить детерминант и нормы матрицы, а так же решать простые матричные уравнения вида Ах=Ь. На очереди стоит реализация более сложных
алгоритмов, таких, как выделение в прямоугольной матрице квад-
Рис. 2. Окно программы построения графика функции при вводе ее формулы в диалоге
максимального ранга с наименьшей по порядку величины нормой обратной матрицы.
Пример применения построенного набора классов иллюстрируется на примере задачи: «решить линейную системы Ax =b и посчитать остаточную норму, ||b—A х||».
Double [ ][ ] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
Matrix A = new Matrix(vals);
Matrix b = Matrix.random(3,1);
Matrix x = A.solve(b);
Matrix r = A.times(x).minus(b); double rnorm = r.normInf();
На основе использования созданных классов реализованы некоторые алгоритмы симплекс-метода, использование которого является важнейшим элементом декомпозиционных алгоритмов прямых методов наряду с чисто матричными вычисле-ниями. Отметим, что в связи с тем, что в декомпозиционных алгоритмах прямых методов размерность задач линейного программирования много меньше, чем для оригинальных алгоритмов, к реализации симплекс-метода предъявляются менее жесткие требования. Таким образом, задача построения базовых программных средств реализации основных компонент вычислений в оптимизационных задачах типа задач планирования горного производства в основном решена.
Основной проблемой построения программного комплекса планирования на основе сформулированных требований является системное решение проблемы представления модели оптимизационной задачи в целом, т.е. переход от представления отдельной зависимости с предопределенными именами аргументов к описанию структуры модели. В рассматриваемой предметной области модель представляется в виде иерархически организованной совокупности величин разного назначения (константы, параметры, задаваемые пользователем, переменные, по которым ведется оптимизация) и одновременно совокупности соотношений между этими величинами и их агрегатами, также имеющих различное назначение. Успешное применение к более узкому кругу задач такого способа представления модели в специализированной оптимизационной системе позволяет надеяться и на его реализацию на основе описанных в данной работе подходов.
------------------------------------------ СПИСОК ЛИТЕРАТУРЫ
1. Евтушенко Ю.Г., Жадан В.Г. К вопросу о систематизации численных методов нелинейного программирования: Препринт. М.: ВЦ РАН, 1988. — 66 с.
2. Стрекаловский А.С. Элементы невыпуклой оптимизации. — Новосибирск: Наука, 2003. — 352 с.
3. Илютович А.Е. Методы декомпозиция по времени в задачах оптимального управления и их приложения в расчетах динамики сложных систем. Дис. ... д.т.н. — М.:ВНИИСИ, 1990. — 243 с.
4. Валуев А.М. Гибридный декомпозиционный метод в задачах оптимизации с ограничениями общего вида // Сб. трудов /М.:ВНИИСИ. — 1990. — Вып. 7: Модели и методы оптимизации. — С. 10-19.
5. Валуев А.М. Комбинированные декомпозиционные схемы для оптимизации динамических и иерархических систем // Обозрение прикл. и промышл. мате-мат. — 2005. — Т. 12. — вып. 3. — С. 708-711.
6. Веселов Е.Н., Евтушенко Ю.Г., Мазурик В.П. Диалоговый комплекс ДИ-СО — вычислительная станция прикладного математика. // Вычислительные системы и программное обеспечение. Новосибирск: Наука, 1986. — С. 119-135.
7. Валуев А.М. Формальное представление и расчет моделей иерархических управляемых систем // Обозрение прикл. и промышл. математ. — 2005. — Т. 12.
— вып. 1. — С. 119-121.
8. Хорстманн К.С. Корнелл Г. Java 2. Том 2: Тонкости программирования.
— М.: Издательский дом «Вильямс», 2005.
9. Валуев А.М. Метод и программа оптимизации рабочей зоны угольного разреза // Отдельные статьи Г орного информационно-аналитического бюллетеня.
— 2003. — №8.— 22 с. ШШ
A.M. Valuev, A.I. Golenkovskiy
THE REALIZATION OF THE LANGUAGE APPROACH TO THE DESCRIPTION AND CALCULATION OF THE MATHEMATICAL MODELS AND THE PERSPECTIVES OF ITS IMPLEMENTA TION IN THE TASKS OF MINING ENTERPRISE PLANNING
Software components aimed at implementation of lingual approach to representation and solution of nonlinear planning problems meeting the requests of mining production are presented. The performance of the elaborated class library is illustrated by examples of graph plotting and calculations over matrices in man-machine dialogue.
Key words: software complex, class library, language description of the models, non-linear programming, mining enterprise planinnig
— Коротко об авторах --------------------------------------------------
Валуев АМ — доцент кафедры Организации и управления в горной промышленности МГГУ, канд. физ.-мат. наук; по совместительству старший научный сотрудник Института машиноведения им. А.А. Благонравова РАН, доцент Московского физико-технического института (государственного университета), [email protected]
Голенковский А.И. — студент 6 курса (магистрант) Московского физико-технического института (государственного университета), [email protected]