Моделирование системы передачи данных
Построение концептуальной модели, ее формализация. Алгоритмизация и программирование модели. Описание структуры программы. Разработка алгоритмов и блок-схем событийных модулей. Планирование вычислительного эксперимента. Анализ результатов моделирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 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