Автор: Пользователь скрыл имя, 12 Февраля 2013 в 14:58, курсовая работа
Целью данной курсовой работы является создание математической модели и исследование следующего процесса:
Информационно-поисковая библиографическая система построена на базе двух ПК и имеет один терминал ля ввода и вывода информации. Первая ПК обеспечивает поиск литературы по научно-техническим проблемам (вероятность обращения к ней 0,7), а вторая – по медицинским (вероятность обращения к ней 0,3). Пользователи обращаются к услугам системы каждые 5±2 мин. Если в очереди к терминалу ожидает 10 пользователей, то вновь прибывшие пользователи получают отказ в обслуживании. Поиск информации на первой ПК продолжается 6±4 мин., а на второй 3±1 мин. Для установления связи с нужной ПК и передачи текста запроса пользователи тратят 2±1 мин. Вывод результатов поиска происходит за 1 мин.
Введение
1. Постановка задачи
2. Выявление основных особенностей системы
3. Алгоритм имитационной модели
4. Программа на языке высокого уровня Delphi
5. Программа в среде имитационного моделирования GPSS World
6. Планирование эксперимента
Заключение
Список литературы
Введение
…………………………………………………………………………..
1. Постановка
задачи………………………………………………..…………
2. Выявление
основных особенностей системы…
3. Алгоритм имитационной
модели……………………………………..........
4. Программа на языке высокого уровня Delphi…………………….…………9
5. Программа в среде имитационного моделирования GPSS World...……….15
6. Планирование
эксперимента………………………………………………
Заключение……………………………………………………
Список
литературы……………………………………………………
Моделирование
- наиболее мощный универсальный метод
исследования и оценки эффективности
систем, поведение которых зависит
от воздействия случайных
Применение
универсальных языков программирования
при реализации имитационных моделей
позволяет исследователю
Актуальность подобных задач в нашем мире не вызывает сомнения, поскольку благодаря предварительно смоделированной системе удается гораздо быстрее и дешевле выяснить наиболее сложные и случайные моменты работы реальной системы, вычислить ее временные и иные характеристики.
Целью данной курсовой работы является создание математической модели и исследование следующего процесса:
Информационно-поисковая
библиографическая система
Смоделировать процесс работы системы за 8 ч. Определить среднюю и максимальную длину очереди к терминалу, а также коэффициенты загрузки технических средств системы.
Реализация математической модели в данной курсовой работе будет проведена с помощью языка высокого уровня – Delphi, дополнительные расчеты сделаны с помощью GPSS.
Для описания подобных процессов, прежде всего, используют структурные схемы, которые отражают физические составляющие элементы системы для лучшего понимания системы. Приведем структурную схему (рис 1).
Рисунок 1 – Структурная схема
На структурной схеме (рисунок 1) изображены следующие элементы моделируемой системы:
- пользователи;
- терминал,
используемый для ввода и
- первая
ЭВМ, обеспечивающая поиск
- вторая
ЭВМ, обеспечивающая поиск
Пользователи обращаются к услугам системы каждые 5±2 мин. Если очередь к терминалу превышает 10 человек, то пришедший пользователь получает отказ. Если пользователю необходима информация по научно-техническим вопросам (что возможно произойдет с вероятностью 0.7), то данную заявку обрабатывает первая ЭВМ в течении 6±4 мин. Если по медицинским – то вторая в течении 3±2 мин. Полученные результаты выводятся на печать.
Для описания нашей СМО, как непрерывно-стохастических процессов, используют Q-схемы, отражающие элементы и структуру СМО. В соответствии с построенной концептуальной моделью и символикой Q-схем структурную схему данной СМО (рис.1) можно представить в виде, показанном на рис.2,
Рисунок 2 – Q-схема
Источник И имитирует процесс поступления заданий, которые поступают через 5±2 минут. Канал К1 – время обращения пользователей к терминалу. Канал К2 - работа первой ЭВМ в течении 6±4 минут, канал К3 – второй ЭВМ в течении 3±1 минуты. Накопитель Н имеет емкость 10. Клапан регулирует процесс поступления заявок в накопитель. Если накопитель Н заполнен, то заявки отправляются в отказ. На выходе получаем обслуженные заявки.
Кроме этого для удобства в дальнейшей разработке программы, имитирующей данный процесс, необходимо построить граф состояний исследуемого процесса. Данная схема приведена на рисунке 3.
Состояние системы:
S0 – начальное
S1 – прием запроса, очереди нет
S2 – обработка запроса, очереди нет
S3 – прием запроса, очередь H < 10
S4 – прием очереди, обработка запроса, потери при H > 10
Рисунок 3 – Граф состояний
При имитационном моделировании реализующий модель алгоритм воспроизводит процесс функционирования системы во времени. Имитируются элементарные явления, составляющие процесс, с сохранением их логической структуры и последовательности протекания во времени.
Рисунок 4 – Схема алгоритма имитационной модели
Ниже представлен внешний вид и листинг программы, выполненной в среде программирования Delphi. Каждая процедура и все параметры имеют краткое описание, заключенное в комментариях.
Листинг программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, XPMan;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
GroupBox5: TGroupBox;
Label21: TLabel;
Label23: TLabel;
Label24: TLabel;
Label22: TLabel;
Label25: TLabel;
Label26: TLabel;
XPManifest1: TXPManifest;
Label27: TLabel;
Label28: TLabel;
Label29: TLabel;
Label30: TLabel;
Button2: TButton;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i, currenttime, queue, lastarrival, nextarrival, totalarrived, totallost,
processedbymedpc, processedbytechpc, connectionstart, connectionend, totalconnected,
medpcprocessstart, medpcprocessend, techpcprocessstart, techpcprocessend,
terminalstate, medpcstate, techpcstate, techpcstartout, medpcstartout,
techpcworktime, medpcworktime, terminalworktime,avequeue,
implementation
{$R *.dfm}
procedure reset(Sender: TObject); forward;
procedure terminalidle(Sender: TObject); forward;
procedure terminalbusy(Sender: TObject); forward;
procedure techpcidle(Sender: TObject); forward;
procedure techpcbusy(Sender: TObject); forward;
procedure medpcidle(Sender: TObject); forward;
procedure medpcbusy(Sender: TObject); forward;
procedure techpcout(Sender: TObject); forward;
procedure medpcout(Sender: TObject); forward;
procedure reset(Sender: TObject);
begin
randomize;
Form1.Label4.Caption:=
Form1.Label8.Caption:=
Form1.Label12.Caption:=
Form1.Label14.Caption:=
Form1.Label16.Caption:=
Form1.Label18.Caption:=
Form1.Label20.Caption:=
Form1.Label2.Caption:='
Form1.Label6.Caption:='
Form1.Label10.Caption:='
currenttime:=0;
queue:=0;
lastarrival:=0;
nextarrival:=random(5)+3;
totalarrived:=0;
totallost:=0;
processedbymedpc:=0;
processedbytechpc:=0;
connectionstart:=0;
connectionend:=0;
totalconnected:=0;
medpcprocessstart:=0;
medpcprocessend:=0;
techpcprocessstart:=0;
techpcprocessend:=0;
terminalstate:=0;
medpcstate:=0;
techpcstate:=0;
techpcstartout:=0;
medpcstartout:=0;
techpcworktime:=0;
medpcworktime:=0;
terminalworktime:=0;
avequeue:=0;
maxqueue:=0;
form1.timer1.interval:=100;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
reset(Sender);
timer1.Enabled:=true;
end;
procedure terminalidle(Sender: TObject);
begin
if (queue=0) then exit;
dec(queue);
connectionstart:=currenttime;
connectionend:=random(3)+1;
terminalstate:=1;
end;
procedure terminalbusy(Sender: TObject);
begin
if (connectionstart+
then
begin
if (random(100)<70)
then
begin
techpcstate:=1;
techpcprocessstart:=
techpcprocessend:=random(9)+2;
end
else
begin
medpcstate:=1;
medpcprocessstart:=
medpcprocessend:=random(3)+2;
end;
inc(totalconnected);
terminalstate:=2;
end;
end;
procedure terminalwait(Sender: TObject);
begin
end;
procedure techpcidle(Sender: TObject);
begin
end;
procedure techpcbusy(Sender: TObject);
begin
if (techpcprocessstart+
then
begin
techpcstate:=2;
techpcstartout:=currenttime;
end;
end;
procedure medpcidle(Sender: TObject);
begin
end;
procedure medpcbusy(Sender: TObject);
begin
if (medpcprocessstart+
then
begin
medpcstate:=2;
medpcstartout:=currenttime;
end;
end;
procedure techpcout(Sender: TObject);
begin
if (techpcstartout+1=currenttime)
then
begin
techpcstate:=0;
terminalstate:=0;
inc(processedbytechpc);
end;
end;
procedure medpcout(Sender: TObject);
begin
if (medpcstartout+1=currenttime)
then
begin
medpcstate:=0;
terminalstate:=0;
inc(processedbymedpc);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(currenttime);
Form1.Label4.Caption:=
Form1.Label8.Caption:=
Form1.Label12.Caption:=
Form1.Label14.Caption:=
Form1.Label16.Caption:=
Form1.Label18.Caption:=
Form1.Label20.Caption:=
Form1.Label22.Caption:='0.'+
Form1.Label24.Caption:='0.'+
Form1.Label26.Caption:='0.'+
if ((currenttime=480))// and (terminalstate=0) and (techpcstate=0) and (medpcstate=0))
then
begin
form1.timer1.enabled:=false;
exit;
end;
if (lastarrival+nextarrival=
then
begin
lastarrival:=currenttime;
nextarrival:=random(5)+3;
inc(totalarrived);
if (queue<10)
then inc(queue)
else inc(totallost);
end;
case terminalstate of
0: begin form1.label2.Caption:='
1: begin form1.label2.Caption:='
2: begin form1.label2.Caption:='
end;
case techpcstate of
0: begin form1.label6.Caption:='
1: begin form1.label6.Caption:='
2: begin form1.label6.Caption:='Вывод ответа'; inc(techpcworktime); techpcout(Sender); end;
end;
case medpcstate of
0: begin form1.label10.Caption:='
1: begin form1.label10.Caption:='
2: begin form1.label10.Caption:='Вывод ответа'; inc(medpcworktime); medpcout(Sender); end;
end;
avequeue:=avequeue+queue;
label28.Caption:=floattostr(
if queue>maxqueue then begin maxqueue:=queue;
label30.Caption:=inttostr(
end;
if (totalconnected <>0) then Form1.Label34.Caption:=
if (processedbytechpc <>0) then Form1.Label35.Caption:=
if (processedbymedpc <>0) then Form1.Label36.Caption:=
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Interval:=1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
reset(Sender);
end;
end.
Пример работы и внешний вид программы
Рисунок 5 – Главное окно программы
5. Среда имитационного
Кроме этого, используя gpss, можно смоделировать данный процесс при условии, что емкость очереди ограничена одним сообщением.
Листинг программы:
TOENTER STORAGE 10 ;терминал для вывода информации
GENERATE 5,2 ;пользователь обращается к услугам каждые 5+-2 минуты
GATE SNF TOENTER,BYE ;если в очереди к терминалу ожидают 10 пользователей, то вновь прибывшие получают отказ
QUEUE QTOENTER ;организация очереди, увеличение на единицу
ENTER TOENTER ;вход в накопитель TOENTER
SEIZE TER ;занятие устройства TER
DEPART QTOENTER ;уменьшение очереди на единицу
ADVANCE 2,1 ;соединение с информационными компьютерами
LEAVE TOENTER ;выход из накопителя
TRANSFER 0.7,MED,TEHN ;вероятность обращения к ПК1 - 0.7
TEHN SEIZE IBM1 ;занятие устройства IBM1
ADVANCE 6,4 ;обработка информации на ПК1
ADVANCE 1,0 ;вывод полученной информации на печать
Информация о работе Моделирование системы массового обслуживания