Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Моделирование работы системы массового обслуживанияСодержание книги
Поиск на нашем сайте
1) Постановка задачи Требуется произвести расчет режимов работы следующей системы: есть касса, кассир продает билет, время обслуживания случайно, клиенты подходят и становятся в очередь, очередь ограничена. Требуется построить имитационную СМО и поиграв параметрами найти зависимости длины средней очереди от среднего времени обслуживания клиентов, определить вероятность простоя кассира, % обслуженных клиентов зависит от интенсивности работы кассира. 2) Посторенние физической модели 1). Генератор Входной поток клиентов простейший. Генератор посылает заявку в очередь, генерирует промежуток времени до следующей заявки. 2). Очередь ремонта Входные сигналы: - от генератора в очередь пришла заявка, тогда состояние очереди увеличится на1; - забрать заявку из очереди при этом состояние очереди уменьшается на 1. Выходные сигналы: - очередь выдает сигнал кассиру, что на очереди есть заявка; - передача заявки в кассу; - очередь перегружена, заявку принять не может. 3). Касса Z=1 – простой Z=2 – работа Кассир простаивает в режиме ожидания, пришел клиент, становится в очередь, очереди нет, следовательно, в очереди 1ая заявка. Кассир генерирует выходной сигнал забрать заявку из очереди. Очередь посылает на обслуживание. В момент обслуживания на сигналы из очереди касса не реагирует. В состоянии обслуживания кассир находится в течение случайного времени. Время обслуживания закончилось, нужно подать автомату сигнал о том, что он освободился. При этом также должны подаваться сигналы из очереди, что там находятся клиенты. 3) Создание математической модели Касса Входные сигналы: - 1 – закончить работу СМО; - 2 – из очереди пришла информация, что в ней появилась заявка; - 3 - из очереди на обслуживание пришла реальная заявка. Выходные сигналы: - 1 – кассир приступил к работе по обслуживанию заявки; - 2 – запрос у очереди взять заявку; - 3 – заявка обслужена, ушла из системы, и одновременно идет сигнал забрать заявку из очереди. Автоматная таблица состояний:
Очередь Входные сигналы: - 1 – заявка пришла в очередь; - 2 – забрать заявку из очереди. Выходные сигналы: - 1 – очередь сообщает кассиру, что в пустой очереди появился заявка; - 2 – передача заявки из очереди кассиру; - 3 – очередь отказывается ставить клиента, переполнена. Пришла заявка в очередь при 3ёх ситуциях: 1) если очередь пустая, то очередь с состоянием 0 и на выходе 1; 2) если промежуточная, то число заявок увеличилось на 1, на выходе ничего не изменилось; 3) если очередь максимальна, то на выходе = 3. Генератор Входные сигналы: - 1 - сгенерировать заявку; Выходные сигналы: - 1 – отправить заявку на очередь. Модельное время В нашей модели используется принцип изменения модельного времени по особым состояниям. Это состояние – смена состояний под воздействием входных и выходных сигналов. Для организации передачи сигналов используется понятие событие. Событие – это массив из 3ёх чисел Sob=[time, kto, sign] time – время события kto – кто получает сигнал sign – номер входного сигнала Список событий –это матрица вида
Sob[k,:)=[timek, ktok, signk]
Вносим в список событий событие с заданными параметрами: function putsob(time,kto,Sign); global Nsob sob;
Nsob=Nsob+1; % Число записей в списке увеличиваем на 1 sob(Nsob,1:3)=[time,kto,Sign]; % Заносим в последнюю строку списка информацию о событии
Получить очередное событие с наименьшим временем из списка: function z=getsob; global Nsob sob
if Nsob==0 % Если список пуст z=[]; return; else [tmin,k]=min(sob(:,1)); % Ищем индекс "к" у события с минимальным временем z=sob(k,:); % Возвращаем найденное событие (строка с номером к) sob(k,:)=[]; % Вычеркиваем найденную строку из списка Nsob=Nsob-1; % Уменьшаем количество записей в списке end Программа моделирования самой СМО: function model_smo global t Tmod init; % Инициализация исходных данных
while t < Tmod; % Цикл по времени до конца моделирования sob=getsob; % Получение очередного события с наименьшим временем sob=[t,kto,Sign]
t=sob(1); % Коррекция модельного времени kto=sob(2); % Кто получает текущий сигнал sign=sob(3); % Номер сигнала
switch kto
case {1} % Работа генератора заявок generator(sign);
case {2} % Работа накопителя ochered(sign);
case {3} % Работа канала обслуживания kassa(sign);
end % end switch end % end while
pprint; % Вывод результатов
Инициализация исходных данных: function init; global t Kas Tmod Och otk lambda mju obsl Nsob sob
t=0; % Текущее модельное время Tmod=1000; % Время окончания моделирования otk=0; % Количество заявок, которым отказано в обслуживании obsl=0; % Количество обслуженных заявок
mju=1; % Интенсивность обслуживания каналом заявок lambda=1; % Интенсивность появления заявок
Nsob=1; % Количество событий в списке sob(Nsob,1:3)=[0,1,1]; % Инициализация первого события
Kas=struct(... % Структура с данными канала обслуживания 'Z',1,... % Номер текущего состояния 'Tvh',0,... % Время входа в текущее состояние 'nZ',[0,0],... % Счетчики состояний 'tZ',[0,0],... % Счетчики продолжительности состояний 'mZ',0,... % Подсчет среднего состояния 'TabZ',[1,1,2; 1,2,0],... % Автоматная таблица состояний 'TabVs',[0,2,1; 3,0,0]); % Таблица выходных сигналов
Och=struct(... % Структура с данными очереди 'N',0,... % Число заявок в очереди 'n0',0,... % Счетчик числа нулевых состояний очереди 'tn0',0,... % Счетчик времени нулевого состояния 'nNmax',0,... % Счетчик числа максимальных состояний 'tnNmax',0,... % Счетчик времени максимального состояния 'mN',0,... % Подсчет среднего состояния 'tvh',0,... % Время входа в текущее состояние 'Nmax',8); % Максимальное число заявок в очереди
Моделирование работы кассы: function kassa(s); global t obsl mju Kas
[vhd,Kas]=avtwork(Kas,s); switch vhd case {0}; % Нет выходного сигнала
case {1} % Опрелеление времени окончания обслуживания putsob(t+pokdat(mju),3,1); case {2} % Взять заявку из очереди на обслуживание putsob(t,2,2); case {3} % Заявка обслужена, забираем следующую из очереди putsob(t,2,2); obsl=obsl+1; % Подсчет обслуженных заявок end
Моделирование работы накопителя: function [vhd,nak]=nakwork(nak,s); global t
n=nak.N; % Число заявок в очереди (номер состояния) nst=n; % Старое количество заявок в очереди dT=t-nak.tvh; % Время от смены посл. состояния
if nst==0 % Если очередь пуста
switch s % Входной сигнал
case {1} % Пришла заявка n=n+1; % Число заявок увеличилось на 1 nak.n0=nak.n0+1; % Число нулевых состояний увеличилось на 1 nak.tn0=nak.tn0+dT; % Общее время нулевого состояния vhd=1; % Выходной сигнал - пришла заявка
case {2} % Взяли заявку vhd=0; % Пустой сигнал, т.к. в очереди не было заявок end end
if (0 < nst)&(nst < nak.Nmax) % Очередь промежуточная
switch s % Сигнал
case {1} % Пришла заявка n=n+1; % Число заявок увеличилось на 1 vhd=0; % Пустой сигнал, т.к. об этом сообщать не надо
case {2} % Взяли заявку n=n-1; % Число заявок уменьшилось на 1 vhd=2; % Выходной сигнал - пошла заявка на обслуживание end end
if nst == nak.Nmax % Максимальная очередь
switch s % Сигнал case {1} % Пришла заявка vhd=3; % Заявка не обслуживается - выходной сигнал case {2} % Взяли заявку n=n-1; % Число заявок уменьшилось на 1 nak.nNmax=nak.nNmax+1; % Счетчик числа максимальных состояний очереди nak.tnNmax=nak.tnNmax+dT; % Счетчик общего времени максимального состояния vhd=2; % Выходной сигнал - пошла заявка на обслуживание end end
if n ~= nst % Состояние изменилось
nak.mN=nak.mN+dT*nst; % Подсчет средней длины очереди nak.tvh=t; % Запоминаем время входа в новое состояние nak.N=n; % Новое состояние делаем текущим end
Моделирование работы очереди: function ochered(s); global otk t Och
[vhd,Och]=nakwork(Och,s); %
switch vhd case {0}; % Нет выходного сигнала
case {1} % Сообщение каналу о пришедшей заявке putsob(t,3,2); case {2} % Передача заявки в канал для обслуживания putsob(t,3,3); case {3} % Очередь переполнена otk=otk+1; % Подсчет заявок, которым отказано в обслуживании end
Генератор потока заявок: function generator(s); global t lambda
putsob(t+pokdat(lambda),1,1); % Определение времени следующей заявки putsob(t,2,1); % Помещение события в список событий
Вывод результатов моделирования: function pprint; global Tmod Kas Och obsl otk
obsl % Число обслуженных заявок otk % Число отказов в обслуживании
procOtk=otk/(otk+obsl)*100 % Процент отказанных заявок Nz=sum(Kas.nZ); % Суммируем число всех наблюдаемых состояний procZ=Kas.nZ/Nz % Процент количества каждого состояния среди всех sredT=Kas.tZ./Kas.nZ % Среднее время нахождения в каждом состоянии verZ=Kas.tZ./Tmod % Вероятность каждого состояния Mz=Kas.mZ/Tmod % Мат. ожидание (среднее состояние)
sredN=Och.mN/Tmod % Средняя длина очереди
if Och.n0 > 0 % Если есть нулевые (пустые) состояния очереди sredT_0=Och.tn0/Och.n0 % Среднее время нахождения в нулевом состоянии else sredT_0=0 end ver_0=Och.tn0/Tmod % Вероятность нулевого состояния
if Och.nNmax > 0 % Если есть максимальные состояния очереди (очередь заполнена) sredT_max=Och.tnNmax/Och.nNmax % Среднее время нахождения в максимальном состоянии else sredT_max=0 end ver_max=Och.tnNmax/Tmod % Вероятность максимального состояния
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 255; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.208.189 (0.007 с.) |