Моделирование системы передачи данных

Построение концептуальной модели, ее формализация. Алгоритмизация и программирование модели. Описание структуры программы. Разработка алгоритмов и блок-схем событийных модулей. Планирование вычислительного эксперимента. Анализ результатов моделирования.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 24.04.2020
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Моделирование системы передачи данных

Введение

моделирование программирование алгоритм

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

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

- изучение моделируемой системы;

- формальное описание имитационной модели системы;

- разработка необходимых алгоритмов;

- программная реализация модели системы;

- проведение ряда необходимых экспериментов;

- анализ результатов моделирования и разработка рекомендаций.

Для реализации поставленной задачи используется система имитационного моделирования SMPL, встраиваемая в язык программирования высокого уровня ObjectPascal. SMPL представляет собой дискретно-событийную систему, в которой имеются все необходимые компоненты для моделирования системы, исследуемой в этой курсовой работе.

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

1. Формализация предметной области и постановка задачи моделирования

1.1 Общая постановка задачи

В системе передачи данных производится обмен пакетами между пунктами А и В по дуплексному каналу связи (возможна одновременная передача информации в двух направлениях: с каждого направления по одному пакету). Пакеты поступают в пункты системы от абонентов двух категорий - первой и второй, потоки пакетов - пуассоновские с параметрами 1 (1/с) и 2 (1/с), соответственно. Передача пакета занимает Т1 с. В пунктах есть буферные регистры, которые могут одновременно хранить не более двух пакетов, не считая передаваемого пакета. В случае прихода пакета в момент занятости регистров пунктам системы предоставляется выход на вспомогательную полудуплексную линию связи (в каждый момент времени может производиться передача информации только в одном направлении), которая осуществляет передачу пакетов за Т2с. В случае занятости вспомогательной линии пакет получает отказ и уничтожается.

Прибыль от передачи пакета первой категории - S1 единиц стоимости, пакета второй категории - S2единиц стоимости. Штраф за отказ передачи пакета первой категории - S3 единиц стоимости, пакета второй категории - S4 единиц стоимости. Аренда вспомогательной линии связи составляет S5 единиц стоимости за одну секунду.

Уменьшение на k с среднего времени передачи пакета в дуплексном канале требует kS6 единиц стоимости на каждый пакет.

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

Определить:

- наличие и продолжительность переходного режима функционирования;

- распределение случайной величины «прибыль системы за 1 час работы»;

- дисциплину обслуживания и скорость передачи пакетов, при которых достигается максимальная экономическая эффективность.

Варианты заданий приведены в Таблице 1.

Таблица 1 - Варианты заданий

Вариант

Параметры

л1

л2

T1

T2

S1

S2

S3

S4

S5

S6

1

0.05

0.04

195

103

20

60

5

40

0.05

0.5

2

0.03

0.05

3010

205

10

40

5

30

0.25

0.5

3

0.04

0.02

257

184

40

70

10

60

0.3

0.6

4

0.02

0.03

507

306

30

90

20

70

0.4

0.5

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

1.2 Описание исследуемой системы

Для описания моделируемой системы удобно воспользоваться графической нотацией Q-схем. Эти схемы является моделями непрерывно-стохастических систем, и представляют собой класс математических схем, разработанных в теории массового обслуживания и различных приложениях для формализации процессов функционирования систем, которые по своей сути являются процессами обслуживания.

Изобразим процесс функционирования системы передачи данных в виду Q-схемы, представленной на Рисунке 1.

Рисунок 1- Q-схема системы передачи данных

Дуплексный канал передачи между пунктами A был B представлен как два канала, передающих пакеты в одну сторону. Канал передачи из пункта A в пункт B был обозначен на схеме как устройство A, а канал, передающий из B в А, соответственно, обозначен как устройство B. Запасной полудуплексный канал представлен в виде устройства C.

К дуплексному каналу с обоих сторон поступают пакеты данных от клиентов двух типов. С интенсивностью, соответственно, л1 и л2 пакетов в секунду. У дуплексных каналов есть регистры, размером в 2, в которые можно поместить пакеты, пока канал передачи занят. Эти регистры изображены в виде очередей AREA1 и AREA2. У полудуплексного канала регистра нет, это означает, что пакеты, направленные к этому устройству, будут уничтожаться в случае его занятости.

Передача по дуплексному каналу (устройства A и B) занимает T1 количество секунд, а через полудуплексный запасной канал (устройство C) T2 секунд.

1.3 Построение концептуальной модели

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

Рассмотрим параметры и характеристики функционирования моделируемой системы. Заявки двух типов поступают в пуассоновском потоке с интенсивностью л1 и л2 в секунду. Соответственно, прежде чем работать с этими характеристиками, их нужно преобразовать в среднее значение времени поступления заявок, т.к. поток является пуассоновским. Время передачи по каналам зависит от параметров T1 и T2.

