|
Post by ostrovsky on Nov 9, 2015 22:08:38 GMT 3
Не получается смоделировать распространение товара с ограниченным сроком службы. Что попробовал сделать: 1. для моделирования перехода действующих клиентов в разряд потенциальных добавил в модель поток, соединяющий накопитель "клиенты" с накопителем "потенциальныеКлиенты". 2. темп данного потока задал через параметр "переход" с нулевым начальным значением 3. задал параметр "срокСлужбы" со значением 1 (год) 4. для активации потока задал событие "срокСлужбыИстек" тип события "по таймауту", режим - циклический, время первого срабатывания и период равны значению параметра "срокСлужбы". 5. предположил, что действием события "срокСлужбыИстек" должна быть установка значения параметра "переход", активирующего поток описанный в п.1, в значение, равное количеству купленных продуктов (значение по оси Y = клиенты) в момент срабатывания события. Возник вопрос, где хранить это значение. Добавил для этого динамическую переменную "вышедшиеИзСтроя" со значением = клиенты. 6. действия в событии "срокСлужбыИстек" указал: set_переход(вышедшиеИзСтроя); //активация потока, перемещающего количество действующих клиентов, купивших продукт год назад, в разряд потенциальных set_вышедшиеИзСтроя(0); //обнуление динамической переменной для записи в нее новых значений. В результате получил ошибку "Метод set_вышедшиеИзСтроя(int) не определен для типа Main. Местоположение: Bass5/Main/срокСлужбыИстек - Событие".
|
|
|
Post by ostrovsky on Nov 9, 2015 23:46:10 GMT 3
Пока писал понял, что событие "срокСлужбыИстек" должно повторяться не циклически, а запускать постоянный поток перехода клиентов в потенциальные после первого года продаж продукта (срокСлужбы = 1 год). Тогда не понятно, как в таком случае подсчитывать постоянно увеличивающееся количество новых клиентов, купивших продукт чтобы передавать его в поток после истечения срока его службы.
|
|
|
Post by Глеб Заходякин on Nov 10, 2015 22:34:03 GMT 3
Пока писал понял, что событие "срокСлужбыИстек" должно повторяться не циклически, а запускать постоянный поток перехода клиентов в потенциальные после первого года продаж продукта (срокСлужбы = 1 год). Тогда не понятно, как в таком случае подсчитывать постоянно увеличивающееся количество новых клиентов, купивших продукт чтобы передавать его в поток после истечения срока его службы. На самом деле подход с событием - тупиковый. У Вас ведь нет в модели отдельных клиентов и событий покупки. Там только общее их количество. Значит, не может быть и событий поломки. В действительности, надо моделировать темп оттока клиентов назад в потенциальные. А задавать этот темп как функцию задержки. Вы можете использовать задержку первого порядка (см. новую лекцию про эффект хлыста), основанную на накопителе клиентов и параметре среднее время службы, либо жесткую "конвеерную" задержку, которая будет основана на темпе поступления клиентов и одинаковом для всех сроке службы (функция delay). Также можно будет использовать этот же темп и задержку 1 или 3 порядка (функцию).
|
|
funny
New Member
Posts: 4
|
Post by funny on Nov 18, 2015 10:46:40 GMT 3
если использовать функцию delay, то ее можно использовать только с двумя аргументами, без начального значения?
|
|
|
Post by Глеб Заходякин on Nov 19, 2015 0:06:38 GMT 3
если использовать функцию delay, то ее можно использовать только с двумя аргументами, без начального значения? Можно. Только тогда в период от 0 единиц модельного времени до времени задержки на выходе delay() будет выдаваться ноль. Функции системной динамики в Anylogic описаны здесь: www.anylogic.ru/anylogic/help/nav/0_6_11Также я выложил в файлы курса презентацию по различным видам задержек (bullwhip-15.pdf). Они очень часто используются в системно-динамических моделях.
|
|