Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Объектный принцип моделирования





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

Таким образом, возникла необходимость в приемах моделирования, обеспечивающих независимость составления моделей элементов сложной системы от изменения задачи или структуры производства. Такой подход моделирования отдельных объектов независимо друг от друга позволяет собирать сколь угодно сложные системы без изменения их составляющих. Принцип объектного моделирования обеспечивает модернизацию сложных систем, удлиняя жизненный цикл АСУ.

Пример. СМО состоит из следующих элементов, существующих самих по себе: источник заявок, очередь, канал (см. рис. 36.7). Смоделируем их по отдельности.

Рис. 32.7. Схема реализации объектно-ориентированного моделирования (на примере СМО)

1. Источник заявок (Sourcer) генерирует последовательность случайных событий.

// если счетчик x равен 0, то это момент появления заявки // tau — обеспечивает генерацию времени между заявками в момент появления заявки tau:= –1/λ · ln(rnd) · delta(x) + tau · not(delta(x)) // y — фиксирует факт появления заявки y:= delta(x) // счетчик моделирует заявочный процесс во времени, отсчитывая время между заявками // если счетчик x равен 0, то это момент появления заявки // если x больше нуля, то новая заявка пока не появилась x:= x + ed(~tau – x) · dt – x · ed(x – ~tau) // счетчик заявок Nx:= Nx + delta(~x)

2. Канал обслуживания (Channel).

// канал свободен, если не обрабатывает заявку своб:= not(обраб) // своб — флаг-признак, если канал свободен, то «своб» равен 1. // обраб — флаг-признак, если канал занят, то «обраб» равен 1. // Если канал был свободен, и пришла заявка, то канал начинает ее обрабатывать. обраб:= ed(~своб · вх + not(delta(y)) // вх — сигнал о подаче заявки на обслуживание в канале // tau — обеспечивает генерацию необходимого времени обслуживания заявки в момент ее появления // Новая генерация происходит только в том случае, если канал свободен и пришла заявка // Если в канале обслуживается заявка, то новое tau не генерируется // mu — интенсивность потока обслуживания (задается константой) tau:= –1/mu · ln(rnd) · ~своб · ~вх + tau · not(delta(~y)) своб: = not(~обраб) // счетчик «y» моделирует заявочный процесс во времени, отсчитывая время обслуживания // если «y» выдал 1, то значит канал выдал обслуженную заявку y:= y + ed(~tau – ~y) · dt – ~y · ed(~y – ~tau) // счетчик обслуженных заявок Ny:= Ny + delta(~y) // флаг «обработка» будет погашен, если закончится время обслуживания обраб:= not(delta(~y)) // канал будет свободен, если канал не обрабатывает заявки своб:= not(~обраб) // счетчик накапливает статистику — общее время простоя канала ОВП:= ОВП + ~своб · dt // счетчик накапливает статистику — общее время работы канала ОВР:= ОВР + ~обраб · dt

3. Очередь (Queue).

// «отказ» — счетчик фиксирует отказ, если все места в очереди заняты (Z > Zm) // и приходит очередная заявка (вх = 1) // Zm — максимальное количество мест в очереди // Z — текущее количество занятых мест отказ:= ~отказ + delta(~вх – 1) · ed(~Z – Zm + 1) // счетчик количества занятых мест в очереди увеличивается, если приходит // заявка и есть незанятые места в очереди Z:= Z + delta(~вх – 1) · ed(Zm – Z) // передаем заявку из очереди в канал // флаг, фиксирующий освобождение места в очереди в момент // освобождения канала, если очередь есть // ch_free — флаг (свободен (1) или занят канал обслуживания (0)) вых:= delta(~ch_free – 1) · ed(~Z) // счетчик уменьшает количество занятых мест в очереди, // после взятия заявки в канал обслуживания Z:= Z – ~вых

4. Статистика (Stats).

Tэкс:= Tэкс + 1 · dt проп_сп:= Nоб/Tэкс Pоб:= Nоб/Nобщ Pотк:= Nотк/Nобщ Tпрост1:= Tпрост1 + ~своб1 · dt Tпрост12:= Tпрост12 + ~своб1 · ~своб2 · dt Tпрост123:= Tпрост123 + ~своб1 · ~своб2 · ~своб3 · dt ср_кол_пр_КО:= Tпрост1 + Tпрост12 · 2 + Tпрост123 · 3 ср_кол_зан_КО:= всего_КО – ср_кол_пр_КО S:= S + ~тек_дл_очер · dt ср_дл_очер:= ~S/Tэкс

Данные модели могут собираться в любые конфигурации без изменения их содержания.

 

Date: 2015-09-02; view: 276; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию