1 / 1 / 2
Регистрация: 19.06.2016
Сообщений: 15
1

Не выводится отчет в процессе моделирования

05.11.2017, 18:11. Показов 1632. Ответов 6

Author24 — интернет-сервис помощи студентам
Задали такую задачу:
Рассмотрим работу телефонной сети, имеющей 50 абонентских линий связи, в которой одновременно может быть задействовано не более 10 связей между абонентами. Каждый абонент может соединиться с остальными, если свободны его входная линия связи и входная линия вызываемого абонента. Из 50 линий для организации связи могут использоваться любые две свободных линии. Необходимо промоделировать работу телефонной сети для 1000 вызовов. Интервалы между вызовами и длительность разговора распределены по экспоненциальному закону. Предусматривается, что первые 15 вызовов образуют переходной процесс в сети и эти данные не нужно учитывать при моделировании.

Набросал примерно так:
Код
	dial FUNCTION RN1,C51
	0,0/0.02,1/0.04,2/0.06,3/0.08,4/0.1,5/0.12,6/0.14,7/0.16,8/0.18,9/0.2,10/0.22,11/0.24,12/0.26,13/0.28,14/0.3,15/0.32,16/0.34,17/0.36,18/0.38,19/0.4,20/0.42,21/0.44,22/0.46,23/0.48,24/0.5,25/0.52,26/0.54,27/0.56,28/0.58,29/0.6,30/0.62,31/0.64,32/0.66,33/0.68,34/0.7,35/0.72,36/0.74,37/0.76,38/0.78,39/0.8,40/0.82,41/0.84,42/0.86,43/0.88,44/0.9,45/0.92,46/0.94,47/0.96,48/0.98,49/1,50	; функция случайного присваивания номера абонентам (1-50 как в условии)
line1	STORAGE 1	; линии связи, всего 10 штук	
line2	STORAGE 1	
line3	STORAGE 1	
line4	STORAGE 1	
line5	STORAGE 1	
line6	STORAGE 1	
line7	STORAGE 1	
line8	STORAGE 1	
line9	STORAGE 1	
line10	STORAGE 1	
caller1	variable fn$dial	; вызывающий абонент
caller2	variable fn$dial	; вызываемый абонент
	GENERATE	(exponential(1,0,5))	; каждые 5 мин приходит звонок
	ASSIGN	caller1,FN$dial	; присвоить случайный номер вызывающему абоненту (1-50)
	ASSIGN	caller2,FN$dial	; присвоить случайный номер вызываемому абоненту (1-50)
try	GATE LR	caller2,busy10	; проверить если номер вызываемого абонента занят
	GATE SNF	line1,busy1	; проверить линии на занятость, если линия занята - проверить следующую
	ENTER	line1	; если линия свободна - занять ее на ~10 минут
	LOGIC S	caller1	; номер вызывающего абонента становится занятым
	LOGIC S	caller2	; номер вызываемого абонента становится занятым
	ADVANCE	10,1	; длительность разговора
	LEAVE	line1
	TRANSFER	,success	
busy1	GATE SNF	line2,busy2
	ENTER	line2
	LOGIC S	caller1	
	LOGIC S	caller2	
	ADVANCE	10,1
	LEAVE	line2
	TRANSFER	,success
busy2	GATE SNF	line3,busy3
	ENTER	line3
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line3
	TRANSFER	,success
busy3	GATE SNF	line4,busy4
	ENTER	line4
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line4
	TRANSFER	,success
busy4	GATE SNF	line5,busy5
	ENTER	line5
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line5
	TRANSFER	,success
busy5	GATE SNF	line6,busy6
	ENTER	line6
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line6
	TRANSFER	,success
busy6	GATE SNF	line7,busy7
	ENTER	line7
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line7
	TRANSFER	,success
busy7	GATE SNF	line8,busy8
	ENTER	line8
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line8
	TRANSFER	,success
busy8	GATE SNF	line9,busy9
	ENTER	line9
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line9
	TRANSFER	,success
busy9	GATE SNF	line10,busy10
	ENTER	line10
	LOGIC S	caller1	
	LOGIC S	caller2
	ADVANCE	10,1
	LEAVE	line10
	TRANSFER	,success
