Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мод сис / V.Boev-GPSSvsAnyLogic

.pdf
Скачиваний:
94
Добавлен:
11.04.2015
Размер:
9.01 Mб
Скачать

Рис. 4.16. Исходные данные сегмента Канал

Рис. 4.17. Объекты событийной части сегмента Канал

171

5.У элемента hold1 установите флажок Изначально забло-

кирован.

6.Перетащите объект delay, поместите сверху (см. рис. 4.16).

Вполе Имя: введите основной_канал.

7.Установите флажок Отображать имя.

8.В поле Класс заявки: Entity замените Message. За-

держка задаѐтся установите Явно.

9.В поле Время задержки введите

exponential(1/entity.timePered).

10.В поле Вместимость введите 1.

11.Действие при входе entity.timePered=entity.dlina/ skorPeredKan;

12.Установите флажок Включить сбор статистики.

13.Скопируйте объект delay. Вставьте его один раз. При этом

изменится имя на основной_канал, а остальные свойства останутся неизменными.

14.Замените имя основной_канал на резерв_канал.

15.В поле Действие при входе замените имеющийся там код следующим:

if (а==0)

entity.timePered=entity.dlina/skorPeredKanR; if (а==1)

{entity.timePered=entity.dlina/skorPeredKanR + timeBklResK;

а=0;}

16. Действие при выходе

if (hold.isBlocked()== true) hold1.setBlocked(false);

17. Соедините объекты hold и delay согласно рис. 4.17.

4.1.9.3.Организация входного и выходного портов

3.Перетащите элемент Скруглѐнный прямоугольник.

4.На странице Дополнительные панели Свойства введите в

поля X: 50, Y: 80, Ширина: 60, Высота: 52.

5.Из палитры Основная перетащите два элемента Порт. Разместите их как на рис. 4.17. В полях Имя: предложенные системой имена замените согласно рис. 4.17. Установите флажки

Отображать имя.

6.Обратите также внимание на то, чтобы у элементов

Скруглѐнный прямоугольник и Порт был установлен флажок

172

На верхнем уровне. У остальных элементов сегмента Канал этот флажок должен быть сброшенным.

7. Соедините выходы элементов основной_канал и резерв_канал с портом вых, а порт вх — с входами элементов hold и hold1.

4.1.9.4. Имитатор отказов каналов связи

Имитатор отказов основного канала связи построен аналогично имитатору отказов вычислительного комплекса.

1.Перетащите элемент Прямоугольник.

2.На странице Дополнительные панели Свойства введите в

поля X: 10, Y: 212, Ширина: 380, Высота: 120.

3.Перетащите объект source и два объекта delay. Разместите

исоедините их как на рис. 4.17.

4.Выделите source и установите значения его свойств: Отображать имя установите флажок

Заявки прибывают согласно Интенсивности Интенсивность прибытия 1 Количество заявок, прибывающих за один раз 1

Ограниченное количество прибытий установите флажок Максимальное количество прибытий 1

Действие при выходе

5. Выделите первый объект delay и установите значения его свойств:

Имя: розыг_инт_до_отказа

Отображать имя установите флажок

Задержка задаѐтся Явно

Время задержки exponential(1/timeOtkKan)

Вместимость 1

Действие при выходе hold.setBlocked(true);

if (основной_канал.size()!=0) {

основной_канал.remove((Message)

основной_канал.get(0)); всего_потеряно_сообщ ++;}

hold1.setBlocked(false);

а=1;

6. Выделите второй объект delay и установите значения его свойств:

Имя имитация_восст_осн_кан

173

Отображать имя установите флажок

Задержка задаѐтся Явно

Время задержки exponential(1/timeVosstkKan)

Вместимость 1

Действие при выходе hold.setBlocked(false); hold1.setBlocked(true);

4.1.10. Построение модели сети связи

Все необходимое для построения модели сети из объектов классов активных объектов Абонент, Канал и Маршрутизатор

нами создано. Приступим к построению модели сети.

