симуляция процессов информатика


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

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

Имитационная модель — логико-математическое описание объекта, которое может быть использовано для экспериментирования на компьютере в целях проектирования, анализа и оценки функционирования объекта.


Эмулятор терминала — это программа для современного ПК или другого устройства, позволяющая получить интерактивный доступ к операционной системе мейнфрейма или другой системе хоста, например HP-UX
или OpenVMS
. Уже длительное время терминалы наподобие IBM 3270
и VT100
не производятся. Вместо этого используется программа, запускаемая на современной операционной системе, которая имитирует «глупый» терминал и способна отображать графические и текстовые элементы приложения хоста, отправлять клавиатурный ввод и обрабатывать команды через соответствующий протокол терминала. Некоторые из таких эмуляторов включают приложения для Attachmate Reflection, IBM Personal Communications, AlphaVM virtual machine от EmuVM, Stromasys CHARON-VAX/AXP и Micro Focus Rumba.

Эмуляция игровой приставки

Эмулятор игровой приставки — это программа, которая позволяет на персональном компьютере или игровой приставке эмулировать другую приставку. Чаще всего их используют для запуска старых игр на ПК или более современных приставках. Также эмуляторы используют для создания любительского перевода игр, модификаций игр, а также для разработки такого пользовательского контента как демоверсии и новые игры для старых систем. В распространении этого вида эмуляции большую роль сыграл интернет
, так как большая часть (если не все) эмуляторов не доступна в точках розничных продаж. Некоторые из эмуляторов, выпущенные в последние два десятилетия: Dolphin
, ZSNES
, MAME
, DeSmuME
, ePSXe
, Gens
, VisualBoyAdvance
, Jnes
и Nestopia
.

Про урокцифры:  ОТЗЫВЫ О КУРСАХ ПО РАЗРАБОТКЕ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ В РГ

А что под капотом?

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

Интерфейс: jQuery, jQuery UI, globalize и modernizr. Из HTML5 используются localstorage, canvas и теги. Так как основные мои партнеры это «современные высокотехнологичные динамичные банки-лидеры», то приходится поддерживать старые версии IE. Для сборки и публикации сервиса, сайта и справочного руководства используется Apache Ant в Eclipse.


Так как медиаискусство
в основном создаётся в цифровом формате, эмуляция для него крайне важна как средство электронного архивирования
. Такие деятели как, например, Cory Arcangel восстанавливают устаревшие технологии и используют их в своем творчестве, высоко оценивая важность децентрализованного и неофициального процесса сохранения цифровой культуры.

Расширенные возможности SymPy

SymPy — это мощная библиотека для символьных вычислений, но ее применение не ограничивается только математическими операциями.

Визуализация результатов симуляции

Визуализация — это мощный инструмент для анализа результатов симуляции. SymPy предоставляет возможности для создания графиков и визуализации данных. Для этого можно использовать библиотеку matplotlib
, которая хорошо интегрируется с SymPy.

   import sympy as sp
import matplotlib.pyplot as plt
import numpy as np

# Создаем символьную переменную
x = sp.symbols('x')

# Определяем функцию
f = sp.sin(x)

# Создаем функцию из SymPy выражения
f_lambda = sp.lambdify(x, f, 'numpy')

# Генерируем данные для графика
x_vals = np.linspace(0, 2 * np.pi, 100)
y_vals = f_lambda(x_vals)

# Строим график
plt.figure(figsize=(8, 6))
plt.plot(x_vals, y_vals, label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('График функции sin(x)')
plt.legend()
plt.grid(True)
plt.show()  
  

Этот код создает график функции sin(x)
с использованием SymPy и Matplotlib.

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА

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

Интерактивные интерфейсы с SymPy

SymPy также предоставляет инструменты для создания интерактивных интерфейсов, что может быть полезно для образовательных или исследовательских целей. Один из популярных способов создания интерактивных интерфейсов — использование библиотеки ipywidgets
.

   import sympy as sp
import ipywidgets as widgets
from IPython.display import display

# Создаем символьные переменные
x, y = sp.symbols('x y')

# Определяем выражение
expr = x**2 + y**2

# Создаем виджеты для ввода значений x и y
x_widget = widgets.FloatSlider(value=0.0, min=-10.0, max=10.0, step=0.1, description='x')
y_widget = widgets.FloatSlider(value=0.0, min=-10.0, max=10.0, step=0.1, description='y')

# Функция для обновления вывода на основе введенных значений
def update(expr, x_val, y_val):
    result = expr.subs({x: x_val, y: y_val})
    display(sp.Eq(expr, result))

# Создаем интерактивный интерфейс
interactive_output = widgets.interactive_output(update, {'expr': widgets.fixed(expr), 'x_val': x_widget, 'y_val': y_widget})

# Отображаем виджеты и вывод
display(x_widget, y_widget, interactive_output)  
  

Этот пример позволяет пользователям вводить значения x и y с помощью слайдеров и мгновенно видеть результат вычисления выражения x^2 + y^2
.

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА

Такой интерактивный подход может быть полезен при обучении или при проведении экспериментов.

Интеграция SymPy с другими библиотеками и фреймворками

SymPy можно интегрировать с другими библиотеками и фреймворками, чтобы расширить его функциональность и применение. Например, SymPy может быть использован с такими библиотеками, как NumPy, SciPy, и TensorFlow для решения разнообразных задач.

   import sympy as sp
import numpy as np
from scipy.optimize import minimize

# Создаем символьные переменные
x, y = sp.symbols('x y')

# Определяем выражение
expr = x**2 + y**2

# Конвертируем выражение в функцию для SciPy
f = sp.lambdify((x, y), expr, 'numpy')

# Определяем функцию, которую нужно минимизировать
def objective(params):
    x_val, y_val = params
    return f(x_val, y_val)

# Находим минимум функции с использованием SciPy
initial_guess = [1.0, 1.0]
result = minimize(objective, initial_guess)
print("Минимум найден на точке:", result.x)  
  

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА

В этом примере SymPy используется для определения символьного выражения, которое затем конвертируется в функцию для SciPy, позволяя найти минимум этой функции.

Применение имитационного моделирования

Имитационное
моделирование

(от
англ. simulation)
― это
распространенная разновидность
аналогового моделирования, реализуемого
с помощью набора математических
инструментальных средств, специальных
имитирующих компьютерных программ и
технологий программирования, позволяющих
посредством процессов-аналогов провести
целенаправленное исследование структуры
и функций реального сложного процесса
в памяти компьютера в режиме «имитации»,
выполнить оптимизацию некоторых его
параметров.

Имитационной
моделью

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

Для
этого вида моделирования используется
синоним
компьютерное моделирование. Так как
имитационную
модель нужно создавать, то для этого
необходимо
специальное
программное обеспечение ― система
моделирования (simulation
system).
Специфика такой системы определяется
технологией
работы,
набором языковых средств, сервисных
программ и
приемов
моделирования.

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

  • работы
    по созданию или модификации имитационной
    модели;

  • эксплуатацию
    имитационной
    модели и интерпретацию результатов.

Имитационное
(компьютерное) моделирование экономических
процессов
обычно применяется в двух случаях:

  • для
    управления сложным бизнес-процессом,
    когда имитационная модель управляемого
    экономического объекта используется
    в качестве инструментального средства
    в контуре адаптивной системы управления,
    создаваемой на основе информационных
    (компьютерных) технологий;

  • при
    проведении экспериментов с
    дискретно-непрерывными моделями сложных
    экономических объектов для получения
    и отслеживания их динамики в экстренных
    ситуациях, связанных с рисками, натурное
    моделирование которых нежелательно
    или невозможно.

Можно
выделить следующие типовые задачи,
решаемые средствами имитационного
моделирования при управлении экономическими
объектами:

  • моделирование
    процессов логистики для определения
    временных и стоимостных параметров;

  • управление
    процессом реализации инвестиционного
    проекта на различных этапах его
    жизненного цикла с учетом возможных
    рисков и тактики выделения денежных
    сумм;

  • анализ
    клиринговых процессов в работе сети
    кредитных организаций (в том числе
    применение к процессам взаимозачетов
    в условиях российской банковской
    системы);

  • прогнозирование
    финансовых результатов деятельности
    предприятия на конкретный период
    времени (с анализом динамики сальдо на
    счетах);

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

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

  • оценка
    параметров надежности и задержек в
    централизованной экономической
    информационной системе с коллективным
    доступом (на примере системы продажи
    авиабилетов с учетом несовершенства
    физической организации баз данных и
    отказов оборудования);

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

  • моделирование
    действий курьерской (фельдьегерьской)
    вертолетной группы в регионе, пострадавшем
    в результате природной катастрофы или
    крупной промышленной аварии;

  • анализ
    сетевой модели PERT (Program Evaluation and Review
    Technique) для проектов замены и наладки
    производственного оборудования с
    учетом возникновения неисправностей;

  • анализ
    работы автотранспортного предприятия,
    занимающегося коммерческими перевозками
    грузов, с учетом специфики товарных и
    денежных потоков в регионе;

  • расчет
    параметров надежности и задержек
    обработки информации в банковской
    информационной системе.

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

  • возможностью
    применения имитационных программ
    совместно со специальными
    экономико-математическими моделями и
    методами, основанными на теории
    управления;

  • инструментальными
    методами проведения структурного
    анализа сложного экономического
    процесса;

  • способностью
    моделирования материальных, денежных
    и информационных процессов и потоков
    в рамках единой модели, в общем модельном
    времени;

  • возможностью
    введения режима постоянного уточнения
    при получении выходных данных (основных
    финансовых показателей, временных и
    пространственных характеристик,
    параметров рисков и др.) и проведении
    экстремального эксперимента.

Имитационное
моделирование
как
научная дисциплина появилась
на рубеже 50–60-х
гг. Х Х века. Научные
исследования и практическое
применение метода начались в
США. Сегодня машинная имитация имеет
широкое распространение в
решении
важных научных и народнохозяйственных
задач.

Для
построения имитационной модели может
быть использован практически любой из
универсальных языков программирования.
Но такое решение проблемы едва ли будет
рациональным при моделировании даже
сравнительно простой системы. Гораздо
более эффективным является использование
специализированных систем имитационного
моделирования. В настоящее время
существует целый ряд таких систем,
например инструмент визуального
моделирования SIMULINK, входящий в состав
пакета MATLAB. Но для моделирования
дискретных систем вот уже на протяжении
почти полувека (с 1961 года) наиболее
универсальным средством остается
система имитационного моделирования
общего применения GPSS.

Моделирование в образовании и обучении

Моделирование широко используется в образовательных целях
. Его применяют в тех случаях, когда слишком дорого или опасно позволить стажерам использовать реальное оборудование в реальном мире. В таких ситуациях они получают реалистичный опыт в безопасной виртуальной среде. Часто удобство заключается в том, чтобы позволить ошибки во время обучения в условиях критической системы безопасности. Симуляции в образовании чем-то похожи на учебные симуляции. Они сосредоточены на конкретных задачах. Термин « микромир
» используется для обозначения учебных симуляций, которые моделируют некоторую абстрактную концепцию, а не имитируют реалистичный объект или окружающую среду, или в некоторых случаях моделируют реальную среду упрощенным способом, чтобы помочь учащемуся развить понимание ключевых понятий. Обычно пользователь может создать в микромире некую конструкцию, которая будет вести себя в соответствии с моделируемыми концепциями. Сеймур Пейперт
был одним из первых, кто понял ценность микромиров, и язык программирования Logo
, разработанный Пейпертом, является одним из самых известных микромиров.

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

Эмуляция в вычислительной технике

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

Аппаратная эмуляция представлена эмуляторами, выполненными в виде отдельного устройства. Например, DOS
-совместимые карты расширения наподобие Centris 610 и Performa 630, устанавливавшиеся в некоторые Macintosh
для обеспечения возможности запуска DOS-программ с ПК
. Другим примером являются аппаратные эмуляторы на основе ППВМ
.

Теоретически, согласно тезису Чёрча — Тьюринга
, любая операционная среда может быть эмулирована на другой. Однако на практике зачастую это бывает крайне затруднительно ввиду того, что точное поведение эмулируемой системы не документировано и его возможно определить только посредством обратной разработки. В тезисе также не говорится о том, что если производительность эмуляции меньше, чем у оригинальной системы, то эмулируемое программное обеспечение будет работать существенно медленнее, нежели должно на оригинальном оборудовании, с возможным возникновением остановок эмуляции или неустойчивой производительностью.

Симуляторы компьютерных систем – похожи ли на реальность

Время на прочтение

Простым и доступным языком про основные термины из области симуляторов, а также типы и уровни детализации моделей. Материал для легкого и быстрого знакомства с данным направлением.

image


Если бы меня спросили про симуляцию некоторое время назад, то первое, что пришло бы в голову – это мой сын, рассказывающий о своем больном животе накануне контрольной в школе. Однако последние десять лет я работаю с симуляторами различных компьютерных систем, от телефонов до серверов, основанных на микропроцессорах, SOC-ах (System-On-Chip) и чипсетах одного из крупнейших производителей (к сожалению, название под NDA), и мое представление о симуляции поменялось. Но обо всем по порядку.

Я уверен, что многие из вас сталкивались с симуляторами, которые часто называют виртуальными машинами, гипервизорами. Кто-то устанавливает Parallels Studio себе на Mac, чтобы запускать Windows из MacOS, кто-то пользуется продуктом от VmWare – Workstation, чтобы иметь еще одну операционную систему (ОС), запущенную внутри уже установленной. Те, кто знаком с Linux, предпочитают KVM и QEMU. Также популярен в народе VirtualBox. Люди, профессионально занимающиеся разработкой аппаратуры на базе ПЛИС (Программируемая Логическая Интегральная Схема), знают про VCS от Synopsys и Mentor Graphics Questa. И все же это лишь небольшая часть того, что можно называть симуляторами.

Что такое симулятор?

Симулятором называют модель, как правило, программную, реального устройства. Соответственно, симуляция – это процесс работы такой модели, повторяющий работу устройства.

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

Airbnb в симуляции – гость и хост

Код, запускаемый внутри симулятора, называют «гостевым кодом», это может быть «гостевая программа» или целая «гостевая операционная система». Сама симулируемая система называется просто «гость». В свою очередь, система, компьютер, где запускается симулятор, называется «хостом» (англ. host), а операционная система, работающая на хосте, в которой запускается симулятор, называется «хостовой ОС».

image

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

Симуляция и эмуляция – какое название правильное?

Модель может повторять устройство с разной степенью точности и детализации. Часто это симуляция только внешнего поведения системы, доступного программному коду. Коду ведь «все равно», как именно внутри реализована та или иная инструкция процессора, – главное, чтобы работало. Такой вариант симуляции распространен, не сложен в разработке и довольно быстрый, не тормозит даже на обычных пользовательских компьютерах.

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

Создание эмуляторов гораздо сложнее из-за большего объема функциональности, которую необходимо реализовывать в модели. Также они функционируют намного медленнее по сравнению с симуляторами внешнего поведения устройства. С эмуляторами речь вообще не идет о запуске Windows – это может занять годы. Никто не занимается созданием программного эмулятора целиком всей платформы – это очень долго и дорого. Вместо этого эмулируются отдельные компоненты системы, такие как тот же центральный процессор, и на нем запускается лишь часть симуляционного процесса. Возможны различные гибридные схемы, когда часть симулятора является верхнеуровневой моделью, часть низкоуровневой, часть в ПЛИС, а часть вообще реальная железка.

image

4 уровня детализации симуляции

Как я написал выше, наиболее распространенным является вариант симуляции на уровне инструкций процессора, так называемый ISA (Instruction Set Architecture), или, точнее, результата их выполнения, т.е. без эмуляции всей внутренней логики того, как это происходит в реальном процессоре, и без учета времени выполнения различных инструкций. Именно такие симуляторы называют еще функциональными. Так работают VirtualBox, Vmware Workstation, Wind River Simics, KVM и QEMU. Это позволяет удобно, без лишних дополнительных действий запускать программы, предназначенные для симулируемого устройства. Другими словами, не требуется ни перекомпиляция, ни какие-либо другие манипуляции с запускаемыми программами. В таких случаях говорят, что возможен запуск немодифицированного бинарного кода.

Если говорить про более высокий уровень абстракции, то это будет реализация определенного ABI (Application Binary Interface). В двух словах, ABI описывает бинарный интерфейс взаимодействия двух программ – как правило, пользовательской программы и библиотеки или ОС. A BI покрывает соглашения о вызовах (как передавать параметры и возвращать значения), размеры типов данных, выполнение системных вызовов. Как это работает? Например, если программе, написанной для Linux, необходимо создать дополнительный тред (от англ. thread – нить) выполнения, то вызывается функция pthread_create(). А что, если сделать библиотеку с такой функцией в Windows и реализовать необходимые механизмы связывания приложения и библиотеки (динамической линковки)? В таком случае можно будет запускать Linux приложения из Windows. Windows будет «симулировать» Linux. Именно это и было сделано в Windows subsystem for Linux в Windows 10, что позволяет запускать немодифицированные бинарные Linux приложения в Windows.

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

Ниже уровня микроархитектурной симуляции идет уровень эмуляции логических элементов, из которых и состоят современные чипы. Такие эмуляторы бывают и программными, и аппаратными с использованием ПЛИС. Логика ПЛИС описывается с помощью RTL (Register Transfer Level) на языках Verilog, VHDL и др. После компиляции получается образ (bitstream), который потом прошивается в ПЛИС. Причем для этого необязательно пользоваться паяльником и разбираться в электротехнике. Плата подсоединяется к компьютеру, например, по USB или JTAG интерфейсу, а специальный софт от производителя ПЛИС платы выполняет запись. Стоимость таких плат начинается от десяти долларов за простейшие варианты до миллионов долларов для больших ПЛИС стендов размером со шкаф, используемых в крупных компаниях-производителях чипов. В таких компаниях симуляция с использованием ПЛИС является финальной стадией перед отдачей RTL в производство.

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

На рисунке ниже показаны описанные уровни симуляции.

image

Кроме этих уровней моделирования, мне также приходилось сталкиваться с гибридными симуляторами. По сути, они представляют собой соединенные друг с другом симуляторы, моделирующие на разных уровнях разные части системы. Например, необходим анализ пропускной способности новой сетевой карты, работающей вместе с разрабатываемым драйвером для определенной ОС. Такое сетевое устройство, а также ряд смежных устройств, могут быть реализованы сначала на микроархитектурном уровне для предварительного анализа, а потом и в ПЛИС, на уровне логических элементов, для финальных проверок. При этом остальная часть системы, задействованная лишь частично, реализуется на уровне инструкций. Обойтись без нее нельзя, так как она необходима, например, для загрузки ОС, а реализовывать ее на более низком и сложном уровне не имеет смысла.

Так что же на счет сравнения симуляторов и реальности?

Как теперь понятно, нет задачи сделать тот или иной симулятор максимально похожим на реальность. Есть задача, которую ставит бизнес, и симуляция выполняется со той степенью “похожести” на реальность, который является минимально достаточным для решения этой задачи, не тратя при этом лишних денег и времени. В одном случае это может быть простая библиотека, реализующая необходимый бинарный интерфейс (ABI), а в другом не обойтись без детального микроархитектурного симулятора.

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

Симуляция

Имитационное моделирование заключается в последовательном расчете состояния бизнес-процесса в различные моменты времени. Например с 9:00 до 9:10 секретарю придет конверт с договором на подписание, в 10:00 она допьет кофе и отнесет его юристам, которые по истечении трех часов вернут его на доработку и так далее, пока подписанная копия договора не будет отправлена клиенту. Управление симуляцией осуществляется посредством кнопок Пуск, Ускорить, Пауза, Следующий и Стоп — что позволяет пройти любой цикл выполнения процесса вдоль и попрек. В зависимости от состояния в расчетный момент, на графических объектах модели выводится их состояние для визуального контроля. Так же ведется подробный журнал переходов, где можно отследить детали возникновения заторов в процессе.

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА


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

Первое применение функционального моделирования осуществлено компанией Autonetics около 1960 года для тестирования программ на языке ассемблера, которые впоследствии должны были выполняться на военной машине D-17B. Это позволило писать, выполнять и тестировать полетное программное обеспечение до физического изготовления вычислительного оборудования D-17B. Эта же компания позднее применяла функциональное моделирование для тестирования полетного программного обеспечения, которое должно было выполняться на машине D-37C.



  • Эмуляция сохраняет вид, поведение и ощущение от оригинальных систем, что не менее важно, чем данные сами по себе [3]

    .
  • Несмотря на высокую изначальную стоимость создания эмулятора, со временем эмуляторы могут становиться более финансово выгодным решением [6]

    .
  • Сокращает трудозатраты, так как вместо долгой и постоянно продолжающейся работы по миграции данных для каждого цифрового объекта при внесении библиотек приложений и операционных систем прошлого и настоящего в эмулятор для работы со всеми документами можно использовать одинаковые технологии [3]

    .
  • Многие эмуляторы разработаны и доступны под лицензией GNU General Public License
    как открытое программное обеспечение
    , что расширяет масштабы сотрудничества [2]

    .
  • Эмуляция позволяет использовать программное обеспечение, эксклюзивное для одной платформы, на другой платформе. Например, игры, эксклюзивные для PlayStation 2
    , могут быть эмулированы на ПК
    или Xbox One
    . Это особенно полезно, когда оригинальная система труднодоступна для обретения или несовместима с современным оборудованием (например, старые игровые приставки может быть технически невозможно подключить к современным телевизорам).


  • Интеллектуальная собственность
    . Многие технологические компании, чтобы занять свою нишу на рынке, применяют при разработке своих продуктов нестандартизированные функции, постоянно внедряя улучшения, чтобы продукт оставался конкурентоспособным. Хоть это и приносит пользу, насыщая рынок технологичными продуктами и увеличивая рыночную долю продукта, это создаёт существенные проблемы пользователям, занимающимся архивированием, ввиду отсутствия всей необходимой документации, так как аппаратное и программное обеспечение проприетарно
    по своей сути [7]

    .
  • Законы об авторских правах
    до сих пор не регламентируют защиту документации и спецификаций проприетарного оборудования и программ, встроенных в эмулятор [8]

    .
  • Эмуляция часто используется в пиратских целях
    , поскольку эмуляторы освобождают пользователя от необходимости покупать оригинальное устройство, например игровую консоль
    , и крайне редко содержат какие-либо средства противодействия использованию нелегальных копий. Это приводит к весомой неопределенности правового положения эмуляции и к тому, что в программное обеспечение закладываются средства, препятствующие его работе в случае их запуска на эмуляторе. В компьютерных играх
    пользователь иногда может продолжить игру, но на последующих уровнях игра может становиться невозможной, что воспринимается либо как небрежность программиста
    , либо как просто чрезмерная сложность [9]

    [10]

    . Такая защита способствует созданию более точных эмуляторов, которые бы не вызывали срабатывание программной защиты, которая зачастую не очевидна.

Применение имитационного моделирования

К имитационному моделированию прибегают, когда:

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

Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы
на основе результатов анализа наиболее существенных взаимосвязей между её элементами или разработке симулятора
( англ.
 ) исследуемой предметной области для проведения различных экспериментов.


  • Компьютерные игры
    : симуляторы автомобилей и мотоциклов, самолётов, космических кораблей, танков, поездов, подлодок, различных видов спорта и т. п. Основным принципом симулятора является точное воспроизведение особенностей какой-то тематической области (например: автосимулятор
    должен максимально точно воспроизводить физические особенности машин). [ источник не указан 1141 день


    ]

    • Спортивный симулятор
    • Авиасимулятор
      : симулятор летательного аппарата. [ источник не указан 1141 день


      ]

Моделирование логических схем

Моделирование логических схем — применение особого программного обеспечения с целью предсказать поведение цифровой схемы и языков описания аппаратуры
. Моделирование может выполняться на различных уровнях физических абстракций: уровень транзисторов
, уровень логических элементов
, уровень регистровых передач
или функциональный уровень. Моделирование осуществляется после разработки схемы в виде логических уравнений и до начала её физического производства.


  • Allan
    [5]

    ,
  • SimInTech
    , , NMF

    [6]

    , ObjectMath

    [7]

    , Omola

    [8]

    , SIDOPS+

    [9]
  • Smile

    [10]

    .

Сервис имитационного моделирования бизнес-процессов

БП Симулятор


Сервис предназначен для поиска узких мест разрабатываемых бизнес-процессов или проверки эффективности вариантов внесения изменений в действующие процессы. Аналогичное по функционалу ПО входит в состав BPM-систем IBM, Oracle, AG Software и др., но не является доступным для обучения и коммерческого использования вне корпоративного сегмента. Основная миссия сервиса bpsimulator.com — доступность имитационного моделирования для потенциальных пользователей и далее я расскажу, каким образом достигается данная цель. Симулятор реализован как веб-сервис с возможностью автономной работы. Имитационное моделирование включают в себя следующие этапы:

  1. Моделирование бизнес-процесса
  2. Симуляция модели
  3. Анализ результатов симуляции

Моделирование в производстве

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

  • Длительность одного цикла (сколько времени требуется для изготовления одной детали)
  • Использование ресурсов, рабочей силы и машин
  • Очереди на рабочих местах
  • Потребности в персонале


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


Моделирование запуска спейс шаттла

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА
Комната
, сконфигурированная для моделирования запуска спейс шаттла

Основные цели моделирования запуска шаттла заключаются в следующем:

  • демонстрация операций обратного отсчета
    в комнате запуска
  • обеспечение подготовки инженеров по распознаванию и оценке системных проблем в критической по времени среде
  • использование способности стартовой группы оценивать, расставлять приоритеты и реагировать на проблемы комплексным образом в критической по времени среде
  • обеспечение процедур, которые будут использоваться при выполнении операций восстановления в случае отказов системы, выполняемых на заключительном этапе обратного отсчета [57]

Анализ

По окончании симуляции можно посмотреть собранную статистику симуляции, которая распределена по следующим срезам:

  • Процесс — дает представление о эффективности процесса в целом, от начала и до конца периода симуляции
  • Функции — в разрезе исполняемых функций можно определить, где возникают узкие места
  • Ресурсы — отображаются все задействованные исполнители и степень их загрузки
  • Задачи — можно проследить, как зависит суммарная длительность одних и тех же задач в зависимости от времени их назначения

СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА

Симуляторы в медицине

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

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


Повышение безопасности пациентов

Безопасность пациентов — это проблема медицинской промышленности. Известно, что пациенты получают травмы и даже умирают из-за ошибок руководства и отсутствия лучших стандартов ухода и обучения. В соответствии с национальной программой создания симуляционного медицинского образования, “способность медицинского работника разумно реагировать в неожиданной ситуации является одним из наиболее важных факторов в создании положительного результата в неотложной медицинской помощи
, независимо от того, происходит ли это на поле боя, автостраде
или в отделении больницы. Эдер-Ван Хук, автор вышеупомянутой национальной программы, также отметил, что медицинские ошибки убивают до 98 000 человек с предполагаемой стоимостью от 37 до 50 миллионов долларов и от 17 до 29 миллиардов долларов за предотвратимые неблагоприятные события в год.


История моделирования в здравоохранении




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


СИМУЛЯЦИЯ ПРОЦЕССОВ ИНФОРМАТИКА
Гранатометчик тренируется с помощью компьютерного тренажера


  • А. Аганичев, Д. Панфилов, М. Плавич, О. Полянский. Программно-аппаратный комплекс для отладки МП систем на основе микроконтроллеров семейства MC68HC11 фирмы MOTOROLA
  • Шагурин И., Бродин В., Калинин Л., Толстов Ю., Петров С., Исенин И., Эйдельман С., Ванюлин В. Средства проектирования и отладки систем управления на базе МК фирмы Motorola.

Применение SymPy в симуляции физических процессов

Библиотека SymPy предоставляет мощные инструменты для симуляции и анализа физических процессов.

1. Движение тела под воздействием гравитации

Рассмотрим задачу движения тела массой m под воздействием силы гравитации. Ускорение свободного падения обозначим как g
, а высоту, на которую тело поднимается, как h
. Мы можем использовать SymPy для моделирования движения тела и расчета его скорости и положения в зависимости от времени.

Для начала определим переменные и параметры:

      import sympy as sp

   t, m, g, h, v0 = sp.symbols('t m g h v0')  
  

Затем создадим уравнение движения:

      eq = sp.Eq(v0 + g*t, sp.sqrt(2*g*h))  
  

В этом уравнении v0
— начальная скорость, g
— ускорение свободного падения, h
— высота, t
— время. Мы можем решить это уравнение относительно t
и получить время, через которое тело достигнет высоты h
.

Помимо этого, SymPy позволяет рассчитать максимальную высоту, достигнутую телом, и скорость при достижении этой высоты.

2. Расчет теплопередачи в теплообменнике

В инженерии расчеты теплопередачи в теплообменниках являются важными задачами. SymPy может помочь моделировать теплопередачу и определять температурные профили внутри теплообменника.

Для моделирования теплообменника мы определим уравнение теплопроводности, которое описывает распределение температуры внутри теплообменника в зависимости от времени и координаты.

      x, t, T, k, alpha = sp.symbols('x t T k alpha')
   eq_heat = sp.Eq(sp.diff(T, t) - alpha * sp.diff(T, x, x), 0)  
  

Где T
— температура, k
— теплопроводность материала, alpha
— коэффициент теплопроводности, x
— координата внутри теплообменника, t
— время. Это уравнение можно решить численно или аналитически для конкретных граничных условий, что позволит определить температурные профили в теплообменнике.

3. Анализ электрических цепей

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

      R1, R2, C1, L1, V = sp.symbols('R1 R2 C1 L1 V')
   I1, I2, V1, V2 = sp.symbols('I1 I2 V1 V2', real=True)

   eq1 = sp.Eq(V1, I1 * R1)
   eq2 = sp.Eq(V2, I2 * R2)
   eq3 = sp.Eq(I1, C1 * sp.diff(V1, t))
   eq4 = sp.Eq(I2, 1/L1 * sp.integrate(V2, t))
   eq5 = sp.Eq(V, V1 + V2)  
  

Здесь R1
и R2
— сопротивления, C1
— ёмкость, L1
— индуктивность, V
— источник напряжения. Мы создали уравнения, описывающие законы Ома, токовые и напряженные соотношения для каждого элемента цепи.

Далее мы можем решить эту систему уравнений относительно токов I1
и I2
и напряжений V1
и V2
при заданных значениях элементов цепи и источника напряжения.

4. Динамика механических систем

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

      theta, g, L, t = sp.symbols('theta g L t')  
  

Где theta
— угол отклонения маятника, g
— ускорение свободного падения, L
— длина маятника, t
— время.

Теперь создадим дифференциальное уравнение, описывающее движение маятника:

      eq_pendulum = sp.Eq(L * sp.diff(theta, t, t), -g * sp.sin(theta))  
  

Это уравнение описывает второй закон Ньютона для маятника. Мы можем решить его для theta
как функции времени t
и изучить движение маятника в зависимости от начальных условий.

5. Квантовая механика

SymPy также предоставляет возможности для символьного анализа квантово-механических систем. Вы можете определять операторы, состояния и выполнять операции с ними.

Например, создадим оператор гамильтониана для гармонического осциллятора:

      from sympy.physics.quantum import Dagger, Ket, Operator

   m, omega, x = sp.symbols('m omega x')
   H = Operator(-((1/(2*m)) * sp.diff(x, x) + (1/2) * m * omega**2 * x**2))  
  

Теперь мы можем определить состояния, например, основное состояние гармонического осциллятора:

      ground_state = Ket('0')  
  

С помощью SymPy можно выполнять операции с операторами, состояниями и ожидаемыми значениями, что позволяет анализировать квантово-механические системы.

6. Диффузия в жидкости

Предположим, вы хотите изучить процесс диффузии в жидкости. Для этого можно использовать уравнение Фика, которое описывает распределение концентрации вещества в пространстве и времени. С помощью SymPy, вы можете создать символьную модель для этой диффузии и анализировать изменения концентрации вещества с течением времени.

      c, D = sp.symbols('c D')
   x, t = sp.symbols('x t')
   eq_diffusion = sp.Eq(sp.diff(c, t), D * sp.diff(c, x, x))  
  

Где c
— концентрация, D
— коэффициент диффузии, x
— координата, t
— время. С помощью SymPy можно решить это уравнение и изучить процесс диффузии в зависимости от начальных условий и параметров.

7. Осцилляции в электрическом колебательном контуре

SymPy также полезен при анализе колебательных контуров в электронике. Рассмотрим электрический контур, содержащий индуктивность L
, емкость C
и сопротивление R
. Мы можем создать уравнение, описывающее осцилляции в таком контуре и рассчитать параметры, такие как частота и амплитуда колебаний.

      R, L, C, V0 = sp.symbols('R L C V0')
   I, Q = sp.symbols('I Q', real=True)
   eq_oscillation = [
       sp.Eq(I, sp.diff(Q, t)),
       sp.Eq(V0, L * sp.diff(I, t) + R * I + Q / C)
   ]  
  

Здесь I
— ток, Q
— заряд на конденсаторе, V0
— начальное напряжение, R
— сопротивление, L
— индуктивность, C
— емкость. SymPy может помочь решить это систему уравнений и исследовать динамику колебательного контура.

8. Распространение звука в среде

Если вас интересует распространение звука в среде, то SymPy может помочь моделировать это явление. Уравнение д’Аламбера описывает волновое уравнение для звука в трехмерной среде. Вы можете использовать SymPy для решения этого уравнения и изучения распространения звуковых волн.

      p = sp.Function('p')(x, y, z, t)
   c = sp.symbols('c')
   eq_wave = sp.Eq(sp.diff(p, t, t), c**2 * (sp.diff(p, x, x) + sp.diff(p, y, y) + sp.diff(p, z, z)))  
  

Где p
— давление в среде, c
— скорость звука, x
, y
, z
— координаты в пространстве, t
— время. SymPy может решать это уравнение и предсказывать распространение звуковых волн в трехмерной среде.

9. Электростатика и распределение зарядов

Если вам нужно изучить распределение электрических зарядов в пространстве, SymPy может помочь решать уравнения Пуассона и Лапласа для определения потенциала и электрического поля. Рассмотрим, например, распределение заряда внутри проводящей сферы.

      r, V, rho, epsilon = sp.symbols('r V rho epsilon')
   eq_poisson = sp.Eq(sp.diff(V, r, 2), -rho / (epsilon * sp.pi * r**2))  
  

Где r
— радиус, V
— потенциал, rho
— объемная плотность заряда, epsilon
— диэлектрическая проницаемость.

Системы имитационного моделирования

Платные
Бесплатные
Свободные
  • Scilab
  • Maxima
  • JModelica.org
    [2]
  •                                                           OpenModelica                                                          

    from sympy.physics.quantum import Dagger, Ket, Operator

    m, omega, x = sp.symbols('m omega x')
    H = Operator(-((1/(2*m)) * sp.diff(x, x) + (1/2) * m * omega**2 * x**2))
    Архивная копия

    от 14 января 2018 на

    Wayback Machine

    Scicos

    Архивная копия

    от 30 ноября 2018 на

    Wayback Machine

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *