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

Материалы тренинга по AnyLogic

.pdf
Скачиваний:
218
Добавлен:
28.03.2015
Размер:
12.93 Mб
Скачать

Ритейлер. Фаза3. Шаг3

Перетащите блокРешение (If .. else) вветвьдиаграммыдействий

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

Комментари станет виденвнутриблокав графическомредакторе

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

241

Мы хотим, чтобынаш алгоритм проверял определенноеусловие и

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

проверки. ля этогомы воспользуемся локом ешение

.. se .

Задайте Условие блока: inventory < s. Здесьмы проверяем, не ниже ли

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

БлокРешение (If … Else)

 

..

.

есть двеисходящие ветви true и false. С помощью другихблоков Вы можете задатьпоследовательность действий для каждойиз этих ветвей. Когда управление

дойдетдоданногоблока, будетприниматьсярешениеотом, покакойветви

управлениепойдет дальше. Если заданное для блокаусловие будет выполнено, то будетвыбрана ветвьtrue. В противном случаебудет выбрана ветвьfalse.

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

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

242

 

 

Ритейлер. Фаза3. Шаг4

Локальная

переменная

Ко

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

243

Поместите дваблока в ветвь true блока Решение для того, чтобы

реализоватьзаказтовароввслучаенизкогоуровнятоварныхзапасов

ритейлера.

Локальнаяпеременная quantity будет подсчитывать количество единиц товара, которое должнобыть заказано (путем вычисления разницы между верхним уровнем товарных запасовитекущим уровнем: S inventory)

Блокcode будет выполнять следующийкод: source.inject(quantity);

nven ory += quan y;

Первая строка создает в объекте source заданноечисло заявок(равное quantity). Вторая увеличивает текущее значение уровнязапасов на это значение.

Локальная переменная

ото ражаться внутри лока и о ъяснять смысл локадругим

• Блок Локальная переменная используется для заданияпеременной внутри диаграммыдействий. Такаяпеременная видна тольконе во всейдиаграмме действий, а только в той ее части, которая следует заточкой объявления переменной.

Код

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

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

244

Ритейлер. Фаза3. Шаг5

Выделите

Retailer

Введите applyInventoryPolicy();

в поле Действие при запуске

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

245

 

 

Мы хотим проверять уровень товарныхзапасовпризапуске

моделииприпродажекаждойединицытовара.

  Первым делом мы хотим реализоватьпроверку при

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

помещаем вызовдиаграммыдействий в Действие при запуске классаRetailer.

Действие при запуске

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

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

Как выполнить алгоритм, заданный диаграммой действий?

,

кодвызовдиаграммыдействий(имя диаграммы, за которыми следуютскобки): applyInventoryPolicy();

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

moveTo(15, 20);

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

246

 

 

Ритейлер. Фаза3. Шаг6

Заявки прибываютсогласно:

Вызовам метода inject()

Действие при выходе: inventory ; applyInventoryPolicy();

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

247

Измените режим генерации заявокобъектаsource.

Пустьон создаетзаявки не согласнозаданной интенсивности, а повызовам метода inject() (какВы помните, мы поместили вызов этогометодав блок кодаcode диаграммы действий applyInventoryPolicy).

Задайте действия, которыедолжнывыполнятьсяпри продажетоварасо склада:

inventory ; applyInventoryPolicy();

уровнятоварныхзапасовна единицу. Вторая

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

новый уровень товарныхзапасов, и в случае его недостаточностизаказывает производствои доставку новыхтоваров.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

248

Ритейлер. Фаза3. Шаг7

ДобавьтеВременную диаграммус накоплением

Добавьтеэлементы данных

дляотображениянадиаграмме

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

249

 

 

единиц товара, хранимогов текущий момент времени

, .

ДобавьтеВременную диаграмму с накоплением с

палитры татистика и измените ее размер, как показанона слайде выше.

Добавьтедва элемента данных, один отображающий

Значение storage.size() сЗаголовком On the stock, а другой отображающийinventory storage.size() с

Заголовком Expecting.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

250

Ритейлер. Фаза3. Шаг8

родолжите настраивать свойствадиаграммы

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

251

 

 

Измените свойствадиаграммы:

Задайтевременной диапазондиаграммыравнымодному часу.

ЗадайтеФиксированную шкалус максимальным значением для оси y 60.

Задайтеотображение модельного времени в метках временной оси диаграммы.

Отображение модельного времени в метках временных диаграмм

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

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

252

 

 

Ритейлер. Фаза3. Шаг9

о авьте

Бегунокна диаграмму

Измените свойства бегунка

одинбегунок

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

253

,

варьироватьзначения параметровs и S вовремя

.

Добавьтебегунокиз палитрыЭлементы управления.

Установитефлажок Связать с и введите имя параметра, значение которогоВыхотитеварьироватьс помощьюэтогобегунка, в расположенномсправа поле:

S.

Создайтекопию этогобегунка. Пустьэтотбегунок

изменяетзначениепараметра s.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

254

Ритейлер. Фаза3. Шаг10

элемент frame

ведите здесь

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

255

 

 

,

в себя толькочтодобавленные нами элементы.

Разверните в дереве проектовэлемент эксперимента Simulation:Main и затем разверните его подветвь резентация. елкните на элементе rame, что ы просмотретьего свойства.

Задайте ширину рамки равной1000 и оставьте заданную поумолчанию высоту600. Таким способом Вызадаете начальный размер окнапрезентации.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

256

Ритейлер. Фаза3. Шаг11

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

Поэкспериментируйте

 

 

со значениямиs и S

 

 

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

257

Ритейлер. Фаза3. Вопросы

1.

2.

3.

4.

5.

Обсуждение: в чем заключается разница между переменными и параметрами?

Диаграмма действия выполняется:

(a) за 1 единицу времени

(b) в течение нулевого времени (c) зависит от диаграммы

Какможноизменить размер окна презентации?

Какимобразомможносвязатьпараметрсэлементом

управления (например, бегунком)?

Перечислитевсережимысозданиязаявокобъекта

Source.

6.КакВыможетепромоделироватьсоздание

ограниченногоколичествазаявок?

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

258

Ритейлер. Фаза4

Давайтесоздадим 3D анимацию для нашей

модели ритейлера. Она будет отображаться п лл льн уж ущ т у щ д ум н анимацией.

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

259

© 2002-2011 ООО «Экс Джей Текнолоджис», www.xjtek.ru

260