Общее описание - Смысл программыЗдесь левая колонка – это номера строк модели: произвольные положительные числа в порядке возрастания. Строки нумеруются не: 1, 2, 3 и т.д. Удобнее всего нумеровать их так, как показано: 10, 20, 30 и т.д. Это позволяет легко вставлять новую строку между любыми двумя уже введенными строками и присваивать ей номер, например 15, 25, 26 и т.п. В системе GPSS World можно не нумеровать строки. Следующие две колонки – названия операторов и поле переменных. Рассмотрим, какие же операторы входят в модель, и для чего они предназначены. Блок GENERATE порождает транзакты (клиентов) через каждые 20 ± 10 единиц времени (в данном примере считаем единицу времени минутой). Число 20 в первом операнде (в поле A) указывает интервал модельного времени, через который генерируются транзакты. В поле B записано число 10, которое задает временные границы интервала, т.е. время прихода очередного клиента получается как случайное число в промежутке от 20 – 10 = 10 до 20 + 10 = 30. Таким образом, первый блок модели выдает через случайные интервалы времени транзакты, которые изображают приходящих в парикмахерскую клиентов. Блок SEIZE 1, в который поступают транзакты из блока GENERATE, выполняет операцию занятия транзактами устройства номер 1. В нашей модели устройство соответствует креслу парикмахера или самому парикмахеру. Транзакты, появляющиеся в блоке GENERATE в моменты, когда устройство занято, остаются в этом блоке в очереди к устройству. Блок ADVANCE 19, 5 задерживает транзакт, который занял устройство, на 19 ± 5 единиц времени, моделируя тем самым задержку клиента на время его обслуживания. По истечении этого времени транзакт переходит в блок RELEASE 1, в котором выполняется освобождение устройства номер 1, и далее поступает в блок TERMINATE, в котором транзакты уничтожаются. Конечно, это не означает, что клиенты после стрижки тоже уничтожаются, просто клиент уходит из системы, значит, транзакт, моделирующий его, больше нам не нужен. Мы уничтожаем транзакт, чтобы не нужно было описывать его дальнейшее движение и чтобы освободить занимаемую им память компьютера. В тот момент, когда один транзакт освобождает устройство, другой транзакт, стоящий в очереди, занимает это устройство. Оба действия выполняются в один и тот же момент модельного времени. Когда один транзакт находится в блоке ADVANCE, другие транзакты время от времени появляются в блоке GENERATE и становятся в очередь к устройству. Следовательно, в модели одновременно в разных ее местах движутся несколько транзактов, выполняя те или иные операции, и могут влиять друг на друга и на другие объекты модели. Здесь мы наблюдаем, параллельное выполнение нескольких процессов в одной программе, в которой и заключается существенное отличие языка GPSS от обычных алгоритмических языков, языков программирования. Это отличие делает язык имитационного моделирования GPSS мощным средством описания реальных систем, так как в реальных системах разные процессы в разных частях системы развиваются одновременно и при этом взаимодействуют между собой.
|