Главный критерий эффективности работы системы, чистая прибыль, зависит от множества параметров и факторов. Во-первых, от передачи пакетов от абонентов первой и второй категории накапливается прибыль в размере S1 и S2. От потери пакетов накладывается штраф, размером S3 и S4.Помимо прямых штрафов, из прибыли вычитается стоимость аренды запасного канала, которая составляет S5 единиц стоимости за одну секунду передачи через этот канал.

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

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

1.4Формализация модели

Представим исследуемую систему передачи данных в виде граф-схемы событий (Рисунок 2).

Рисунок 2 - Граф-схема событий

На граф-схеме, представленной на рисунке 2, узлы обозначают следующие события:

1 - Поступление пакета любой категории к каналу А;

2 - Переход на обслуживание каналом А;

3 - Завершение передачи на канале А;

4 - Поступление пакета любой категории на канал B;

5 - Переход на обслуживание каналом B;

6 - Завершение передачи на канале B;

7 - Переход на обслуживание каналом С;

8 - Завершение обслуживания на канале С;

События 1 и 4, поступление пакета любой категории, планируют поступление в систему следующих пакетов этой же категории и далее, при выполнении определенных условий, пакет направится на обслуживание либо к дуплексным каналам A и B или к запасному полудуплексному каналу C.

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

2. Алгоритмизация и программирование модели

2.1 Описание общей структуры программы

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

Таблица 2 - Список констант событий в программе

Название события

Название константы

Значение

Приход заявки на канал A

GenA

1

Приход заявки на канал B

GenB

2

Окончание передачи на канале A

RelA

3

Окончание передачи на канале B

RelB

4

Окончание передачи на канале C

RelC

5

Окончание моделирования

EndM

6

Функция _Cause( ), выполняющая роль монитора, снимает из списка событий ближайшее, и передает управление соответствующему блоку обработки событий. Все это происходит в цикле, до тех пор, пока не наступит событие окончания моделирования:

repeat

until EVENT= EndM;

Этот основной цикл находится в главной процедуре Model. Помимо основного цикла событий, в начале этой процедуры определяются основные компоненты моделируемой системы (очереди и устройства), обнуляется модельное время и планируются первые события.

Определение устройств:

A:=_Device('DUPLEX_A');

B:=_Device('DUPLEX_B');

C:=_Device('HALF-DUPLEX');

Определение очередей:

Q1:=_Queue('AREA1');

Q2:=_Queue('AREA2');

Обнуление модельного времени и планирование событий прихода на канал A пакетов первого и второго типов:

_TIME:=0;

//начальныесобытия

transact.Arb_Number:=1;

transact.Number_group_res:=1; // категория 1

_Schedl(GenA, NegExp(l1),transact); //кканалуА

transact.Arb_Number:=3;

transact.Number_group_res:=2; // категория 2

_Schedl(GenA, NegExp(l2),transact); //кканалуА

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

Например, стоимостные параметры S1,S2…S6 непосредственно (не считая преобразования типов) считываются в переменные из полей ввода:

S1:=StrToFloat(edt10.Text);

S2:=StrToFloat(edt11.Text);

S6:=StrToFloat(edt15.Text);

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

l1:=toAV(StrToFloat(edtl1.Text));

l2:=toAV(StrToFloat(edtl2.Text));

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

Например, для подсчета количества переданных пакетов первой и второй группы объявлены переменные k1o и k2o соответственно. В начале моделирования эти показатели обнуляются, а в момент окончания передачи очередного пакета, один из счетчиков увеличивается (в зависимости от категории пакета):

if transact.Number_group_res=1 then Inc(k1o) else Inc(k2o);

По окончании моделирования, эти счетчики используются для вычисления выручки за передачу пакетов:

edt7.Text:=FloatToStr(k1o*S1);

edt8.Text:=FloatToStr(k2o*S2);

p1:=k1o*S1+k2o*S2; //прибыль за передачу всех пакетов

В итоге, чистая прибыль (p) рассчитывается как разница между прибылью за передачу всех пакетов (p1), штрафом за потерянные пакеты (p2), стоимостью аренды запасного канала (ut) и стоимостью снижения времени передачи в дуплексном канале (ud):

p:=p1-p2-ut-ud;

2.2 Разработка алгоритмов и блок-схем событийных модулей

Как видно по граф-схеме событий моделируемой системы, действия системы со стороны канала A аналогичны действиям со стороны канала B, так что будет разумно рассмотреть общий алгоритм, обозначив каналы буквой X, а соответствующие очереди к ним - Y.

После поступления заявки (пакета) любой категории на канал X, невозможно сразу определить, куда его направить - необходимо провести ряд проверок. Поэтому, события 1,2,4,5 и 7 логично объединить в один блок обработки событий «Поступление пакета любой категории на канал X».

В первую очередь, при поступлении заявки на канал X, проверяется, занят ли он передачей другого пакета. В случае, если этот канал свободен, заявка занимает его, и планируется событие «Завершение обслуживания на канале X».

