| GetColorings Science Blog |

Printable Coloring Pages

Моделирование

Перевод статьи - Simulation

Автор - Jaroslav Sklenar

Источник оригинальной статьи:

http://staff.um.edu.mt/jskl1/simul.html

“Das ganze tschechische Volk ist eine Simulantenbande”

Jaroslav Hašek: The Good Soldier Švejk 

Что такое Моделирование

На наиболее общем уровне Моделирование нужно рассмотреть как форму Познания. (Познание = действие или процесс приобретения знания.) Есть три основных метода, как получить информацию (знание) объективной действительности: Эксперимент, Анализ, Моделирование. Давайте возьмем один практический пример, чтобы продемонстрировать природу этих трех методов. Исследуемая система является автозаправочной станцией с одним дежурным. Вопрос, "что является средним временем, проведенным автомобилем в автозаправочной станции". Чтобы получить ответ, у нас есть три возможности:

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

Анализ: используйте формулу Теории Организации очередей вычислить среднее время, проведенное в системе непосредственно. Чтобы использовать формулу, Вы должны будете принять определенную модель организации очередей, что означает значительное упрощение реальной системы, и Вам будут нужны некоторые количественные параметры (здесь интенсивность прибытия - число автомобилей, прибывающих за единицу времени и сервисную интенсивность - число автомобилей, подаваемых за единицу времени).

Моделирование: напишите модель моделирования, которая производит беспорядочно прибытие автомобилей и продолжительность услуг. Это должно также упорядочить должным образом все действия, чтобы иметь непосредственную корреспонденцию реальной системе. Также наблюдение, коллекция статистических данных и оценка должны быть запрограммированы (для каждого автомобиля, вычисляют проведенное время, накапливают эти времена, число количества автомобилей, в конце вычисляют и показывают среднее число).

Эти три метода не могут быть оценены, потому что у всех них есть преимущества и недостатки. Они могут быть сравнены только в контексте определенного особого случая, принимающего во внимание различные критерии. Тем не менее, некоторые основные факты очевидны:

Эксперимент всегда - самый точный метод, который должен использоваться каждый раз, когда это выполнимо. К сожалению, очень часто эксперимент:
- Слишком опасный (поведение ядерного реактора в критических ситуациях, приземляющихся с самолетом с, каждый отправляется, и т.д.),
- Слишком дорогой (все случаи, которые наносят ущерб, долго эксперименты, изучая пропускную способность сети передачи данных, используя арендованные телефонные линии, и т.д.),
- Не возможный вообще, если исследуемая система не доступна (оценка более возможных альтернатив в стадии проектирования.)

Анализ (в основном математический) типично основан на сильных предположениях, которые редко верны в практической жизни. Другой возможный недостаток аналитических методов - слишком сложный аппарат используемое и/или слишком трудоемкое вычисление. Пример этого - анализ Сетей Организации очередей. С другой стороны, использование формул дает главным образом быстрые результаты, и возможно проверить большое количество альтернатив, просто вставляя различные ценности параметров к формуле (e). Экспериментальные методы главным образом намного более трудоемкие. Другая проблема анализа - доступность необходимых параметров. Их точное измерение также не обязательно выполнимо, или это невозможно в стадии проектирования. Используя предполагаемые данные или данные, взятые от других аналогичных систем, уменьшает доверие результатам.

Моделирование - также экспериментальный метод. Вместо того, чтобы экспериментировать с реальной системой эксперименты выполнены с моделью моделирования (чей дизайн - таким образом ключевой пункт исследований моделирования). Также у моделирования есть много недостатков. Вот самые важные:
- Также требуя создание моделей моделирования. Программирование моделей моделирования на общих языках (как Паскаль) слишком трудное. Есть эффективные языки моделирования, но их освоение представляет большие начальные инвестиции, не всегда оправдываемые. Есть инструменты моделирования, базируемые, как правило, на некоторой графической технике, которые упрощают или даже автоматизируют создание моделей моделирования определенного класса систем. Если Вы хотите узнать больше об одном таком инструменте, продолжиться к странице Petri Nets.
- Ограниченные знания моделируемой системы. В первую очередь, некоторые количественные параметры должны быть известны. В вышеупомянутом примере необходимо произвести случайные интервалы между прибытием и случайные сервисные времена. Здесь моделирование намного более гибко, чем анализ - языки моделирования поддерживают поколение случайных чисел с практически любым распределением. В вышеупомянутом примере оба случайных числа могут быть основаны на любом (например, экспериментально полученный) распределения. Тем не менее, для любого распределения нужны любые несколько параметры (если это - теоретическое), или непосредственно Функция Распределения (если распределение получено, имея размеры). Могут быть также вещи в системе (как правило, в стадии проектирования), который не может быть определен количественно, и часто необходимо принять факт, что могли бы быть аспекты, о которых мы не знаем вообще. 
- Слишком трудоемкое вычисление. Пример - анализ крупномасштабных систем со многими компонентами, работающими параллельно. Поскольку применение реального параллелизма все еще не распространено, такие системы моделируются программой, выполненной единственным процессором. Параллельные действия тогда выполнены по одному (даже если у пользователя есть впечатление от параллелизма, и во время дизайна модели моделирования "думает параллельно"). Результат этого - факт, что моделирование могло быть намного медленнее, чем реальное время (1 секунда образцового времени занимает 10 минут времени центрального процессора). Это, конечно, отключает применение моделирования, в режиме реального времени управляют.

