Программа выполнения работы

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

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

Провести вычислительные эксперименты с моделью.

Ход работы

Смоделируем СМО событийным методом

Код программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Threading;

 

namespace зуевлаб1_V2._0

{

public class Qsystem

{

public List<IOnTickable> ObjsTick { get; private set; }

public List<EndNode> ObjsEnd { get; private set; }

public int ClientsCount { get; set; }

public float dt { get; set; }

public float T { get; set; }

public bool IsEnd

{

get

{

int sum = 0;

foreach (var item in ObjsEnd)

{

sum += item.Count;

}

return sum == ClientsCount;

}

}

public Font font = new Font(FontFamily.GenericSansSerif,6,FontStyle.Regular);

 

public Qsystem()

{

this.ObjsTick = new List<IOnTickable>();

this.ObjsEnd = new List<EndNode>();

}

public void Add(IOnTickable o)

{

((DrawingObj)o).Owner = this;

this.ObjsTick.Add(o);

}

public void Add(EndNode o)

{

((DrawingObj)o).Owner = this;

this.ObjsEnd.Add(o);

}

 

public void PreStart()

{

foreach (var item in this.ObjsTick)

{

Source s = item as Source;

if (s != null)

{

this.ClientsCount += s.Count;

}

}

}

 

public void StartEvent()

{

PreStart();

while (!IsEnd)

{

StepEvent();

}

}

 

public void StepEvent()

{

this.ObjsTick.Sort((a, b) =>

{

if (a.GetEventTime == b.GetEventTime) return 0;

if (a.GetEventTime > b.GetEventTime) return 1;

return -1;

});

if (this.ObjsTick[0].IsWork)

{

T = this.ObjsTick[0].GetEventTime;

this.ObjsTick[0].OnTick();

}

}

 

public IEnumerable<object> GetEnumerator()

{

foreach (var item in this.ObjsTick)

{

yield return item;

}

foreach (var item in this.ObjsEnd)

{

yield return item;

}

}

 

public void Draw(Graphics g)

{

foreach (DrawingObj item in this.GetEnumerator())

{

item.Draw(g);

}

}

}

}

Результаты работы программы

 

 

 

Лабораторная работа №3

Изучение элементов системы моделирования QPSS

На моделях Q-схем

Цель работы: отработка навыков разработки программных моделей дискретных процессов на языке имитационного моделирования GPSS, экспериментальное исследование систем в ходе статистических вычислительных экспериментов с моделью.

Программные средства:операционная система MS Windows XP/7, система моделирования GPSS World for Windows (студенческая версия) от Minuteman Software.

Код программы на GPSS:

CHANEL STORAGE 2

GENERATE (exponential(1,0,2.0))

QUEUE BUF1

ENTER CHANEL

DEPART BUF1

ADVANCE (normal(2,3.5,0.8))

LEAVE CHANEL

 

TRANSFER 0.7,MMM30,MMM70

MMM30 QUEUE BUF2

SEIZE HDD

DEPART BUF2

ADVANCE 0.5,0.3

RELEASE HDD

MMM70 TERMINATE 1

 

Вывод результатов для 1000 сообщений

 

 

GPSS World Simulation Report - 12312Untitled.9.1

 

 

Thursday, May 05, 2011 14:26:29

 

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 1989.787 13 1 1

 

 

NAME VALUE

BUF1 10001.000

BUF2 10002.000

CHANEL 10000.000

HDD 10003.000

MMM30 8.000

MMM70 13.000

 

 

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 1014 0 0

2 QUEUE 1014 12 0

3 ENTER 1002 0 0

4 DEPART 1002 0 0

5 ADVANCE 1002 2 0

6 LEAVE 1000 0 0

7 TRANSFER 1000 0 0

MMM30 8 QUEUE 318 0 0

9 SEIZE 318 0 0

10 DEPART 318 0 0

11 ADVANCE 318 0 0

12 RELEASE 318 0 0

MMM70 13 TERMINATE 1000 0 0

 

 

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

HDD 318 0.080 0.499 1 0 0 0 0 0

 

 

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BUF1 21 12 1014 187 2.958 5.805 7.118 0

BUF2 1 0 318 307 0.002 0.010 0.282 0

 

 

STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY

CHANEL 2 0 0 2 1002 1 1.751 0.876 0 12

 

 

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

1015 0 1991.776 1015 0 1

1001 0 1992.227 1001 5 6

1002 0 1992.492 1002 5 6

 

Лабораторная работа № 4