 
        
        5 Обощенная схема моделирующего алгоритма
Обобщенная схема моделирующего алгоритма проведения одной имитации приведена на рисунке 3. При разработке схемы моделирующего алгоритма использован «принцип ∆t». Шаг моделирования ∆t равен 1 секунде.







Рисунок 3 – Обобщенная схема моделирующего алгоритма проведения одной имитации
Обобщенная схема проведения k имитаций приведена на рисунке 4.

Рисунок 4 – Обобщенная схема проведения k имитаций
Детальная схема моделирующего алгоритма проведения одной имитации приведена в приложении 1. В приложении 1 также приведена детальная схема моделирующего алгоритма проведения k имитаций.
6 Особенности программирования
6.1 Среда разработка
Разработанный моделирующий алгоритм можно реализовать с помощью разных языков программирования, например, C++, Pascal, Delphi, MathCad.
Средой разработки для решения поставленной задачи был выбран пакет MathCad 2001 Pro от компании MathSoft Inc. Выбор данного пакета основан на большом количестве его достоинств, среди которых можно отметить следующие:
- все вычисления ведутся в традиционных математических нотациях; 
- имеет большое количество встроенных функций; 
- все расчеты проводятся в режиме реального времени и не требуют от пользователя никаких дополнительных команд. 
Реализацией разработанного моделирующего алгоритма проведения одной имитации является написанная в среде MathCad функция One_Imitation, которая моделирует процессрегулирования движения машин на перекрестке в течение получаса. Результатом вызова данной функции являются:
- количество машин, проследовавших в направлении улицы A; 
- количество машин, проследовавших в направлении улицы B; 
- количество машин, проследовавших в направлении улицы C; 
- количество машин, проследовавших в направлении улицы D; 
- средняя длина очереди машин, движущихся по направлению A-D; 
- средняя длина очереди машин, движущихся по направлению A-C; 
- средняя длина очереди машин, движущихся по направлению A-B; 
- средняя длина очереди машин, движущихся по направлению C-A; 
- средняя длина очереди машин, движущихся по направлению C-B; 
- максимальная длина очереди машин, движущихся по направлению A-D; 
- максимальная длина очереди машин, движущихся по направлению A-C; 
- максимальная длина очереди машин, движущихся по направлению A-B; 
- максимальная длина очереди машин, движущихся по направлению C-A; 
- максимальная длина очереди машин, движущихся по направлению C-B. 
Реализацией разработанного моделирующего алгоритма проведения k имитаций является написанная в среде MathCad функция IMITATION, которая моделирует процессрегулирования движения машин на перекрестке в течение получасаk раз. Результатом вызова данной функции являются осредненные значения вышеуказанных величин.
Листинг функций One_ImitationиIMITATIONприведен в приложении 2.
6.2 Переменные имитационной модели
При написании функций One_ImitationиIMITATIONбыли приняты следующие переменные:
| time_A | — | момент времени появления машины со стороны улицы A; | |
| time_C | — | момент времени появления машины со стороны улицы C; | |
| time_off | — | момент переключения светофора на сигнал, запрещающий движение; | |
| probability | — | переменная, служащая для вычисления вероятности движения автомобиля в определенном направлении; | |
| buf_A_D | — | количество машин, движущихся со стороны улицы A в направлении улицы D; | |
| buf_A_C | — | количество машин, движущихся со стороны улицы A в направлении улицы C; | |
| buf_A_B | — | количество машин, движущихся со стороны улицы A в направлении улицы B; | |
| buf_C_A | — | количество машин, движущихся со стороны улицы C в направлении улицы A; | |
| buf_C_B | — | количество машин, движущихся со стороны улицы C в направлении улицы B; | |
| car_A_D | — | состояние полосы движения A-D: | |
| 
 | 
 | 
 | - 1 – полоса свободна, 0 – движение по полосе завершается, 1 – движение по полосе будет завершено через 1 секунду; | 
| car_A_C | — | состояние полосы движения A-C: | |
| 
 | 
 | 
 | - 1 – полоса свободна, 0 – движение по полосе завершается, 1 – движение по полосе будет завершено через 1 секунду; | 
| car_A_B | — | состояние полосы движения A-B: | |
| 
 | 
 | 
 | - 1 – полоса свободна, 0 – движение по полосе завершается, 1 – движение по полосе будет завершено через 1 секунду; | 
| car_C_A | — | состояние полосы движения C-A: | |
| 
 | 
 | 
 | - 1 – полоса свободна, 0 – движение по полосе завершается, 1 – движение по полосе будет завершено через 1 секунду; | 