Если же канал X занят, необходимо проверить длину его очереди Y. Очередь не может вмещать в себя больше двух заявок. Поэтому, если длина очереди меньше двух, то пакет становится в конец очереди.

В случае, когда вся очередь занята, заявка направляется к запасному каналу C. Осуществляется проверка этого канала на занятость. Если и этот канал занят, то заявка получает отказ в передаче и уничтожается (у этого канала нет очереди), что влечет за собой денежный штраф в размере, зависящем от категории пакета.

Если резервный канал C был свободен, то пакет занимает его, и планируется событие «Завершение обслуживания на канале С».

В конце, после всех условных действий, планируется поступление следующего пакета на этот канал.

Таким образом, алгоритм события «Поступление заявки» можно представить в виде блок-схемы на рисунке 3.

Рисунок 3- Блок-схема события «Поступление пакета любой категории на канал X»

События 3 и 6 так же целесообразно представить в виде одного алгоритма «Завершение передачи на канале X». При его возникновении первым делом освобождается канал X. Затем, проверяется наличие очереди Y к этому каналу. Если в очереди есть пакеты, то с вершины снимается заявка, занимается канал X и планируется окончание передачи. Блок-схема алгоритма представлена на рисунке 4.

Рисунок 4 - Блок-схема события «Завершение передачи на канале X»

Блок-схема 8 «Завершение обслуживания на канале С» представлена на рисунке 5 и представляет последовательность из одного действия - освобождения канала С. У этого канала нет регистров (очередей), так что ничего проверять не требуется.

Рисунок 5- Блок-схема события «Завершение передачи на канале С»

2.3 Инструкция по использованию программы

Разработанная программа имеет следующий интерфейс:

Рисунок 6-Интерфейс программы

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

Рисунок 7-Переключатель вариантов

Так же, для удобства, по умолчанию во всех полях стоят значения, соответствующие первому варианту. По простому нажатию на кнопку «Запустить моделирование» модель отработает один раз и выдаст результаты одного прогона. Результаты моделирования выводятся в текстовом поле и на панели снизу.

Программа позволяет автоматически совершать заданное количество прогонов для нахождения среднего значения прибыли, производить сглаживания Велча и рассчитывать распределение случайной величины. Для этого необходимо поставить флажки в полях «Процедура Велча» и/или «Распределение», задать необходимое количество прогонов и окно сглаживания. В этом случае, после нажатия на клавишу «Запустить моделирование» система совершит нужно количество повторных прогонов и выведет средний результат, результат сглаживания Велча и распределение в соответствующих полях. Используя значения из этих полей, легко построить необходимые графики.

3. Проведение вычислительных экспериментов и анализ результатов

3.1 Проведение предварительных прогонов при заданных параметрах моделирования. Применение процедуры Велча для определения режима функционирования

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

Приведем выходные характеристики результаты моделирования длительностью 10 часов по четырем вариантам на рисунках 8-11.

Рисунок 8 - Характеристики первого варианта

Рисунок 9 - Характеристики второго варианта

Рисунок 10 - Характеристики третьего варианта

Рисунок 11 - Характеристики четвертого варианта

Так же, по условию задачи, необходимо составить график распределения случайной величины «прибыль системы за 1 час работы». Распределение приведено на рисунках 12-15.

Рисунок 12 - Распределение (первый вариант)

Рисунок 13 - Распределение (второй вариант)

Рисунок 14 - Распределение (третий вариант)

Рисунок 15 - Распределение (четвертый вариант)

Как видно по рисункам, прибыль системы за один час работы имеет распределение, близкое к нормальному.

Для определения режима функционирования и длительности переходного режима необходимо воспользоваться процедурой Велча, которая позволяет сгладить результаты для упрощения анализа. В результате экспериментов, было обнаружено, что система быстро переходит в стационарный режим, что видно на графике Велча по результатам моделирования 10 минут работы системы (рисунок 16). Для удобства, все четыре варианта изображены на одном графике. Как видно, для всех дисциплин функционирования длительность переходного режима составляет 3 - 3,5 минуты.

Рисунок 16 - График Велча

3.2 Планирование вычислительного эксперимента. Построение матрицы плана эксперимента, проведение расчетов

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

Таблица 3 - План экспериментов над вариантами

Эксперимент

Параметры

л1

л2

T1

T2

S1

S2

S3

S4

S5

S6

1

0.05

0.04

195

103

20

60

5

40

0.05

0.5

2

0.03

0.05

3010

205

10

40

5

30

0.25

0.5

3

0.04

0.02

257

184

40

70

10

60

0.3

0.6

4

0.02

0.03

507

306

30

90

20

70

0.4

0.5

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

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

Таблица 4 - План экспериментов с параметром k

Вариант

Размер k

1

0,2,5,10

2

0,2,5,10

3

0,2,5,10

4

0,2,5,10

3.3 Анализ результатов моделирования

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

Таблица 5 - Прибыль системы

Вариант\Время

1 час

10 часов

Вариант 1

16492,284

167046,5015

