10.1. ОБЩИЕ ПРАВИЛА ПОСТРОЕНИЯ И СПОСОБЫ РЕАЛИЗАЦИИ МОДЕЛЕЙ СИСТЕМ

10.1. ОБЩИЕ ПРАВИЛА ПОСТРОЕНИЯ И СПОСОБЫ РЕАЛИЗАЦИИ МОДЕЛЕЙ СИСТЕМ

Рисунок 5.1 – Классификация моделей по способу реализации

По способу реализации модели делятся на материальные (предметные) и идеальные (информационные).

Материальные модели воспроизводят физические, геометрические, функциональные свойства объектов в материальной форме (макет здания, автомобиля).

Самые простые примеры материальных моделей – детские игрушки. По ним человек получает первое представление об окружающем мире.

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

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

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

Введение

С MVVM (Model-View-ViewModel) процесс разработки графического интерфейса для пользователей делится на две части. Первая — это работа с языком разметки или кодом GUI. Вторая — разработка бизнес-логики или логики бэкенда (модель данных). Часть View model в MVVM — это конвертер значений. Это значит, что view model отвечает за конвертирование объектов данных из модели в такой вид, чтобы с объектами было легко работать. Если смотреть с этой стороны, то view model — это скорее модель, чем представление. Она контролирует большую часть логики отображения. Модель представления может реализовывать паттерн медиатор. Для этого организуется доступ к логике бэкенда вокруг набора юз-кейсов, поддерживаемых представлением.

В этом туториале мы попробуем определить каждый компонент паттерна MVVM, чтобы создать небольшое приложение на Android в соответствии с ним.

На следующей картинке — разные элементы, которые мы собираемся создать при помощи компонента Architecture и библиотеки Koin для внедрения зависимостей.

Архитектуру ниже можно разделить на три различные части.

Представление

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

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

Этот компонент связывает модель и представление. Отвечает за управление ссылками данных и возможных конверсий. Здесь появляется биндинг. В Android мы не беспокоимся об этом, потому что можно напрямую использовать класс AndroidViewModel или ViewModel.

Это уровень бизнес-данных и он не связан ни с каким особенным графическим представлением. В Android, согласно “чистой” архитектуре, модель может содержать базу данных, репозиторий и класс бизнес-логики. Картинка ниже описывает взаимодействие между разными компонентами.

Как реализовать паттерн MVVM

Чтобы реализовать паттерн MVVM, важно начать с компонентов, которым для работы нужен другой компонент. Это и есть зависимость.

А с момента появления компонента архитектуры, логичное общее решение — реализовать Android-приложения при помощи модели с изображения ниже. Там вы увидите стрелки, которые ведут от представления (активности/фрагмента) к модели.

А это значит, что View знает о View-Model, а не наоборот, и View Model знает о Model, и не наоборот. То есть у представления будет связь с моделью представления, а у модели представления будет связь с моделью. Строго в таком порядке, никак иначе. Благодаря такой архитектуре приложение легко поддерживать и тестировать.

Чтобы программировать быстро и эффективно, вам нужно начать с моделирования, так как модели не нужны другие компоненты для работы.

Сценарий приложения и реализация модели

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

У пространства DAO есть только два метода. Один — добавление информации в БД. Второй — ее извлечение.

Пространство базы данных выглядит так:

Во второй части мы реализуем Webservice, который отвечает за получение данных онлайн. Для того будем пользоваться retrofit+coroutines.

Если вы хотите узнать, как пользоваться Retrofit вместе с сопрограммами, загляните сюда.

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

Как сами видите, у репозитория есть конструктор с двумя параметрами. Первый — это класс, который представляет онлайн-данные, а второй — представляет данные оффлайн.

View-Model

После того, как мы описали модель и все ее части, пора ее реализовать. Для этого возьмем класс, родителем которого является класс ViewModel Android Jetpack.

Класс ViewModel создан для того, чтобы хранить и управлять данными, связанными с UI относительно жизненного цикла. Он позволяет данным пережить изменения конфигурации, например, повороты экрана.

View-model берет репозиторий в качестве параметра. Этот класс “знает” все источники данных для нашего приложения. В начальном блоке view-model мы обновляем данные БД. Это делается вызовом метода обновления репозитория. А еще у view-model есть свойство data. Оно получает данные локально напрямую. Это гарантия, что у пользователя всегда будет что-то в интерфейсе, даже если устройство не в сети.

Подсказка: я пользовался вспомогательным классом, который помогал мне управлять состоянием загрузки

Это последний компонент архитектуры. Он напрямую общается с представлением-моделью, получает данные и, например, передает их в recycler-view. В нашем случае представление — это простая активность.

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

Вот вы и увидели, как я получил экземпляр view-model, используя для этого внедрение. А как это сработает, мы увидим дальше.

Конкретизация объектов и внедрение зависимостей

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

Так мы создадим важные объекты. Нашему приложению они нужны там же и нам останется только вызвать их в разные точки программы. Для этого и нужна магия библиотеки Koin.

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

Заключение

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

Вы можете найти полный код приложения у меня на GitHub по этой ссылке.

Читайте нас в телеграмме, vk и Яндекс.Дзен

Исходными данными для реализации модели на ЭВМ являются уравнения, описывающие рассматриваемый процесс. Для получения системы уравнений необходимо провести ряд подготовительных операций:

1) составить структурную схему соединения решающих элементов со­гласно решаемому уравнению,

2) выбрать масштабы представления пе­ременных величия и времени,

3) рассчитать параметры модели по ко­эффициентам исходных уравнений и выбранным значениям масштабов,

4) определить начальные условия и возмущения модели в физи­ческих величинах, которые будут представлять исходные переменные задачи.

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

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

Порядок решения состоит из следующих этапов:

1. постановка задачи – формулировка модели процесса;

2. математическая формулировка задачи – составление математического описания;

3. выбор численных методов решения уравнений,

4. разработка общего алгоритма;

6. выявление ошибок (отладка программы);

Математическое описание процесса зависит от степени изучен­ности отдельных составляющих элементов и степени их взаимосвязи.

После выбора метода решения задачи составляется описание алгоритма. Основными требованиями к форме записи алгоритма являются его наглядность; компактность и выразительность. На практике обычно используются два способа описания алгоритмов: графический и операторный.

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

Процесс подготовки алгоритма к его реализации, т. е. програм­мирование, заключается в том, что разрабатываются специальные языки записи алгоритмов решения, понятные человеку и машине;

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

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

· ошибки в алгоритме,

· ошибки программирования,

ошибки при подготовке информации (ошибки, допущенные при перенесении программы и исходных данных на но­ситель информации),

ошибки вычислительной машины.

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

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ В ИНЖЕНЕРНОМ ПРОЕКТИРОВАНИИ (окончание)

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

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

Для проведения таких исследований требуется построение балансовой теплотехнологической схемы (БТТС) объекта, из которой выделяется информационно-балансовая схема (ИБС)

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

1. Каждый вычислительный блок обозначается определенным симво­лом.

2. Информационные потоки изображаются направленными линиями между символами, со стрелками указывающими на направление потока информации.

3. Потоки и символы отдельно нумеруются.

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

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

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

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

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

В зависимости от формулировки задачи исследования ИБС могут быть представлены в виде:

1. Материальных потоковых графов (МПГ). МПГ отображает преобразование технологическими операторами общих массовых расходов физических потоков системы. Вершины МПГ соответствуют технологическим операторам объекта, уз­лам смешения материальных потоков в трубопроводах, источникам и сто­кам вещества физических пото­ков. Дуги МПГ соответствуют физическим потокам БТТС.

2. Для исследования процесса теплообмена используется тепловой по­то­ковый граф (ТПГ), отображающий преоб­разова­ние технологическими операторами объекта тепловых потоков БТТС. Вершины ТПГ отображают технологические операторы, которые изменяют тепловые расходы теплоты потоков, узлы смешения, внешние и внутренние (фиктивные) источ­ники и стоки теплоты. Дуги ТПГ соответствуют физическим и фиктивным потокам теплоты.

3. Эксергетические потоковые графы (ЭСПГ) отображают преобразование элементами БТТС расходов эк­сергии фи­зических и фиктивных потоков вещества и энергии, а также по­тери эксергии в элементах моделируемой системы. Вершины ЭСПГ соот­ветствуют технологическим операторам, осуществляющим преобразова­ние расходов эксергии, а также соответствуют внутренним и внешним рас­ходам эксергии. Дуги ЭСПГ соответствуют потокам эксергии физических и фиктивных потоков вещества и энергии, а также поте­рям эксергии в эле­ментах системы.

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

Таким образом, матрица смежности представляет собой квадратную матрицу, показывающую наличие или отсутствие связей между блоками ИБС. Цифра «1» в матрице смежности указывает на наличие связи, иду­щую из блока, заданного номером строки, в блок заданный номером столбца. Цифра «0» означает, что связи в этом направлении нет. Если ни один элемент не связан сам с собой, диагональ матрицы содержит только нули.

Матрица смежности позволяет проанализировать ИБС на предмет вы­явления разомкнутых последовательностей информационных блоков. Для этого в матрице смежности осуществляется поиск столбцов и строк, содержащих только нули. Если в матрице обнаружен столбец или строка, содержащая только нулевые элементы, это означает, что ни один блок ИБС не связан с блоком, соответствующим этому столбцу или строке. Сам блок имеет только внешние входящие потоки, а потому может быть отнесен к разомкнутой последовательности и удален из матрицы смежно­сти путем вычеркивания соответствующих ему столбца и строки. Полу­ченная матрица вновь анализируется на наличие столбцов и строк, имею­щих только нули, пока в матрице не останется «нулевых» столбцов. Ито­говая матрица смежности, образованная путем удаления «нулевых» строк и столбцов является сокращенной матрицей смежности.

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

Для идентификации контуров технологических схем используется со­кращенная матрица смежности А. Затем производится определе­ние степеней матрицы А путем ее умно­жения на саму себя. При этом выполняется обычное правило, согласно кото­рому элемент cij произведения двух матриц А и В есть

где aik, bkj – элементы матриц А и В соответственно.

При вычислениях использу­ются правила булевой алгебры:

Матрица А в n-степени показывает связи, которые проходят из любого элемента оборудования к любому другому элементу оборудования через n-по­токов. Цифра 1 в матрице А n означает, что существует по крайней мере один путь через n – потоков из элемента, соответствующего данной строке, к элемен­ту, соответствующему данному столбцу. Цифра 0 означает отсут­ствие такой связи.

Если при возведении матрицы смежности в степень “n” использовать не правила булевой алгебры, а обычные арифметические действия, то эле­мент

, матрицы Аn равен числу ориентированных маршрутов длины «n» из вершины vi в вершину vj.

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

Основными показателями матрицы циклов являются ранг контура и частота потока. Ранг контура указывает количество потоков, посредством которых он образуется, а частота потока представляет собой сумму конту­ров, в которых появляется данный поток.

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

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

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

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