Научная статья на тему 'Технология создания компьютерных моделей для систем поддержки принятия решений'

Технология создания компьютерных моделей для систем поддержки принятия решений Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1129
181
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Емельянов Александр Анатольевич

В последнее время в состав программного обеспечения систем поддержки принятия решений всё чаще стали включать особые компьютерные (имитационные) модели. В данной статье приведены IT-методы создания таких моделей на базе пакета Pilgrim-5, обладающего рядом положительных свойств. Рассмотрены технология работы с пакетом при создании моделей, проектирование диалоговых окон, ориентированных на конечного пользователя, а также управление процессом выполнения модели. Приведены фрагменты отлаженных моделей.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Технология создания компьютерных моделей для систем поддержки принятия решений»

№ 1 2006

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

И

нструментальные системы для создания компьютерных (имитационных) моделей для исследовательских целей появились более 30 лет назад. Но в конце 90-х годов прошлого века такие модели стали разрабатываться для систем поддержки принятия решений (СППР), функционирующих в масштабе времени развития реальных событий [1, 2]. Одна из прогрессивных систем — пакет Pilgrim-5, получивший распространение благодаря следующим свойствам:

• возможности создания компьютерной модели, встраиваемой в программное обеспечение СППР в виде exe-файла;

• совместное моделирование дискретных и непрерывных процессов;

• моделирование временной и пространственной динамики;

• возможностям создания функциональных интерфейсов, ориентированных на конечного пользователя.

Оболочка Visual Studio и пакет Pilgrim 5. Имитационная модель создается с помощью пакета Pilgrim. Однако разработку целесообразно вести с одновременным использованием Visual C++. В этом случае хорошим подспорьем для разработчика является оболочка MS Visual

модели, которая является сложным программным продуктом.

Предположим, что читатель достаточно подготовлен в данном вопросе, приобрел MS Visual C++ и установил его на свой компьютер. В этом случае многие программные модули пакета Pilgrim-5 целесообразно поместить непосредственно в файловую структуру Visual Studio.

Рассмотрим рис. 1. Слева показана типовая файловая структура Visual Studio. При первичной инсталляции пакета Pilgrim она существенно дополняется программными модулями этого пакета. Обычно пакет устанавливается один раз. В каждой новой версии Pilgrim все его актуализированные модули содержатся на компакт-

Studio1

позволяющая значи-

г--и GeoMaps

i~-■ Gem

—■ Visual Studio ■—■ Pilgrim5

I—■ Common Hf —я Include

■ Vc98 —■ Lib

i—■ ATL ■ Projects

—■ Bin —■ Samples

'—m CRT ■ System

—■ Include <

—■ Lib <-/

i—■ MFC

—■ Projects < \ J

■ Setup Перенос и замена файлов при

—■ Tutorial актуализации пакета Pilgrim5

a 6

тельно облегчить рутинный труд по проектированию, созданию и эксплуатации имитационной

Рис. 1. Основные файловые структуры в проекте по созданию имитационной модели: а - папки Visual Studio; б - папки пакета Pilgrim-5

1 Первые промышленные версии пакета Pilgrim были ориентированы на работу с оболочкой Developer Studio [3]. В последующем Pilgrim-5 переведен на технологию с применением Visual Studio

диске в отдельной папке Pilgrim-5 (правая часть рис. 1). Поэтому любая инсталляция или актуализация пакета завершается пе-

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

ремещением всех модулей из папок Include и Lib, вложенных в Pilgrim-5, в одноименные папки в Visual Studio. Естественно, одноименные модули (в том числе — модули Visual Studio) должны быть заменены модулями Pilgrim. Работоспособность Visual C++ при этом не пострадает.

Кроме этого, в Pilgrim-5 вложены и другие папки: Samples, System и GeoMaps:

• Папка Samples содержит подготовленные контрольные примеры, которые начинающий пользователь пакета Pilgrim должен выполнить при его освоении; эта папка может быть скопирована с компакт-диска в любое удобное место на жестком диске;

• Содержимое папки System должно быть перенесено в системную папку System32 операционной системы Windows NT/2000/XP в режиме администратора для обеспечения нормальной работы пакета (при использовании Windows 98 содержимое этой папки помещается в другую системную папку System);

• В папке GeoMaps имеется хорошее «демо» — карта Московского региона, привязанная к географическим координатам, с которой можно создавать имитационные модели, связанные с региональным сервисом, логистикой или экономической географией.

Пакет Pilgrim оснащен собственным графическим конструктором, который является CASE-системой создания моделей «без программирования» (конструктором Gem). Конструктор актуализируется при появлении новых версий пакета. Он содержится в папке Gem на компакт-диске. Его также можно размещать на жестком диске в любом месте.

Далее рассмотрим три возможных варианта проекта с учетом данных предпосылок об использовании оболочки Visual Studio:

• типовой проект модели, в которой весь сервис ставится «по умолчанию» (самый рабочий вариант, основной для моделье-ров-профессионалов);

• проект модели с диалоговой корректировкой параметров (в процессе её выполнения);

• проект модели с функциональным окном, предназначенным для конечного пользователя (непрофессионала в моделировании).

Для определенности полагаем, что для каждого проекта необходимо создать отдельную папку. Все папки с проектами помещаются в d:\Pilgrim5\Samples (но могут быть расположены и в другом месте).

Типовой проект модели. Такой вариант проекта, несмотря на его простоту, можно рекомендовать для широкого практического использования. Полученные с его помощью имитационные модели можно использовать в случаях, когда необходимо провести эксперименты с дискретно-непрерывными моделями сложных объектов для получения и отслеживания их динамики в экстренных ситуациях, связанных с рисками, натурное моделирование которых нежелательно или невозможно.