busy10	QUEUE	wait	; если все 10 линий или номер вызываемого абонента заняты
	ADVANCE	10,0.5	; подождать 10 минут (время взял наугад)
	DEPART	wait
	SAVEVALUE	delayed+,1	; количество задержанных вызовов
	TRANSFER	,try	; попытаться еще раз
success	SAVEVALUE	accepted+,1	; количество принятых вызовов
	LOGIC R	caller1	; номер вызывающего абонента становится не занятым	
	LOGIC R	caller2	; номер вызываемого абонента становится не занятым	
	TERMINATE
	START	15	; пропустить первые 15 вызовов (требуется в условии задачи)
	RESET 
	START	1000
Запускаю моделирование, ошибок никаких не выводится, но останавливается на Simulation in Progress и ничего не выводится. Модели попроще работают нормально.

В моделировании не силен, так что скорее всего где-то ошибся. Прошу совета.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2017, 18:11
Ответы с готовыми решениями:

Отчет не выводится на принтер
Из формы открываю отчет с параметром Preview отчет открывается но не выводится на принтер (т.е....

Не выводится ТекущаяДолжность СКД Внешний отчет
ВЫБРАТЬ НачислениеЗарплаты.Организация КАК Организация, НачислениеЗарплатыНачисления.Сотрудник...

Не выводится отчёт до 6 числа любого месяца
Делаю программу по расчётам с поставщиками за материалы и при выводе через quickrep задолженностей...

Отчет СКД. Не выводится ресурс при отключении итогов.
Всем дорброе утро! Такая беда - не выводится ресурс в СКД. Всё прописано везде. В ходе...

6
1 / 1 / 2
Регистрация: 19.06.2016
Сообщений: 15
07.11.2017, 09:16  [ТС] 2
Ошибку с отчетом исправил, но теперь транзакты не проходят дальше метки busy1. Разбираюсь дальше.
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
07.11.2017, 09:45 3
В чём ошибка была? Сейчас по коду не совсем ясно почему заявка дальше busy1 не идёт.
0
1 / 1 / 2
Регистрация: 19.06.2016
Сообщений: 15
07.11.2017, 15:50  [ТС] 4
Dukalys, всего лишь навсего нужно было написать TERMINATE 1 вместо TERMINATE. Я думал, что по умолчанию в этом блоке стоит единица.

Добавлено через 5 минут
Dukalys, Судя по отчету числа в диапазоне от 0 до 50 генерируются вещественные. Не подскажете как сделать их целыми?
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
07.11.2017, 17:48 5
Цитата Сообщение от Nzoth Посмотреть сообщение
как сделать их целыми?
В функции использовать не С51 а D51

непрерывная числовая - С;
дискретная числовая - D;
табличная числовая - L;
дискретная атрибутивная - E;
табличная атрибутивная - М.
Только будет одно число, в зависимости от вероятности, а не рандом из диапазона.
0
1 / 1 / 2
Регистрация: 19.06.2016
Сообщений: 15
08.11.2017, 14:15  [ТС] 6
Кажется я решил все проблемы, кроме одной. Как сделать условие вроде "если номер вызывающего абонента равен номеру вызываемого абонента, то перейти на метку wrong number"? Это нужно для того чтобы избежать ситуации, когда абонент звонит самому себе.
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
08.11.2017, 17:15 7
Нужно чтобы у вас оба номера допустим были записаны в параметрах агента, например P1 и P2/ далее используйте блок TEST для сравнения их значений и если равны то отправляйте по метке, а если не равны - то ниже по коду для продолжения обслуживания.
0
08.11.2017, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2017, 17:15
Помогаю со студенческими работами здесь

Внешний отчет (материальный) выводится пустым при формировании. Ошибка в запросе
Здравствуйте. Есть база в БП 2.0 и есть внешний материальный отчет (добавлен архив с ним во...

Отчет выводится пустым только при выборе кафедры, остальные критерии работают
помогите пожалуйста Dim strSQL As String Dim a, b, c, d a = Forms!!.Form!.Value b =...

Как выводится в таком случае отчет, содержащий поля материнской и подчиненной форм с примененными в них фильтрами и всеми отметками?
Доброго времени суток! Подскажите пожалуйста, как реализовать в БД следующую функцию. Есть...

Не выводится по isbn определённая картинка для каждой книги,но выводится просто по имени картинки а мне нужно
Не выводится по isbn определённая картинка для каждой книги,но выводится просто по имени картинки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru