Опубликован: 16.11.2010 | Уровень: специалист | Доступ: платный
Лекция 9:

Разработка имитационных моделей в виде приложений с интерфейсом

8.1.5. Блок SEEK

Блок SEEK устанавливает позицию текущей строки потока данных. Формат блока:

SEEK               A,[B]

Операнд А - новая позиция текущей строки.

Операнд В - номер потока данных, по умолчанию равен 1.

Позиция текущей строки - это односвязный индекс, указывающий позицию следующей строки, которую необходимо считать или записать. Она не может быть меньше единицы. При попытке установить ее меньше единицы позиция текущей строки устанавливается равной единице.

31 - код ошибки: файл не был открыт.

Пример:

SEEK    (Stroka+P1),(Potok+3)

В этом примере, когда транзакт входит в блок SEEK, операнд А вычисляется, округляется и используется как номер потока данных. Операнд В также вычисляется, округляется и используется как номер потока данных.

8.2. Разработка модели в GPSS World

8.2.1. Постановка задачи

На склад, имеющий 10 пунктов выгрузки, прибывают транспорта с материальными средствами (МС). В транспорте могут быть автомобили различной грузоподъемности. Всего количество типов автомобилей, отличающихся грузоподъемностью, которое может быть в транспорте, распределено по нормальному закону с математическим ожиданием 6 автомобилей и стандартным отклонением 1 автомобиль. Количество автомобилей одного типа в транспорте также распределено по нормальному закону с математическим ожиданием 11 автомобилей и стандартным отклонением 2 автомобиля. Интервалы времени прибытия транспортов распределены по экспоненциальному закону со средним значением 9 часов. Время разгрузки автомобиля зависит от его типа и подчиняется экспоненциальному закону. Среднее время выгрузки МС приведено в табл. 8.1. После выгрузки из тех же автомобилей вновь формируется транспорт.

Построить модель функционирования пунктов выгрузки в течение трех суток с целью определения среднего времени выгрузки транспортов и коэффициентов загрузки пунктов выгрузки при рациональной организации работ на складе.

Таблица 8.1. Среднее время выгрузки МС из автомобилей различных типов
Характеристики Тип автомобиля
1 2 3 4 5 6 7 8 9 10
Среднее время выгрузки, мин 8 10 12 7 6 9 11 5 13 10

Для имитации транспорта в целом и одного автомобиля следует использовать транзакты. Пункты выгрузки в модели будут представлять ОКУ.

8.2.2. Программа модели

; Модель разгрузки транспортов
; Задание исходных данных
IntTp	EQU		720	; Средний интервал поступления транспортов
MOTip	EQU		6	; Матожидание типов автомобилей в транспорте
SOTip	EQU		1	; Стандартное отклонение типов автомобилей
MatA	EQU		11	; Матожидание автомобилей одного типа
SOtkA	EQU		2	; Стандартное отклонение автомобилей одного типа
KolPun	EQU		10	; Количество пунктов выгрузки
VrMod	EQU		1440	; Время моделирования
;	Определение функций и булевых переменных
SrVrA	FUNCTION	P3,D10	; Среднее время выгрузки
1,8/2,10/3,12/4,7/5,6/6,9/7,11/8,5/9,13/10,10
TipAvt	FUNCTION	RN64,C2	; Число типов автомобилей
0,1/1,7
; Сегмент имитации поступления и обработки сообщений
	GENERATE	(Exponential(33,0,IntTp)) ; Источник транспортов
	SAVEVALUE	1,0	; Обнуление счетчика
	ASSIGN		5,AC1	; Абсолютное модельное время входа транспорта
	ASSIGN		2,(INT(Normal(77,MOTip,SOTip)-1))	;Число типов
	SPLIT		*2	; Транзактов - по числу типов автомобилей
	ASSIGN		2+,1	; Запомнить число типов автомобилей
	ASSIGN		4,(INT(Normal(55,MatA,SOtkA)-1));Автомобили
	SPLIT		*4	; Транзактов - по числу автомобилей
	ASSIGN		4+,1	; Запомнить число автомобилей одного типа
	TEST L		X1,KolPun,Met1 ; Есть свободные пункты выгрузки?
	SAVEVALUE	1+,1