Допустим, что нам необходимо с помощью имитационной модели швейной фабрики найти оптимальный режим работы, при котором издержки на продукцию будут минимальны без ухудшения качества работы и без увольнений в швейном цехе (см. [3], раздел 8.3).

Назовем проект словом Production. Создадим папку с именем Factory в директории d:\Pilgrim5\Samples (рис. 2). Текст имитационной модели в терминах Pilgrim подготовим в файле Factory, срр и поместим этот файл в папку Factory. Больше для разработки модели ничего самим помещать в эту папку не нужно: все действия производит Visual Studio, создавая вспомогательные папки и компилируя, собирая и помещая в них не-

Рис. 2. Состав папки Factory типового проекта Production

№ 1 2006

обходимые файлы, пока не будет получена программная имитационная модель в виде exe-файла.

Затем вызываем Visual Studio и, начиная с главного меню, создаем Workspace (рабочее пространство) проекта с названием Production. Сначала нажимаем последовательно кнопки

File ^ New ^ Projects ^ Win32 Application

и выбираем режим создания программного приложения Windows.

Далее, не выходя из режима Projects, выполняем два действия:

• в окошке Location (расположение) задаем место размещения проекта d:\Pilgrim5\Samples\Factory, причем в этом нам может помочь кнопка Choose Directory (изменить папку);

• в окошке Project Name (имя проекта) укажем название Production.

После этих действий, следуя подсказкам Visual Studio, завершим действия, которые мы начали из главного меню нажатием кнопки File. После этого в папке Factory появится вспомогательная папка Production (см. рис. 2).

Полностью подготовленный в Visual Studio проект отображается на экране, как показано на рис. 3. В левой части экрана видно, что в состав проекта включены четыре файла: Factory. cpp, Pilgrim. res, Pilgrim. lib и Comctl32. lib.

То, что файл Factory. cpp просто размещен в папке Factory, не делает его частью проекта. Рассмотрим подробно процедуру подключения файлов, сборки проекта Production и создания модели в виде выполняемой программы.

• Правой кнопкой мыши щелкаем по изображению папки Source Files (исходные файлы) в левой части экрана, и в ответ увидим предлагаемые альтернативы. Нам нужно выбрать альтернативную кнопку Add

Files to Folder и щелкнуть по ней левой кнопкой мыши. В результате вызовется стандартная программа — Проводник операционной системы Windows, которая предлагает действие Insert Files into Project (вставить файл в проект). С помощью Проводника легко выходим на имя Factory. cpp в папке Factory, помечаем его щелчком левой кнопки мыши и щелкаем по кнопке Готово. После этого мы увидим, что файл Factory. cpp подключен к проекту в качестве исходного файла (это показано на рис. 3).

• Опять правой кнопкой мыши щелкаем по изображению папки Resource Files (файлы ресурсов). Далее точно также с помощью Проводника выходим на папку Projects, размещенную в C:\Visual Studio\VC98, зададим фильтрующий res-суффикс и увидим в папке файл ресурсов Pilgrim. res. В нем в скомпилированном виде (после компилятора ресурсов C++) находятся наиболее часто используемые в моделях ресурсы Pilgrim. Далее пометим его, нажмем кнопку Готово и подключим в качестве файла ресурсов проекта (на экране это сразу отобразится).

