Тема: Создание имитационной модели бизнес — процесса «Эффективность предприятия»
Цель: на примере имитационной модели «Эффективность предприятия» решить оптимизационную задачу, используя методы регрессионного анализа
1. Постановка задачи
Рассмотрим модель бизнес-процесса предприятия (небольшой компании). Предприятие занимается выпуском товара небольшими партиями. Размер партии известен. Имеется рынок, где эта продукция продается. Размер партии покупаемого товара в общем случае — случайная величина.
Рисунок1-Схема бизнес-процесса «Производство», hold, rels- управление запретами (разрешениями)
Структурная схема бизнес-процесса содержит три слоя. На двух слоях расположены автономные процессы «Производство» (рисунок 1) и «Сбыт» (рисунок 2), схемы которых независимы друг от друга (нет путей для передачи транзактов).
Рисунок 2- Схема процесса реализации продукции «Сбыт»
Опосредованное взаимодействие этих процессов осуществляется только через ресурсы: материальные ресурсы в виде готовой продукции и денежные ресурсы (в основном через расчетный счет).
Управление денежными ресурсами происходит на отдельном слое — в процессе «Денежные операции» (рисунок 3).
Рисунок 3- Схема управления потоками «Денежные операции»
Данная модель позволяет решать следующую оптимизационную задачу, используя, например, методы регрессионного анализа. Введем целевую функцию: время задержки платежей с расчетного счета Tрс. Основные управляющие параметры — это цена единицы продукции, объем выпускаемой партии, сумма кредита, запрашиваемого в банке. Зафиксировав все остальные параметры (время выпуска партии, число производственных линий, интервал поступления заказа от покупателей, разброс размеров продаваемой партии, стоимость комплектующих изделий и материалов для выпуска партии, стартовый капитал на расчетном счете), можно минимизировать Tрс для конкретной рыночной ситуации. Минимум Тpc достигается при одном из максимумов среднего размера денежной суммы на расчетном счете. Причем вероятность рискового события — неуплаты долгов по кредитам — близка к минимуму (это можно доказать во время статистического эксперимента с моделью).
Первый процесс «Производство» реализует основные элементарные процессы. Узел 1 имитирует поступления распоряжений на изготовление партий продукции от руководства компании. Узел 2 -попытка получить кредит. В этом узле появляется вспомогательный транзакт — запрос в банк. Узел 3 — ожидание кредита этим запросом. Узел 4 — это администрация банка: если предыдущий кредит возвращен, то предоставляется новый (в противном случае запрос ждет в очереди). Узел 5 осуществляет перечисление кредита на расчетный счет компании. В узле 6 вспомогательный запрос уничтожается, но информация о том, что кредит предоставлен, — это «шлагбаум» на пути следующего запроса на получение другого кредита (операция hold).
Основной транзакт-распоряжение проходит через узел 2 без задержки. В узле 7 производится оплата комплектующих, если на расчетном счете есть достаточная сумма (даже если кредит не получен). В противном случае происходит ожидание либо кредита, либо оплаты продаваемой продукции. В узле 8 транзакт становится в очередь, если все производственные линии заняты. В узле 9 осуществляется изготовление партии продукции. В узле 10 возникает дополнительная заявка на возврат кредита, если ссуда ранее была выделена. Эта заявка поступает в узел 11, где происходит перечисление денег с расчетного счета компании в банк; если денег нет, то заявка ожидает. После возврата кредита эта заявка уничтожается (в узле 12); в банке появилась информация о том, что кредит возвращен и компании можно выдать следующий кредит (операция rels).
Транзакт-распоряжение проходит узел 10 без задержки, а в узле 13 он уничтожается. Далее считается, что партия изготовлена и поступила на склад готовой продукции.
Второй процесс «Сбыт» имитирует основные функции по реализации продукции. Узел 14 — это генератор транзактов-покупателей продукции. Эти транзакты обращаются на склад, и если там есть запрашиваемое количество товара, то товар отпускается покупателю; в противном случае покупатель ждет. Узел 16 имитирует отпуск товара и контроль очереди. После получения товара покупатель перечисляет деньги на расчетный счет компании (узел 17). В узле 18 покупатель считается обслуженным; соответствующий ему транзакт больше не нужен и уничтожается.
Третий процесс «Денежные операции» имитирует проводки в бухгалтерии. Запросы на проводки поступают с первого слоя из узлов 5, 7,11 (процесс «Производство») и из узла 17 (процесс «Сбыт»). Пунктирными линиями показано движение денежных сумм по счету 51 («Расчетный счет», узел 20), счету 60 («Поставщики, подрядчики», узел 22), счету 62 («Покупатели, заказчики», узел 21) и по счету 90 («Банк», узел 19). Условные номера примерно соответствуют плану счетов бухгалтерского учета.
Узел 23 имитирует работу финансового директора. Обслуженные транзакты после бухгалтерских проводок попадают обратно в те узлы, откуда они поступили; номера этих узлов находятся в параметре транзакта t->updown.
Ниже приведен текст модели:
#include <Pilgrim.h>
forward
{
float T_cust=7; // Интервал поступления заказов
float T_work=14; // Время выполнения заказа
float З_bank=10000.00; // Сумма кредита в банке
float S_supp=10000.00; // Сумма платы поставщику
float The_price=90.00; // Цена единицы продукции
float Mod_time=730; // Моделируем 2 года
int N_work=2; // Мощность фирмы
int Max=1200; // Объем партии продукции
modbeg("Бизнес-процесс",23,Mod time,
(long)1234567890,none,20,none,18,none);
ag("Заказы",1,none,norm,T_work,0,zero,2);
ag("Клиенты",14,none,norm,T_cust,T_cust/3, zero,15);
assign(19,add,10000000.00); // Фонд банка
assign(20,add,0.00); // Фонд фирмы
assign(21,add,10000000.00); // Фонды клиентов
network(dummy,dummy)
{
//==============================
// Слой: процесс «Производство»
//==============================
top( 2):creat("Развилка 1",0,l,none,3,7);
place;
top( 3):queue("Ждём кредит !",none,4);
place;
top( 4):key("Разреш. кредита",5);
place;
top( 5):pay("Перевод кредита",20,S_bank,19, none,19,6);
place; //На слой № 2: банк
top( 6):term("Запрет выдачи");
hold(4);
place;
top( 7):pay("Плата поставщ.",22,S_supp,20, none,20,8);
place; //На слой № 2: Р/счет
top( 8)rqueue("Очередь заказов",none,9);
place;
top( 9):зегу("Выполн. заказа",N work,none,norm, T_work,zero,zero,10);
place;
top(10):creat("Развилка 2",0,l,none,11,13);
place;
top(11):pay("Возврат кредита",19,S_bank,20, none,20,12);
place; /* На слой № 2: Р/счет
top (12) :term("Pa3pein. выдачи");
rels(4) ;
place;
top (13) :term("3aKa3 выполнен");
clcode
supply (15, none, Max) ;
place;
// =====================
// Слой: процесс «Сбыт»
//========================
top(15) : t->powr=rundum() *100;
// Объем закупаемой партии
t->summ=t->powr*The_price;
// Стоимость этой партии
attach ( "Склад гот.прод.",
t->powr,prty, 16) ;
place;
top (16) :manage ("Отпускаем товар", 17) ;
place;
top(17) :pay ("Оплата покупки",20,
t->summ, 21/none, 21, 18) ;
place; // На слой № 2: счет покупателя
top (18) : term ("Товар оплачен") ;
place;
//==========================
// Слой: процесс «Денежные операции»
//=============================
top(19) :send("Бaнк: 90", t->k1,t->summ,
t->dpr,23);
place;
top(20) : send ("Расч. счет: 51", t->kl, t->summ,
t->dpr,23);
place;
top ( 21 ): send ("Клиент: 62", t->kl, t->summ,
t->dpr,23);
place;
top ( 22 ) : send ( "Поставщик : 60 ", t->kl , t->summ,
t->dpr,23); place;
top (23) : direct ("Бухгалтерия", t->updown) ;
place; // Возврат на верхний слой
//============================
// "Дно" структурной модели
//============================
fault (123);
}
modend( "Results. doc", I, 30, page) ;
return 0;
}
Результаты моделирования, полученные автоматически после одного прогона модели, показаны в таблице 1.
Таблица 1
Результаты моделирования
Контрольные вопросы:
1. Каким образом осуществляется взаимодействие между различными процессами оптимизационной задачи?
2. Объясните логику моделирования в каждом из рассмотренных процессов.
3. Проанализируйте полученные результаты моделирования.
К сдаче лабораторной работы №4 необходимо:
1. Смоделировать с помощью графического конструктора Pilgrim оптимизационную задачу на примере модели «Эффективность предприятия».
2. Подготовить отчёт о проделанной работе.
3. Ответить на контрольные вопросы.
