- •Аннотация
- •Содержание:
- •Введение
- •1 Объекты системы моделирования сим-си
- •1.1 Общая классификация
- •1.2 Системные константы, типы и переменные
- •Системные типы
- •Скалярные типы данных
- •Множественные типы данных
- •Системные переменные
- •2 Принципы и методы построения моделей
- •2.1 Создание транзактов
- •2.2 Уничтожение транзактов
- •2.3 Продвижение транзактов
- •2.4 Задержка транзактов. Функцияdelayt
- •2.5 Блокировка транзактов
- •2.5.1 Функцияwait
- •2.5.2 Функцииacceptиsend
- •2.6 Изменение порядка осуществления событий. Функцияnехt
- •2.7 Использование приборов
- •2.7.1 Функции ввода транзактов в прибор
- •2.7.1.1 Захват прибора. Функцияinfac
- •2.7.1.2 Занятие прибора. Функцияseize
- •2.7.2 Функцияoutfac. Вывод транзакта из прибора
- •2.8 Регистрация очередей. Функцииinqueue,outqueue
- •2.9 Накопители (многоканальные устройства). Функцииenterиleave
- •2.10 Построение гистограмм. Функцииtabulate,newhist,prnhist
- •2.11. Создание, использование и обработка списков
- •2.11.1 Создание списков
- •2.11.2 Включение объектов в списки
- •2.11.3 Удаление объектов из списков
- •2.11.4 Просмотр элементов списка. Сканирование
- •2.11.5 Списки пользователя. Организация различных дисциплин обслуживания с помощью списков пользователя
- •2.12 Модельная среда
- •2.12.1 Создание модельной среды
- •2.12.2 Уничтожение очередей, приборов, накопителей и гистограмм
- •2.13 Ансамбли
- •2.13.1 Создание ансамблей. Функцияsplit
- •2.13.2 Сбор членов ансамбля. Функцияassemble
- •2.13.3 Изменение приоритета всех членов ансамбля. Функцияpriority
- •2.13.4 Изменение значения параметра всех членов ансамбля. Функцияparmans
- •2.14 Генераторы случайных чисел
- •2.15 Процесс моделирования. Функцияplan
- •2.16 Создание системной среды. Функцияinitlist
- •2.17 Структура модели
- •2.18 Сброс статистики и очистка системной и модельной среды. Функцииresetallиclear
- •3 Вывод результатов моделирования
- •4 Отладочные средства
- •4.1 Диагностика ошибок
- •4.2 Трассировка
- •Приложение 1. Коды и сообщения об ошибках
- •Приложение 2. Сообщения в режиме трассировки
- •Приложение 3. Системные константы и типы данных
- •Приложение 4. Системные переменные
- •Приложение 5 Заголовки системных функций
- •Приложение6. Примеры моделей Пример 1.
- •Пример 2.
- •Пример 3.
- •Диагностика ошибок
- •Системные списки Список current
- •Список прибора Fac f
- •Список future
Приложение6. Примеры моделей Пример 1.
Всякая функция-модель начинается функцией initlist- созданием системной среды. Ее первый параметр задает максимальное число транзактов в системе, а второй параметр - число событий.
функцией initcreateинициализируются генераторы транзактов в событиях 1 и 8. Функциейnewfacпо ссылкеfсоздается прибор.
Оператор цикла while(systime<28800)ограничивает время моделирования до 28800 единиц модельного времени. Внутри цикла выполняется функцияplan, которая назначает активный транзакт (на него указывает ссылкаtrans) и текущее событие (значение переменнойsysevent), затем выполняется одно из событий (то, которое было выбрано функциюplan).
В данном примере показана обработка транзактов с различными приоритетами. приоритет назначается присваиванием значения полю транзакта prty.
#include"simc.h"
voidmain() {
//variables
pqueueq,q1,q2; // объявление модельной среды
pfacilityf;
initlist(50); //cоздание системной среды
initcreate(1,0); // иниц. генератора сообщений
initcreate(8,0);
newqueue(q,”Queue Q”); // создание мод. среды
newfac(f,”FacF”);
while(systime<28800){ // огранич. времени моделир.
plan();
switch(sysevent) {
case 1: create(randab(60,780,v1)); break;
case 2: inqueue(q); trans->prty=1; break;
case 3: seize(f); break;
case 4: outqueue(q); break;
case 5: delayt(randab(210,390,v2)); break;
case 6: outfac(f); break;
case 7: destroy(); break;
case 8: create(randab(120,600,v3)); break;
case 9: inqueue(q); trans->prty=1; break;
case 10: seize(f); break;
case 11: outqueue(q); break;
case 12: delayt(randab(70,130,v4)); break;
case 13: outfac(f); break;
case 14: destroy(); break;
};
}
printall();
}
|
Общие параметры среды: | |
|
Текущее время |
2.89e+04 |
|
Текущее событие |
1 |
|
Текущий транзакт |
7 |
|
Всего событий |
1.2e+03 |
|
Время моделирования |
0 сек. |
|
Среднее время выполнения события |
0 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
73 |
72 |
138 |
70 |
70 |
70 |
70 |
80 |
80 |
159 |
|
СОБЫТИЕ |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
|
ВСЕГО |
79 |
79 |
78 |
78 |
|
|
|
|
|
|
|
Очереди | |||||
|
Очередь |
Число входов |
Макс. длина |
Ср. вр. ож. |
Средняя длина |
% вх. в пустую оч. |
|
С 0 вр. ож. |
Текущ.длина |
Без уч. 0 вх. | |||
|
Queue |
152 |
10 |
763 |
4.03 |
2.63 |
|
4 |
3 |
783 | |||
|
Приборы | |||||
|
Прибор |
Число входов |
Ср. время обработки |
Загрузка |
Число захватов |
Состояние |
|
Fac F |
149 |
194 |
0.995 |
0 |
SEIZED |
Пример 2.
В этом примере демонстрируется работа с многоканальными устройствами. Функцией newstorageсоздается многоканальное устройство и определяется его емкость. В функцияхenterиleaveвторой параметр задает количество ячеек, занимаемых транзактом при входе в многоканальное устройство.
Модель прогоняется несколько раз при различной емкости многоканального устройства menи различном числе транзактов, циркулирующих в модели. После каждого прогона функциейprintallраспечатывается собранная статистика, функциейclear модель сбрасывается в исходное состояние, функциейdestrsуничтожается накопительmen. Затем накопительmenсоздается вновь с новой емкостью, в модель помещается нужное число транзактов и начинается следующий прогон.
#include "simc.h"
voidmain() {
//variables
pstoragenowon,men;
initlist(56);
newstorage(nowon,”Nowon ”,50);
for(int vv=53;vv<=55;vv++)
for(int ww=3;ww<=4;ww++) {
for(int k=1;k<=vv;k++)
initcreate(1,0);
newstorage(men,”Men ”,ww);
while(systime<6240) { // огранич. времени моделир.
plan();
switch(sysevent) {
case 1: enter(nowon,1); break;
case 2: delayt(randab(132,182,v1)); break;
case 3: leave(nowon,1); break;
case 4: enter(men,1); break;
case 5: delayt(randab(4,10,v2)); break;
case 6: leave(men,1); break;
case 7: next(1); break;
}
}
printall();
clear();
destrs(men);
}
}
Ниже приводятся результаты моделирования.
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
6 |
|
Текущий транзакт |
30 |
|
Всего событий |
1.56e+04 |
|
Время моделирования |
0 сек. |
|
Среднее время выполнения события |
0 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
2921 |
1984 |
1936 |
2933 |
1934 |
1932 |
1931 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.984 |
155 |
48 |
50 |
49 |
1984 |
|
Men |
3 |
0.728 |
7.04 |
2 |
3 |
2.2 |
1934 |
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
6 |
|
Текущий транзакт |
25 |
|
Всего событий |
3.09e+04 |
|
Время моделирования |
0.016 сек. |
|
Среднее время выполнения события |
5.1852e-07 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
3108 |
1999 |
1949 |
2388 |
1949 |
1947 |
1946 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.99 |
155 |
50 |
50 |
49 |
1999 |
|
Men |
4 |
0.544 |
6.97 |
2 |
4 |
2.2 |
1949 |
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
3 |
|
Текущий транзакт |
17 |
|
Всего событий |
4.69e+04 |
|
Время моделирования |
0.016 сек. |
|
Среднее время выполнения события |
3.4151e-07 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
3332 |
1989 |
1940 |
2920 |
1939 |
1937 |
1937 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.99 |
155 |
49 |
50 |
49 |
1989 |
|
Men |
3 |
0.731 |
7.06 |
2 |
3 |
2.2 |
1939 |
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
6 |
|
Текущий транзакт |
43 |
|
Всего событий |
6.26e+04 |
|
Время моделирования |
0.016 сек. |
|
Среднее время выполнения события |
2.5576e-07 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
3503 |
2001 |
1951 |
2402 |
1951 |
1950 |
1949 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.994 |
155 |
50 |
50 |
50 |
2001 |
|
Men |
4 |
0.55 |
7.04 |
1 |
4 |
2.2 |
1951 |
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
6 |
|
Текущий транзакт |
45 |
|
Всего событий |
7.9e+04 |
|
Время моделирования |
0.016 сек. |
|
Среднее время выполнения события |
2.0246e-07 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
3636 |
2009 |
1959 |
2992 |
1959 |
1958 |
1957 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.994 |
154 |
50 |
50 |
50 |
2009 |
|
Men |
3 |
0.728 |
6.95 |
1 |
3 |
2.2 |
1959 |
|
Общие параметры среды: | |
|
Текущее время |
6.24e+03 |
|
Текущее событие |
6 |
|
Текущий транзакт |
36 |
|
Всего событий |
9.5e+04 |
|
Время моделирования |
0.031 сек. |
|
Среднее время выполнения события |
3.2627e-07 сек/событие |
|
СОБЫТИЕ |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
ВСЕГО |
3709 |
2008 |
1959 |
2444 |
1957 |
1954 |
1953 |
|
|
|
|
Накопители | |||||||
|
Накопитель |
Емк. |
Загр. |
Ср. время пребывания |
Содержимое |
Число входов | ||
|
Текущ. |
Макс. |
Сред. | |||||
|
Nowon |
50 |
0.996 |
155 |
49 |
50 |
50 |
2008 |
|
Men |
4 |
0.55 |
7.01 |
3 |
4 |
2.2 |
1957 |