• Осталось подключить системные библиотеки, которые содержат стандартные функции, автоматически подключаемые к объектному коду в процессе сборки модели, полученному после компиляции исходного модуля Factory. cpp (он по умол-

[?1 File Edit View Insert Project Build Tools Window Help

a-Cl-|%L_

| (Globals) \zi\\ (All global members) lz_l||(No members • Create New Class...)

Il^llxl ^include <Pilgrim.h> int Nowon = 50; int Men - 3; int Arend = 3; float Protime = 6240.0; f orward { modbeg ("MaHy$aK.mypa Ko", 7 none, 1, non ag (" Ilogs . npou3B . ", 5, non network (dummy, dummy) { top(1): queue ("Pe3epB place;

I® Workspace 'Production': 1 project(s) □-Q Source Files j [^| Factory, cpp j Q Header Files B-Q Resource Files | ! 2) Pilgrim, res | m Pilgrim, lib | 1] Comctl32.lib S -f I External Dependencies

Рис. 3. Состав подключаемых к проекту Production файлов

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

чанию имеет имя проекта Production. obj) и сборки его с файлом ресурсов Pilgrim. res. Для этого правой кнопкой мыши щелкнем по изображению папки Production files (файлы ресурса Production). Манипулируя Проводником, после подключения фильтрующего lib-суффикса в папке Lib увидим два библиотечных файла: Pilgrim. lib и Comctl32. lib. Пометив их сразу левой кнопкой мыши с одновременным нажатием клавиши Ctrl, щелкнем левой кнопкой мыши по кнопке Готово. Обе библиотеки подключатся так, как показано на рис. 3.

• Включение файлов в проект не означает их автоматическую компиляцию и сборку в виде выполняемой программы. После подключения всех файлов выполним сборку модели. Сначала надо выбрать состав и режим работы модели: Win32 Debug (отладочный вариант) или Win32 Release (рабочая версия). Обычно по умолчанию выбирается Win32 Debug, хотя отладочный вариант требует значительно больше оперативной памяти в компьютере по сравнению с рабочей версией.

Через главное меню выполним последовательно действия

Build ^ Rebuild All.

В результате в папке Production появится вложенная папка Debug, где и будет автоматически собрана готовая к выполнению программа — файл Production. exe (если в тексте модели не обнаружены ошибки). В результате выполненных действий получена имитационная модель в виде компьютерной программы.

Здесь уместно сделать два замечания.

1. Излишняя на первый взгляд подробность изложения вызвана тем, что раньше большинство пользователей Pilgrim в своей работе использовали оболочку Developer Studio с Visual C++ (фирмы Microsoft) или еще более простой продукт Bilder C++ (фирмы Borland). Кроме того, в различных вузах появились многочисленные начинающие разработчики моделей, которые разбираются в экономических процессах,

знают экономико-математические методы, но имеют представление о средствах разработки программ на уровне пользователя компьютера: теоретически.

2. Опытные программисты могут настроить оболочку Visual Studio таким образом, чтобы вручную подключался только исходный файл, а необходимые ресурсы и библиотеки присоединялись автоматически (по умолчанию).

Проект модели с диалоговой корректировкой параметров. Такой вариант проекта модели рекомендуется для двух функциональных применений.

1. Имитационная модель управляемого экономического объекта применяется в управлении сложным бизнес-процессом. Она используется в качестве инструментального средства в контуре адаптивной системы управления.

2. Имитационная модель встраивается в профессиональную компьютерную тренажерную систему для обучения практическим навыками специалиста (или команды специалистов). Без начальной подготовки таких специалистов нельзя сразу допускать к выполнению своих профессиональных обязанностей, т. к. велика вероятность возможной ошибки (риск по причине «человеческого фактора» весьма большой). С тренажером можно не только обучать выполнению основных функций, но и разбирать «нештатные» критические ситуации. Примеры довольно распространенные:

• необходимо провести профессиональную переподготовку группы ведущих менеджеров, работающих сравнительно автономно в территориально-распределенной торгово-промышленной корпорации;

• нужно подготовить команду, управляющую океанским кораблем, космическим кораблем, большим самолетом, экипажем танка (без тренажера обучение будет натурным и очень дорогим).

Принцип коллективного тренажера, использующего встроенную имитационную модель, впервые использовался

№ 1 2006

Рис. 4. Корректировка параметров модели во время ее выполнения (коллективно-автономный режим профессионального тренажера)

для подготовки специалистов довольно давно (см. журнал «Управляющие системы и машины»,

1983, № 3), когда вычислительная техника и соответствующее программное обеспечение имели очень скромные характеристики по сравнению с современными. Этот принцип показан на рис. 4.

Имеются три группы специалистов, готовящихся к совместному управлению океанским кораблем. Им отведены роли:

Командир корабля, Заместитель командира, Штурман корабля,

Старший вахтенный офицер,

Службы наблюдения. Каждому специалисту отведены конкретные функции по управлению кораблем. Работая с тренажером, каждый специалист не только совершенствует свои профессиональные навыки, но и учится быстро подстраиваться к действиям коллег, понимать причины их внезапных решений.

Далее перейдем к рассмотрению состава учебного (скорее — шуточного), более простого проекта имитационной модели. Допустим, что нам нужно управлять подачей маршрутных такси к крупной посадочной точке (например, к выходу с конечной станции метро). Средний поток пассажиров известен.

Но ситуации в таких точках резко меняются по следующим причинам: погода, праздник,

период отпусков, редкое спортивное мероприятие. Поскольку поток пассажиров через эту точку велик, фирма-перевозчик (собственник автопарка) считает, что в некоторых ситуациях экономически целесообразно управлять темпом подачи маршрутных такси в зависимости от возникающей ситуации.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Для подготовки и тренировок

специального менеджера необходима специальная модель с оперативной корректировкой параметров. Простейший вариант проекта такой модели рассмотрен в [3] (раздел 8.2).

Назовем проект словом Taxomotor. Создадим папку с именем Taxi в директории d:\Pilgrim5\Samples (рис. 5). Текст имитационной модели в терминах Pilgrim подготовим в файле Taxi.cpp и поместим этот файл в папку Taxi. Но для реализации рассмат-

|d:\Pilgrim5\Samples\T axiW 00

ТИмя Тип Размер Дапга

Ы. Ї <DIR> 24.11.2003 17:53 j

LJ [Т axomotor] <DIR> 24.11.2003 17:54

Q Palette bmp 3118 25.11.2001 14:28

[cl] Parametr срр 1 Э61 24.11.2003 16:51

-ф- Pilgrim ico 788 20.08.1998 22:20

[сі] Такі срр 1 520 24.11.2003 18:40

[її] UserHid h 344 24.11.2003 18:41

@UserRes ГС 9 072 24.11.2003 17:53

Рис. 5. Состав папки Taxi для проекта Taxomotor с режимом диалогового управления моделью

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

DM ТІ DM TITLE DM Cl

char tl[81]; char title[81]; float cl;

Диалогов ая корректировка параметров мо/ 1ЄЛИ

Фирма: 1 г Готово ||

| АВТОизвозчик и Ко I I Отмена I

1 I Минута II смена f 1 | Единица времени 11.0 600 мин | Время моделирования 110 f 0 | Период под 00 | Интервал п хода пассажиров эдхсща такси

DM С2

float с2;

Рис. 6. Формат окна диалоговой корректировки модели

риваемого режима корректировки параметров в папку Taxi необходимо поместить и другие файлы:

Palette.bmp — битовый растр для изображения панели инструментов под главным меню имитационной модели (стандартный файл Pilgrim из папки Projects);

Parametr.cpp — модуль интерфейса имитационной модели со специалистом (небольшая программа, создаваемая разработчиком модели);

Pilgrim.ico — иконка программной модели Pilgrim, стандартный файл (если иконку не поместить в папку, то проект не соберется); UserHid.h — вспомогательный h-файл для создания дополнительного ресурса имитационной модели, создаваемый ее разработчиком; обычно это небольшой файл размером от единиц до десятков констант; Pilgrim не может заранее обеспечить h-файлами все возможные варианты функциональных интерфейсов с пользователями (пример такого файла можно найти в папке Projects);

UserRes.rc — общий файл ресурсов имитационной модели. Он состоит из двух частей:

• неизменяемой системной части, которую запрещено редактировать;

• изменяемой части, которую должен дописать разработчик модели (обычно она занимает не более двух десятков строчек). Заготовка для создания файла UserRes.rc с обязательной системной частью содержится в папке Projects.

Таким образом, кроме текста имитационной модели Taxi. cpp разработчик должен создать файл ресурсов UserRes.rc (частично), заголовочный файл UserHid.h и программный модуль Parametr.cpp.

Далее рассмотрим три рабочих примера таких файлов.

1. Общий файл ресурсов UserRes. rc определяет состав и функциональную структуру окна диалога, используемого для управления моделью в процессе ее выполнения. Предположим, что необходимо создать окно диалога, показанное на рис. 6, которое содержит следующие элементы: 5 окошек редактирования параметров модели, их названия, служебную информацию и кнопки управления диалогом (на рис. 6 две кнопки Готово и Отмена). Самое главное в таком диалоге — окошки редактирования.

При выполнении каких-то условий в модели или по желанию специалиста окно диалога появляется на экране монитора. В окошках редактирования программа, описанная в Parametr. cpp, покажет те значения управляющих параметров модели, которые имеются на данный момент. Далее, когда некоторые параметры скорректированы (или специалист решил ничего не менять) нажимается кнопка Готово, и программа Parametr введет значения из окошек редактирования обратно в модель. На рис. 6 в окошки редактирования выводятся следующие данные, представленные в табл. 1.

Наиболее интересными для управления являются параметры Период подхода пассажиров и Интервал подачи такси.

Интервал подачи такси — это тот параметр, на который менеджер может непосредственно воздействовать. Но и Интервал подхода пассажиров может регулироваться, только не менеджером, а городскими властями. Например, при проведении массовой публичной акции во время праздников или во время крупных спортивных

ПРИКЛАДНАЯ ИНФОРМАТИКА ^-----------

•— № 1 2006

Таблица 1

Информация в окне диалоговой корректировки

№ Название окошка редактирования Идентификатор окошка в UserHid.h Переменная в модели Taxi.cpp

1 Фирма DM_TITLE 301 char title [81]

2 Единица времени DM_T1 302 char t1 [81]

3 Время моделирования DM_T2 303 char t1 [81]

4 Период подхода пассажиров DM_C1 304 float c1

5 Интервал подачи такси DM_C2 305 float c2

мероприятий ближайшая станция метро может быть закрыта, а это резко уменьшит поток пассажиров маршрутных такси.

Изменяемая (пользовательская) часть файла ресурсов следует за неизменяемой. Файл UserRes.rc выглядит следующим образом:

//----------------------------------------

// Неизменяемая часть описания ресурсов UserRes.rc // Состав определяется только разработчиками пакета // Pilgrim. Любые корректировки запрещены

//----------------------------------------

#include <Simulate.h> // Системный интерфейс // с пакетом Pilgrim MYMENU MENU {

POPUP «Настройки»

//---------------------------------------------

// Изменяемая часть описания ресурсов UserRes.rc // Состав этой части определяется разработчиком // имитационной модели

//---------------------------------------------

#include «UserHid.h»

PARMBOX DIALOG DISCARDABLE 1, 28, 315, 70 STYLE WS_POPUP I WS_CAPTION CAPTION «Диалоговая корректировка параметров модели» BEGIN

GROUPBOX «Параметры бизнес-процесса»,

100, 5, 3, 245, 30, WS_TABSTOP EDITTEXT DM_TITLE,40, 18,200, 12 EDITTEXT DM_T1, 5, 36, 70, 12

EDITTEXT DM_T2, 5 51, 70, 12 EDITTEXT DM_C1, 166, 36, 35, 12 EDITTEXT DM_C2, 166, 51, 35, 12 LTEXT «Фирма:»,

-DM_TITLE,10, 20, 30, 8, NOT WS_GROUP LTEXT «Единица времени»,

-DM_T1, 78, 38, 80, 8, NOT WS_GROUP LTEXT «Время моделирования»,

-DM_T2, 78, 53, 80, 8, NOT WS_GROUP LTEXT «Период подхода пассажиров»,

-DM_C1, 204, 38,105, 8, NOT WS_GROUP LTEXT «Интервал подачи такси»,

-DM_C2, 204, 53,105, 8, NOT WS_GROUP PUSHBUTTON «Готово», IDOK, 265, 7, 34, 12 PUSHBUTTON «Отмена», IDCANCEL, 265, 21, 34, 12 END

Оператор DIALOG определяет начало описания окна диалога. Его идентификатор PARMBOX является обязательным, так как используется для установления связи этого окна с моделью и операционной системой Windows.

Оператор STYLE задает стили работы с окном диалога.

Оператор CAPTION содержит смысловое название окна диалога, которое высвечивается в верхней части главного меню этого окна.

Оператор GROUPBOX определяет два объекта: контурную сплошную линию (прямоугольник), окаймляющую одно или несколько окошек редактирования и символическое название этого контура. В нашем случае названием контура является фраза «Параметры бизнес-процесса». Обычно

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

контурная линия исходит из поля, содержащего собственное название, и возвращается в это же поле. На рис. 6 контур охватывает только одно окошко редактирования, содержащее название фирмы «АВТОперевозчик и Ко».

Оператор EDITTEXT описывает окошки редактирования и задает их размеры.

Оператор LTEXT содержит надписи (названия) окошек редактирования. Названия можно помешать в любом месте от окошка: слева, справа, сверху или снизу. В нашем случае (см. рис. 6) используются левое и правое расположения таких надписей.

Оператор PUSHBUTTON задает кнопки управления, их размеры и названия. Для стандартных кнопок управления используются стандартные идентификаторы операционной системы: IDOK — кнопка Готово, IDCANCEL — кнопка Отмена.

Подробные описания используемых операторов описания ресурсов и их параметров приведены в [3] (Приложение 1).

2) Вспомогательный h-файл UserHid.h определяет символические идентификаторы специальных констант. С помощью этих идентификаторов модули имитационной модели и операционная система Windows устанавливают связь с диалоговым окном и имеющимися в нем окошками. Идентификаторы и константы выбираются разработчиком модели. Этот файл имеет следующий вид:

//-----------------------------------

// Данный файл UserHid.h содержит дескрипторы окошек

// редактирования, используемые в диалоговой функции

// корректировки параметров модели. Необходим в 2-х // программных модулях:

// 1) в модуле диалоговой корректировки Parametr.cpp // 2) в файле описания ресурсов модели UserRes.rc // Состав h-файла определяется разработчиком модели

//-----------------------------------

#define DM_TITLE 301 // Название фирмы #define DM_T1 302 // Единица времени

#define DM_T2 303 // Время моделирования #define DM_C1 304 // Период подхода пассажиров #define DM_C2 305 // Интервал подачи такси

3. Модуль интерфейса имитационной модели Parametr. cpp осуществляет вызовы окна диалога и обмен информацией между окошками редактирования и переменными имитационной модели. Этот модуль — программа на языке C++. Модуль вызывается из имитационной модели (в нашем случае — из Taxi. cpp) оператором Parametr. Текст программы приведен ниже.

//---------------------------------------------

// Диалог корректировки параметров модели:

// программная функция из файла Parametr.cpp

//---------------------------------------------

#include <Pilgrim.h>

#include “UserHid.h”

extern char title[]; // Название фирмы

extern char t1[]; // Единица времени

extern char t2[]; // Период моделирования

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

extern float c1; // Период подхода пассажиров

extern float c2; // Интервал подхода такси

BOOL CALLBACK ParametrFunc (HWND hdwnd,

UINT message,

WPARAM wParam,

LPARAM lParam)

{

switch(message)

{ // Инициализация диалога

case WM_INITDIALOG: // и вывод значений в // окошки редактирования SetDlgItemText(hdwnd, DM_TITLE, title); SetDlgItemText(hdwnd, DM_T1, t1); SetDlgItemText(hdwnd, DM_T2, t2); sprintf(str, «%4.2f», c1);

SetDlgItemText(hdwnd, DM_C1,str); sprintf(str, «%4.2f», c2);

SetDlgItemText(hdwnd, DM_C2,str); return FALSE;

case WM_COMMAND: // Ввод скорректированных // значений в модель switch(wParam) // из окошек редактирования

№ 1 2006

{

case IDOK:

GetDlgItemText(hdwnd,DM_TITLE,title,80); GetDlgItemText(hdwnd,DM_T1, t1, 80); GetDlgItemText(hdwnd,DM_T2, t2, 80); GetDlgItemText(hdwnd,DM_C1, str, 80); sscanf(str, «%f», &c1);

GetDlgItemText(hdwnd,DM_C2, str, 80); sscanf(str, «%f», &c2);

EndDialog(hdwnd,TRUE);

break;

case IDCANCEL:

EndDialog(hdwnd,FALSE); break; default: return FALSE;

}

break; default: return FALSE;

}

return TRUE;

}

Программа использует переменные из имитационной модели Taxi.cpp, которые приведены в табл. 1. Поэтому они отмечены как extern (внешние). В программе можно выделить две характерные части.

• Инициализация и вывод значений переменных из имитационной модели в окошки редактирования:

case WMJNITDIALOG:

// Инициализация диалога и вывод // значений переменных в окошки // редактирования return FALSE;

• Ввод скорректированных значений управляющих параметров из окошек редактирования в модель после нажатия кнопки Готово и завершение диалога:

case IDOK:

// Ввод скорректированных значений // управляющих параметров из окошек // редактирования в модель и

// завершение диалога EndDialog(hdwnd,TRUE);

break;

Состав проекта Taxomotor соответствует схеме, показанной на рис. 7. Подключение файлов к проекту, компиляция и сборка имитационной модели, а также получение модели в виде выполняемой программы Taxomotor. exe проводится по правилам, описанным выше в подразделе «Типовой проект модели».

Проект модели с функциональным окном. Довольно часто модель предназначена для использования в своей работе конечным пользователем — руководителем фирмы или крупного подразделения; причем этот пользователь не является профессионалом в области имитационного моделирования и не владеет понятиями и терминологией пакета Pilgrim. Пользователь будет использовать модель только тогда, когда разработчик модели не нужен ему в качестве переводчика, трактующего результаты моделирования.

Поэтому возникает задача создания проблемно-ориентированного функционального окна, информация из которого понятна потребителю, который не будет изучать моделирующую систему. Такая задача актуальна и для моделей, созданных по «Типовому проекту моделей», и, особенно, для моделей, реализованных по «Про-

0 File Edit View Insert Project Build Tools Window Help

m \& y a | & «1 m - a - lliRpse* lnl-

||| (Global®) K ||| (All global members] ||| ^ PaiametiFunc

iLllxl 1 #include <Pilgrim.h> char title[31]=МВТОиз&озчик и Ко"; char 11 [ 81 ] = "Минута"; char 12[81] = "1 смена: 600 мин"; float cl = 1.0; float c2 =10.0; f orward { Parametr; modbeg("Стоянка такси", 8, 600.0,( none, 1, none, 4, 2 ); ag("Запросы такси", 7, none, expo ag("Приходы такси", 8, none, norm network(dummy,dummy) { top(1): t->ft=l; queue("Пассажир ждет"

150 Workspace T axomotor':1 project(s) |j-~Q Source Files I j jij) Parametr.cpp | 1 Hi Taxi.cpp j CZl Header Files -Q Resource Files I * Hi UserRes.rc I {If| Pilgrim, lib | {j] Comctl32.lib l+l Pi External Dependencies

Рис. 5. Состав проекта модели с корректировкой параметров

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

екту модели с диалоговой корректировкой параметров».

Такая понятная потребителю информация может представлять собой изменяющиеся таблички, графики, перемещающиеся по экрану изображения (например, автомобили). Поэтому для него средствами Visual C++ создается специальная функциональная программа funcwindow, которая помещается в динамически вызываемую библиотеку Windows (dll-библиотеку). Обращение к такой библиотеке производится после каждого события в модели. После первого события она загружается в оперативную память. Типовые операторы Visual C++, используемые при создании такого окна, приведены в [3] (приложение 2).

В качестве примера можно рассмотреть полезную программу — «часы моделирования». Изображения, появляющееся в правом верхнем углу такого окна, показано на рис. 8. Как только очередной интервал моделирования превзойдет 1 % модельного времени, эта программа переформировывает содержание функционального окна. В результате можно наблюдать эффект анимации.

Программа функционального окна получает в качестве параметра область памяти struct fwcb, в которой размещены все необходимые оперативные данные на момент последнего события, которое произошло в модели. Адрес этой области памяти содержится в параметре s, передаваемом в программу funcwindow. Ее структура показана ниже:

struct fwcb // БЛОК УПРАВЛЕНИЯ ФУНКЦИОНАЛЬНЫМ ОКНОМ

{

void *pointer; // Указатель рабочей области LONG mywndproc; // Адрес процедуры окна HWND hwnd; // Дескриптор окна HDC hdc; // DC устройства HDC memdc; // DC виртуального окна

HFONT hOldf; // Старый шрифт

HFONT hNewf; // Новый шрифт

HBITMAP hbit; // Растр — виртуальное окно

HBRUSH hbrush; // Рабочая кисть

HBRUSH hOIdbrush; // Дескриптор прежней кисти

HBRUSH hHoIIowbrush; // Прозрачная кисть

HBRUSH hWhitebrush; // Белая кисть

HBRUSH hBIackbrush; // Черная кисть

HBRUSH hRedbrush; // Красная кисть

HBRUSH hGreenbrush; // Зеленая кисть

HBRUSH hBIuebrush; // Синяя кисть

HBRUSH hYeIIoybrush; // Желтая кисть

HBRUSH hMagentabrush; // Фиолетовая кисть

HBRUSH hCyanbrush; // Бирюзовая кисть

HPEN hOIdpen; // Дескриптор прежнего пера

HPEN hWhitepen; // Белое перо

HPEN hBIackpen; // Черное перо

HPEN hRedpen; // Красное перо

HPEN hGreenpen; // Зеленое перо

HPEN hBIuepen; // Синее перо

HPEN hYeIIoypen; // Желтое перо

HPEN hMagentapen; // Фиолетовое перо

HPEN hCyanpen; // Бирюзовое перо

doubIe timer; // Модельный таймер

fIoat tmax; // Время моделирования

Iong nd; // Число событий в модели

struct kcb *addr[pooI]; // Массив узлов модели

struct tcb *t; // Адрес tcb тpaнзaктa

struct ecb *e; // Адрес созданного ecb

struct ecb *w; // Адрес спланированного есЬ

int next; // Номер «текущего» узла

int error; // Фатальная ошибка в модели

int maxn; // Число узлов модели

int presise; // Знаков после точки

int maxX; // Размер X экрана монитора

int maxY; // Размер У экрана монитора

int percent; // Процент выполнения модели

int stop0; // Признак выполнения модели

int stopi; // Признак приостановки

int 2; p to s // Признак отладки

int 3; p to s // Масштаб времени

char modname[16]; // Название модели

char filename[256]; // Имя найденного файла };

Рассмотренная область описана в системном h-файле Simulate.h. В соответствии с ее структурой ниже приведен текст программы, реализующей окно типа «часы моделирования». Текст программы окна приведен в [3] (раздел 4).

№ 1 2006

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Настройки Моделирование Результаты Помощь

Новозыбков

Модель"Воза ушные рейсы" /:::

Thu Nov 27 10: Процент ВЫПО> Моделирован* 44:50 2003 ■нения: 75 ІЄ

Рис. В. Вид окна функционального назначения

Замечание. Если модель содержит функциональное окно для конечного пользователя, то соответствующий dll-файл должен быть помещен в одну из папок:

• в ту же папку, где находится exe-файл (независимо от типа операционной системы);

• в папку System, если модель должна выполняться в системе Windows 98;

• в папку System32 (в системах типа Windows NT/2000/XP, для этого необходимо получить режим администратора).

Модернизация моделей. Все элементы проекта автоматически сохраняются средствами Visual Studio. Для того чтобы прервать разработку, необходимо выполнить следующее:

• на всякий случай принудительно сохранить последний модифицированный текст модели (если модификации были), выполнив действия File ^ Close через главное меню Visual Studio или нажав значок «дискета» на панели инструментов;

• затем либо просто выйти из Visual Studio (если нет других проектов), либо в главном меню выполнить действия

File ^ CloseWorkspace,

если нужно перейти к другому проекту.

Модернизация моделей возможна всегда. Чтобы выполнить модернизацию, через меню Visual Studio открывается существующий проект:

File ^ OpenWorkspace.

Далее автоматически подключается проводник для поиска файла управления проектом с суффиксом dsw (например, Taxomotor.dsw). Этот файл автоматически показывается в папке с проектом. После двойного щелчка по имени этого файла проект восстановится в том виде, в котором он был в последний раз (повторно его соби-

рать не нужно). Можно срезу перейти к изменению любых текстов и состава модели.

Отлаживаемая модель по умолчанию создается в виде exe-файла в папке Debug, вложенной в папку с проектом. Это и есть компьютерная модель. В exe-файле есть все необходимое для отладки модели. Окончательный вариант отлаженной модели обычно берется из папки Release: он работает быстрее и меньше по объему.

В процессе отладки модель запускается из папки Debug одним из двух способов:

• нажатием комбинации Ctrl+F5;

• через главное меню Build ^ Execute Taxomotor. exe.

Файл с моделью можно переписать в любую другую папку и на любой другой компьютер. Он всегда будет работать.

Взаимодействие пользователя с моделью осуществляется через главное меню, автоматически создаваемое для каждой модели. Главное меню реализует три основных режима работы модели: Настройка, Моделирование, Результаты и Помощь.

Режим «Настройка». Этот режим вызывается нажатием клавиши Настройка. В открывающемся подменю (рис. 9) предлагается конкретизировать этот режим с помощью дополнительных восьми клавиш.

Клавиша Работа со SPACE-массивами вызывает Проводника операционной системы, с помощью которого вызывается

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

[Щ Процесс Pilgrim-5

Д Моделирование Результаты Помощь

Работа со ЗРДСЕ-массивами ► Открыть окно функциональной задачи РЗ Работа с ГЕО-картографией ► Прикрыть функциональное окно Ак+РЗ Выдвинуть панель инструментов Убрать панель инструментов Включить/Выключить музыкальное сопровождение Выход В \Мпс1о!А15 А|Ь+Р4

Рис. 9. Режим настройки модели

текстовый файл, имеющий суффикс spa и содержащий координаты пунктов пространства модели. Такой spa-файл необходимо заранее создать вручную или выкачать из базы данных для модели, работающей с пространственно-распределенными данными. Все поля файла отделяются друг от друга одним пробелом. Посимвольный формат файла приведен в табл. 2.

Каждый пункт местности имеет свой статус. Обычно принимаются следующие обозначения статуса:

д — административный центр региона;

d — районный центр, являющийся городом областного подчинения;

! — районный центр, являющийся городом;

V — районный центр, являющийся поселком городского типа или селом; w — город областного подчинения; г — город районного подчинения;

И — село, поселок, деревня, хутор, ж/д станция, пристань; т — метеостанция; z — пункт триангуляции; б — пункт старта транспортного средства;

Таблица 2

Формат текстового SPACE-файла

Название пункта Широта Долгота Статус Параметры

Параметр 1 Параметр 2

1-24 26-36 38-48 50 52-61 63-72

Александров +056O24'33» +038O4343» d 45.0 2.0

Апрелевка +055O33'23» +037O05'15» r 19.6 2.0

Балашиха +055O48'55» +037O57'53» d 131.5 1.6

Бронницы +055O26'05» +038O16'59» w 17.2 2.0

Верея +055O20'43» +036O1241» r 4.9 1.6

Видное +055O32'50» +037O45'39» d 52.5 1.6

Владимир +056O08'20» +040O24'11» g 234.0 4.8

Волоколамск +056O0149» +035O57'26» d 17.2 2.0

Воскресенск +055O18'50» +038O4340» d 78.8 3.6

Высоковск +056O1942» +036O34'02» r 11.9 1.2

Гагарин +055O32'48» +035O0142» d 16.0 1.6

Дедовск +055O52'15» +037O09'00» r 28.8 1.2

Дзержинский +055O38'00» +037O51'15» w 38.8 1.2

Дмитров +056O21'18» +037O32'21» d 63.0 2.0

Долгопрудный +055O56'26» +037O33'00» w 74.5 1.6

Домодедово +055O25'16» +037O49'03» d 57.8 2.8

№ 1 2006

Настройки Результаты Помощь

Запуск модели F4

Принудительная аварийная остановка модели Esc

Приостановка F5

Продолжение F6

Переход к трассировке F7

Запуск с трассировкой Alt+F7

Управление масштабом времени F8

Запуск с установкой масштаба Alt+FS

Рис. 1D. Подменю режима моделирования

f — пункт финиша; u — неизученный населенный пункт;

п — пункт, который не нужно отображать в процессе моделирования.

В файле могут быть десятисимвольные параметры населенных пунктов, максимальное число которых 8. В таблице показаны два таких параметра.

Нажатие на клавишу Открыть окно функциональной задачи создает окно для подключения dll-программы, созданной по «Проекту модели с функциональным окном».

Клавиша Работа с ГЕО-картографией позволяет произвести подключение растровой карты с оцифрованными координатами в специальном окне, либо вызвать dll-программу для работы с векторной геоинформацией в предварительно открытом окне функциональной задачи. Отображение геоинформации будет показано позднее — при описании режима Результаты.

Назначение клавиш Прикрыть окно функциональной задачи, Выдвинуть панель инструментов и Убрать панель инструментов понятно по их названию.

При работе с моделями, имеющими длительное время выполнения, полезна звуковая индикация. Она подключается с помощью клавиши Включить/Выключить музыкальное сопровождение.

Клавиша Выход в Windows понятна по её названию.

Режим «Моделирование». В открывающемся подменю (рис. 10) предлагается конкретизировать этот режим с помощью дополнительных восьми клавиш.

Клавиша Запуск модели просто передает управление в exe-файл модели.

Если пользователь понял, что фазовая траектория модели неинтересна и необходимо прекратить процесс моделирования, то используется клавиша Принудительная аварийная остановка модели.

Клавиша Приостановка используется для того, чтобы временно остановить процесс моделирования и понять информацию на экране монитора, если эта информация быстро изменяется. Процесс моделирования восстановится, если нажать клавишу Продолжение.

Клавиша Переход к трассировке переводит процесс моделирования в отладочный режим, описанный в [3] (раздел 4.2). Если необходимо сразу обеспечить такой режим, то используется клавиша Запуск модели с трассировкой.

Переход из режима максимально-ускоренного масштаба времени в пропорционально-замедленный (и наоборот) позволяет клавиша Управление масштабом времени. Вызывается диалоговое окно (рис. 11), где нужно указать интервал времени не менее 0,001 сек. Это интервал задержки процесса выполнения модели после каждого события. Если указать 0 или интервал менее 0,001 сек, то произойдет перевод моделирования в максимально-ускоренный режим. Приведенный рис. 11 соответствует модели швейного производства, рассмотренной в [3] (раздел 8.4).

Клавиша Запуск с установкой масштаба позволяет сразу, перед запуском модели установить нужный масштаб времени.

Режим «Результаты». Это основной режим просмотра параметров модели в стандартах системы имитационного моделирования Pilgrim. В открывающемся подменю (рис. 12) предлагается конкретизировать этот режим с помощью дополнительных пяти клавиш.

А. А. Емельянов

Технология создания компьютерных моделей для систем поддержки принятия решений

№ 1 2006

Рис. 11. Настройка масштаба времени через главное меню

Нажатие клавиши Параметры узла открывает диалоговое окно, которое позволяет выбрать интересующий узел по его номеру и наблюдать за изменением параметров узла в процессе моделирования. На рис. 13 (правая часть) показано следующее (сверху вниз):

• модель называется «Мануфактура и Ко»;

• выполнен 81 % времени моделирования, заданного в операторе тос1Ьед;

• моделирование продолжается;

• для узла обслуживания № 4 типа эегу получено среднее время задержки 7,1 единиц (параметр к^э);

• коэффициент вариации в квадрате времени обслуживания равен 0,2 (параметр к^о2);

• всего в узел вошло 1553 транзактов (параметр к^па);

• узел имеет 3 канала параллельного обслуживания (параметр k^nc);

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• узел называется «Машины в рем.»

• полезная загрузка узла на данном интервале времени моделирования составляет 69,9 процентов.

Клавиша Динамика задержек в очереди позволяет перейти к просмотру ситуаций в очереди, указанной в операторе modbeg. После её нажатия появляется динамически изменяющийся и автоматически масштабируемый график, показанный на рис. 13 (левая часть). По оси X отложено время моделирования в выбранных единицах измерения (например, в часах), а по оси Y показаны изменения задержек в очереди (в тех же единицах). На рисунке эти информация выводится для очереди № 1 типа queue «Резерв машин» средняя задержка составляет 2,9 единиц, причем максимальная задержка равна 5,6 единиц, а минимальная равна 0.

Динамику потока транзактов в узле типа term, указанном в операторе modbeg, можно наблюдать после нажатия клавиши Динамика потока. Появляется график, подобный динамике Задержка в очереди, но отличающийся осью Y: вместо задержек по этой оси откладываются изменяющиеся значения потока, измеряемые в транзактах за единицу модельного времени.

Клавиша Построение пространства позволяет получить упрощенное векторное изображение пространства, в котором происходят моделируемые процессы (например, для изображения маршрута транспортных средств). Фрагмент такого пространства показан на рис. 14. В данном случае выполняется модель, имитирующая полет вертолета над территорией России

\-Щ Процесс Pilgrim-5

Настройки Моделирование Помощь

Параметры узла F9

Динамика задержек в очереди F10

Динамика потока F11

Построение пространства F12

Рис. 12. Подменю режима просмотра результатов

№ 1 2006

и государств ближнего зарубежья ([3], раздел 8.1). Вертолет моделируется оператором ргос, а его номер для просмотра динамики указывается в операторе тоСЬед. На рисунке показано, что вертолет прошел по маршруту

Санкт-Петербург ^ Рига ^

Балтийск ^ Вильнюс,

причем моделирование продолжается.

Режим «Помощь». В этом режиме можно получить некоторую справочную информацию. В открывающемся подменю (рис. 15) предлагается конкретизировать этот режим с помощью дополнительных пяти клавиш.

Первая клавиша позволяет получить справочную информацию о клавишах-акселераторах основного меню.

Вторая клавиша выводит краткую информацию о диалоговом управлении трассировкой модели.

Клавиша Управление масштабом времени позволяет получить подсказку о том, как задавать масштаб времени с помощью диалогового окна.

Последняя клавиша выводит информацию о корректной лицензионности программного продукта.

Литература

1. Анфилатов В. С., Емельянов А. А., Кукушкин А. А. Системный анализ в управлении. М.: Финансы и статистика, 2006. 368 с.

2. Емельянов А. А. Имитацион-

ное моделирование в управлении рисками. СПб.: Инжэкон,

2000. 378 с.

3. Емельянов А. А., Власова Е. А., Дума Р. В. Имитационное моделирование экономических процессов. М.: Финансы и статистика, 2005. 368 с. Рис- 15- Подменю режима Помощь

Щ Процесс Рі^гіт-5

Настройки Моделирование Результаты

Клавиши-акселераторы Р1

Управление трассировкой А1Ь+Р1

Управление масштабом времени

О программном продукте

Рис. 14. Просмотр пространственной динамики

Рис. 13. Просмотр результатов моделирования: параметры узла и динамика задержек в очереди

А.А. Емельянов

i Надоели баннеры? Вы всегда можете отключить рекламу.