Вариант 2

5073,005

51449,5575

Вариант 3

15090,841

153286,586

Вариант 4

6176,168

65376,96

На основании этих данных можем заявить, что система получает наибольшую прибыль при первой дисциплине обслуживания, время передачи пакетов в которой составляет 19±5 с через дуплексный и 10±3 с через полудуплексный каналы. Этот режим функционирования наиболее эффективен, по сравнению с остальными.

Самым неэффективным оказался второй вариант, время передачи в котором составляло 30±10 с и 20±5 с, что логично. От скорости передачи напрямую зависит количество переданных пакетов.

На скорость передачи пакетов через основной канал можно было повлиять параметром k, который характеризовал, на сколько будет уменьшено время передачи. Это снижение стоило определенных затрат, так что были поставлены эксперименты над системой с целью выявить влияние этого параметра на прибыль. Результаты приведены ниже.

Таблица 6 - Влияние параметра k на прибыль

Вариант\k

0 (без снижения)

2

5

10

Вариант 1

16492,284

16154,2685

15864,311

14980,951

Вариант 2

5073,005

4720,4675

4420,635

3865,7725

Вариант 3

15090,841

14863,899

14389,113

13819,439

Вариант 4

6176,168

6066,41

5912,329

5519,61

Как видно, снижение не дает должного прироста в скорости по сравнении с затратами на это снижение, тем самым являясь совершенно неприбыльным.

Чтобы рассчитать статистические характеристики изучаемой системы (для лучшего варианта), необходимо отбросить прибыль, получаемую в течении первых 3,5 минут, и провести вычисления над остальными значениями, полученными в течении часа. Результат приведем в таблице 7.

Таблица 7 - Статистические характеристики системы

Математическое ожидание

140,2889

Дисперсия

97,21328

Среднеквадратическое отклонение

7,908612

Доверительный интервал

[139,0597; 141,5181]

Заключение

В результате выполнения курсовой работы были успешно решены поставленные задачи:

- изучена моделируемая системы;

- разработаны необходимые алгоритмов;

- данная модель была успешно реализована в системе SMPL.

- проведен ряд необходимых экспериментов;

- проанализированы результаты моделирования и разработаны рекомендаций.

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

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

1) Википедия [Электронный ресурс] // Имитационное моделирование/ США, 2001. URL: https://ru.wikipedia.org/wiki/%C8%EC%E8%F2%E0%F6%E8%EE%ED%ED%EE%E5_%EC%EE%E4%E5%EB%E8%F0%EE%E2%E0%ED%E8%E5(дата обращения: 18.11.2019)

2) Надыров А.И., Беленкова О.А. Моделирование как метод научного познания - Уфа, : УГНТУ, 2016 - 12 стр.

3) Нейлор Т. Машинные имитационные эксперименты с моделями экономических систем. - М.: Мир, 1975. - 500 стр.

4) Савина О.А. Имитационное моделирование экономических систем - Орел,: ОрелГТУ, 2004. - 172 стр.

Приложение

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Spin, Menus, DelpSMPL, ComCtrls, ExtCtrls, XPMan,

Grids,Math;

type

TForm1 = class(TForm)

grp1: TGroupBox;

edtl1: TEdit;

edtl2: TEdit;

lbl1: TLabel;

lbl2: TLabel;

grp2: TGroupBox;

grp3: TGroupBox;

grp4: TGroupBox;

grp5: TGroupBox;

se1: TSpinEdit;

se2: TSpinEdit;

se3: TSpinEdit;

se4: TSpinEdit;

lbl3: TLabel;

lbl4: TLabel;

lbl5: TLabel;

lbl6: TLabel;

lbl7: TLabel;

lbl8: TLabel;

edt10: TEdit;

edt11: TEdit;

edt12: TEdit;

edt13: TEdit;

lbl9: TLabel;

lbl10: TLabel;

mm1: TMainMenu;

NM: TMenuItem;

N11: TMenuItem;

N21: TMenuItem;

N31: TMenuItem;

N41: TMenuItem;

edt14: TEdit;

lbl11: TLabel;

grp6: TGroupBox;

se5: TSpinEdit;

lbl13: TLabel;

edt15: TEdit;

lbl14: TLabel;

mmo1: TMemo;

Button1: TButton;

grp7: TGroupBox;

edt1: TEdit;

edt2: TEdit;

edt3: TEdit;

edt4: TEdit;

edt5: TEdit;

edt6: TEdit;

edt7: TEdit;

edt8: TEdit;

edt9: TEdit;

edt18: TEdit;

edt17: TEdit;

edt16: TEdit;

edt19: TEdit;

edt20: TEdit;

edt21: TEdit;

edt22: TEdit;

edt23: TEdit;

edt24: TEdit;

edt25: TEdit;

edt26: TEdit;

lbl12: TLabel;

lbl15: TLabel;

lbl16: TLabel;

lbl17: TLabel;

lbl18: TLabel;

lbl19: TLabel;

