Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Compyuternoe_modelirovanie_v_AnyLogic_7_Boev_VD.pdf
Скачиваний:
225
Добавлен:
12.02.2018
Размер:
8.72 Mб
Скачать

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

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

Действия При выходе:

основной_канал_работает = true;

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

Все необходимое для построения модели сети из активных объ-

ектов Абонент, Канал и Маршрутизатор нами создано. Присту-

пим к построению модели сети.

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

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.

159

Рис. 4.18. Элементы модели функционирования сети связи

160

Таблица 4.9

 

Абонент2

 

 

Свойство

selectOutput

 

 

Тип заявки:

Message

Выход true

При выполнении условия

выбирается

Условие

entity.numAbPol == numAbonent

numAbonent

2

Свойство

selectOutput1

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==1

Действия

отпрАб1++;

При выходе 1

main.отпр21=отпрАб1;

Условие 2

entity.numAbPol==2

Условие 3

entity.numAbPol==3

Действия

отпрАб3++;

При выходе 3

main.отпр23=отпрАб3;

Условие 4

entity.numAbPol==4

Действия

отпрАб4++;

При выходе 4

main.отпр24=отпрАб4;

Свойство

selectOutput2

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==5

Действия

отпрАб5++;

При выходе 1

main.отпр25=отпрАб5;

Условие 2

entity.numAbPol==6

Действия

отпрАб6++;

При выходе 2

main.отпр26=отпрАб6;

Свойство

selectOutput5

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==1

161

 

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

 

 

Действия

отАб1++;

При выходе 1

main.кПрСп12=отАб1/main.отпр12;

 

main.КПрСп12.setText(main.кПрСп12,

 

true);

Условие 2

entity.numAbOtpr==2

Условие 3

entity.numAbOtpr==3

Действия

отАб3++;

При выходе 3

main.кПрСп32=отАб3/main.отпр32;

 

main.КПрСп32.setText(main.кПрСп32,

 

true);

Условие 4

entity.numAbOtpr==4

Действия

отАб4++;

При выходе 4

main.кПрСп42=отАб4/main.отпр42;

 

main.КПрСп42.setText(main.кПрСп42,

 

true);

Свойство

selectOutput6

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==5

Действия

отАб5++;

При выходе 1

main.кПрСп52=отАб5/main.отпр52;

 

main.КПрСп52.setText(main.кПрСп52,

 

true);

Условие 2

entity.numAbOtpr==6

Действия

отАб6++;

При выходе 2

main.кПрСп62=отАб6/main.отпр62;

 

main.КПрСп62.setText(main.кПрСп62,

 

true);

 

Абонент3

 

 

Свойство

selectOutput

 

 

Тип заявки:

Message

Выход true

При выполнении условия

выбирается

Условие

entity.numAbPol == numAbonent

numAbonent

3

162

 

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

 

 

Свойство

selectOutput1

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==1

Действия

отпрАб1++;

При выходе 1

main.отпр31=отпрАб1;

Условие 2

entity.numAbPol==2

Действия

отпрАб2++;

При выходе 3

main.отпр32=отпрАб2;

Условие 3

entity.numAbPol==3

Условие 4

entity.numAbOtpr==4

Действия

отпрАб4++;

При выходе 4

main.отпр34=отпрАб4;

Свойство

selectOutput2

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==5

Действия

отпрАб5++;

При выходе 1

main.отпр35=отпрАб5;

Условие 2

entity.numAbPol==6

Действия

отпрАб6++;

При выходе 2

main.отпр36=отпрАб6;

Свойство

selectOutput5

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==1

Свойство

selectOutput5

 

 

Действия

отАб1++;

При выходе 1

main.кПрСп13=отАб1/main.отпр13;

 

main.КПрСп13.setText(main.кПрСп13,

 

true);

Условие 2

entity.numAbOtpr==2

163

 

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

 

 

Действия

отАб2++;

При выходе 2

main.кПрСп23=отАб2/main.отпр23;

 

main.КПрСп23.setText(main.кПрСп23,

 

true);

Условие 3

entity.numAbOtpr==3

Условие 4

entity.numAbOtpr==4

Действия

отАб4++;

