- •0. Лекция: Введение
- •1. Лекция: Понятие модели и моделирования:
- •1.1. Общее определение модели
- •1.2. Классификация моделей и моделирования
- •1.2.1. Классификация моделей и моделирования по признаку "характер моделируемой стороны объекта"
- •1.2.2. Классификация моделей и моделирования по признаку "характер процессов, протекающих в объекте"
- •1.2.3. Классификация моделей и моделирования по признаку "способ реализации модели"
- •1.3. Этапы моделирования
- •1.4. Адекватность модели
- •1.5. Требования, предъявляемые к моделям
- •2.1. Дискретные марковские процессы
- •2.2. Моделирование по схеме непрерывных марковских процессов
- •2.3. Схема гибели и размножения
- •2.4. Элементы смо, краткая характеристика
- •2.5. Моделирование смо в классе непрерывных марковских процессов
- •2.5.1. Многоканальная смо с отказами
- •2.5.2. Многоканальная смо с ожиданием
- •2.5.3. Одноканальная смо с ограниченной очередью
- •2.5.4. Одноканальная замкнутая смо
- •2.5.5. Одноканальная смо с конечной надежностью
- •2.6. Метод динамики средних. Сущность и содержание метода
- •2.7. Принцип квазирегулярности
- •2.8. Элементарные модели боя
- •2.8.1. Модель высокоорганизованного боя
- •2.8.2. Высокоорганизованный бой с пополнением группировок
- •2.8.3. Высокоорганизованный бой с упреждением ударов
- •2.8.4. Модель боя с неполной информацией
- •2.8.5. Учет запаздывания в переносе и открытии огня
- •3. Лекция: Статистическое моделирование:
- •3.1. Сущность имитационного моделирования
- •3.2. Общая характеристика метода имитационного моделирования
- •3.3. Статистическое моделирование при решении детерминированных задач
- •3.4. Моделирование равномерно распределенной случайной величины
- •3.5. Моделирование случайной величины с произвольным законом распределения
- •3.6. Моделирование единичного события
- •3.7. Моделирование полной группы несовместных событий
- •3.8. Моделирование совместных независимых событий
- •3.8.1. Определение совместных исходов по жребию
- •3.8.2. Последовательная проверка исходов
- •3.9. Моделирование совместных зависимых событий
- •3.10. Классификация случайных процессов
- •3.11. Способы продвижения модельного времени
- •3.12. Модель противоборства двух сторон
- •3.13. Модель противоборства как процесс блуждания по решетке
- •3.14. Типовая схема имитационной модели с продвижением времени по событиям
- •3.15. Имитационная модель системы массового обслуживания
- •4. Лекция: Планирование экспериментов
- •4.1. Сущность и цели планирования эксперимента
- •4.2. Элементы стратегического планирования экспериментов
- •4.3. Стандартные планы
- •4.4. Формальный подход к сокращению общего числа прогонов
- •4.5. Элементы тактического планирования
- •4.6. Точность и количество реализаций модели при определении средних значений параметров
- •4.6.1. Определение оценки матожидания
- •4.6.2. Определение оценки дисперсии
- •4.7. Точность и количество реализаций модели при определении вероятностей исходов
- •4.8. Точность и количество реализаций модели при зависимом ряде данных
- •4.9. Проблема начальных условий
- •5. Лекция: Обработка результатов имитационного эксперимента
- •5.1. Характеристики случайных величин и процессов
- •5.2. Требования к оценкам характеристик
- •5.3. Оценка характеристик случайных величин и процессов
- •5.4. Гистограмма
- •5.4. Элементы дисперсионного анализа. Критерий Фишера
- •5.6. Критерий Вилькоксона
- •5.7. Однофакторный дисперсионный анализ
- •5.8. Выявление несущественных факторов
- •5.9. Сущность корреляционного анализа
- •5.10. Обработка результатов эксперимента на основе регрессии
- •6. Лекция: Моделирование в gpss World
- •6.1. Основы построения и принципы функционирования языка имитационного моделирования
- •6.2. Построение моделей с устройствами
- •6.2.1. Организация поступления транзактов в модель и удаления транзактов из нее
- •6.2.1.1. Поступление транзактов в модель
- •6.2.1.2. Удаление транзактов из модели и завершение моделирования
- •6.2.1.3. Изменение значений параметров транзактов
- •6.2.2. Занятие и освобождение одноканального устройства
- •6.2.3. Имитация обслуживания посредством задержки во времени
- •6.2.4. Проверка состояния одноканального устройства
- •6.2.5. Методы сбора статистики в имитационной модели
- •6.2.5.1. Регистратор очереди
- •6.2.5.1. Статистические таблицы
- •6.2.6. Методы изменения маршрутов движения транзактов в модели
- •6.2.6.1. Блок transfer
- •6.2.6.2. Блок displace
- •6.2.7. Прерывание функционирования одноканального устройства
- •6.2.7.1. Прерывание в приоритетном режиме
- •6.2.7.2. Прерывание в режиме "захвата"
- •6.2.7.3. Проверка состояния одноканального устройства, функционирующего в приоритетном режиме
- •6.2.8. Недоступность одноканального устройства
- •6.2.8.1. Перевод в недоступное состояние и восстановление доступности
- •6.2.8.2. Проверка состояний недоступности и доступности одноканального устройства
- •6.2.9. Сокращение машинного времени и изменение дисциплин обслуживания методом применения списков пользователя
- •6.2.9.1. Ввод транзактов в список пользователя в безусловном режиме
- •6.2.9.2. Вывод транзактов из списка пользователя в условном режиме
- •6.2.10. Построение моделей систем с многоканальными устройствами и переключателями
- •6.2.10.1. Занятие многоканального устройства и его освобождение
- •6.2.10.2. Перевод многоканального устройства в недоступное состояние и восстановление его доступности
- •6.2.10.3. Проверка состояния многоканального устройства
- •6.2.10.4. Моделирование переключателей
- •6.3. Решение прямой и обратной задач в системе моделирования
- •6.3.1. Постановка прямой и обратной задач
- •6.3.2. Решение прямой задачи
- •6.3.2.1. Блок-диаграмма модели
- •6.3.2.2. Программа модели
- •6.3.2.3. Ввод текста программы модели, исправление ошибок и проведение моделирования
- •6.3.3. Решение обратной задачи
- •6.4. Пример построения моделей с оку, мку и списками пользователя
- •6.4.1. Модель процесса изготовления изделий на предприятии. Прямая задача
- •6.4.1.1. Постановка задача
- •6.4.1.2. Исходные данные
- •6.4.1.3. Задание на исследование
- •6.4.1.4. Уяснение задачи на исследование
- •6.4.1.5. Блок-диаграмма модели
- •6.4.1.6. Программа модели
- •6.4.2. Модель процесса изготовления изделий на предприятии. Обратная задача
- •6.4.2.1. Постановка задачи
- •6.4.2.2. Программа модели
- •6.5. Уменьшение числа объектов в модели
- •6.5.1. Постановка задачи
- •6.5.2. Исходные данные
- •6.5.3. Задание на исследование
- •6.5.4. Блок-диаграмма модели
- •6.5.5. Программа модели
- •6.6. Применение матриц, функций и изменение версий модели
- •6.6.1. Постановка задачи бизнес-процесса
- •6.6.2. Уяснение задачи
- •6.6.3. Программа модели
- •6.7. Моделирование неисправностей одноканальных устройств
- •6.7.1. Постановка задачи
- •6.7.2. Исходные данные
- •6.7.3. Задание на исследование
- •6.7.4. Уяснение задачи
- •6.7.5. Программа модели
- •6.8. Моделирование неисправностей многоканальных устройств
- •6.8.1. Постановка задачи
- •6.8.2. Программа модели
- •7. Лекция: Организация компьютерных экспериментов
- •7.1. Дисперсионный анализ (отсеивающий эксперимент). Прямая задача
- •7.2. Регрессионный анализ (оптимизирующий эксперимент). Прямая задача
- •7.3. Дисперсионный анализ (отсеивающий эксперимент). Обратная задача
- •7.3.1. Постановка задачи
- •7.3.2. Исходные данные
- •7.3.3. Задание на исследование
- •7.3.4. Уяснение задачи на исследование
- •7.3.5. Программа модели
- •7.3.6. Проведение экспериментов
- •8. Лекция: Разработка имитационных моделей в виде приложений с интерфейсом
- •8.1. Применение текстовых объектов и потоков данных
- •8.1.1. Блок open
- •8.1.2. Блок close
- •8.1.3. Блок read
- •8.1.4. Блок write
- •8.1.5. Блок seek
- •8.2. Разработка модели в gpss World
- •8.2.1. Постановка задачи
- •8.2.2. Программа модели
- •8.3. Создание стартовой формы приложения - имитационной модели
- •8.3 Добавление компонент в стартовую форму имитационной модели
- •8.3.1. Добавление полей редактирования
- •8.3.2. Добавление меток
- •8.3.3. Добавление компонент для ввода и вывода данных, представленных в виде таблиц
- •8.3.4. Добавление командных кнопок
- •8.4. События и процедуры обработки событий
- •8.4.1. События
- •8.4.2. Разработка процедур обработки событий для кнопок
- •8.4.3. Разработка процедур обработки событий для полей редактирования
- •8.4.4. Модификация программы имитационной модели
- •8.5. Работа с приложением
8.3.3. Добавление компонент для ввода и вывода данных, представленных в виде таблиц
Среднее время разгрузки одного автомобиля различных типов представлено табл. 8.1. Компонент StringGrid (Строковая таблица) используется для отображения информации в виде таблицы. Таблица представляет собой набор ячеек, расположенных в строках и столбцах. Ее содержимое задается двумерным массивом.
Значок компонента StringGrid находится на дополнительной (Additional) странице палитры компонентов. В разрабатываемую форму имитационной модели необходимо добавить два компонента. Один компонент для ввода табл. 8.1. В данной модели результаты моделирования целесообразно вывести таблицей. Поэтому нужен второй компонент StringGrid. Добавьте два компонента. Добавляются они также, как и другие компоненты.
Добавленные компоненты StringGrid имеют стандартные свойства. Delphi предоставляет разработчику возможность изменить эти свойства после добавления компонентов в форму.
В табл. 8.6 перечислены основные свойства компонента StringGrid.
Таблица 8.6. Основные свойства компонента StringGrid |
|
Свойство |
Описание |
Name |
Имя компонента. Используется в программе для доступа к свойствам компонента |
ColCount |
Количество колонок таблицы |
RowCount |
Количество строк таблицы |
Cells |
Соответствующий таблице двумерный строковый массив. Если строки и столбцы нумеровать с нуля, то ячейке Cells соответствует Cells(i,j) |
FixedCols |
Количество зафиксированных слева столбцов таблицы. Они выделяются цветом и при горизонтальной прокрутке таблицы остаются на месте |
FixedRows |
Количество зафиксированных сверху строк таблицы. Они выделяются цветом и при вертикальной прокрутке таблицы остаются на месте |
Options |
Свойство используется для задания других атрибутов таблицы (табл. 8.7) |
DefaultColWidth |
Ширина столбцов таблицы |
DefaultRowHeight |
Высота строк таблицы |
GridLineWidth |
Ширина линий, ограничивающих ячейки таблицы |
Left |
Расстояние от левой границы поля таблицы до левой границы формы |
Top |
Расстояние от верхней границы поля таблицы до верхней границы формы |
Height |
Высота поля таблицы |
Width |
Ширина поля таблицы |
Font |
Шрифт, используемый для отображения содержимого ячеек таблицы |
ParentFont |
Признак наследования характеристик шрифта формы |
Из всех свойств следует обратить внимание на свойство Options. Свойство Options используется для задания многих атрибутов таблицы (компонента StringGrid), которые описаны в табл. 8.7. На вкладке, показанной на рис. 8.10, перед свойством Options стоит знак "+". При двойном нажатии на него появляется вкладка с вложенными свойствами свойства Options (рис. 8.10).
Таблица 8.7. Атрибуты таблицы, задаваемые свойством Options |
|
Атрибут |
Описание (для значения True) |
goFixedHorzLine |
Горизонтальные линии фиксированы |
goFixedVertLine |
Вертикальные линии фиксированы |
goHorzLine |
Горизонтальные разделительные линии отображаются |
goVertLine |
Вертикальные разделительные линии отображаются |
goRangeSelect |
Можно выбирать несколько ячеек |
goDrawFocusSelected |
Текущая ячейка помечается цветом |
goRowSizing |
Возможно изменение размеров строк |
goColSizing |
Возможно изменение размеров столбцов |
goRowMoving |
Возможно перемещение строк |
goColMoving |
Возможно перемещение столбцов |
goEditing |
Возможно редактирование содержимого ячеек |
goTabs |
Возможно перемещение по ячейкам клавишами Tab и Shift-Tab |
goThumbTracking |
Содержимое таблицы скроллируется с помощью полос прокрутки |
Свойства, перечисленные в табл. 8.6 и табл. 8.7, после выделения (маркирования) соответствующей таблицы устанавливаются либо заданием какого - то числового значения, либо выбором True или False (рис. 8.10).
Для ввода данных табл. 8.1 необходимо изменить некоторые из свойств StringGrid. Например, для того, чтобы была возможность редактировать содержимое ячеек таблиц, нужно установить свойство goEditing True, а для перемещения курсора с помощью клавиш Tab и стрелок - свойство goTabs также установить True.
В табл. 8.8 приведены значения свойств обеих компонентов StringGrid, используемых моделью для ввода и вывода данных. Установите эти значения. Форма должна иметь вид, показанный на рис. 8.11. Введите также метки Label9 и Label10 (см. рис. 8.11).
Рис. 8.10. Вкладка свойства Options
Таблица 8.8. Значения свойств компонента StringGrid1 |
||
Свойство |
Компоненты |
|
1 |
2 |
|
Name |
Tabl1 |
Tabl2 |
ColCount |
11 |
11 |
RowCount |
2 |
5 |
FixedCols |
1 |
1 |
FixedRows |
1 |
1 |
Options.goEditing |
True |
True |
Options.goTabs |
True |
True |
DefaultColWidth |
70 |
125 |
DefaultRowHeight |
24 |
24 |
GridLineWidth |
1 |
1 |
goRowSizing |
True |
True |
Рис. 8.11. Вид формы после добавления компонентов StringGrid
Первая строка и первый столбец таблиц зафиксированы (см. рис. 8.11). Они используются в качестве заголовков таблиц. В рассматриваемом примере в первой строке первой таблицы это тип автомобиля (номера 1 … 10), во второй таблице - пункты выгрузки (также номера 1 … 10). Следует отметить, что можно было бы ввести в эти ячейки и наименования вместо порядковых номеров. Как это делается, покажем на примере ввода поясняющего текста в строки таблиц. Во вторую строку первой таблицы - Cells(0, 1) - введем: Время, мин. Во вторую таблицу: Cells(0, 1) - Коэф. загр.; Cells(0, 2) - Ср. время; Cells(0, 3) - Макс. очер. Во время создания формы имитационной модели установить значения элементов Cells таблицы нельзя, так как элементы таблицы доступны только во время работы программы. Поэтому значения элементов Cellsтаблицы, соответствующие первой строке и первому столбцу обеих та блиц устанавливают процедуры FormActivate1 и FormActivate2 (текст их приведен ниже) во время активизации формы. В какой процедуре обработки события производится вызов указанных процедур, укажем позже.
procedure TForm1.FormActivate1(Sender: TObject);
var n1:integer;
begin
for n1:=1 to Tabl1.ColCount do
Tabl1.Cells[n1,0]:=IntToStr(n1);
Tabl1.Cells[0,1]:='Время, мин';
end;
procedure TForm1.FormActivate2(Sender: TObject);
var n1:integer;
begin
for n1:=1 to Tabl2.ColCount do
Tabl2.Cells[n1,0]:=IntToStr(n1);
Tabl2.Cells[0,1]:='Коэф.исп.пункт. разгр.';
Tabl2.Cells[0,2]:='Ср.вр.разгр.авт.,мин';
Tabl2.Cells[0,3]:='Макс.очер.на пун.разгр.';
Tabl2.Cells[0,4]:='Ср.вр.разгр.тран.,час';
end;