1.Перейдите к области просмотра облСеть.

2.Из окна Проекты перетащите элемент абонент1 и поместите как на рис. 4.18.

3.Элемент абонент1 имитирует абонента 1. В свойствах абонент1 записан код для расчѐта коэффициентов пропускной способности абонентов 2…6 с абонентом 1. Следовательно, абонент2 должен иметь код для расчѐта коэффициентов пропускной способности абонентов 1, 3…6 с абонентом 2 и т.д.

4.Создайте активные объекты Абонент2Абонент6.

5.Откройте Абонент1. Скопируйте все элементы.

6.Вставьте скопированные элементы на объекты Або-

нент2Абонент6.

7.Внесите правки в коды согласно табл. 4.9.

8.Из окна Проекты перетащите элементы або-

нент2абонент6.

9.Из окна Проекты перетащите элемент канал и поместите вверху (см. рис. 4.18). В поле Имя: добавьте к предложенному имени 1.

10.Скопируйте элемент канал1. Вставьте пять элементов. Разместите их как на рис. 4.18.

11.Выходы элементов абонент1абонент6 соедините с соответствующими входами элементов канал1канал6.

12.Из окна Проекты перетащите элемент маршрутизатор. В

поле Имя: сделайте маршрут1.

13. Соедините выходы первого и второго абонентов с вх1, выходы третьего и четвѐртого — с вх2, пятого — с вх3, шестого — с вх4 элемента маршрут1.

174

175

Таблица 4.9

 

Абонент2

 

 

numAbonent

2

 

 

Свойство

selectOutput1

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==1)

 

 

Действие при

отпрАб1++;

выходе 0

get_Main().отпр21=отпрАб1;

 

 

Условие 1

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==2)

 

 

Условие 2

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==3)

 

 

Действие при

отпрАб3++;

выходе 2

get_Main().отпр23=отпрАб3;

 

 

Условие 3

entity.numAbOtpr==entity.numAbPol

 

 

Свойство

selectOutput2

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbPol==4

 

 

Действие при

отпрАб4++;

выходе 0

get_Main().отпр24=отпрАб4;

 

 

Условие 1

entity.numAbPol==5

 

 

Действие при

отпрАб5++;

выходе 1

get_Main().отпр25=отпрАб5;

 

 

Условие 2

entity.numAbPol==6

 

 

Действие при

отпрАб6++;

выходе 2

get_Main().отпр26=отпрАб6;

 

 

Свойство

selectOutput5

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbOtpr==1

176

 

Продолжение табл. 4.9

 

 

Свойство

selectOutput5

 

 

Условие 0

entity.numAbOtpr==1

 

 

Действие при

отАб1++;

выходе 0

get_Main().кПрСп12=отАб1/get_Main().

 

отпр12;

 

get_Main().КПрСп12.setText(get_Main().

 

кПрСп12, true);

 

 

Условие 1

entity.numAbOtpr==2

 

 

Условие 2

entity.numAbOtpr==3

 

 

Действие при

отАб3++;

выходе 2

get_Main().кПрСп32=отАб3/get_Main().

 

отпр32;

 

get_Main().КПрСп32.setText(get_Main().

 

кПрСп32, true);

 

 

Условие 3

entity.numAbOtpr==4

 

 

Действие при

отАб4++;

выходе 3

get_Main().кПрСп42=отАб4/get_Main().

 

отпр42;

 

get_Main().КПрСп42.setText(get_Main().

 

кПрСп42, true);

 

 

Свойство

selectOutput6

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbOtpr==5

 

 

Действие при

отАб5++;

выходе 0

get_Main().кПрСп52=отАб5/get_Main().

 

отпр52;

 

get_Main().КПрСп52.setText(get_Main().

 

кПрСп52, true);

 

 

Условие 1

entity.numAbOtpr==6

 

 

Действие при

отАб6++;

выходе 1

get_Main().кПрСп62=отАб6/get_Main().

 

отпр62;

 