| car_C_B | — | состояние полосы движения C-B: | |
| 
 | 
 | 
 | - 1 – полоса свободна, 0 – движение по полосе завершается, 1 – движение по полосе будет завершено через 1 секунду; | 
| time_on | — | момент переключения светофора на сигнал, разрешающий движение; | |
| count_A | — | количество машин, преодолевших перекресток в сторону улицы A; | |
| count_B | — | количество машин, преодолевших перекресток в сторону улицы B; | |
| count_C | — | количество машин, преодолевших перекресток в сторону улицы C; | |
| count_D | — | количество машин, преодолевших перекресток в сторону улицы D; | |
| sred_A_D | — | средняя длина очереди машин, движущихся по направлению A-D; | |
| sred_A_C | — | средняя длина очереди машин, движущихся по направлению A-C; | |
| sred_A_B | — | средняя длина очереди машин, движущихся по направлению A-B; | |
| sred_C_A | — | средняя длина очереди машин, движущихся по направлению C-A; | |
| sred_C_B | — | средняя длина очереди машин, движущихся по направлению C-B; | |
| count_switch | — | количество переключений светофора с запрещающего на разрешающий сигнал; | |
| max_A_D | — | максимальная длина очереди машин, движущихся по направлению A-D; | |
| max_A_C | — | максимальная длина очереди машин, движущихся по направлению A-C; | |
| max_A_B | — | максимальная длина очереди машин, движущихся по направлению A-B; | |
| max_C_A | — | максимальная длина очереди машин, движущихся по направлению C-A; | |
| max_C_B | — | максимальная длина очереди машин, движущихся по направлению C-B; | |
| time | — | текущее время моделирования; | |
| k | — | количество проводимых имитаций; | |
| COUNT_A | — | количество машин, проследовавших в сторону улицы A, полученное в результате проведения k имитаций; | |
| COUNT_B | — | количество машин, проследовавших в сторону улицы B, полученное в результате проведения k имитаций; | |
| COUNT_C | — | количество машин, проследовавших в сторону улицы C, полученное в результате проведения k имитаций; | |
| COUNT_D | — | количество машин, проследовавших в сторону улицы D, полученное в результате проведения k имитаций; | |
| SRED_A_D | — | средняя длина очереди машин, движущихся по направлению A-D, полученная в результате проведения k имитаций; | |
| SRED_A_C | — | средняя длина очереди машин, движущихся по направлению A-C, полученная в результате проведения k имитаций; | |
| SRED_A_B | — | средняя длина очереди машин, движущихся по направлению A-B, полученная в результате проведения k имитаций; | |
| SRED_C_A | — | средняя длина очереди машин, движущихся по направлению C-A, полученная в результате проведения k имитаций; | |
| SRED_C_B | — | средняя длина очереди машин, движущихся по направлению C-B, полученная в результате проведения k имитаций; | |
| MAX_A_D | — | максимальная длина очереди машин, движущихся по направлению A-D, полученная в результате проведения k имитаций; | |
| MAX_A_C | — | максимальная длина очереди машин, движущихся по направлению A-C, полученная в результате проведения k имитаций; | |
| MAX_A_B | — | максимальная длина очереди машин, движущихся по направлению A-B, полученная в результате проведения k имитаций; | |
| MAX_C_A | — | максимальная длина очереди машин, движущихся по направлению C-A, полученная в результате проведения k имитаций; | |
| MAX_C_B | — | максимальная длина очереди машин, движущихся по направлению C-B, полученная в результате проведения k имитаций; | |
| i | — | переменная, служащая для организации цикла; | |
| Res_Of_One_Imitation | — | переменная, служащая для сохранения результатов моделирования процесса регулирования движения машин на перекрестке в течение получаса. | |
Входными параметрами для функции One_Imitationявляются переменные time_A, time_C, time_off, а выходными – переменныеcount_A, count_B, count_C, count_D, max_A_D, max_A_C, max_A_B, max_C_A, max_C_B, а также значения средних длин очередей для каждого направления. ФункцияIMITATIONне имеет в явном виде входных параметров, однако, количество проводимых имитаций k задается в теле функции. Выходными параметрами функцииIMITATIONявляются переменныеCOUNT_A, COUNT_B, COUNT_C, COUNT_D, SRED_A_D, SRED_A_C, SRED_A_B, SRED_C_A, SRED_C_B, MAX_A_D, MAX_A_C, MAX_A_B, MAX_C_A, MAX_C_B.
