trim
Поиск рабочих точек динамической системы.
| Библиотека |
|
Описание
Функция 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, 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задает индексы элементов начального вектора производных, которые должны остаться неизменными в результате процесса оптимизации.
Также функция возвращает значение options, которое содержит информацию о процессе оптимизации.
Аргументы
Входные аргументы
#
model —
имя модели
строка
Details
Имя модели без расширения файла.
| Типы данных |
|
#
x0 —
начальный вектор состояния
nothing | скаляр | вектор
Details
Начальные приближения переменных состояния модели.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
u0 —
начальный вектор входа
nothing | скаляр | вектор
Details
Начальные приближения входных переменных модели.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
y0 —
начальный вектор выхода
nothing | скаляр | вектор
Details
Начальные приближения выходных переменных модели.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
ix —
индексы элементов начального вектора состояния
nothing | скаляр | вектор
Details
Порядковые номера фиксированных компонентов начального вектора состояния.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
iu —
индексы элементов начального вектора входа
nothing | скаляр | вектор
Details
Порядковые номера фиксированных компонентов начального вектора входа.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
iy —
индексы элементов начального вектора выхода
nothing | скаляр | вектор
Details
Порядковые номера фиксированных компонентов начального вектора выхода.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
dx0 —
начальный вектор производных
nothing | скаляр | вектор
Details
Начальные приближения производных переменных состояния модели.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
idx —
индексы элементов начального вектора производных
nothing | скаляр | вектор
Details
Порядковые номера компонентов начального вектора производных, значения которых должны остаться неизменными в результате процесса оптимизации.
| Типы данных |
|
| Поддержка комплексных чисел |
Нет |
#
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— значение шага.
| Типы данных |
|
Выходные аргументы
#
x —
рабочая точка
вектор
Details
Рабочая точка.
| Типы данных |
|
#
u —
вектор входа, соответствующий рабочей точке
вектор
Details
Вектор входа, соответствующий рабочей точке.
| Типы данных |
|
#
y —
вектор выхода, соответствующий рабочей точке
вектор
Details
Вектор выхода, соответствующий рабочей точке.
| Типы данных |
|
#
dx —
вектор производных, соответствующий рабочей точке
вектор
Details
Вектор производных, соответствующий рабочей точке.
| Типы данных |
|
#
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— значение шага.
| Типы данных |
|