lbl20: TLabel;

lbl21: TLabel;

lbl22: TLabel;

lbl23: TLabel;

lbl24: TLabel;

lbl25: TLabel;

edt27: TEdit;

lbl26: TLabel;

mmo2: TMemo;

edt28: TEdit;

lbl27: TLabel;

chk1: TCheckBox;

edt29: TEdit;

lbl28: TLabel;

mmo3: TMemo;

strngrd1: TStringGrid;

lbl29: TLabel;

lbl30: TLabel;

pb1: TProgressBar;

chk2: TCheckBox;

mmo4: TMemo;

lbl31: TLabel;

strngrd2: TStringGrid;

lbl32: TLabel;

edt30: TEdit;

edt31: TEdit;

lbl33: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N21Click(Sender: TObject);

procedure N31Click(Sender: TObject);

procedure N41Click(Sender: TObject);

procedure chk1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure MODEL;

function toAV(x:Real):Integer;

function useTime(n:string):Integer;

function useCount(n:string):Integer;

procedure GEN(DEV:P_Device; QUE:P_Queue);

procedure Variant;

procedure Results;

procedure Velch;

procedure Raspred;

procedure AveMoney;

end;

const GenA=1;

GenB=2;

RelA=3;

RelB=4;

RelC=5;

EndM=6;

PauseM=7;

var

Form1: TForm1;

f:TextFile;

l1,l2,T1,t12,T2,t22,k,pause,n,m,w,index,progon,lol: Integer;

S1,S2,S3,S4,S5,S6:Real;

k1i,k2i,k1o,k2o,t:LongInt;

p,pold,p1,p2,ut,uc,ud,min,max:Extended;

transact,endingM:Arbeit;

A,B,C:P_Device;

Q1,Q2:P_Queue;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

lbl3.Caption:=#0177;

lbl4.Caption:=#0177;

Variant;

end;

procedure TForm1.Button1Click(Sender: TObject);

var i:Integer;

begin

t:=StrToInt(floattostr(60*strtofloat(edt27.text)));

m:=Strtoint(edt31.text);

pause:=t div m;

l1:=toAV(StrToFloat(edtl1.Text));

l2:=toAV(StrToFloat(edtl2.Text));

T1:=se1.Value-se2.Value;

t12:=se1.Value+se2.Value;

T2:=se3.Value-se4.Value;

t22:=se3.Value+se4.Value;

S1:=StrToFloat(edt10.Text);

S2:=StrToFloat(edt11.Text);

S3:=StrToFloat(edt12.Text);

S4:=StrToFloat(edt13.Text);

S5:=StrToFloat(edt14.Text);

S6:=StrToFloat(edt15.Text);

k:=se5.Value;

AssignFile(f,'report.txt');

if chk1.Checked or chk2.Checked then

begin

n:=strtoint(edt28.text);

w:=strtoint(edt29.text);

end

else

n:=1;

min:=100000000;

max:=-100000000;

strngrd1.RowCount:=n;

strngrd1.ColCount:=m;

strngrd2.RowCount:=n;

index:=1;

pb1.Max:=n;

lol:=0;

for i:=1 to n do

begin

pb1.Position:=i;

pold:=0;

index:=1;

progon:=i;

mmo2.Clear;

_ReInit;

Rewrite(f);

MODEL;

end;

CloseFile(f);

AveMoney;

mmo1.Lines.Clear;

mmo1.Lines.LoadFromFile('report.txt');

mmo3.Clear;

mmo4.Clear;

if chk1.Checked then Velch;

if chk2.Checked then Raspred;

end;

procedure TForm1.GEN(DEV: P_Device; QUE: P_Queue);

begin

if transact.Number_group_res=1 then Inc(k1i) else Inc(k2i);

if _Status(DEV).Arb_Number=0 then

begin

_Reserve(DEV,transact);

if DEV.Name='DUPLEX_A'

then

_Schedl(RelA,IRandom(T1-k,t12-k),transact)

else _Schedl(RelB,IRandom(T1-k,t12-k),transact);

end

else

begin

if _Length(QUE)<2 then

begin

_EnQueue(QUE,transact,0,1);

end

else

if _Status(C).Arb_Number=0 then

begin

_Reserve(C,transact);

_Schedl(RelC,IRandom(T2,t22),transact);

end

end;

end;

procedure TForm1.MODEL;

var EVENT,ASS:word;

an:Integer;

begin

k1i:=0; //firs category in

k2i:=0; //second category in

k1o:=0; //firs category out

k2o:=0; //second category out

_TIME:=0;

transact.Arb_Number:=1; //кА

transact.Number_group_res:=1; // категория 1

_Schedl(GenA, NegExp(l1),transact);

transact.Arb_Number:=2; //к B

transact.Number_group_res:=1; // категория 1

_Schedl(GenB, NegExp(l1),transact);

transact.Arb_Number:=3; //кА

transact.Number_group_res:=2; // категория 2

_Schedl(GenA, NegExp(l2),transact);