Met2	SELECT MIN	3,1,KolPun,,FR	; Выбор пункта с min загрузкой
	TEST NE		P3,0,Met1	; Есть пункты с min загрузкой?
	QUEUE		P3	; Встать в очередь
	SEIZE		P3	; Занять пункт выгрузки
	DEPART		P3	; Покинуть очередь
	ADVANCE		(Exponential(73,0,FN$SrVrA))	; Выгрузка
	RELEASE		P3	; Освободить АРМ
	UNLINK		PunSb,Met2,1	; Автомобиль на выгрузку
	ASSEMBLE	*4	; Собрать автомобили одного типа
	ASSEMBLE	*2	; Собрать автомобили всех типов
	ASSIGN		6,AC1	; Время выхода транспорта
	SAVEVALUE	VrVigS+,(P6-P5) ; Суммарное время выгрузки
VigTr	TERMINATE	; Выгруженные транспорта
Met1	LINK	PunSb,FIFO	; Автомобили, ожидающие выгрузки
; Сегмент задания времени моделирования
	GENERATE	VrMod TEST	NE	N$VigTr,0,Met3
	SAVEVALUE	VrVig,(X$VrVigS/N$VigTr)	; Среднее время выгрузки
Met3	TERMINATE	1

Замысел построения модели заключается в следующем. Блок GENERATE имитирует поступление транзактов. Один транзакт - один транспорт. Затем случайным образом определяется количество типов автомобилей в транспорте и заносится в параметр 2 транзакта. Исходный (порождающий) транзакт - транспорт копируется блоком SPLIT и результат копирования - число автомобилей различных типов в прибывшем транспорте копируется вторым блоком SPLIT. Результат копирования - число транзактов, равное числу автомобилей в транспорте. Число автомобилей одного типа заносится в параметр 4 всех транзактов, имитирующих автомобили данного типа.

Далее первые десять транзактов-автомобилей (по числу пунктов выгрузки) поступают на блок SELECT, остальные - в список пользователя с именем PunSb. По мере освобождения пунктов выгрузки из списка пользователя выводятся транзакты и направляются на блок SELECT с меткой Met2. Результат работы блока SELECT - номер пункта выгрузки с минимальным коэффициентом загрузки заносится в параметр 3 вошедшего транзакта. Если результатом поиска блока SELECT является P3=0, т. е. номер нужного блока не найден, то транзакт блоком TEST снова отправляется в список пользователя. При успешном поиске транзакт занимает соответствующий пункт выгрузки.

Разгруженные автомобили первым блоком ASSEMBLE сначала собираются по каждому типу автомобилей отдельно, а вторым блоком ASSEMBLE - по всем типам.

При входе транзакта-транспорта в модель и выходе из нее в параметры 5 и 6 записывается соответствующее модельное время. Оно используется для расчета времени разгрузки транспорта. Суммарное время разгрузки всех транспортов накапливается в ячейке VrVigS.

Для работы с GPSS-моделью можно создать в какой-либо другой системе программирования, например, Delphi, интерфейс, который должен позволять осуществлять ввод исходных данных и вывод результатов моделирования. Например, в приведенной программе модели разгрузки транспортов вводить посредством интерфейса характеристики, для ввода которых используется команда EQU, а также среднее время выгрузки из одного автомобиля. При этом, естественно, необходимо разработать процедуры, формирующие в Delphi соответствующие строки программы GPSS-модели. Сама GPSS-программа также потребует модификации, для проведения которой нужно будет использовать команду INCLUDE и рассмотренные в п. 8.1 блоки OPEN, CLOSE, READ, WRITE для работы с текстовыми объектами и потоками данных.

