
мод сис / V.Boev-GPSSvsAnyLogic
.pdf
Рис. 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