transact.Arb_Number:=4; //к B

transact.Number_group_res:=2; // категория 2

_Schedl(GenB, NegExp(l2),transact);

transact.Arb_Number:=5; //pause

_Schedl(PauseM, IRandom(pause,pause),transact);

an:=5; //номертранзакта

endingM.Arb_Number:=900000000;

_Schedl(EndM,t,endingM); //завершение моделирования 6 минут лол

A:=_Device('DUPLEX_A');

B:=_Device('DUPLEX_B');

C:=_Device('HALF-DUPLEX');

Q1:=_Queue('AREA1');

Q2:=_Queue('AREA2');

repeat

_Cause(EVENT,transact);

case EVENT of

GenA: ///приходпакетанаА

begin

GEN(A,Q1);

inc(an);

transact.Arb_Number:=an;

if transact.Number_group_res=1 then

_Schedl(GenA,NegExp(l1),transact)

else _Schedl(GenA,NegExp(l2),transact)

end;

GenB: ///приход пакета на В

begin

GEN(B,Q2);

inc(an);

transact.Arb_Number:=an;

if transact.Number_group_res=1 then

_Schedl(GenB,NegExp(l1),transact)

else _Schedl(GenB,NegExp(l2),transact)

end;

RelA: ///завершениеобслуживания

begin

if transact.Number_group_res=1 then Inc(k1o) else Inc(k2o);

_Releas(A);

if _Length(Q1)>0 then

begin

transact:=_Head(Q1,ASS);

_Reserve(A,transact);

_Schedl(RelA,IRandom(T1,t12),transact);

end;

end;

RelB: ///завершение обслуживания

begin

if transact.Number_group_res=1 then Inc(k1o) else Inc(k2o);

_Releas(B);

if _Length(Q2)>0 then

begin

transact:=_Head(Q2,ASS);

_Reserve(B,transact);

_Schedl(RelB,IRandom(T1,t12),transact);

end;

end;

RelC: ///завершение обслуживания

begin

if transact.Number_group_res=1 then Inc(k1o) else Inc(k2o);

_Releas(C);

end;

PauseM:

begin

Results;

_Schedl(PauseM,IRandom(pause,pause),transact)

end;

end;

until EVENT= endM;

_Monitor(f);

_Report(f);

end;

functionTForm1.toAV(x: Real): Integer; //интенсивностьвсреднеезначение

var i:Integer; y:real;

begin

i:=0;

y:=x;

while x<1 do

begin

x:=x+y*2;

Inc(i);

end;

Result:=i*2;

end;

function TForm1.useCount(n: string): Integer;

var p: P_Device;

begin

p := _Devices;

while p.Name<>n do

begin

p := p^.Next;

end;

Result:=p.Z;

end;

function TForm1.useTime(n: string): Integer;

var p: P_Device;

begin

p := _Devices;

while p.Name<>n do

begin

p := p^.Next;

end;

Result:=p.SB;

end;

procedure TForm1.Variant;

begin

if N11.Checked then

begin

edtl1.Text:='0,05';

edtl2.Text:='0,04';

se1.Value:=19;

se2.Value:=5;

se3.Value:=10;

se4.Value:=3;

edt10.Text:='20';

edt11.Text:='60';

edt12.Text:='5';

edt13.Text:='40';

edt14.Text:='0,05';

edt15.Text:='0,5';

end;

if N21.Checked then

begin

edtl1.Text:='0,03';

edtl2.Text:='0,05';

se1.Value:=30;

se2.Value:=10;

se3.Value:=20;

se4.Value:=5;

edt10.Text:='10';

edt11.Text:='40';

edt12.Text:='5';

edt13.Text:='30';

edt14.Text:='0,25';

edt15.Text:='0,5';

end;

if N31.Checked then

begin

edtl1.Text:='0,04';

edtl2.Text:='0,02';

se1.Value:=25;

se2.Value:=7;

se3.Value:=18;

se4.Value:=4;

edt10.Text:='40';

edt11.Text:='70';

edt12.Text:='10';

edt13.Text:='60';

edt14.Text:='0,3';

edt15.Text:='0,6';

end;

if N41.Checked then

begin

edtl1.Text:='0,02';

edtl2.Text:='0,03';

se1.Value:=50;

se2.Value:=7;

se3.Value:=30;

se4.Value:=6;

edt10.Text:='30';

edt11.Text:='90';

edt12.Text:='20';

edt13.Text:='70';

edt14.Text:='0,4';

edt15.Text:='0,5';

end;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

n11.Checked:=True;

n21.Checked:=False;

n31.Checked:=False;

n41.Checked:=False;

Variant;

end;

procedure TForm1.N21Click(Sender: TObject);

begin

n21.Checked:=True;

n11.Checked:=False;

n31.Checked:=False;

n41.Checked:=False;

Variant;

end;

procedure TForm1.N31Click(Sender: TObject);

begin

n31.Checked:=True;

n11.Checked:=False;

