ЛР. Модель отделения офтальмологии

  • pdf
  • 11.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 16. ЛР. Модель отделения офтальмологии.pdf

ЛБ5. Модель отделения офтальмологии

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

1.    Пациент, прибывающий в отделение, вначале направляется в приемный покой. Там он дожидается прихода врача, который должен провести его осмотр. 

2.    Процедура проводится в одной из трех процедурных комнат. Когда за пациентом прибывает доктор, они отправляются в свободную процедурную комнату. Если все процедурные комнаты оказываются занятыми, то пациент ждет в приемном покое, пока какая-нибудь из комнат не освободится. 

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

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

Эту модель мы создадим с помощью объектов Основной библиотеки для моделирования транспортных сетей (названия этих объектов начинаются с Network). Обычно они используются тогда, когда для моделируемых процессов имеет значение физическое расположение объектов в пространстве. В таких моделях заявки движутся по заданным путям и используют ресурсы, находящиеся в сети.

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

Шаг 1. Создание новой модели

Вначале мы создадим новую модель.

 Создайте новую модель

1.    Щелкните мышью по кнопке панели инструментов Создать  . Появится окно Мастера создания модели.

2.    Задайте имя новой модели. В поле Имя модели введите Ophthalmology Department.

 

3.    Выберите каталог, в котором будут сохранены файлы модели. Если Вы хотите сменить предложенный по умолчанию каталог на какой-то другой, Вы можете ввести путь к нему в поле Местоположение или выбрать этот каталог с помощью диалога навигации по файловой системе, открывающегося по нажатию на кнопку Выбрать.

4.    Щелкните мышью по кнопке Далее. Откроется вторая страница Мастера создания модели. 5. Здесь Вам будет предложено выбрать шаблон модели, на базе которого Вы будете разрабатывать Вашу модель. Поскольку мы хотим научить Вас процессу создания модели "с нуля", чтобы в дальнейшем Вы могли самостоятельно создавать аналогичные модели, не выбирайте шаблон модели, а просто закончите создание модели, щелкнув мышью по кнопке Готово.

Вы создали новую модель. Если Вы еще не знакомы с пользовательским интерфейсом AnyLogic, то давайте уделим пару минут его основным компонентам:

Пользовательский интерфейс AnyLogic В левой части рабочей области будет находиться панель Проекты.

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

В правой рабочей области будет отображаться панель Палитра, а внизу - панель Свойства. Панель Палитра содержит разделенные по категориям элементы, которые могут быть добавлены на диаграмму класса активного объекта или эксперимента. Панель Свойства используется для просмотра и изменения свойств выбранного в данный момент элемента (или элементов) модели.

В центре рабочей области AnyLogic Вы увидите графический редактор диаграммы класса активного объекта Main

 

При работе с моделью не забывайте сохранять производимые Вами изменения с помощью кнопки панели инструментовСохранить .

Шаг 2. Создание анимации модели

Теперь мы готовы к тому, чтобы начать разработку нашей модели.

Первым делом давайте нарисуем анимацию нашей модели, поскольку именно она будет определять структуру нашей модели – ее транспортную сеть. 

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

Мы не будем рисовать план в графическом редакторе AnyLogic, а просто вставим готовое изображение. 

 Добавьте на презентацию план отделения

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

 

2.    Палитра Презентация содержит элементы, используемые для рисования презентаций моделей: фигуры, с помощью которых Вы можете рисовать сложные презентации, а также элементы управления, с помощью которых Вы можете сделать Ваши презентации интерактивными.

 

3.    Перетащите элемент Изображение  из палитры Презентация на диаграмму класса активного объекта. Поместите его так, как показано на рисунке:

 

4.    Задайте свойства изображения в панели Свойства. Щелкните мыщью по кнопке Добавить и выберите файл изображения плана отделения. Файл находится в каталоге <каталог AnyLogic>\resources\tutorials\Ophthalmology Department\layout.png

 

5.    Чтобы сохранить исходный размер изображения, установите флажок Исходный размер. 6. Заблокируйте изображение, установив флажок Блокировать. Вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока Вы не снимете с нее блокировку. Мы делаем так потому, что мы будем рисовать другие фигуры поверх этого изображения, и поэтомумы хотим исключить возможность случайного редактирования изображения при рисовании этих фигур. 

7. Изображение должно будет выглядеть следующим образом:

 

Теперь мы нарисуем анимацию модели. На основе анимации строится транспортная сеть модели: прямоугольники соответствуют узлам сети, а ломаные линии – связям между ними, играющим роль путей движения заявок и ресурсов в моделируемом пространстве. 

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

*  Нарисуйте узлы сети

1.    Нарисуйте каждую комнату отделения с помощью прямоугольника. Отделение офтальмологии включает в себя приемный покой, три процедурные, комнату хранения офтальмоскопов и комнату для персонала. 

2.    На приведенном ниже рисунке нарисованы и подписаны прямогуольники, которые Вам нужно будет нарисовать. Назовите прямоугольники именно так, как показано на рисунке. Это важно, потому что в дальнейшем мы будем ссылаться на ключевые области нашего отделения именно по именам соответствующих прямоугольников.

 

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

4.    Рисуйте прямоугольники так, чтобы они помещались в соответствующие области на плане отделения, как показано на рисунке ниже. Чтобы облегчить рисование фигур нужного Вам размера, выключите привязку фигур к сетке диаграммы, щелкнув по кнопке панели инструментов Включить/Отключить сетку.

6. Прямоугольники в нашей модели используются для задания следующих областей:

o        приемный покой - waitingHall o      комната для персонала - procRoom1, procRoom2, procRoom3 o    комната хранения офтальмоскопов - storageRoom o   процедурные комнаты - staffRoom

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

 

Теперь мы нарисуем сегменты сети с помощью ломаных линий. Эти линии будут задавать пути движения пациентов и персонала больницы. 

*  Нарисуйте пути (сегменты сети)

1.    С помощью инструмента рисования Ломаная  , нарисуйте ломаные линии, как показано на рисунке ниже. Соедините соседние узлы сети - тем самым Вы зададите требуемую транспортную сеть модели: 

 

2.    Чтобы нарисовать ломаную, сделайте двойной щелчок мышью по элементу Ломаная  в палитре (при этом его значок должен поменяться на этот: ). Теперь Вы можете рисовать ломаную точка за точкой, последовательно щелкая мышью в тех точках диаграммы, куда Вы хотите поместить вершины ломаной. Чтобы завершить рисование, добавьте последнюю точку ломаной двойным щелчком мыши. 

3.    Все начальные и конечные точки линий должны обязательно находиться внутри соединяемых прямоугольников (и в одном  прямоугольнике не может находиться более одной точки одной и той же ломаной).

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

*  Добавьте фигуры в группу

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

 

2.    Отпустите кнопку мыши. Выделенные таким образом фигуры будут подсвечены синим цветом. Если какая-то из фигур оказалась не выделенной, Вы можете добавить ее в группу выделенных фигур, нажав Ctrl, и не отпуская ее, щелкнуть мышью по той фигуре, которую Вы хотите добавить. Фигура будет добавлена в выделение.

 

3.    Когда Вы выделите все фигуры, сделайте щелчок правой кнопкой мыши по выделенным фигурам и выберите Создать группу из контекстного меню.

 

 Задайте местоположение процедурных комнат

1.    Нарисуйте ломаную линию, соединяющую прямоугольники, представляющие собой процедурные комнаты. Она понадобится нам чуть позже.  Поместите точки ломаной точно внутрь прямоугольников procRoom1, procRoom2 и procRoom3

 

2.    Назовите ее roomsLocation и выберите для нее другой цвет. 

 

3.    Сделайте ломаную невидимой во время выполнения модели. Перейдите на страницу Динамические панели свойств ломаной и введите false в поле Видимость.

 

Шаг 3. Анимация ресурсов

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

 Создайте изображения врача и пациента

1.    Вы можете либо сами нарисовать фигурку врача, либо использовать одну из стандартных картинок, поставляемых вместе с AnyLogic. Мы выбираем второй подход, как наиболее легкий. Откройте палитру Картинки. Эта палитра содержит набор картинок, которые наиболее часто используются пользователями AnyLogic при создании моделей.

 

2.    Перетащите элемент Врач из палитры на диаграмму графического редактора: 

 

 

 

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

4.    Перетащите элемент Пациент из палитры на диаграмму графического редактора: 

 

5.    По умолчанию эта картинка будет называться patient. Не меняйте и это название по выше описанной причине.

 Нарисуйте офтальмоскоп