Общее правило большого пальца могло походить на это:
"Если эксперимент выполним, используйте его. Это всегда - лучший метод, потому что все аспекты приняты во внимание. Даже если другие методы использовались во время стадии проектирования, эксперимент может служить заключительной оценкой системы. Если эксперимент не выполнимая попытка найти соответствующий аналитический метод. Если это не доступно, используйте моделирование".
Моделирование не только последнее средство, поскольку это похоже в вышеупомянутом правиле. Моделирование может способствовать очень пониманию системы, проанализированной не только, поставляя ответы на вопросы, которые были первоначально даны. Очень часто создание модели моделирования - первый случай, где определенные вещи приняты во внимание. Спецификация моделируемой системы может (и часто это делает), показывают ошибки или двусмысленности в системном проектировании. Таким образом, моделирование может помочь очень, избежав будущего очень дорогого обновления готовой системы.

 


Непрерывное моделирование

Непрерывные языки моделирования развились в конце пятидесятых как симуляторы Аналоговых компьютеров. Моделирование на аналоговых компьютерах основано на создании аналоговой электронной системы, поведение которой описано той же самой математической моделью (набор отличительных уравнений) как исследуемая система. Электронная система создана взаимосвязанными стандартными блоками, базируемыми главным образом на операционных усилителях, измененных, чтобы действовать как интеграторы, змеи и другие функциональные единицы. Тогда пользователь выполняет эксперименты с этой электронной системой, применяя подходящие входы и делая запись напряжения в определенных пунктах продукции (осциллограф, заговорщик). Изменяющееся напряжение представляет функцию времени, которая совпадает с функцией, которая описывает изменения в оригинальной системе, физическая природа которой может полностью отличаться (механическое смещение, температура, и т.д.) . Основная проблема аналоговых компьютеров - аналоговое внедрение определенных операций как умножение, поколение некоторых функций, поколение задержек и других. Компьютеры выполняют все эти функции очень легко, и сегодня непрерывное моделирование выполнено только на них. Тем не менее, есть одна операция, где аналоговые компьютеры лучше - интеграция. Компьютеры используют числовую интеграцию, которая обычно медленнее и менее точна по сравнению с интеграцией аналогового интегратора. Некоторые специальные заявления, основанные на быстром ответе, используют поэтому так называемые Аналого-цифровые компьютеры, которые содержат аналоговые и цифровые части, связанные A/D и конвертерами D/A. Цифровая часть делает все кроме интеграции. Это вычисляет входы интеграторов, которые тогда преобразованы конвертерами D/A в аналоговые сигналы, введенные к аналоговым интеграторам. Их продукцию рассматривают противоположным способом. Цифровая часть также управляет соединением аналоговой части, которая могла бы таким образом измениться во время вычисления.

Классификация непрерывных языков моделирования

Блок-ориентированные языки моделирования основаны на методологии аналоговых компьютеров. Система должна быть выражена как блок-схема, которая определяет соединение функциональных единиц и их количественных параметров. "Программирование" означает входить в соединение блоков и их описания. Тогда пользователь добавляет заявления и/или директивы, которые управляют моделированием. Если система описана как ряд уравнений, они должны быть преобразованы в блок-схему. Это преобразование - простой прямой процесс. Типичные блоки, доступные в самом непрерывном блоке, ориентировались, языки - интеграторы, ограничители, задержки, множители, гистерезис, постоянные величины, змеи, держатели, выгода (коэффициент) и другой.

Ориентированные на выражение непрерывные языки основаны на написании выражений (уравнения), которые представляют математическую модель. Таким образом, моделируемая система должна быть выражена рядом уравнений. Тогда пользователь добавляет заявления и/или директивы, которые управляют моделированием. Некоторые языки позволяют и блок и базируемые способы выражения системного определения. Контроль за моделированием означает выбор: метод интеграции (потому что некоторые языки предлагают больше), шаг интеграции, переменные (продукция блоков), который должен наблюдаться, интервалы для сбора данных для печати и/или нанесения, вычисления продукции (который может быть также сделан автоматически), продолжительность пробегов моделирования, число повторений и пути определенные ценности изменен в них и т.д.

Загрузите файл models1.zip, который содержит несколько непрерывных моделей моделирования, написанных на языке Тюрбо Паскаля. Модели созданы, используя простую непрерывную окружающую среду моделирования, основанную на Выражении, ориентировал подход и может быть легко изменен, чтобы смоделировать любые другие системы, описанные отличительными уравнениями. 

 


Дискретное моделирование

Дискретное моделирование имеет дело с системами, динамику которых можно рассмотреть (из-за уровня абстракции) как последовательность событий в пунктах дискретного времени. Ключевой пункт дискретного языка моделирования - способ, которым он управляет надлежащим упорядочиванием действий в модели. Это - также способ, которым пользователь должен "рассмотреть мир", используя язык и основу для классификации дискретных языков моделирования.

Классификация дискретных языков моделирования

Языки, ориентированные на блок-схему представлены языком GPSS (Система Моделирования Общего назначения), который существует во многих версиях на различных компьютерах. Пользователь должен рассмотреть динамику системы как поток так называемых Сделок через блок-схему. Сделки произведены, следуют за путем через сеть блоков и разрушены на выходе. В блоках сделки могут быть отсрочены, обработаны и переданы к другим блокам. Блоки находятся в программе, представленной заявлениями, которые выполняют Действия модели.

Языки, ориентированные на деятельность не основаны на явном планировании будущих действий. Для каждой деятельности пользователь описывает условие, при котором деятельность может иметь место (который также покрывает планирование, если условие достигает определенного времени). Алгоритм контроля за моделированием неоднократно увеличивает время и проверяет условия всех действий. Недостаток этого подхода очевиден - необходимо оценить все условия в каждом шаге, который может быть очень трудоемким. С другой стороны, это концептуально очень просто, и алгоритм может быть легко осуществлен на общих языках высокого уровня (есть языки моделирования, основанные на этом подходе, но не широко используются). Загрузите файл models2.zip, который содержит две модели простой системы организации очереди (в Тюрбо Паскале), которые демонстрируют, что деятельность ориентировала подход. Эти модели сопровождаются несколькими единицами, которые осуществляют операции в связанных списках двух путей, которые позже используются, чтобы осуществить стеки и очереди.

Языки, ориентированные на события основаны на прямом планировании и отмене будущих событий. Подход очень общий. Пользователь должен рассмотреть динамику системы, моделируемой как последовательность относительно независимых событий. Каждое событие может наметить и/или отменить другого события. Системный установленный порядок должен вести учет запланированных событий. Вот почему каждое событие представлено так называемым уведомлением Событий, которое содержит время, тип событий и другие пользовательские данные. Уведомления событий сохранены в так называемом Календаре, где уведомления событий заказаны запланированным временем. После завершения установленного порядка Событий система удаляет уведомление событий с самым низким временем от календаря, обновляет образцовое время к его времени и начинает соответствующий установленный порядок. Это повторено, пока календарь не становится пустым или остановки программы из-за другой причины. Планирование означает вставлять уведомления событий календарю к запланированному времени, отмена удаляет их. Подход, основанный на явном выражении событий, называют Дискретным Моделированием Событий, которое иногда обобщается к дискретному моделированию как таковому. Типичный представитель этой группы языков - язык SIMSCRIPT (но его поддержки вариантов II.5 также обрабатывают ориентированное моделирование).

Процессно-ориентированные языки основаны на факте, что события весьма зависимы. Событие, как правило - последствие других предыдущих событий. Другими словами, часто возможно определить последовательности событий, которые могут быть рассмотрены как предприятия модели моделирования в более высоком уровне иерархии. Последовательность событий называют Процессом. В отличие от событий у процесса есть измерение вовремя. Базируемые абстрактные системы процесса очень близко к действительности, которая всегда делается из различных объектов, которые существуют и действуют в параллели, вмешивающейся друг в друга. Процесс способ рассмотреть системную динамику таким образом очень естественный. Главным образом процесс моделирует деятельность реального объекта. Этому верят, тот процесс ориентировался, дискретное моделирование - лучший путь, как создать дискретные модели моделирования. Типичные представители этой группы языков - MODSIM, SIMSCRIPT II.5, и системное МОДЕЛИРОВАНИЕ класса языка Simula.

 


Объектно-ориентированное моделирование

