Смекни!
smekni.com

Моделирование системы массового обслуживания (стр. 2 из 3)

После появления заявки:

Проверяются все койки на наличие свободной, если таковой нет то заявка помешается в очередь на койку с наименьшей очередью, если все очереди заполнены, заявка теряется, иначе ставится на обслуживания

Если заявка поступила на обслуживание, для нее генерируется количество процедур, на которые она пойдет и список процедур.

Проверяется есть ли свободные процедуры из списка, если есть то заявка идет на обслуживание, иначе ставится в очередь на процедуру с наименьшей очередью, если все очереди заполнены, заявка теряется

Наращивается время пребывания заявок в системе, время простоя аппаратов обслуживания, время прошедшее с начала обслуживания, для заявок на процедурах, время простоя аппаратов обслуживания

Проверяются очереди, койки и процедуры на потерю заявок (заявка теряется, если время пребывания в системе равно максимальному времени пребывания в системе)

Проверяются процедуры, ели время обслуживания заявки закончено, она ставится на следующую из списка, или в очередь на следующую, если список ее процедур не пуст. Освобожденная процедура начинает обслуживание заявки из очереди

Проверяются койки, если список процедур обслуживаемой заявки пуст, койка освобождается, просматривается очередь и ставится на обслуживание свежующая заявка.

Наращивается текущее время моделирования.

Если текущее время равно времени моделирования, процесс останавливается, выдается сообщение "моделирование завершено", генерируется отчет, работа таймера останавливается.

Заявки поступают на обслуживание из очереди в соответствии с приоритетом (сначала на обслуживание идут приоритетные заявки). Каждую секунду состояние системы визуально отображается с помощью графиков и таблицы, которые будут описаны в руководстве пользователя.

4. Руководство программиста

Все файлы проекта располагаются в директории с наименованием СМО. В проект входят: файл проекта DelphiSMO. dpr, файлы исходного текста:

Unit1 - основной модуль

Unit2 - модуль для заполнения параметров каналов обслуживания (процедур)

Unit3 - модуль для заполнения параметров очередей

Unit4 - модуль для заполнения параметров потоков входных заявок

Unit5 - модуль для демонстрации приветствия

Файл справки (Руководство пользователя) в формате HTML, и исполняемый файл SMO. exe.

Для программного представления заявок используется следующая запись

type

zaeavka=record

t1: real; // время появления заявки

t2: real; // время ожедания в очереди

t_obs: real; // время обслуживания

prior: boolean; // приоритет заявки

proc: string; // на какие процедуры

koyka: integer;

end;

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

type

vpotok_z=record

z_ki: zaeavka;

name: string;

t1_zaevki: real;

ind: integer;

ot,do_, interval: real;

prioritet: boolean;

p1,p2: real;

kol_sgener_z: integer;

end;

Для программного представления очереди используется следующая запись

type ocher=record

mas_z: array of zaeavka;

ochered: integer; // кол-во в очериде

max_l_och: integer; // max длина очереди

name: string;

t_ozhed: real;

ind: integer;

prior: boolean;

end;

Для программного представления аппарата обслуживания - процедура используется следующая запись

type

obsluzh_p=record

mas_ochered: array of ocher;

name: string;

bul: boolean; // занят, свободен

obsl: integer; // кол-во обслуженных

poter: integer; // кол-во потерян заявок

t_obsl_min: real; // время обслуживания

t_obsl_max: real; // время обслуживания

t_prostoy: real; // время простоя

z_obsl: zaeavka;

end;

Для программного представления аппарата обслуживания -койка используется следующая запись

type

obsluzh_k=record

mas_ocher: array of ocher;

bul_k: boolean; // занят, свободен

poter_k: integer; // кол-во потерян заявок

obsl: integer; // кол-во обслуженных

t_prostoy: real; // время простоя

z_obsl: zaeavka;

n_koyki: integer;

end;

Компонент Series1, Series2 служат для построения графиков, характеризующих состояние системы на текущей момент по:

Количеству обслуженных заявок

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

Времени простоя

Состоянию (занят (1), свободен (0))

Эффективность работы ( (общее время - время порстоя) / общее время).

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

vpz: array of vpotok_z;

koyki: array of obsluzh_k;

proz: array of obsluzh_p;

i,j,k,l,n,m: integer;

s,d,f: string;

p3: real;

k_p,k_o,k_k: integer;

t_1z: real;