1.    Нарисуйте офтальмоскоп, как показано на рисунке ниже:

 

2.    Чтобы Вам было удобнее рисовать маленькую картинку, увеличьте масштаб диаграммы графического редактора, скажем до масштаба 400% с помощью специального элемента на панели инструментов.

 

3.    Проще будет нарисовать фигурку с помощью элемента Ломаная . Мы рекомендуем создавать ломаную не перетаскиванием на диаграмму из палитры Презентация, а использовать поддерживаемый для этого типа фигуры режим рисования. Напомним еще раз, как это делается: чтобы нарисовать фигуру сложной формы, сделайте двойной щелчок мышью по элементу Ломаная  в палитре (при этом его значок должен поменяться на этот: ). Теперь Вы можете рисовать ломаную точка за точкой, последовательно щелкая мышью в тех точках диаграммы, куда Вы хотите поместить вершины ломаной. Чтобы завершить рисование, добавьте последнюю точку ломаной двойным щелчком мыши.  4. Необязательно соединять на диаграмме начальную точку ломаной с конечной. Перейдите на страницу Основныепанели свойств ломаной и установите флажок Замкнутая. Начальная и конечная точки ломаной будут автоматически соединены замыкающим отрезком. 5. Теперь, чтобы закрасить фигуру цветом, выберите любой понравившийся Вам цвет с помощью элемента управления Цвет заливки. Этим цветом будет закрашена область, находящаяся внутри контура ломаной.

6.    Назовите фигуру scope.

7.    Когда Вы закончите, вернитесь к первоначальному масштабу диаграммы графического редактора, щелкнув мышью по кнопке панели инструментов 100% .

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

 Поместите картинки ресурсов за границу видимой области презентации

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

2.    Выделите мышью картинки всех ресурсов и перетащите их чуть выше границы видимой области диаграммы.

3.    Передвиньте холст диаграммы обратно, чтобы картинки ресурсов оказались за областью видимости диаграммы.

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

Шаг 4. Задание сети и ресурсов

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

 Задайте свойства сети

1.     Добавьте на диаграмму объект Network. Этот объект задает транспортную сеть модели и ее свойства. Детальное описание объекта, а также всех его параметров и функций Вы можете найти в Справочном руководстве по Основной библиотеке: Объекты Основной библиотеки.  

2.      Чтобы добавить на диаграмму объект Основной библиотеки, нужно открыть в панели Палитра палитру этой библиотеки, щелкнув мышью по панели с ее заголовком, а затем перетащить нужный Вам объект из палитры на диаграмму класса. 

 

3.     В параметре Группа фигур сети введите имя группы фигур анимации: group.

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

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

 Чтобы проверить имя группы фигур, просто щелкните по любой фигуре этой группы и имя группы будет отображено в панели Свойства.

 

Теперь мы добавим объекты, задающие сетевые ресурсы. Сетевые ресурсы могут быть трех видов: движущиеся, переносные истатические. В нашем случае врачи будут заданы движущимися ресурсами, офтальмоскопы – портативными ресурсами, а процедурные комнаты – статическими. 

 Задайте ресурсы типа "врач"

1. Добавьте на диаграмму класса Main объект Основной библиотеки NetworkResourcePool.  Объект NetworkResourcePool описывает ресурсы определенного типа. Этот объект будет задавать свойства ресурсов, представляющих в нашей модели врачей. Задайте следующие свойства объекта: o    Назовите объект doctors.

o    Укажите, сколько врачей будет присутствовать в Вашей модели. Введите в поле Количество ресурсов: 5. o       Задайте базовое местонахождение ресурсов. Движущиеся ресурсы возвращаются в заданное здесь место, когда они становятся свободными. В нашей модели все врачи должны возвращаться в общую ординаторскую, поэтому оставьте выбранным в поле Базовое местоположение задается как опцию Один узел и введите в поле Базовый узел имя прямоугольника, который представляет на анимации ординаторскую: staffRooom.

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

 

 Задайте ресурсы типа "процедурная комната"

