Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

m1044

.pdf
Скачиваний:
5
Добавлен:
15.11.2022
Размер:
5.17 Mб
Скачать

Рис. 5.8. Добавление параметра ЭффективнКонтактов

Изменим диаграмму состояний агента. Откройте диаграмму класса Person. Добавьте внутренний переход в состояние Клиенты. В данном случае проще будет нарисовать его, перейдя в специальный режим рисования. Для того чтобы перейти в этот режим, сделайте двойной щелчок мышью по элементу Переход в палитре Диаграмма состояний. Теперь вы можете рисовать переход, последовательными щелчками мыши добавляя в нужных Вам местах диаграммы начальную точку перехода, затем точки его изгиба и, наконец, двойным щелчком – конечную точку перехода. Щелкните мышью вначале по одной границе состояния Клиенты, а затем сделайте двойной щелчок мышью по другой его границе. При этом должен будет нарисоваться внутренний переход состояния Клиенты. Этот переход будет моделировать общение человека со своим знакомым, в результате тот может быть убежден в покупке нового продукта. Интенсивность срабатывания этого перехода будет зависеть от интенсивности общения этого человека. Выберите на странице свойств этого перехода из выпадающего списка Происходит С заданной интенсивностью и задайте новое значение Интенсивности срабатывания

61

этого перехода: КолКонтактовНед. Задайте Действие этого пе-

рехода: send("Buy!", RANDOM); (рис. 5.9)

Рис. 5.9. Настройка перехода в диаграмме состояний

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

RANDOM.

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

62

randomTrue(ЭффективнКонтактов) в поле Доп. условие. Это дополнительное условие приведет к тому, что продукт будет приобретаться с вероятностью, задаваемой параметром ЭффективнКонтактов. Этот переход будет срабатывать, когда диаграмма состояний этого агента получит сообщение "Buy!" (то есть, "Купи") от другого агента – своего знакомого. Чтобы этот переход срабатывал при получении сообщения, на странице свойств этого перехода выберите из выпадающего списка Происходит При получении сообщения. Теперь нам нужно указать, что переход будет срабатывать только при получении сообщения соответствующего содержания. Для этого выберите из группы кнопок Тип сообщения опцию String, выберите ниже опцию Если сообщение равно и введите "Buy!" в расположенном ниже поле

(рис. 5.10).

Рис. 5.10. Настройка условного перехода

63

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

ствие при получении сообщения введите statechart.receiveMessage(msg); (рис. 5.11).

Рис. 5.11. Моделирование срабатывания перехода

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

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

64

Графики переменных представляют собой классические S-об- разные кривые, т.е. можно сказать, что мы достаточно точно воспроизвели результаты, которые выдавала для данной постановки задачи системно-динамическая модель.

5.8. Задание

Внесите изменения в модель согласно варианту.

Вариант

Эффективность рекламы

Эффективность контактов

1

0,010

0,01

2

0,010

0,02

3

0,010

0,03

4

0,005

0,04

5

0,005

0,05

6

0,005

0,01

7

0,015

0,02

8

0,015

0,03

9

0,015

0,04

10

0,010

0,05

11

0,010

0,01

12

0,010

0,02

13

0,005

0,03

14

0,005

0,04

15

0,005

0,05

16

0,015

0,01

17

0,015

0,02

18

0,015

0,03

19

0,020

0,04

20

0,020

0,05

Приведите результаты моделирования.

Лабораторная работа № 6. Моделирование сетей

Цель работы:

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

Задание на лабораторную работу:

65

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

6.1. Создание новой модели «с нуля»

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

Чтобы разместить план, нужно использовать элемент «Изображение» из палитры «3D». В качестве изображения выбирается файл layout.png (рис. 6.1). После загрузки изображения нужно активизировать флажок Исходный размер.

Затем следует разместить на плане территории области, которые будут использоваться при моделировании работы СМО.

Эти области показаны на рис. 6.1.

66

Рис. 6.1. План автосервиса

Чтобы создать эти области, используйте элемент Прямоугольник из палитры 3D. Разместите области в соответствии с рис. 6.1. Для удобства работы отключите автоматическую привязку фигур к линиям сетки поля графического редактора модели с помощью инструмента Включить/Отключить сетку, панели инструментов. Присвойте областям идентификаторы с помощь вкладки Основные и свойства Имя:

1)waitingHall (помещение ожидания для прибывших автомобилей);

2)staffRoom (комната отдыха для ремонтников, проводящих осмотр);

3)storageRoom (комната для хранения инструментов ремонтников);

4)procRoom3 (комната осмотра автомобилей);

5)procRoom2 (комната осмотра автомобилей) 7-procRoom1 (комната осмотра автомобилей).

67

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

Чтобы смоделировать завершение осмотра автомобиля, нужно разместить точку выхода из автомастерской. Это точка отмечается небольшим прямоугольником – позиция 6. Разместите прямоугольник и присвойте ему идентификатор exit.

Далее следует создать траекторию движения автомобилей и ремонтников.

Траектория формируется путем задания ее узлов с помощью прямоугольников, так как это показано на рис. 6.2. Разместите узлы, оставив идентификаторы прямоугольников по умолчанию.

Затем следует соединить узлы между собой и с помещениями с помощью элемента Ломанная палитры Презентация (см. рис. 6.2). Важно: соединение выполняется парно! Узел с узлом, помещение с узлом.

Рис. 6.2. Настройка траектории движения

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

68

Рис. 6.3. Создание группы

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

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

69

Рис. 6.4. Группа на дереве проекта

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

6.2. Создание сети

Следующим шагом построения модели является создание сети с помощью элементов библиотеки Enterprise Library. Для этого используются элементы:

Network

NetworkResourcePool

Предварительно на рабочее поле поместите ломаную линию, так как это показано на рис. 6.5. Используя вкладку Основные свойств ломанной задайте ей идентификатор roomsLocation и выберите красный цвет для линий ломанной. Ломаная линия используется для указания помещений при осмотре автомобилей ремонтниками.

70

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]