Ю. Карпов - Иммитационное моделирование систем с AnyLogic 5 (1124147), страница 47
Текст из файла (страница 47)
В данной главе мы рассмотрели обшие принципы анализа систем в условиях неопределенности и средства АпуЕоягс, позвсляюшие выполнять такой анализ. АпуЕоя1с включает множество средств, облегчающих разработку и анализ стохастических моделей. В первую очередь, это богатое разнообразие распределений случайных величин. Разработчик моделей на АпуЫйзс может также создать свое собственное распределение по своим экспериментальным данным. Для создания своего распределения пользователь должен создать новый класс и унаследовать его от базового класса пасет, как это показано в приведенном примере модели лтсодо1 пве оупзитсв.
Глава 11 Организация взаимодействия Апу~ оус с другими приложениями' 11.1. Использование файлов дАЧА и АГАВ При разработке моделей возникают ситуации, когда удобно использовать уже созданные (например, другими колшаниями) классы или библиотеки языка 3ауа вместо того, чтобы разрабатяявать их самому.
В языке Яауа создано огромное количество классов и библиотек, использование которых во многих случаях может упростить и ускорить процесс разработки моделей. Поэтому включение в проект Апу1лй)с структур данных, определенных в 3АУА-файлах, или библиотек для работы с данными, графиками и подобными элементами часто является целесообразным. Кроме того, при разработке модели Апу) ой|с иногда нужно вынести часть модели в 3АтгА-файл для дальнейшего использования уже разработанных функций. АпуЕорс прелоставляет разработчику такие возможности. Для добавления внешних ЗАЕЛА-файлов в проект следует воспользоваться меню, которое появляется по правому щелчку мышью на названии пакета модели.
В меню выберите опцию Добавить внешний файл и в появившемся диалоге выберите файлы для добавления в проект. Если вы введете имя файла, которого не существует, то будет создан новый 3А'тгА-файл с соответствующей структурой. Для добавления библиотек перечислите их названия в поле Дополнительные библиотеки настроек модели. Пути к библиотекам должны указываться относительно каталога, в котором находится модель. Поэтому проще всего поместить файлы 3АК-библиотек в тот же каталог, где располагается и модель, и перечислить названия библиотек через точку с запятой без пробелов.
Например, гяуьгьлалут.залгсрсчиевс.заггеехсргосеввьлд.бал. После добавления списка УАК-файлов в проекте становятся доступными классы этих библиотек. Литером главы является Гарифуллии М. В, Глава й й Организация взаимодействия Апу(.од(о с другими приложениями ггпу 11.2. Работа с текстовыми файлами Средства поддержки работы с текстовыми файлами в Апу) ой(с не встроены. Однако поскольку модели Апу(.ой(с могут быть расширены любым Уачакодом, то для работы с этими файлами в молелях возможно использование простого и мошного АР! 3ача. Для чтения текстовых файлов можно воспользоваться станлартным )ача-классом впййетебкеаает, который позволяет считать ланные строчку за строчкой из текстового файла.
При этом, конечно, следует предусмотреть обработку исключений. В следуюшем примере оператор сту языка )ача выделяет область, в пределах которой возникшие исключения будут перехватываться и обрабатываться функпией свес)с сту [ //этот код построчно читает тестовый файл с именем й11енапе впййетес)кеабет йпрцс=пеи вссййетес)аеас)ет(пеи Е11екеадет(й11енаие))< Бстйпц 11пес иЬ11е( < 1(пе = (прот.теаОЬ1пе() ) <= пи11 ) ( // тело цикла пустое, пз11 означает конец файла // в переменной 11пе будет содержаться строка ) ) сатсп ( Ехсерт(оп ех ) ( Епцйпе.еттот( "Ехсертйоп ии(1е теабйпц й(1е " + ех ) Конструкция ету/свесь предназначена для перехвата ошибок (исключений) в некоторой области кода. Если в блоке сту в любом операторе возникает ошибка, Зача игнорирует остальные операторы и переходит в блок свесь, где обычно пол<ешают код обработки исключений.
Если используемые функции генерируют исключения, то необходимо помешать использующий эти функции код в блок сту. Как правило, в текстовом файле содержится информация, представленная в виде столбцов чисел. Класс вой йетебкеабет позволяет считать строки, поэтому после чтения строку необходимо распознать или разделить на элементы и затем преобразовать в числа. Эту процедуру можно выполнить с помо- ШЬЮ бИбЛИОтЕКИ Зача.цй(1.тецехр, ПрсдсетаВЛЕЮШЕй КяаССЫ дпя рабптЫ с регулярными выражениями, с помошью ю<ассов дача.цй11.Бсаппет или класса зача.цс11.Бйтйпцтокеп(вет, созданного для выделения подстрок строки. Далее приведен пример распознавания строки с помощью класса Бетйпцто)сепйвет.
!/этот код разбивает строку на подстроки Бйтйпцтокеп(вет ве = пои Бет1пцтокепйвет( 11пе, " 1й" ) тту( иЬ11е ( вв.ьазнотетокепз() ) ( Бйтйпц пехстокеп = зс.пехйтокепы ггв Часть (((. Методологические вопроси использования моделей //алесь можно обработать подстроку строки ) сассь ( Новос)зЕ1езвепсвхсерсгоп ех ) ( Епягпе.еггог( "Ехсервгоп ыи11е ргосевв1пд 1зпе " + ех ) ) зава также предоставляет сервисы для записи текстовых файлов. Далее представлен пример записи десяти строк текста в файл. //зтот кол записывает 10 строк текста в файл с именем Г11еиаее пгу ( впггегебиггсег ъы = пеы впггегес)иггсег( г11енавзе )з Всгггя 1з.пе = пп11з гог ( 1пв 1=аз 1<10з 1++ ) 11пе = "11пе" + 1 + " 1п"з // формируем строку ллл записи в файл Ьзз.иггте( )гпе ) сакс)з ( Ехсерс1оп ех ) ( Елргпе.еггог( "Ехсерегоп мн11е ыггьгпя Г11е " + ех ) ) 11.3.
Интеграция с базами данных Внешние базы данных могут быть использованы для параметризации моделей, чтения больших обьемов исходной информации для модели (например, таблиц маршрутизации), записи результатов моделирования и т. п. Технически есть два способа организации взаимодействия модели и базы данных. Можно использовать интерфейс Л)ВС, который основан на спецификациях ЗАО С(.1 (БО(.
Ассезз Огоцр Са!1 (еуе( 1п(еггасе, интерфейс уровня вызова группы доступа Я Н(.). Начиная с версии ЛЖ 1.1, в поставке стандартных библиотек появился пакет классов зача.вг(1, обеспечивающий набор функций, необходимых при разработке ОРВС-приложений. В этом пакете содержится множество классов, позволяющих выполнять хранимые процедуры, возвращать результаты запросов и т. д. Л)ВС, в свою очередь, работает через ОВВС или через прямые связи к базам данных.
Второй способ организации взаимодействия моделей и баз данных — использование встроенного в АпуЕад)с Епя!пе класса ссзв.хз.апу1одьс.паваеоигсе. Этот класс работает поверх Л)ВС и предоставляет методы, позволяющие сократить объем необхолимого лля доступа к данным кода. Обц(ая схема доступа к данным представлена на рис. !!.1. Опишем послеловательность действий, необходимых для чтения данных из книги Ехсе1. Во-первых, необходимо создать собственно файл ХЮ с данными и организовать поступ к этим данным с помощью БЩ-запросов из Глава !!.
Органиэация взаимодействия Ялу1од(с с другими приложениями ггя модели. Для возможности адресации части листа в пределах книги Ехсе! используется понятие именованных диапазонов. Необходимо заполнить часть листа данными в формате таблицы. Затем, используя 1пвегт ) ( )ап)е ~ 1)е)!Ее, нужно задать имя этой области листа.
После того, как ХЫ-файл с данными подттовлен, в модели необходимо создать новый источник данных иупасавоохсе и связать этот источник данных с файлом Х15. Вся дальнейшая работа с добавленным источником данных организуется через АР! класса оасавоцхсе. Например, представленный далее код выбирает значение параметра (столбец уа1це) из именованного диапазона вагаыесетвтаь1е, где ими параметра (наев) имеет значение Атг(ча) вате. Бсхглд в = муоасавоиксе.цеьча1це( "БЕьеот уа1ие ЕЕОМ РахавееегзтаЬ1е ИИЕЕЕ Наые = 'Аклгча1 Клее'; ); //преобразовываем строку в число аклгча1яасе = ПоиЬ1е.ча1цеОЙ( в ).доиЬ1еуа1цеы; Элехтронныа таблицы Рис. 11.1.
Общая схема доступа к БД из модели Апу(оя)с Для записи результатов также используются Я 1;запросы. Например, представленный далее код добавляет в лист с именем еевцтсв данные о клиенте и его времени пребывания в системе. Иуоаоавочхсе.атос)ггу( "1НБЕЕт титО [Еевц1овз! уАЬОЕБ (" + 1б +"," + сгпе + ");" )т Специфика работы с Ехсе! заключается в том, гго необходимо закрывать файл перед запуском модели. Использование МЯ Ассов как многопользовательской базы данных позволяет снять зто ограничение.
Часть Иь Методологические ноп ы использования моделей 11.4. Вызов внешних приложений из Апу1оус Вызов внешних приложений используется, когла из модели по некоторым событиям необходимо запустить внешнюю программу. Это может быть программа обработки статистики, результатов моделирования или приложения для отображения результатов. Доступ к программному окружению в )ауа реализуется классом еппс1ве.