Object Oriented Simulation (OOS) можно рассмотреть как особый случай Object Oriented Programming (OOP). Некоторые принципы ООП как существование переменного числа случаев вмешивающихся объектов были в стандартном употреблении в окружающей среде моделирования в течение долгого времени, часто используя другую терминологию. Язык Simula (раньше назывался Simula 67) является первым истинным объектно-ориентированным языком. Будучи больше чем 30 годами, у этого все еще есть большинство (и все важные) механизмы и принципы ООП. Некоторые вещи как классы, наследование, виртуальные методы, и т.д. были определены в долгое время Simula, прежде чем они были открыты вновь бумом ООП в прошлых годах. Чтобы узнать больше о Simula, посетите страницу ASU (Ассоциация Пользователей Simula). Вы можете также просмотреть документ Введение в ООП в Simula, основанном на разговоре, представленном в университете Мальты по случаю 30-й годовщины Симулы. MODSIM - другой объектно-ориентированный язык моделирования. 

Это наиболее распространенные функции OOS:

1. Динамика алгоритма или системы выражена с точки зрения объектов (актеры), которые существуют параллельно и которые взаимодействуют друг с другом. Каждый объект представлен:
- параметры (который может быть назначенными фактическими значениями, производя объекты),
- признаки (также названный внутренними признаками или признаками стоимости) 
- методы (также названный действиями или признаками процедуры)
- жизнь, которая представляет деятельность, началась после создания объекта. 
Объекты могут взаимодействовать этими способами:
- прямой доступ к параметрам и признакам
- взаимный запрос методов
- коммуникация и синхронизация жизней объектов.
Просто разговор: Объект = Данные + Процедуры, который называют Герметизацией. Очень часто данные объекта или часть их скрыты, и к ценностям можно получить доступ и изменить только через (хорошо определенный) методы. Это понятие называют информационным сокрытием.

2. Подобные объекты (актеры) сгруппированы к так называемым классам, также названным прототипами. Класс описывает объекты, у которых есть те же самые параметры, признаки, методы и жизни. Декларация класса интерпретируется как образец. Возможно создать любое число отдельных объектов (актеры), названные случаями объекта. Случаи могут отличаться по ценностям их параметров и/или признаков. Необходимо иметь четкое значение между классом как таковым, и случаи объекта произвели использование декларации класса. Класс может также интерпретироваться как знание определенного типа объектов. Такое знание представлено частью данных и операциями, которые могут быть выполнены на данных. Это подобно абстрактным типам данных, но классы намного более богаты. Абстрактный тип данных может быть в этом контексте, который рассматривают как выродившийся случай класса, который делает нет смысла в наследовании.

3. Объекты могут быть классифицированы иерархически так называемым наследованием. Очень часто термин подкласс введен. Подкласс Y класса X наследует все параметры, признаки и методы от класса X. Его декларация может добавить любое число дополнительных параметров, признаков и методов. Подкласс может также добавить некоторую деятельность к жизни родительского класса. Подкласс может использоваться в качестве родительского класса других подклассов, и т.д. Некоторые языки ООП (не Simula) позволяют так называемоемногократное наследование. В этом случае подкласс может унаследовать больше чем одному родительскому классу. Подкласс может интерпретироваться как более детальное знание, чем то, определенное родительским классом. Таким образом, родительский класс представляет общие знания, которые могут быть далее специализированы декларациями подклассов в любом числе шагов. Наследование действует определенным способом против сильной печати языков как Паскаль. Как правило, возможно объявить справочные переменные, которые могут относиться к случаю определенного класса и к случаям всех его подклассов. Это могло бы быть желательно, что определенные методы тогда ведут себя различным способом согласно текущему ссылаемому случаю объекта, который может измениться динамично во время выполнения программы. Это понятие звонило, полиморфизм поддержан механизмом, названным, поздно связав, и включенные методы называют виртуальными методами, которые могут измениться на каждом уровне иерархии.

4. Для параллельного существования случаев объекта нужны средства, поддерживающие сотрудничество и синхронизацию их жизней. У жизни объекта нет обязательно измерения времени, но в случае OOS она имеет. Симула возражает как таковой, может взаимодействовать без понятия времени. Системное МОДЕЛИРОВАНИЕ класса Симулы определяет класс "Процесс", жизнь которого существует вовремя. Есть средства для процессов, чтобы сообщить и синхронизировать их жизни 

 


Он-лайн моделирование

Интернет вместе с Явой и JavaScript предлагает невероятные возможности в решении задач. Вместо трудоемкой загрузки и установки пакетов программ, возможно открыть непосредственно различные решающие устройства, специально для проблем, которые не являются частыми и которые не требуют трудоемкого вычисления. Как мой первый шаг в этом направлении, я написал простые модели моделирования в JavaScript, которые решают и моделируют единственные системы очереди и сети организации очередей. Обращайтесь к странице он-лайн решений и Cимуляторов, чтобы попробовать моделировать сейчас.

 


Ссылки

Эта страница содержит выписку из текста: 
Sklenar, J.: Simulation (университет Мальты, 2000), который используется в нескольких курсах, связанных с исследованиями, проводимых в Мальтийском университете.