n21.Checked:=False;

n41.Checked:=False;

Variant;

end;

procedure TForm1.N41Click(Sender: TObject);

begin

n41.Checked:=True;

n11.Checked:=False;

n31.Checked:=False;

n21.Checked:=False;

Variant;

end;

procedure TForm1.Results;

begin

edt1.Text:=IntToStr(k1i);

edt2.Text:=IntToStr(k2i);

edt3.Text:=IntToStr(k1i+k2i);

edt4.Text:=IntToStr(k1o);

edt5.Text:=IntToStr(k2o);

edt6.Text:=IntToStr(k1o+k2o);

edt7.Text:='+'+FloatToStr(k1o*S1)+'$';

edt8.Text:='+'+FloatToStr(k2o*S2)+'$';

edt9.Text:='+'+FloatToStr(k1o*S1+k2o*S2)+'$';

p1:=k1o*S1+k2o*S2;

edt18.Text:=IntToStr(k1i-k1o);

edt17.Text:=IntToStr(k2i-k2o);

edt16.Text:=IntToStr(k1i+k2i-k1o-k2o);

edt19.Text:='-'+FloatToStr((k1i-k1o)*S3)+'$';

edt20.Text:='-'+FloatToStr((k2i-k2o)*S4)+'$';

edt21.Text:='-'+FloatToStr((k1i-k1o)*S3+(k2i-k2o)*S4)+'$';

p2:=(k1i-k1o)*S3+(k2i-k2o)*S4;

edt22.Text:=FloatToStr(useTime('HALF-DUPLEX'));

ut:=useTime('HALF-DUPLEX')* S5;

edt23.Text:='-'+FloatToStr(ut)+'$';

uc:=useCount('DUPLEX_A')+useCount('DUPLEX_B');

edt24.Text:=FloatToStr(uc);

ud:=k * S6 * uc;

edt25.Text:='-'+FloatToStr(ud)+'$';

p:=p1-p2-ut-ud;

edt26.Text:=FloatToStr(p);

strngrd1.Cells[index-1,progon-1]:=FloatToStr(p-pold);

strngrd2.Cells[0,progon-1]:=FloatToStr(p);

if p-pold>max then max:=p-pold;

if p-pold<min then min:=p-pold;

Inc(index);

pold:=p;

end;

procedure TForm1.Velch; // ВЕЛЧ

var i,j,s:Integer; x:Extended;

values:array[1..1000] of Extended;

begin

strngrd1.RowCount:=strngrd1.RowCount+1;

for i:=0 to m-1 do

begin

x:=0;

for j:=0 to strngrd1.Rowcount-2 do

begin

x:= StrToFloat(strngrd1.Cells[i,j])+x;

end;

strngrd1.Cells[i,strngrd1.Rowcount-1]:=floattostr(x/(strngrd1.Rowcount-1));

end;

mmo2.Clear;

mmo3.Clear;

for i:=1 to m do

begin

values[i]:=StrToFloat(strngrd1.Cells[i-1,strngrd1.Rowcount-1]);

mmo2.Lines.Add(FloatToStr(values[i]));

end;

for i:=1 to m-w do

begin

x:=0;

if i<=w then

begin

for s:=-(i-1) to (i-1) do

x:=x+values[i+s];

x:=x/(2*i-1);

mmo3.Lines.Add(FloatToStr(RoundTo(x,-4)));

end

else

begin

for s:=-w to w do

x:=x+values[i+s];

x:=x/(2*w+1);

mmo3.Lines.Add(FloatToStr(RoundTo(x,-4)));

end;

end;

end;

procedure TForm1.Raspred;

var i,j,c,ii,ng:Integer;

h,low,high:Real;

begin

mmo4.Lines.Add('Min:'+floattostr(min));

mmo4.Lines.Add('Max:'+floattostr(max));

ng:=strtoint(floattostr(SimpleRoundTo(1+3.322*log10(n*m),0)));

mmo4.Lines.Add('n:'+floattostr(ng));

h:=RoundTo((max-min)/ng+1,0);

mmo4.Lines.Add('h:'+floattostr(h));

mmo4.Lines.Add('');

low:=min-1;

high:=low+h;

for ii:=1 to ng do

begin

c:=0;

for i:=0 to m-1 do

begin

for j:=0 to n-1 do

begin

if ((StrToFloat(strngrd1.Cells[i,j])>low) and

(StrToFloat(strngrd1.Cells[i,j])<=high)) then

begin

Inc(c);

Inc(lol);

end;

end;

end;

mmo4.Lines.Add(inttostr(c));

low:=high;

high:=high+h;

end;

mmo4.Lines.Add('');

low:=min-1;

high:=low+h;

for ii:=1 to ng do

begin

mmo4.Lines.Add(floattostr(low)+'<->'+ floattostr(high));

low:=high;

high:=high+h;

end;

end;

procedure TForm1.AveMoney;

var j:Integer; x:Extended;

begin

strngrd2.RowCount:=strngrd2.RowCount+1;

