Изменение управляющих действий в соответствии с ограничениями и границами действий
Проект управления Simulink

Блок «Применение ограничений» вычисляет измененные управляющие действия, которые наиболее близки к указанным управляющим действиям, подчиненным ограничениям и границам действий.
Блок использует решатель квадратичного программирования (QP), чтобы найти управляющее действие u, которое минимизирует функцию u0 | 2. Здесь u0 - это немодифицированное действие управления.
Решатель применяет к задаче оптимизации следующие ограничения.
Здесь:
fx и gx - коэффициенты функции ограничения.
c - граница для функции ограничения.
umin является нижней границей для контрольного действия.
umax является верхней границей для контрольного действия.
Для блока «Применение ограничений» требуется программное обеспечение Optimization Toolbox™.
Дополнительные сведения о применении ограничений см. в разделе Применение ограничений для конструкции управления.
u0 - Контрольные действияНемодифицированные действия управления, заданные как скаляр или вектор.
Если параметр Number of actions имеет значение 1, подключите u0 к скалярному сигналу. В противном случае подключите u0 к векторному сигналу длиной, равной числу действий.
fx - Коэффициент смещения функции ограниченияКоэффициент смещения fx в следующем уравнении ограничения.
Если параметр Number of constraints имеет значение 1, подключите fx к скалярному сигналу. В противном случае подключите fx к векторному сигналу длиной, равной числу ограничений.
gx - Линейный коэффициент функции ограниченияЛинейный коэффициент gx в следующем уравнении ограничения.
Подключите gx к сигналу Nc-by-Nu, где Nc равен параметру Number of constraints, а Nu равен параметру Number of actions.
c - ОграниченияОграничение времени выполнения c в следующей функции ограничения.
Если параметр Number of constraints имеет значение 1, подключите c к скалярному сигналу. В противном случае подключите c к векторному сигналу длиной, равной числу ограничений.
Если этот порт отключен, блок использует ограничения константы, заданные с помощью параметра «Ограничение».
Чтобы включить этот входной порт, выберите параметр Use external source.
umax - Верхние границы сигнала действияЧтобы задать верхние границы времени выполнения для сигналов действий, включите этот входной порт. Если этот порт отключен, блок не применяет верхние границы к действиям управления.
Если параметр Number of actions имеет значение 1, подключить umax к скалярному сигналу. В противном случае подключите umax к векторному сигналу длиной, равной числу действий.
Чтобы включить этот входной порт, выберите параметр Use external source for uppper bound.
umin - Нижние границы сигнала действияЧтобы задать нижние границы времени выполнения для сигналов действий, включите этот входной порт. Если этот порт отключен, блок не применяет нижние границы к действиям управления.
Если параметр Number of actions имеет значение 1, подключите umin к скалярному сигналу. В противном случае подключите umin к векторному сигналу длиной, равной числу действий.
Чтобы включить этот входной порт, выберите параметр Использовать внешний источник для нижней границы.
u* - Измененное действие управленияИзмененное действие управления, возвращенное решателем QP.
Если решатель находит решение до достижения максимального числа итераций, u * выводит это оптимальное решение.
Если решатель достигает максимального числа итераций, оптимизация останавливается и u * выводит неоптимальное решение.
Если задача начальной оптимизации неосуществима, то возвращаемое действие управления зависит от того, настроен ли блок на игнорирование ограничений или ограничений действия. Дополнительные сведения см. в разделе параметр exitflag.
Если параметр Number of actions имеет значение 1, u * выводит скалярный сигнал. В противном случае u * выводит векторный сигнал длиной, равной числу действий.
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, укажите ограничение как конечный скаляр. В противном случае задайте ограничение как вектор конечного значения с длиной, равной числу ограничений.
Если ограничения изменяются во время выполнения, выберите параметр Use external source и подключите сигнал ограничения времени выполнения к входному порту c.
Чтобы включить этот параметр, снимите флажок Использовать параметр внешнего источника.
Параметр блока:
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), когда QP неосуществим, если начальная проблема QP неосуществима, блок выдает немодифицированный сигнал действия.
Параметр блока:
relax_c |
| Текст: символьный вектор |
Значения:
'off''on' |
По умолчанию:
'off' |
Ignore action bounds when QP is infeasible - Отключить ограничения действий, когда оптимизация неосуществимаoff (по умолчанию) | onПри выборе этого параметра, если начальная проблема QP неосуществима, блок повторно запускает оптимизацию с отключенными границами действия.
При выборе этого параметра и ограничений Игнорировать (Ignore), когда QP неосуществим, если начальная проблема QP неосуществима, блок выдает немодифицированный сигнал действия.
Параметр блока:
relax_u |
| Текст: символьный вектор |
Значения:
'off''on' |
По умолчанию:
'off' |
Блок «Применение ограничений» поддерживает генерацию кода только для сигналов двойной точности.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.