get_Main().КПрСп62.setText(get_Main().

 

кПрСп62, true);

 

 

177

 

Продолжение табл. 4.9

 

 

 

Абонент3

 

 

numAbonent

3

 

 

Свойство

selectOutput1

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==1)

 

 

Действие при

отпрАб1++;

выходе 0

get_Main().отпр31=отпрАб1;

 

 

Условие 1

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==2)

 

 

Действие при

отпрАб2++;

выходе 2

get_Main().отпр32=отпрАб2;

 

 

Условие 2

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==3)

 

 

Условие 3

entity.numAbOtpr==entity.numAbPol

 

 

Свойство

selectOutput2

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbPol==4

 

 

Действие при

отпрАб4++;

выходе 0

get_Main().отпр34=отпрАб4;

 

 

Условие 1

entity.numAbPol==5

 

 

Действие при

отпрАб5++;

выходе 1

get_Main().отпр35=отпрАб5;

 

 

Условие 2

entity.numAbPol==6

 

 

Действие при

отпрАб6++;

выходе 2

get_Main().отпр36=отпрАб6;

 

 

Свойство

selectOutput5

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbOtpr==1

178

 

Продолжение табл. 4.9

 

 

Свойство

selectOutput5

 

 

Условие 0

entity.numAbOtpr==1

 

 

Действие при

отАб1++;

выходе 0

get_Main().кПрСп13=отАб1/get_Main().

 

отпр13;

 

get_Main().КПрСп13.setText(get_Main().

 

кПрСп13, true);

 

 

Условие 1

entity.numAbOtpr==2

 

 

Действие при

отАб2++;

выходе 1

get_Main().кПрСп23=отАб2/get_Main().

 

отпр23;

 

get_Main().КПрСп23.setText(get_Main().

 

кПрСп23, true);

 

 

Условие 2

entity.numAbOtpr==3

 

 

Условие 3

entity.numAbOtpr==4

 

 

Действие при

отАб4++;

выходе 3

get_Main().кПрСп43=отАб4/get_Main().

 

отпр43;

 

get_Main().КПрСп43.setText(get_Main().

 

кПрСп43, true);

 

 

Свойство

selectOutput6

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbOtpr==5

 

 

Действие при

отАб5++;

выходе 0

get_Main().кПрСп53=отАб5/get_Main().

 

отпр53;

 

get_Main().КПрСп53.setText(get_Main().

 

кПрСп53, true);

 

 

Условие 1

entity.numAbOtpr==6

 

 

Действие при

отАб6++;

выходе 1

get_Main().кПрСп63=отАб6/get_Main().

 

отпр63;

 

get_Main().КПрСп63.setText(get_Main().

 

кПрСп63, true);

 

 

179

 

Продолжение табл. 4.9

 

 

 

Абонент4

 

 

numAbonent

4

 

 

Свойство

selectOutput1

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==1)

 

 

Действие при

отпрАб1++;

выходе 0

get_Main().отпр41=отпрАб1;

 

 

Условие 1

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==2)

 

 

Действие при

отпрАб2++;

выходе 2

get_Main().отпр42=отпрАб2;

 

 

Условие 2

(entity.numAbOtpr!=

 

entity.numAbPol)&&(entity.numAbPol==3)

 

 

Действие при

отпрАб3++;

выходе 2

get_Main().отпр43=отпрАб3;

 

 

Условие 3

entity.numAbOtpr==entity.numAbPol

 

 

Свойство

selectOutput2

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbPol==4

 

 

Условие 1

entity.numAbPol==5

 

 

Действие при

отпрАб5++;

выходе 1

get_Main().отпр45=отпрАб5;

 

 

Условие 2

entity.numAbPol==6

 

 

Действие при

отпрАб6++;

выходе 2

get_Main().отпр46=отпрАб6;

 

 

Свойство

selectOutput5

 

 

Класс заявки:

Message

Использовать:

Условия

 

 

Условие 0

entity.numAbOtpr==1

180