8.3. Создание стартовой формы приложения - имитационной модели

Работа над новым проектом начинается с создания стартовой формы - окна, которое появляется при запуске приложения.

При запуске Delphi автоматически создаётся новый проект. Вид экрана после запуска Delphi показан на рис. 8.1. Можно использовать этот проект для создания нового приложения. По умолчанию этот проект имеет название Project1.

Стартовая форма создается путем изменения свойств формы Forml (см. рис. 8.1) .Свойства формы определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки. Свойства перечислены на вкладке Properties (свойства) окна Object Inspector.В левой колонке находятся имена свойств, а в правой - их значения.

Сначала надо изменить значение свойства Caption ( Заголовок ) - заменить Forml на Модель разгрузки транспортов. Для этого щелкнуть мышью в поле Caption.В результате этого в правой колонке, где находится текущее значение свойства - текст Forml, появляется курсор (рис. 8.2.).

Используя клавишу <Backspase>, надо удалить Forml и ввести Модель разгрузки транспортов.

Аналогичным образом можно установить значения свойств Height и Width, которые определяют высоту и ширину формы. Этим свойствам надо присвоить значения 530 и 715. Размер формы и элементов управления, а также положение формы на экране и элементов управления на поверхности формы задаются в пикселях, точках экрана.

При выборе некоторых свойств, например Color (цвет), которое определяет цвет фона формы, после значения свойств выводится значок выпадающего списка. В результате щелчка на нем появляется список допустимых значений свойства, из которого можно выбрать нужное значение (рис. 8.3).

При разработке формы Form1 имитационной модели оставим свойство Color неизменным.

Вид экрана после запуска Delphi

увеличить изображение
Рис. 8.1. Вид экрана после запуска Delphi
Установка значения свойства Caption посредством ввода

Рис. 8.2. Установка значения свойства Caption посредством ввода
Установка значения свойства выбором из списка

Рис. 8.3. Установка значения свойства выбором из списка

В поле значения свойства Font расположена командная кнопка с тремя точками, при нажатии на которую появляется стандартное диалоговое окно Windows выбора шрифта и его свойств (рис. 8.4). Для рассматриваемого примера выбран шрифт Times New Roman размером 10.

Большинство свойств определяют внешний вид формы. Свойство Name определяет имя формы, которое используется в программе для управления формой.

Ниже в табл. 8.2 приведены измененные свойства формы разрабатываемой имитационной модели. Остальные свойства формы оставлены без изменения и в таблице не приведены.

Пример раскрытого списка уточняющих свойств свойства Font

Рис. 8.4. Пример раскрытого списка уточняющих свойств свойства Font
Таблица 8.2. Изменённые свойства формы имитационной модели
Свойство Обозначение Значение
Имя формы Name Form1
Заголовок Caption Модель разгрузки транспортов
Высота Height 530
Ширина Width 715
Шрифт Font. Name Times New Roman
Размер шрифта Font. Size 10

Таблица содержит значения вложенных свойств: Name и Size. Перед именем вложенного свойства указывается имя свойства, его вмещающего. В данном случае имя вмещающего свойства Font. После установки значений свойств, перечисленных в табл. 8.2, форма должна выглядеть так, как изображено на рис. 8.5.

Создайте папки D:\ModRTr\Интерфей с и в последней сохраните проект. Чтобы сохранить проект, надо выполнить команду File/ Save Project As. Откроется окно Save Unit As. Выберите в нем и раскройте созданную ранее папку Интерфейс. В поле Имя файла введите имя программного модуля, например, Rasgruska, и щелкните кнопку Сохранить.

После этого щелчка в диалоговом окне Save Unit As появится диалоговое окно Save Project As. В поле имя файла введите, например, Rasgr_transporta и щелкните кнопку Сохранить.

Вид формы имитационной модели после установки значений свойств

Рис. 8.5. Вид формы имитационной модели после установки значений свойств
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?