x:=0;

for j:=0 to strngrd2.Rowcount-2 do

begin

x:= StrToFloat(strngrd2.Cells[0,j])+x;

end;

strngrd2.Cells[0,strngrd2.Rowcount-1]:=floattostr(x/(strngrd2.Rowcount-1));

edt30.Text:= strngrd2.Cells[0,strngrd2.Rowcount-1];

end;

end.

Размещено на Allbest.ru

...

Подобные документы

  • Построение концептуальной модели системы и ее формализация. Алгоритмизация модели системы и ее машинная реализация. Построение логической схемы модели. Проверка достоверности модели системы. Получение и интерпретация результатов моделирования системы.

    курсовая работа [67,9 K], добавлен 07.12.2009

  • Анализ и формализация задачи моделирования: построение концептуальной модели, ее формализация в виде Q-схемы. Построение имитационной модели: создание блок-схемы, представление базовой исходной имитационной модели. Исследование экономических процессов.

    контрольная работа [156,0 K], добавлен 21.11.2010

  • Построение концептуальной модели и её формализация. Алгоритмизация модели и её компьютерная реализация. Типы моделирующих алгоритмов. Интерпретация результатов моделирования. Структурная схема погрузки готовой продукции. Основные параметры системы.

    контрольная работа [816,2 K], добавлен 30.06.2014

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

    курсовая работа [164,8 K], добавлен 18.12.2011

  • Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.

    курсовая работа [802,8 K], добавлен 04.03.2015

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

    курсовая работа [294,0 K], добавлен 17.01.2015

  • Методы материального моделирования в среде GPSS. Построение и разработка концептуальной модели. Алгоритмизация модели и ее машинная реализация. Экспериментальное моделирование на ЭВМ. Определение максимальной длины очереди готовых к обработке пакетов.

    курсовая работа [189,0 K], добавлен 14.09.2011

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

    курсовая работа [79,2 K], добавлен 25.06.2011

  • Определение закона и построение формальной схемы функционирования системы. Алгоритмизация модели и ее машинная реализация. Составление алгоритма моделирующей программы, ее верификация (тестирование). Получение и интерпретация результатов моделирования.

    курсовая работа [1,1 M], добавлен 30.05.2012

  • Проблемы и этапы построения имитационной модели системы массового обслуживания. Оценка результатов схем, построенных на Visual Basic и GPSSV. Анализ исходных данных и выбор недостающих, составление таблицы определений и построение блок-схем и диаграмм.

    курсовая работа [204,1 K], добавлен 24.06.2011

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

    курсовая работа [1,2 M], добавлен 10.06.2015

  • Формализация и стандартизация данных, необходимых для разработки веб-сайта. Описание среды программирования. Требования к техническому обеспечению. Алгоритмизация данных и защитное программирование. Анализ результатов решения и инструкция пользователю.

    дипломная работа [3,7 M], добавлен 30.06.2014

  • Понятие стратегического планирования, разработка схем программных блоков и основной программы. Структурная схема имитационной модели, создание модели на языке моделирования General Purpose Simulation System. Математическое описание моделируемой системы.

    дипломная работа [2,6 M], добавлен 12.08.2017

  • Постановка задачи для машинного моделирования, определение параметров и переменных. Алгоритмизация модели и её машинная реализация. Реализация алгоритма моделирования на общесистемном языке программирования. Описание диалога с пользователем, интерфейс.

    курсовая работа [703,1 K], добавлен 14.01.2013

  • Построение концептуальной модели, процесс моделирования смыслового наполнения базы данных. Основные компоненты концептуальной модели. Построение реляционной модели. Целостность данных в реляционной базе. Нормализация. Проектирование базы данных в ACCESS.

    курсовая работа [1,8 M], добавлен 29.10.2008

  • Разработка концептуальной модели, выявление основных элементов системы и элементарных актов взаимодействия. Создание алгоритма и написание программы. Планирование и проведение компьютерных экспериментов. Аналитическое и имитационное моделирование.

    курсовая работа [784,0 K], добавлен 01.12.2012

  • Построение модели системы обслуживания в банке. Описание блоков Vxod, tip klienta, Vyxod. Календарь событий и дополнительные методы развития концепций. Этап проведения компьютерного эксперимента с моделью. Рассмотрение структуры файлов результатов.

    курсовая работа [2,1 M], добавлен 09.04.2012

  • Разработка решения задачи имитационного моделирования системы массового обслуживания (СМО), на примере склада продукции. Построение концептуальной модели системы. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.

    курсовая работа [75,5 K], добавлен 26.06.2011

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

    курсовая работа [240,3 K], добавлен 24.06.2010

  • Необходимость создания моделируемой системы. Описание моделируемой системы и задание моделирования. Структурная схема модели системы. Блок–диаграмма. Текст программы. Описание текста программы. Результаты моделирования. Эксперимент, его результаты.

    курсовая работа [35,9 K], добавлен 19.11.2007

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.