- •Новочеркасск
- •Введение
- •Моделирование систем массового обслуживания. Алгоритмизация по схеме событий
- •Алгоритм моделирования простейшей смо
- •Лабораторная работа №2 построение моделеи экономических систем с использованием объектно-ориентированной системы моделирования pilgrim
- •Технологический процесс построения модели. Пример моделируемого процесса
- •Лабораторная работа №3 особености построения замкнутых систем в pilgrim. Модель «минимизация производственных затрат»
- •Текст модели
- •Методические указания по разработке модели
- •Текст базовой модели
- •Литература
- •Заключение
- •Лабораторный практикум по курсу «имитационное моделирование
- •346428, Г.Новочеркасск, ул. Просвещения, 132
Текст базовой модели
#include <Pilgrim.h>
forward
{
int fw;
float T_cust=7;
float T_work=14;
float S_bank=2500.00;
float S_supp=2500.00;
float Mod_time=365*5;
float N_work=2;
int Max=300;
float The_price=30;
modbeg("Бизнес_процесс", 19, Mod_time, (long)time(NULL), none, 20, none,18, none);
ag("Заказы-распоряжения", 101, none, norm, T_work, 0, zero, 102);
ag("Клиенты", 114, none, norm, T_cust, T_cust/3, zero, 115);
assign(119, add,10000000.00);
assign(120, add,10000.00);
assign(121, add,10000000.00);
network(dummy, dummy)
{
top(102):
creat("Развилка 1", 0, 1, none, 103, 107);
place;
top(103):
queue("Ожидание кредита", none, 104);
place;
top(104):
key("Разрешение кредита", 105);
place;
top(105):
pay("Перевод кредита", 120, S_bank, 119, none, 119, 106);
place;
top(106):
term("Запрет выдачи");
clcode {
hold(104);
}
place;
top(107):
pay("Плата поставщикам", 122, S_supp, 120, none, 120, 108);
place;
top(108):
queue("Очередь заказов", none, 109);
place;
top(109):
serv("Выполнение заказа", N_work, none, norm, T_work, zero, zero, 110);
place;
top(110):
creat("Развилка 2", 0, 1, none, 111, 113);
place;
top(111):
pay("Возврат кредита", 119, S_bank, 120, none, 120, 112);
place;
top(112):
term("Разрешение выдачи");
clcode {
rels(104);
}
place;
top(113):
term("Заказ-распоряжение выполнен");
clcode{
supply(115, add, Max);
}
place;
top(115):
t->powr=rundum()*100; // Объем закупаемой партии
t->summ=t->powr*The_price; // Стоимость этой партии
attach("Склад", t->powr, prty, 116);
place;
top(116):
manage("Отпуск товара", 117);
place;
top(117):
pay("Оплата покупки", 120, none, 121, none, 121, 118);
place;
top(118):
term("Товар оплачен");
place;
top(119):
send("Счет 90: Банк", t->k1, t->summ, t->dpr, 123);
place;
top(120):
send("Счет 51: Р/счет", t->k1, t->summ, t->dpr, 123);
place;
top(121):
send("Счет 62: Клиенты", t->k1, t->summ, t->dpr, 123);
place;
top(122):
send("Счет 60: Пост-к.", t->k1, t->summ, t->dpr, 123);
place;
top(123):
direct("Бухгалтерия", t->updown);
place;
fault(123);
}
modend("results.txt", 1, 30, page);
return 0;
}
Варианты индивидуальных заданий (выполняются на основе базовой схемы)
Вариант №1. Объем производимой партии – это не постоянная фиксированная величина, а случайная величина, распределенная на интервале [100, 200]. От объема производимой партии зависит сумма кредита (соответственно и сумма возврата кредита). Считать, что стоимость материалов на изготовление одной единицы товара – 10 руб. От объема партии производимой продукции зависит и сумма, которую уплачивает фирма поставщикам материалов.
Вариант №2. Сбыт продукции: если клиент видит перед складом очередь (очередь перед складом образуется из-за отсутствия готовой продукции на складе) из двух человек, то он отказывается от намерения осуществить покупку и уходит. Объем производимой партии – случайная величина, распределенная по равномерному закону со средним значением Х, среднеквадратическим отклонением 0.3Х. найти такой минимальный объем Х, чтобы отказы клиента от покупки из-за очереди на складе не превышали 5%.
Вариант №3. Реализовать схему сбыта продукции – «оплата 50%+50%», т.е. клиент осуществляет предоплату в размере 50% стоимости покупки, затем получает товар со склада и оплачивает оставшиеся 50%. Кредит, который берет фирма в банке не беспроцентные. Условно считать, что в среднем фирма пользуется кредитом 15 дней, поэтому размер процентов за этом период – 2%.
Вариант №4. Реализовать систему скидок:
-
если клиент покупает от 81шт. товара и больше, то скидка 5%;
-
если клиент покупает от 51 до 80шт. товара, то скидка 3%;
-
если клиент покупает до 50шт. товара – скидка не предоставляется.
Сбыт продукции производится по схеме – «100% предоплата», т.е. клиент полностью оплачивает покупку до получения товара со склада.
Вариант №5. Кредит в банке фирма берет только в том случае, если остаток денежных средств на расчетном счете фирмы меньше необходимой суммы. Кредит фирма берет на недостающую сумму.
Вариант №6. Реализовать систему подарков от фирмы:
-
если клиент покупает более 50 шт. товара, то ему бесплатно фирма дарит еще 3 шт. товара;
-
если клиент покупает более 90 шт. товара, то ему бесплатно фирма дарит еще 7 шт. товара.
Для реализации этой системы необходимо одновременно с расчетом объема покупки t->powr рассчитать объем подарка и записать в один из параметров транзакта-покупателя, например, t->iu3. Отгрузка со склада будет производиться объемом t->powr+t->iu3, а при расчете суммы оплаты t->summ будет учитываться только объем t->powr.
Вариант №7. Реализовать модель зависимости спроса от цены. Допустим, что по статистическим данным выявлено, что если увеличить базовую цену (The_price=30у.е.) на 25%, то спрос на товар (т.е. объем покупки) уменьшается на 15%, а при уменьшении цены на 25% спрос на товар возрастает на 20%.
Провести имитационные эксперименты с тремя вариантами цены: 30у.е.; 30у.е.+25% и 30у.е.–25%. Изменение спроса учитывать при расчете объема покупки t->powr (умножать на соответствующий корректирующий коэффициент, отражающий падение (увеличение) спроса). По результатам имитационных экспериментов сделать выводы о наиболее выгодной для предприятия цене (анализировать прибыль на расчетном счете фирмы).