При выходе 4

main.кПрСп43=отАб4/main.отпр43;

 

main.КПрСп43.setText(main.кПрСп43,

 

true);

Свойство

selectOutput6

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==5

Действия

отАб5++;

При выходе 1

main.кПрСп53=отАб5/main.отпр53;

 

main.КПрСп53.setText(main.кПрСп53,

 

true);

Условие 2

entity.numAbOtpr==6

Действия

отАб6++;

При выходе 2

main.кПрСп63=отАб6/main.отпр63;

 

main.КПрСп63.setText(main.кПрСп63,

 

true);

 

Абонент4

 

 

Свойство

selectOutput

 

 

Тип заявки:

Message

Выход true

При выполнении условия

выбирается

Условие

entity.numAbPol == numAbonent

numAbonent

4

Свойство

selectOutput1

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==1

Действия

отпрАб1++;

При выходе 1

main.отпр41=отпрАб1;

164

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

Условие 2

entity.numAbPol==2

Действия

отпрАб2++;

При выходе 3

main.отпр42=отпрАб2;

Условие 3

entity.numAbPol==3

Действия

отпрАб3++;

При выходе 3

main.отпр43=отпрАб3;

Условие 4

entity.numAbOtpr==4

Свойство

selectOutput2

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==5

Действия

отпрАб5++;

При выходе 1

main.отпр45=отпрАб5;

Условие 2

entity.numAbPol==6

Действия

отпрАб6++;

При выходе 2

main.отпр46=отпрАб6;

Свойство

selectOutput5

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==1

Действия

отАб1++;

При выходе 1

main.кПрСп14=отАб1/main.

 

отпр14;

 

main.КПрСп14.setText(main.кПрСп14,

 

true);

Условие 2

entity.numAbOtpr==2

Действия

отАб2++;

При выходе 2

main.кПрСп24=отАб2/main.отпр24;

 

main.КПрСп24.setText(main.кПрСп24,

 

true);

Условие 3

entity.numAbOtpr==3

Действия

отАб3++;

При выходе 3

main.кПрСп34=отАб3/main.отпр34;

 

main.КПрСп34.setText(main.кПрСп34,

 

true);

165

 

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

 

 

Условие 4

entity.numAbOtpr==4

Свойство

selectOutput6

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==5

Действия

отАб5++;

При выходе 1

main.кПрСп54=отАб5/main.отпр54;

 

main.КПрСп54.setText(main.кПрСп54,

 

true);

Условие 2

entity.numAbOtpr==6

Действия

отАб6++;

При выходе 2

main.кПрСп64=отАб6/main.отпр64;

 

main.КПрСп64.setText(main.кПрСп64,

 

true);

 

Абонент5

 

 

Свойство

selectOutput

 

 

Тип заявки:

Message

Выход true

При выполнении условия

выбирается

Условие

entity.numAbPol == numAbonent

numAbonent

5

Свойство

selectOutput1

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==1

Действия

отпрАб1++;

При выходе 1

main.отпр51=отпрАб1;

Условие 2

entity.numAbPol==2

Действия

отпрАб2++;

При выходе2

main.отпр52=отпрАб2;

Условие 3

entity.numAbPol==3

Действия

отпрАб3++;

При выходе 3

main.отпр53=отпрАб3;

Условие 4

entity.numAbOtpr==4

166

 

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

 

 

Действия

отпрАб4++;

При выходе 4

main.отпр54=отпрАб4;

Свойство

selectOutput2

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==5

Условие 2

entity.numAbPol==6

Действия

отпрАб6++;

При выходе 2

main.отпр56=отпрАб6;

Свойство

selectOutput5

 

 

Тип заявки:

Message

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

Условия

Свойство

selectOutput5

 

 

Условие 1

entity.numAbOtpr==1

Действия

отАб1++;

При выходе 1

main.кПрСп15=отАб1/main.отпр15;

 

main.КПрСп15.setText(main.кПрСп15,

 

true);

Условие 2

entity.numAbOtpr==2

Действия

отАб2++;

При выходе 2

main.кПрСп25=отАб2/main.

 

отпр25;

 

main.КПрСп25.setText(main.кПрСп25,

 

true);