kol_koek: integer; // количество коек

t_mod: real; // время моделирования

t_tek: real; // текущее (сколько прошло с момента начала моделирования)

t: real;

indeks: integer;

t_ozhed_v_SMO: real;

file_: file of real;

sfilename: string='';

ind_n: integer;

В программе используются процедуры и функции, которые написаны для удобства работы и понимания программы:

procedureTForm1. Button1Click (Sender: TObject) - процедура добавляющая в систему потоки входных заявок с соответствующими свойствами

procedureTForm1. Button3Click (Sender: TObject) - процедура добавляющая в систему аппарата обслуживания - процедура с соответствующими свойствами

procedureTForm1. SpeedButton1Click (Sender: TObject) - процедура, предназначенная для считывания всех заданных пользователем начальных параметров и запуска таймера

procedure tform1. otchet - процедура создания отчета по результатам моделирования

procedure TForm1. Timer1Timer (Sender: TObject) - процедура моделирования

procedureTForm1. N3Click (Sender: TObject) - процедура сохранения установленных параметров системы

procedureTForm1. N2Click (Sender: TObject) - процедура открытия ранее сохраненных параметров системы

procedureTForm1. N4Click (Sender: TObject) - процедура сохранения отчета с результатами моделирования

procedureTForm1. N15Click (Sender: TObject) - процедура временной остановки моделирования

procedure TForm1. N17Click (Sender: TObject) - процедура очистки текстовых полей

procedure TForm1. TabSet1MouseUp (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer) - процедура перерисовки графиков для коек

procedure TForm1. TabSet2MouseUp (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer) - процедура перерисовки графиков для процедур.

Работа всех этих функций и процедур описана в приложении курсового проекта.

5. Руководство пользователя

Исполняемый файл программы, SMO. exe, рекомендуется скопировать в директорию c: \SMO, и создать ярлык программы на рабочем столе.

При запуске программы на несколько секунд появляется окно приветствия изображенное на рисунке 1, после чего оно закрывается и открывается главное окно, состоящее из трех вкладок, первая из них представленное на рисунке 2.

Рисунок 1. Окно приветствия.

Рисунок 2. Главное окно программы, вкладка "начальные параметры СМО".


В верхней половине окна расположены панели для ввода основных параметров работы системы:

Потоков входных заявок

Обслуживающих устройств - процедур

Очередей

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

Рисунок 3. Окно установки свойств потока входных заявок

В данном окне можно установить наименование потока, количество заявок, поступивших за какой - либо промежуток времени, указанный в минутах или часах, и статус заявки, т е простые или приоритетные заявки будет генерировать данный поток.

После добавления необходимого количества обслуживающих устройств - процедур, можно произвести настройку параметров каждого из них. При щелчке мышью на соответствующем имени устройства появляется окно свойств представленное на рисунке 4.


Рисунок 4. Окно установки свойств обслуживающего устройства

В данном окне можно установить наименование, максимальную и минимальную длительность обслуживания заявки в минутах.

При добавлении количества входных потоков заявок автоматически генерируется количество очередей (максимальное их количество 2, для приоритетных и обычных заявок). Для каждой очереди можно произвести настройку параметров. При щелчке мышью на соответствующем имени потока появляется окно свойств представленное на рисунке 5.

Рисунок 5. Окно установки свойств очереди


В данном окне можно установить наименование и максимальную длину очереди.

В нижней половине окна можно настроить:

время моделирования (в годах, неделя, часах или минутах)

время пребывания заявки в системе (в минутах или часах), по истеканию которого заявка покидает систему, не зависимо от того, где она в данный момент находилась

количество койко-мест

рабочие часу (установка которых требуется, когда время моделирования измеряется в неделях или годах), если данные параметры не были установлены, то при необходимости программа их запросит

Также в нижнем левом углу представлено текстовое поле в котором отображается текущее время моделирования.

По нажатию на кнопку "начать моделирование", из текстовых полей считываются все введенные параметра и процесс моделирования начинается.

По нажатию на кнопку "остановить", процесс моделирования временно останавливается.

После начала моделирования на вкладке "Статистика" (Рисунок 6), отображаются данные по текущему состоянию системы.


Рисунок 6. Вкладка "Статистика"

В нижней части окна находится область, характеризующая в процентах время, прошедшее с момента начала моделирования. Графики по койкам и процедурам соответственно отражают информацию по: