В Simulink® модель, algebraic loop происходит, когда цикл сигнала существует только с прямыми проходными блоками в цикле. Direct feedthrough означает, что Simulink нужно значение входного сигнала блока, чтобы вычислить его выход на шаге текущего времени. Такой цикл сигнала создает круговую зависимость блока выходные параметры и вводит в тот же такт. Это приводит к алгебраическому уравнению, для которого нужно решение в каждый такт, добавляя вычислительную стоимость для симуляции.
Некоторые примеры блоков с прямыми проходными входными параметрами:
State-Space, когда коэффициент матрицы D является ненулевым
Transfer Fcn, когда числитель и знаменатель имеют тот же порядок
Zero-Pole, когда блок имеет столько же нулей сколько полюса
Непрямые проходные блоки обеспечивают Переменную состояния. Двумя примерами является Integrator и Unit Delay.
Совет
Чтобы определить, имеет ли блок прямое сквозное соединение, считайте раздел Characteristics страницы с описанием блока.
Рисунок показывает пример алгебраического цикла. Блок Sum является алгебраической переменной x a, которая ограничивается равняться первому входу u минус x a (например, x a = u – x a).
Решением этого простого цикла является x a = u/2.
Simulink содержит набор числовых решателей для симуляции ordinary differential equations (ODEs), которые являются системами уравнений, которые можно записать как
где x является вектором состояния, и t является независимой переменной времени.
Некоторые системы уравнений содержат дополнительные ограничения, которые включают независимую переменную и вектор состояния, но не производную вектора состояния. Такие системы называются differential algebraic equations (DAEs),
Термин algebraic относится к уравнениям, которые не включают производных. Можно описать ДАУ, которые возникают в разработке в полуявной форме
где:
f и g могут быть вектор-функциями.
Первое уравнение является дифференциальным уравнением.
Второе уравнение является алгебраическим уравнением.
Вектором из дифференциальных переменных является x.
Вектором из алгебраических переменных является x a.
В моделях Simulink алгебраические циклы являются алгебраическими ограничениями. Модели с алгебраическими циклами задают систему дифференциальных алгебраических уравнений. Simulink решает алгебраические уравнения (алгебраический цикл) численно для x a на каждом шаге решателя ОДУ.
Модель на рисунке эквивалентна этой системе уравнений в полуявной форме:
На каждом шаге решателя ОДУ алгебраический решатель цикла должен решить алгебраическое ограничение для x a прежде, чем вычислить производную .
Алгебраические ограничения:
Происходите при моделировании физических систем, часто из-за законов сохранения, таких как сохранение массы и энергии
Происходите, когда вы выберете конкретную систему координат для модели
Справка налагает конструктивные ограничения на отклики системы в динамической системе
Используйте Simscape™ для систем модели, которые охватывают механическое устройство, электрические, гидравлические, и другие физические области как физические сети. Simscape создает ДАУ, которые характеризуют поведение модели. Программное обеспечение интегрирует эти уравнения с остальной частью модели и затем решает ДАУ непосредственно. Simulink решает переменные для компонентов в различных физических доменах одновременно, избегая проблем с алгебраическими циклами.
Искусственный алгебраический цикл происходит, когда атомарная подсистема или блок Model заставляют Simulink обнаруживать алгебраический цикл, даже при том, что содержимое подсистемы не содержит прямое сквозное соединение от входа до выхода. Когда вы создаете атомарную подсистему, все Inport блоки являются прямым сквозным соединением, приводящим к алгебраическому циклу.
Начните с включенной модели, которая представляет простое пропорциональное управление объекта, описанного
который может быть переписан в форме пространства состояний как
Система не имеет ни алгебраических переменных, ни прямого сквозного соединения и не содержит алгебраический цикл.
Измените модель как описано в следующих шагах:
Заключите блоки Контроллера и Объекта в подсистему.
В диалоговом окне подсистемы выберите Treat как атомарный модуль, чтобы сделать подсистему атомарной.
В панели Диагностики Параметров конфигурации Модели, установленных Алгебраический параметр Цикла на error
.
При симуляции этой модели происходит алгебраический цикл, потому что подсистема является прямым сквозным соединением, даже при том, что путь в атомарной подсистеме не является прямым сквозным соединением. Симуляция останавливается с алгебраической ошибкой цикла.
Когда модель содержит алгебраический цикл, Simulink использует нелинейный решатель на каждом временном шаге, чтобы решить алгебраический цикл. Решатель выполняет итерации, чтобы определить решение алгебраического ограничения, если существует тот. В результате модели с алгебраическими циклами могут запускаться более медленно, чем модели без алгебраических циклов.
Simulink использует алгоритм области доверия резкого искривления, чтобы решить алгебраические циклы. Используемый допуск меньше, чем решатель ОДУ Reltol
и Abstol
. Это вызвано тем, что Simulink использует “явный метод ОДУ”, чтобы решить дифференциал индекса 1 алгебраические уравнения (ДАУ).
Для алгебраического решателя цикла, чтобы работать,
Должен быть один блок, где решатель цикла может повредить цикл и попытаться решить цикл.
Модель должна иметь действительные сигналы double.
Базовое алгебраическое ограничение должно быть сглаженной функцией
Например, предположите, что ваша модель имеет блок Sum с двумя входными параметрами — одно дополнение, другое отнимающее. Если вы питаете выход блока Sum к одним из входных параметров, вы создаете алгебраический цикл, где все блоки включают прямое сквозное соединение.
Блок Sum не может вычислить выход, не зная вход. Simulink обнаруживает алгебраический цикл, и алгебраический решатель цикла решает цикл с помощью итерационного цикла. В примере блока Sum программное обеспечение вычисляет правильный результат этот путь:
x a (t) = u (t) / 2. | (1) |
Алгебраический решатель цикла использует основанный на градиенте метод поиска, который требует непрерывных первых производных алгебраического ограничения, которые соответствуют алгебраическому циклу. В результате, если алгебраический цикл содержит разрывы, алгебраический решатель цикла может перестать работать.
Для получения дополнительной информации см. Решение ДАУ индекса 1 в MATLAB и Simulink [1]
Simulink алгебраический решатель цикла использует один из двух алгоритмов, чтобы решить алгебраические циклы:
Доверительная область
Поиск линии
По умолчанию Simulink выбирает лучший алгебраический решатель цикла и может переключиться между этими двумя методами в процессе моделирования. Явным образом включить автоматический алгебраический выбор решателя цикла для вашей модели, в MATLAB® командная строка, введите:
set_param(model_name, 'AlgebraicLoopSolver','Auto');
Переключаться на алгоритм доверительной области, в командной строке MATLAB, введите:
set_param(model_name, 'AlgebraicLoopSolver', 'TrustRegion');
Если алгебраический решатель цикла не может решить алгебраический цикл с алгоритмом доверительной области, попытайтесь симулировать модель с помощью алгоритма поиска линии.
Переключаться на алгоритм поиска линии, в командной строке MATLAB, введите:
set_param(model_name, 'AlgebraicLoopSolver', 'LineSearch');
Для получения дополнительной информации см.:
Шемпин и nleqn.m код Рейчелта
Программа HYBRD1 Фортрана в Руководство пользователя для MINPACK-1 [2]
Пауэлл “Стандартная подпрограмма Фортрана для решения систем в нелинейных уравнениях”, в Численных методах для Нелинейных Алгебраических уравнений[3]
Методы доверительной области для нелинейной минимизации (Optimization Toolbox).
Поиск линии (Optimization Toolbox).
Алгебраическое решение цикла является итеративным процессом. Алгебраический решатель цикла Simulink успешен, только если алгебраический цикл сходится к определенному ответу. Когда цикл не удается сходиться или сходится слишком медленно, выходы симуляции с ошибкой.
Алгебраический решатель цикла не может решить алгебраические циклы, которые содержат любое следующее:
Блоки с выходными параметрами с дискретным знаком
Блоки с недвойными или комплексными выходами
Разрывы
Stateflow® графики
Если ваша модель содержит алгебраический цикл:
Вы не можете сгенерировать код для модели.
Simulink алгебраический решатель цикла не может смочь решить алгебраический цикл.
В то время как Simulink пытается решить алгебраический цикл, симуляция может медленно выполняться.
Для большинства моделей алгебраический решатель цикла является в вычислительном отношении дорогим, впервые продвигаются. Simulink решает последующие временные шаги быстро, потому что хорошая начальная точка для x a доступна от предыдущего временного шага.
Сравните решатели | Обнаружение пересечения нулем | Алгебраическое ограничение | Пространство состояний дескриптора
[1] Шемпин, Лоуренс Ф., M.W.Reichelt и J.A.Kierzenka”. Решение ДАУ индекса 1 в MATLAB и Simulink”. Сиамский Review.Vol.18, № 3,1999, pp.538-552.
[2] Больше, J.J., B.S.Garbow и K.E.Hillstrom. Руководство пользователя для MINPACK-1. Аргонн, Национальная лаборатория IL:Argonne, 1980.
[3] Рабиновиц, Филип, Численные методы редактора для Нелинейных Алгебраических уравнений, Нью-Йорка: Гордон и Научные Издатели Нарушения, 1970.