Условие 3

entity.numAbOtpr==3

Действия

отАб3++;

При выходе 3

main.кПрСп35=отАб3/main.отпр35;

 

main.КПрСп35.setText(main.кПрСп35,

 

true);

Условие 4

entity.numAbOtpr==4

Действия

отАб4++;

При выходе 4

main.кПрСп45=отАб4/main.отпр45;

 

main.КПрСп45.setText(main.кПрСп45,

 

true);

167

 

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

 

 

Свойство

selectOutput6

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==5

Условие 2

entity.numAbOtpr==6

Действия

отАб6++;

При выходе 2

main.кПрСп65=отАб6/main.отпр65;

 

main.КПрСп65.setText(main.кПрСп65,

 

true);

 

Абонент6

 

 

Свойство

selectOutput

 

 

Тип заявки:

Message

Выход true

При выполнении условия

выбирается

Условие

entity.numAbPol == numAbonent

numAbonent

6

 

 

Свойство

selectOutput1

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbPol==1

Действия

отпрАб1++;

При выходе 1

main.отпр61=отпрАб1;

Условие 2

entity.numAbPol==2

Действия

отпрАб2++;

При выходе 2

main.отпр62=отпрАб2;

Условие 3

entity.numAbPol==3

Действия

отпрАб3++;

При выходе 3

main.отпр63=отпрАб3;

Условие 4

entity.numAbPol==4

Действия

отпрАб4++;

При выходе 4

main.отпр64=отпрАб4;

Свойство

selectOutput2

 

 

Условие 1

entity.numAbPol==5

168

Окончание табл. 4.9

Действия

отпрАб5++;

При выходе 1

main.отпр65=отпрАб5;

Условие 1

entity.numAbPol==6

Свойство

selectOutput5

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==1

Действия

отАб1++;

При выходе 1

main.кПрСп16=отАб1/main.отпр16;

 

main.КПрСп16.setText(main.кПрСп16,

 

true);

Условие 2

entity.numAbOtpr==2

Действия

отАб2++;

При выходе 2

main.кПрСп26=отАб2/main.отпр26;

 

main.КПрСп26.setText(main.кПрСп26,

 

true);

Условие 3

entity.numAbOtpr==3

Действия

отАб3++;

При выходе 3

main.кПрСп35=отАб3/main.отпр35;

 

main.КПрСп35.setText(main.кПрСп35,

 

true);

Условие 4

entity.numAbOtpr==4

Действия

отАб3++;

При выходе 4

main.кПрСп36=отАб3/main.отпр36;

 

main.КПрСп36.setText(main.кПрСп36,

 

true);

Свойство

selectOutput6

 

 

Тип заявки:

Message

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

Условия

Условие 1

entity.numAbOtpr==5

Действия

отАб5++;

При выходе 1

main.кПрСп56=отАб5/main.отпр56;

 

main.КПрСп56.setText(main.кПрСп56,

 

true);

Условие 2

entity.numAbOtpr==6

169

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

1.Создайте ещё тип агента Маршрутизатор1.

2.Откройте объект Маршрутизатор.

3.Выделите все объекты и скопируйте их.

4.Вставьте на Маршрутизатор1 скопированные объекты.

5.Выделите элемент exit и в поле Действия При выходе за-

мените имеющийся там код следующим кодом: int i;

i=entity.numAbPol;

{

switch (i) {

case 1:if (emkBuferNapr1tekEmkNapr1>=entity.dlina)

{enter1.take(entity); break;}

else {enter.take(entity); break;}

case 2:if (emkBuferNapr2tekEmkNapr2>=entity.dlina) {

enter2.take(entity); break;}

else {enter.take(entity); break;}

case 3:if (emkBuferNapr3tekEmkNapr3>=entity.dlina) {

enter3.take(entity); break;}

else {enter.take(entity); break;}

case 4:if (emkBuferNapr4tekEmkNapr4>=entity.dlina) {

enter4.take(entity); break;}

else {enter.take(entity); break;}

}

}

6. Теперь Маршрутизатор1 настроен так, что сообщения от абонентов 1…4 будут направляться на его выходы 1…4.

170