Измените действия управления, чтобы удовлетворить ограничениям и границам действия
Simulink Control Design
Блок Constraint Enforcement вычисляет измененные действия управления, которые наиболее близки к заданным действиям управления, удовлетворяющим ограничениям и границам действия.
Блок использует квадратичный решатель программирования (QP), чтобы найти u действия управления, который минимизирует функцию . Здесь u 0 является неизмененным управляющим действием.
Решатель применяет следующие ограничения к задаче оптимизации.
Здесь:
fx и gx являются коэффициентами ограничительной функции.
c является границей для функции ограничения.
u min является нижней границей для действия управления.
u max является верхней границей для действия управления.
Блок 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
- Состояние оптимизации1
| 2
| 3
| 4
| 0
| отрицательное целое числоСтатус оптимизации решателя QP. В следующей таблице показаны возможные значения статуса.
Выходной флаг | Описание |
---|---|
1 | Решатель сходился к оптимальному решению с активными всеми ограничениями и границами. В этом случае u* выводит оптимальные действия управления. |
2 | Начальная задача оптимизации была недопустима, и блок сконфигурирован, чтобы игнорировать все ограничения и ограничения. В этом случае u* выводит немодифицированную u0 действия управления. |
3 | Начальная задача оптимизации была недопустима. Блок перезапустил оптимизацию, игнорирующую границы действия, и нашел возможное решение, которое блок выводит в u*. |
4 | Начальная задача оптимизации была недопустима. Блок перезапустил оптимизацию, игнорируя ограничения и нашел возможное решение, которое блок выводит в u*. |
0 | Решатель достиг максимального количества итераций. Управляющие действия, выводимые в u*, могут быть неоптимальными. |
отрицательное целое число | Начальная задача оптимизации была недопустима, и применяется один из следующих сценариев.
В этом случае управляющие действия, выводимые в u*, равны нулю. |
Чтобы включить этот выходной порт, выберите параметр Optimization status.
Number of constraints
- Количество ограничений1
(по умолчанию) | положительное целое числоЗадайте количество ограничений, которые нужно применить.
Параметры блоков:
nc
|
Тип: Вектор символов |
По умолчанию:
'1'
|
Number of actions
- Количество действий1
(по умолчанию) | положительное целое числоЗадайте количество действий, которые нужно связать и оптимизировать.
Параметры блоков:
nu
|
Тип: Вектор символов |
По умолчанию:
'1'
|
Constraint bound
- Ограничения0
(по умолчанию) | конечный вектор | скаляраЗадайте постоянные границы для ограничений. Если параметр 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
- шаг расчета оптимизации0.1
(по умолчанию) | положительная скалярная величинаЗадайте шаг расчета для выполнения оптимизации.
Параметры блоков:
Ts
|
Тип: Вектор символов |
По умолчанию:
'0.1'
|
Maximum iterations
- Максимальные итерации200
(по умолчанию) | положительное целое числоЗадайте максимальное количество итераций оптимизации.
Параметры блоков:
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 недопустима, блок перезапускает оптимизацию с отключенными границами действия.
Когда вы выбираете и этот параметр, и Ignore constraints when QP is infeasible, если начальная задача QP недопустима, блок выводит немодифицированный сигнал действия.
Параметры блоков:
relax_u
|
Тип: Вектор символов |
Значения:
'off'
'on' |
По умолчанию:
'off'
|
Блок Constraint Enforcement поддерживает генерацию кода только для сигналов двойной точности.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.