Моделирование системы массового обслуживания

Автор: Пользователь скрыл имя, 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 файл

Моделирование мое.docx

— 147.74 Кб (Скачать)


Содержание

 

Введение …………………………………………………………………………..3

1. Постановка  задачи………………………………………………..…………….4

2. Выявление  основных особенностей системы…………………….…..............5

3. Алгоритм имитационной модели…………………………………….............8

4. Программа на языке высокого уровня Delphi…………………….…………9

5. Программа в среде имитационного моделирования GPSS World...……….15

6. Планирование эксперимента………………………………………………....17

Заключение……………………………………………………………………….23

Список  литературы………………………………………………………...…….24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Введение

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

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

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

 

 

 

 

 

 

1. Постановка задачи

 

Целью данной курсовой работы является создание математической модели и исследование следующего процесса:

Информационно-поисковая  библиографическая система построена  на базе двух ПК и имеет один терминал ля ввода и вывода информации. Первая ПК обеспечивает поиск литературы по научно-техническим проблемам (вероятность  обращения к ней 0,7), а вторая –  по медицинским (вероятность обращения  к ней 0,3). Пользователи обращаются к  услугам системы каждые 5±2 мин. Если в очереди к терминалу ожидает 10 пользователей, то вновь прибывшие  пользователи получают отказ в обслуживании. Поиск информации на первой ПК продолжается 6±4 мин., а на второй 3±1 мин. Для установления связи с нужной ПК и передачи текста запроса пользователи тратят 2±1 мин. Вывод результатов поиска происходит за 1 мин.

Смоделировать процесс работы системы за 8 ч. Определить среднюю и максимальную длину  очереди к терминалу, а также  коэффициенты загрузки технических  средств системы.

Реализация  математической модели в данной курсовой работе будет проведена с помощью  языка высокого уровня – Delphi, дополнительные расчеты сделаны с помощью GPSS.

 

 

 

 

 

 

 

 

 

2. Выявление основных особенностей процесса

 

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

 

  


                                  y



Рисунок 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 – Граф состояний

 

 

 

 

 

 

 

 

 

 

 

 

3. Создание алгоритма имитационного моделирования.

При имитационном моделировании реализующий модель алгоритм воспроизводит процесс функционирования системы во времени. Имитируются элементарные явления, составляющие процесс, с сохранением их логической структуры и последовательности протекания во времени.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 4 – Схема алгоритма имитационной модели

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,maxqueue: integer;

 

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:=IntToStr(0);

  Form1.Label8.Caption:=IntToStr(0);

  Form1.Label12.Caption:=IntToStr(0);

  Form1.Label14.Caption:=IntToStr(0);

  Form1.Label16.Caption:=IntToStr(0);

  Form1.Label18.Caption:=IntToStr(0);

  Form1.Label20.Caption:=IntToStr(0);

  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+connectionend=currenttime)

    then

      begin

      if (random(100)<70)

        then

          begin

          techpcstate:=1;

          techpcprocessstart:=currenttime;

          techpcprocessend:=random(9)+2;

          end

        else

          begin

          medpcstate:=1;

          medpcprocessstart:=currenttime;

          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+techpcprocessend=currenttime)

    then

      begin

      techpcstate:=2;

      techpcstartout:=currenttime;

      end;

end;

procedure medpcidle(Sender: TObject);

begin

 

end;

procedure medpcbusy(Sender: TObject);

begin

  if (medpcprocessstart+medpcprocessend=currenttime)

    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:=IntToStr(totalconnected);

  Form1.Label8.Caption:=IntToStr(processedbytechpc);

  Form1.Label12.Caption:=IntToStr(processedbymedpc);

  Form1.Label14.Caption:=IntToStr(currenttime);

  Form1.Label16.Caption:=IntToStr(queue);

  Form1.Label18.Caption:=IntToStr(totalarrived);

  Form1.Label20.Caption:=IntToStr(totallost);

  Form1.Label22.Caption:='0.'+IntToStr(trunc(1000*terminalworktime/currenttime+100));

  Form1.Label24.Caption:='0.'+IntToStr(trunc(1000*medpcworktime/currenttime));

  Form1.Label26.Caption:='0.'+IntToStr(trunc(1000*techpcworktime/currenttime));

  if ((currenttime=480))// and (terminalstate=0) and (techpcstate=0) and (medpcstate=0))

    then

      begin

      form1.timer1.enabled:=false;

      exit;

      end;

  if (lastarrival+nextarrival=currenttime)

    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:='Бездействие'; terminalidle(Sender); end;

    1: begin form1.label2.Caption:='Получение доступа'; inc(terminalworktime); terminalbusy(Sender); end;

    2: begin form1.label2.Caption:='Ожидание ответа'; inc(terminalworktime); terminalwait(Sender); end;

    end;

  case techpcstate of

    0: begin form1.label6.Caption:='Бездействие'; techpcidle(Sender); end;

    1: begin form1.label6.Caption:='Обработка запроса'; inc(techpcworktime); techpcbusy(Sender); end;

    2: begin form1.label6.Caption:='Вывод ответа'; inc(techpcworktime); techpcout(Sender); end;

    end;

  case medpcstate of

    0: begin form1.label10.Caption:='Бездействие'; medpcidle(Sender); end;

    1: begin form1.label10.Caption:='Обработка запроса'; inc(medpcworktime); medpcbusy(Sender); end;

    2: begin form1.label10.Caption:='Вывод ответа'; inc(medpcworktime); medpcout(Sender); end;

    end;

    avequeue:=avequeue+queue;

    label28.Caption:=floattostr(avequeue/currenttime);

    if queue>maxqueue then begin maxqueue:=queue;

                           label30.Caption:=inttostr(maxqueue);

    end;

  if (totalconnected <>0) then Form1.Label34.Caption:=floatToStr(terminalworktime/totalconnected);

  if (processedbytechpc <>0) then Form1.Label35.Caption:=floatToStr(techpcworktime/processedbytechpc);

  if (processedbymedpc <>0) then Form1.Label36.Caption:=floatToStr((medpcworktime/processedbymedpc)-1.50);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

timer1.Interval:=1;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  reset(Sender);

end;

 

end.

 

 

Пример работы и внешний  вид программы

 

 

Рисунок 5 – Главное окно программы

 

5. Среда имитационного моделирования  GPSS World

Кроме этого, используя 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      ;вывод полученной информации на печать 

Информация о работе Моделирование системы массового обслуживания