Документация Engee

trim

Поиск рабочих точек динамической системы.

Библиотека

EngeeControlSystems

Описание

Функция trim использует метод последовательного квадратичного программирования (Sequential quadratic programming, SQP) для поиска рабочих точек. Функция может искать регулировочные точки, удовлетворяющие условиям, накладываемым на переменные состояния, входные и выходные переменные модели, а также точки балансировки, при которых система имеет ненулевые значения производных.

Синтаксис

Вызов функции

  • x, u, y, dx, options = trim(model) — находит точку равновесия модели model в окрестностях начального вектора состояния x0. Найденная точка равновесия минимизирует абсолютное значение выражения . Если функция не может найти точку равновесия в окрестностях начального вектора состояния, то она возвращает точку ближайшую к точке равновесия. Найденная точка равновесия минимизирует абсолютное значение вектора производных модели. Вы можете определить начальный вектор состояния с помощью команды engee.model.

  • x, u, y, dx, options = trim(model, x0, u0, y0) — находит точку равновесия модели model в окрестностях начальных векторов состояния x0, входа u0 и выхода y0, которая минимизирует абсолютное значение траектории .

  • x, u, y, dx, options = trim(model, x0, u0, y0, ix, iu, iy) — находит точку равновесия модели model в окрестностях начальных векторов состояния x0, входа u0 и выхода y0 при заданных векторах индексов элементов начальных векторов состояния ix, входа iu и выхода iy. Данные индексы указывают на состояния, которые должны остаться неизменными в результате процесса оптимизации. Если функция не может найти точку равновесия, строго удовлетворяющую поставленным условиям, то она возвращает ближайшую точку, которая минимизирует абсолютное значение траектории .

  • x, u, y, dx, options = trim(model, x0, u0, y0, ix, iu, iy, dx0, idx) — находит рабочие точки модели model в окрестностях начальных векторов состояния x0, входа u0 и выхода y0 при заданных векторах индексов элементов начальных векторов состояния ix, входа iu и выхода iy, в которых она имеет ненулевые значения производных. Параметр dx0 задает начальные приближения производных переменных состояния модели, а параметр idx задает индексы элементов начального вектора производных, которые должны остаться неизменными в результате процесса оптимизации.

  • x, u, y, dx, options = trim(model, x0, u0, y0, ix, iu, iy, dx0, idx, options) — находит рабочие точки модели, используя алгоритм оптимизации, параметры которого задаются входным аргументом options.

Также функция возвращает значение options, которое содержит информацию о процессе оптимизации.

Аргументы

Входные аргументы

# model — имя модели
строка

Details

Имя модели без расширения файла.

Типы данных

String

# x0 — начальный вектор состояния
nothing | скаляр | вектор

Details

Начальные приближения переменных состояния модели.

Типы данных

Nothing, Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# u0 — начальный вектор входа
nothing | скаляр | вектор

Details

Начальные приближения входных переменных модели.

Типы данных

Nothing, Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# y0 — начальный вектор выхода
nothing | скаляр | вектор

Details

Начальные приближения выходных переменных модели.

Типы данных

Nothing, Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# ix — индексы элементов начального вектора состояния
nothing | скаляр | вектор

Details

Порядковые номера фиксированных компонентов начального вектора состояния.

Типы данных

Nothing, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# iu — индексы элементов начального вектора входа
nothing | скаляр | вектор

Details

Порядковые номера фиксированных компонентов начального вектора входа.

Типы данных

Nothing, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# iy — индексы элементов начального вектора выхода
nothing | скаляр | вектор

Details

Порядковые номера фиксированных компонентов начального вектора выхода.

Типы данных

Nothing, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# dx0 — начальный вектор производных
nothing | скаляр | вектор

Details

Начальные приближения производных переменных состояния модели.

Типы данных

Nothing, Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# idx — индексы элементов начального вектора производных
nothing | скаляр | вектор

Details

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

Типы данных

Nothing, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Нет

# options — параметры оптимизации
изменяемый составной тип

Details

Параметры оптимизации, записанные в структуру TrimOptions. Структура имеет следующие поля и значения по умолчанию:

  • verbose::Bool = false — включить/отключить вывод сообщений о ходе выполнения оптимизации;

  • computation_precision::Float64 = 1e−4 — требуемая точность расчета рабочей точки;

  • search_precision::Float64 = 1e−4 — требуемая точность решения задачи оптимизации;

  • derivatives_precision::Float64 = 1e−6 — требуемая точность расчета производных переменных состояния модели;

  • goal_function_value::Float64 = 0.0 — значение целевой функции;

  • iterations::Int64 = 1 — количество итераций в процессе поиска;

  • gradient_evaluations::Int64 = 1 — количество вычислений градиента;

  • equality_constraints::Int64 = 0 — количество ограничений в виде равенства;

  • max_function_evaluations::Int64 = 0 — максимальное количество вычислений целевой функции;

  • gradient_min_diff::Float64 = 1e−8 — минимальное значение числа, характеризующее точность нахождения минимума;

  • gradient_max_diff::Float64 = 0.1 — максимальное значение числа, характеризующее точность нахождения минимума;

  • step_length::Float64 = 1.0 — значение шага.

Типы данных

TrimOptions

Выходные аргументы

# x — рабочая точка
вектор

Details

Рабочая точка.

Типы данных

Float64

# u — вектор входа, соответствующий рабочей точке
вектор

Details

Вектор входа, соответствующий рабочей точке.

Типы данных

Float64

# y — вектор выхода, соответствующий рабочей точке
вектор

Details

Вектор выхода, соответствующий рабочей точке.

Типы данных

Float64

# dx — вектор производных, соответствующий рабочей точке
вектор

Details

Вектор производных, соответствующий рабочей точке.

Типы данных

Float64

# options — параметры оптимизации
изменяемый составной тип

Details

Параметры оптимизации, записанные в структуру TrimOptions. Структура имеет следующие поля и значения по умолчанию:

  • verbose::Bool = false — включить/отключить вывод сообщений о ходе выполнения оптимизации;

  • computation_precision::Float64 = 1e−4 — требуемая точность расчета рабочей точки;

  • search_precision::Float64 = 1e−4 — требуемая точность решения задачи оптимизации;

  • derivatives_precision::Float64 = 1e−6 — требуемая точность расчета производных переменных состояния модели;

  • goal_function_value::Float64 = 0.0 — значение целевой функции;

  • iterations::Int64 = 1 — количество итераций в процессе поиска;

  • gradient_evaluations::Int64 = 1 — количество вычислений градиента;

  • equality_constraints::Int64 = 0 — количество ограничений в виде равенства;

  • max_function_evaluations::Int64 = 0 — максимальное количество вычислений целевой функции;

  • gradient_min_diff::Float64 = 1e−8 — минимальное значение числа, характеризующее точность нахождения минимума;

  • gradient_max_diff::Float64 = 0.1 — максимальное значение числа, характеризующее точность нахождения минимума;

  • step_length::Float64 = 1.0 — значение шага.

Типы данных

TrimOptions