1. Добавьте еще один объект NetworkResourcePool. Этот объект будет задавать свойства ресурсов, представляющих в нашей модели процедурные комнаты. Задайте следующие свойства объекта: o    Назовите объект procRooms. o           Измените Тип ресурса на Статический. o          Задайте местоположение комнат. Статические ресурсы всегда находятся в месте, указанном как базовое. Вы можете задать несколько таких мест, для этого нужно нарисовать ломаную линию с точками, лежащими в соответствующих прямоугольниках и указать ее в свойствах объекта. Поскольку в нашей модели три таких комнаты, то мы должны воспользоваться именно этим способом. Для этого выберите Путь через узлы из выпадающего списка Базовое местоположение задается как и введите в поле Путь через узлы имя созданной ранее именно для этой цели ломаной:roomsLocation

o    Укажите, что количество ресурсов, задаваемое этим объектом, равно количесвту точек указанной ломаной. Для этого выберите из группы кнопок Количество задано опцию Фигурой базового местоположения.

  

 Задайте ресурсы типа "офтальмоскоп"

1. Аналогично добавьте еще один объект NetworkResourcePool. Этот объект будет задавать свойства ресурсов, представляющих в нашей модели офтальмоскопы. Задайте следующие свойства объекта: o    Назовите объект scopes.

o    Измените Тип ресурса на Переносной.

o    Задайте количество офтальмоскопов - введите в поле Количество ресурсов: 5. o     Задайте базовое местоположение ресурсов. Статические ресурсы будут помещены в указанный узел сети при запуске модели. Оставьте без изменения параметр Базовое местоположение задается каки введите в поле Базовый узел имя прямоугольника, задающего в нашей модели комнату хранения оборудования: storageRooom.

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

  

 Соедините все объекты NetworkResourcePool с объектом Network

 

1. Чтобы добавить заданные ресурсы в нашу сеть, Вам нужно соединить порты объектов NetworkResourcePool с портом объекта Network. Соедините их, как показано на показанном ниже рисунке:

 

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

 

Если Вы выделите соединитель щелчком мыши, и его конечные точки в портах будут подсвечиваться светло-зеленым цветом, то это будет означать, что Вы успешно соединили порты. Иначе же Вам придется проверить, точно ли в порт была добавлена одна из двух конечных точек соединителя, и если нужно, то передвинуть ее туда.

Шаг 5. Диаграмма процесса 

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

 Создайте диаграмму процесса

1. Создайте следующую диаграмму процесса, добавив на диаграмму класса Main новые блоки Основной библиотеки и соединив их так, как показано на рисунке ниже: 

 

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

Первым следует объект Source. Объект Source создает заявки. Обычно он используется в качестве начальной точки потока заявок. В нашем случае заявки будут представлять собой пациентов, и этот блок будет моделировать поступление пациентов на отделение.

 Измените свойства объекта source

1.    В поле Интенсивность прибытия задайте интенсивность поступления пациентов на отделение: 0.05.

2.    В поле Фигура анимации заявки введите имя ранее добавленной нами фигурки пациента: patient.

 

 

За этим объектом следует блок NetworkEnter. Этот объект добавляет заявки в заданное место сети, в нашем случае мы хотим, чтобы он помещал пациентов в приемный покой.  

 Измените свойства объекта networkEnter

1.    Введите waitingHall в поле Узел входа. Здесь waitingHall - это имя ранее нарисованного нами прямоугольника, который располагается на плане отделения прямо поверх приемного покоя. Заявки-пациенты будут прибывать в указанный узел сети, задающий в нашей модели приемный покой.

2.    В поле Сеть Вы можете увидеть введенное Мастером создания модели имя объекта Network (network). Именно в сеть, заданную этим объектом, и будут помещаться заявки этим блоком.

 

Следующий блок в диаграмме процесса - NetworkMoveTo. Объект NetworkMoveTo перемещает заявку в новое место сети. С помощью этого объекта мы хотим промоделировать, как пациенты переходят из приемного покоя в процедурную комнату. 

 Измените свойства объекта networkMoveTo

1. Введите в поле Узел procRoom1 (имя прямоугольника, который задает одну из процедурных комнат). Пациенты будут перемещаться в указанный Вами узел сети. На данный момент все пациенты будут осматриваться в первой процедурной комнате.

 

Объект Delay задерживает заявку на заданное время. В нашей модели этот объект моделирует задержку, связанную с проведением процедуры. 

Присутствие "обычного", несетевого, блока Delay в диаграмме сетевого процесса наглядно подтверждает тот факт, что Вы можете использовать в диаграмме любые объекты Основной библиотеки, такие как Queue, Delay, Service и т.д.

 Измените свойства объекта delay

1. Задайте следующие свойства объекта:

o В поле Вместимость введите 5. Этот параметр определяет, как много пациентов сможет быть осмотрено одновременно. 

 

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

 Измените свойства объекта networkMoveTo

1. Мы хотим, чтобы этот объект перемещал пациентов в указанный нами узел сети. 

                   o    Введите в поле Узел exit (имя прямоугольника, который задает выход из отделения).

 

Объект NetworkExit удаляет заявку из сети. Заявка при этом перестает отображаться на анимации сети. В нашем случае он моделирует уход пациентов из отделения. Оставьте свойства объекта NetworkExit без изменений. 

 

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

Шаг 6. Запуск модели

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

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

 

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

 

Панель Ошибки

После того, как Вы исправите все ошибки и успешно построите Вашу модель, Вы можете ее запустить. 

 Запустите модель

1. Щелкните мышью по кнопке панели инструментов Запустить  и выберите из открывшегося списка эксперимент, который Вы хотите запустить. Эксперимент этой модели будет называться Ophthalmology Department/Simulation.

  

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

Запустив модель, Вы увидите окно презентации этой модели. В нем будет отображена презентация запущенного эксперимента.

AnyLogic автоматически помещает на презентацию каждого простого эксперимента заголовок и кнопку, позволяющую запустить модель и перейти на презентацию, нарисованную Вами для главного класса активного объекта этого эксперимента (Main).

 

Щелкните по этой кнопке. Тем самым Вы запустите модель и перейдете к презентации корневого класса активного объекта запущенного эксперимента.

Вы увидите, что поведение модели совпадает с ожидаемым: пациенты прибывают в приемный покой, затем проходят в процедурную, которую они покидают после прохождения процедуры.

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

Шаг 7. Занятие процедурной комнаты

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

 Измените диаграмму процесса

1.    Добавьте в диаграмму процесса объект NetworkSeize. Объект NetworkSeize занимает

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

 

2.    Задайте следующие свойства объекта:

o    В поле Список ресурсов {pool1, ...} введите список ресурсов, которые мы хотим занять с помощью этого блока. Список составляется следующим образом: Вы перечисляете имена объектов типаNetworkResourcePool, которые задают те ресурсы, которые будут захватываться данным блоком. Имена объектов пишутся через запятую, а весь список заключается в фигурные скобки. Поскольку нам нужно, чтобы этот блок занимал одну процедурную комнату, напишите здесь {procRooms}

Если Вам нужно захватить несколько ресурсов одного типа, то Вам нужно будет написать имя задающего эти ресурсы объекта столько раз, сколько ресурсов Вы хотите захватить.

 

3.    Измените свойства объекта moveToProcRoom. Мы хотим, чтобы этот блок перемещал пациентов не в первую процедурную комнату, а в ту комнату, которая была ранее выделена для этого пациента. 

Задайте следующие свойства объекта: o      Укажите место, в которое этот блок будет перемещать пациентов. Поскольку нам нужно, чтобы пациенты переходили в занятую комнату (которая задана в нашей модели в виде статического ресурса), то выберите в параметре Отсылать ресурсы опцию К захваченному ресурсу.

o    Укажите имя захваченного ресурса, к которому будут перемещаться пациенты. Введите procRooms в поле Ресурс. Здесь procRooms - это имя нашего объекта NetworkResourcePool, задающего статические ресурсы - процедурные комнаты.

 

 

 

4.    Добавьте в диаграмму процесса объект NetworkRelease. Этот объект освобождает ранее захваченные сетевые ресурсы. С помощью этого блока мы будем освобождать процедурные комнаты после проведения офтальмоскопии для того, чтобы там смогли быть осмотрены и другие пациенты. Иначе после того, как будет промоделирован осмотр трех пациентов, последующие пациенты не смогут быть осмотрены в силу того, что все наши ресурсы - процедурные комнаты будут заняты и недоступны.

 

5.    Задайте следующие свойства объекта:

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

 

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

Шаг 8. Моделирование вызова врача

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

 Измените диаграмму процесса

