Измените действия управления, чтобы удовлетворить границы действия и ограничения
Simulink Control Design
Блок Constraint Enforcement вычисляет модифицированные действия управления, которые являются самыми близкими к заданным действиям управления, удовлетворяющим границам действия и ограничениям.
Блок использует решатель квадратичного программирования (QP), чтобы найти действие управления u, который минимизирует функцию . Здесь, u 0 является немодифицированным действием управления.
Решатель применяет следующие ограничения к задаче оптимизации.
Здесь:
fx и gx являются коэффициентами ограничительной функции.
c является направляющимся в ограничительную функцию.
Min u является нижней границей для действия управления.
u макс. является верхней границей для действия управления.
Блок Constraint Enforcement требует программного обеспечения Optimization Toolbox™.
Для получения дополнительной информации об ограничительном осуществлении смотрите Ограничительное Осуществление для Системы управления.
u0
— Управляйте действиямиНемодифицированные действия управления в виде скаляра или вектора.
Если параметром Number of actions является 1
, соедините u0 со скалярным сигналом. В противном случае соедините u0 с векторным сигналом с длиной, равной Number of actions.
fx
— Ограничительный коэффициент смещения функцииВозместите коэффициент fx в следующем уравнении ограничений.
Если параметром Number of constraints является 1
, соедините fx со скалярным сигналом. В противном случае соедините fx с векторным сигналом с длиной, равной Number of constraints.
gx
— Ограничительная функция линейный коэффициентЛинейный коэффициент gx в следующем уравнении ограничений.
Соедините gx с Nc-by-Nu сигнал, где Nc равен параметру Number of constraints, и Nu равен параметру Number of actions.
c
— Ограничительные границыОграничение во время выполнения связало c в следующей ограничительной функции.
Если параметром Number of constraints является 1
, соедините c со скалярным сигналом. В противном случае соедините c с векторным сигналом с длиной, равной Number of constraints.
Если этот порт отключен, блок использует заданное использование границ постоянного ограничения параметра Constraint bound.
Чтобы включить этот входной порт, выберите параметр Use external source.
umax
— Верхние границы сигнала действияЧтобы задать верхние границы во время выполнения к сигналам действия, включите этот входной порт. Если этот порт отключен, блок не применяет верхних границ к действиям управления.
Если параметром Number of actions является 1
, соедините umax со скалярным сигналом. В противном случае соедините umax с векторным сигналом с длиной, равной Number of actions.
Чтобы включить этот входной порт, выберите параметр Use external source for upper bound.
umin
— Нижние границы сигнала действияЧтобы задать нижние границы во время выполнения к сигналам действия, включите этот входной порт. Если этот порт отключен, блок не применяет нижних границ к действиям управления.
Если параметром Number of actions является 1
, соедините umin со скалярным сигналом. В противном случае соедините umin с векторным сигналом с длиной, равной Number of actions.
Чтобы включить этот входной порт, выберите параметр Use external source for lower bound.
u*
— Модифицированное действие управленияМодифицированное действие управления возвращено решателем QP.
Если решатель находит решение прежде, чем достигнуть максимального количества итераций, u* выходные параметры это оптимальное решение.
Если решатель достигает максимального количества итераций, остановок оптимизации и u* выходные параметры субоптимальное решение.
Если начальная задача оптимизации неосуществима, возвращенное действие управления зависит от, сконфигурирован ли блок, чтобы проигнорировать границы ограничения или действия. Для получения дополнительной информации смотрите параметр exitflag.
Если параметром Number of actions является 1
, u* выводит скалярный сигнал. В противном случае u* выходные параметры векторный сигнал с длиной равняется Number of actions.
exitflag
— Состояние Optimization
| 2
| 3
| 4
| 0
| отрицательное целое числоСостояние Optimization решателя QP. Следующая таблица показывает возможные значения состояния.
Exitflag | Описание |
---|---|
1
| Решатель сходился к оптимальному решению со всеми ограничениями и активными границами. В этом случае, u* выходные параметры действия оптимального управления. |
2
| Начальная задача оптимизации была неосуществима, и блок сконфигурирован, чтобы проигнорировать все ограничения и границы. В этом случае, u* выходные параметры немодифицированное действие управления u0. |
3
| Начальная задача оптимизации была неосуществима. Блок повторно выполнил оптимизацию, игнорирующую границы действия, и нашел возможное решение, который блок выходные параметры в u*. |
4
| Начальная задача оптимизации была неосуществима. Блок повторно выполнил оптимизацию, игнорирующую ограничительные границы, и нашел возможное решение, который блок выходные параметры в u*. |
0
| Решатель достиг максимального количества итераций. Действия управления выход в u* могут быть субоптимальными. |
отрицательное целое число | Начальная задача оптимизации была неосуществима, и один из следующих сценариев применяется.
В этом случае действия управления выход в u* являются нулем. |
Чтобы включить этот выходной порт, выберите параметр Optimization status.
Number of constraints
— Количество ограничений
(значение по умолчанию) | положительное целое числоЗадайте количество ограничений, чтобы осуществить.
Параметры блоков:
nc |
Ввод: символьный вектор |
Значение по умолчанию:
'1' |
Number of actions
— Количество действий
(значение по умолчанию) | положительное целое числоЗадайте количество действий, чтобы применить границы к и оптимизировать.
Параметры блоков:
nu |
Ввод: символьный вектор |
Значение по умолчанию:
'1' |
Constraint bound
— Ограничительные границы
(значение по умолчанию) | конечный скаляр | векторЗадайте постоянные границы для ограничений. Если параметром Number of constraints является 1
, задайте Constraint bound как конечный скаляр. В противном случае задайте Constraint bound как вектор из конечного значения с длиной, равной Number of constraints.
Если ваши ограничения варьируются во время выполнения, выберите параметр Use external source и соедините ограничительный сигнал во время выполнения с входным портом c.
Чтобы включить этот параметр, очистите параметр Use external source.
Параметры блоков:
c |
Ввод: символьный вектор |
Значение по умолчанию:
'0' |
Use external source
— Добавьте, что внешнее ограничение связало входной портoff
(значение по умолчанию) | on
Выберите этот параметр, чтобы добавить входной порт c для внешних ограничительных границ.
Параметры блоков:
external_c |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Use external source for upper bound
— Добавьте, что верхнее действие связало входной портoff
(значение по умолчанию) | on
Выберите этот параметр, чтобы добавить входной порт umax для внешних верхних границ действия.
Параметры блоков:
external_umax |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Use external source for lower bound
— Добавьте, что более низкое действие связало входной портВыберите этот параметр, чтобы добавить входной порт umin для внешних более низких границ действия.
Параметры блоков:
external_umin |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Sample time
— Шаг расчета оптимизации
(значение по умолчанию) | положительная скалярная величинаЗадайте шаг расчета для выполнения оптимизации.
Параметры блоков:
Ts |
Ввод: символьный вектор |
Значение по умолчанию:
'0.1' |
Maximum iterations
— Максимальные итерации оптимизации
(значение по умолчанию) | положительное целое числоЗадайте максимальное количество итераций оптимизации.
Параметры блоков:
maxiter |
Ввод: символьный вектор |
Значение по умолчанию:
'200' |
Constraint tolerance
— Допуск к нарушениям ограничений1e-6
(значение по умолчанию) | неотрицательный скалярЗадайте значение допуска для нарушений ограничений.
Параметры блоков:
tol |
Ввод: символьный вектор |
Значение по умолчанию:
'1e-6' |
Optimization status
— Добавьте, что выход отмечает выходной портoff
(значение по умолчанию) | on
Выберите этот параметр, чтобы добавить выходной порт exitflag для состояния оптимизации решателя QP.
Параметры блоков:
exitflag |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Ignore constraints when QP is infeasible
— Отключите ограничения, когда оптимизация будет неосуществимаoff
(значение по умолчанию) | on
Когда вы выбираете этот параметр, если начальная проблема QP неосуществима, блок повторно выполняет оптимизацию с отключенными ограничениями.
Когда вы выбираете и этот параметр и Ignore action bounds when QP is infeasible, если начальная проблема QP неосуществима, блок выводит немодифицированный сигнал действия.
Параметры блоков:
relax_c |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Ignore action bounds when QP is infeasible
— Отключите границы действия, когда оптимизация будет неосуществимаoff
(значение по умолчанию) | on
Когда вы выбираете этот параметр, если начальная проблема QP неосуществима, блок повторно выполняет оптимизацию с отключенными границами действия. Блок игнорирует этот параметр, если и umax и входные порты umin отключены.
Когда вы выбираете и этот параметр и Ignore constraints when QP is infeasible, если начальная проблема QP неосуществима, блок выводит немодифицированный сигнал действия.
Параметры блоков:
relax_u |
Ввод: символьный вектор |
Значения:
'off' |'on' |
Значение по умолчанию:
'off' |
Блок Constraint Enforcement поддерживает генерацию кода для сигналов с двойной точностью только.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.