1.    Измените свойства объекта networkSeize. С помощью этого объекта мы хотим моделировать вызов доктора (с точки зрения сетевых ресурсов этот блок должен теперь захватывать помимо статического ресурса процедурной комнаты еще и движущийся ресурс типа "врач" и переносной типа "офтальмоскоп"). 

Введите {procRooms, doctors, scopes} в поле Список ресурсов {pool1, ...}. Теперь этот блок будет захватывать не один, а три ресурса трех разных типов.

 

2.    Измените диаграмму процесса. Вставьте новые объекты, как показано на рисунке:

 

3.    Измените свойства первого добавленного нами объекта типа NetworkSendTo (названного на рисунке с диаграммой процесса sendToStorage).  Объект NetworkSendTo направляет (перемещает) сетевые ресурсы из их текущего местоположения в другое место сети, указанное пользователем. 

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

o    Назовите объект sendToStorage. o         В поле Список ресурсов {pool1, ...} укажите, какие именно ресурсы Вы хотите перемещать с помощью этого блока. Введите здесь {doctors}.

o    Выберите опцию К захваченному ресурсу, чтобы ресурсы перемещались к захваченному ранее ресурсу (в нашем случае - офтальмоскопу).

o    Укажите имя ресурса, к которому будут перемещаться ресурсы. Введите в поле Ресурс имя объекта, задающего ресурс типа "офтальмоскоп": scopes.

 

4.    Измените свойства следующего объекта типа NetworkSendTo, названного на рисунке с диаграммой процесса sendToPatient). Этот блок моделирует перемещение врача с офтальмоскопом к пациенту, ждущему в приемном покое. Задайте следующие свойства объекта: o          Назовите объект sendToPatient. o       Задайте список ресурсов, которые этот объект будет перемещать. Введите {doctors, scopes} в поле Список ресурсов {pool1, ...}

o    В параметре Отсылать ресурсы выберите опцию К заявке. Тем самым мы задаем в качестве адреса движения ресурсов местоположение занявшей их заявки.

 

 

 

5.    Измените свойства объекта NetworkAttach. Этот блок присоединяет указанные сетевые ресурса (из числа ранее захваченных заявкой) к этой заявке. В результате присоединения они будет перемещаться вместе с заявкой (сопровождать ее в виде "эскорта") до тех пор, пока они не будут отсоединены от этой заявки или освобождены. Вы можете присоединять к заявке только те ресурсы, которые в текущий момент захвачены этой заявкой и находятся в том же самом узле сети, где и она.

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

o    В параметре Присоединять выберите опцию Все захваченные ресурсы в месте нахождения заявки

Блок NetworkAttach позволяет присоединять к заявки не только все, но и определенные выборочные ресурсы - в этом случае Вам было бы нужно выбрать опцию Заданные ресурсы и указать их в расположенном ниже поле Список ресурсов {pool1, ...}.

 

 

 

6.    Измените свойства объекта NetworkDetach. Этот блок отсоединяет от заявки ранее захваченные и присоединенные нестатические сетевые ресурсы. Отсоединенные ресурсы будут по-прежнему захвачены заявкой, но уже не будут следовать вместе с ней при ее перемещении в другие узлы сети. Нам нужен этот блок для того, чтобы после проведения процедуры офтальмоскопии пациент мог покинуть отделение, а врач мог отнести офтальмоскоп на место и перейти к осмотру следующего пациента или вернуться в ординаторскую.

Задайте следующие свойства объекта: o Выберите опцию Все присоединенные ресурсы.

 

7.    Измените свойства последнего добавленного нами в диаграмму процесса объекта типа NetworkSendTo. С помощью этого блока мы хотим промоделировать то, как врач возвращает офтальмоскоп в комнату хранения инструментов после проведения процедуры осмотра пациента. 

Задайте следующие свойства объекта: o      Назовите объект returnScope. o          Задайте список ресурсов, которые этот объект будет перемещать. Введите {doctors, scopes} в поле Список ресурсов {pool1, ...}.

o    В параметре Отсылать ресурсы выберите опцию В заданный узел.

o    Укажите имя узла, куда будут перемещаться ресурсы. Введите storageRoom в поле Узел.

 

Мы закончили создание простейшей модели отделения офтальмологии. Запустите модель. Теперь Вы можете увидеть, что для проведения офтальмоскопии вызывается врач вместе с офтальмоскопом.