Вычислите оптимальное управление с обновлением модели предсказания
вычисляет оптимальные перемещения манипулированной переменной в текущее время. Этот результат зависит от свойств, содержащихся в контроллере MPC, состояниях контроллера, обновленной модели предсказания и номинальных значений. Результат также зависит от измеренных выходных переменных, выходных ссылок (уставок) и измеренных входов нарушения порядка. mv
= mpcmoveAdaptive(MPCobj
,x
,Plant
,Nominal
,ym
,r
,v
)mpcmoveAdaptive
обновляет состояние контроллера, x
, при использовании оценки состояния по умолчанию. Звонить mpcmoveAdaptive
неоднократно, чтобы симулировать прогнозирующее управление модели с обратной связью.
[
возвращает дополнительные сведения о решении в структуре. Чтобы просмотреть предсказанную оптимальную траекторию для всего горизонта предсказания, постройте графики последовательностей, представленных в mv
,info
]
= mpcmoveAdaptive(MPCobj
,x
,Plant
,Nominal
,ym
,r
,v
)info
. Чтобы определить, завершилось ли оптимальное вычисление управления нормально, проверяйте info.Iterations
и info.QPCode
.
[___] = mpcmoveAdaptive(___,
изменяет выбранные настройки контроллера, используя опции, заданные с options
)mpcmoveopt
. Эти изменения применяются только к текущему моменту времени, что позволяет проводить симуляцию командной строки с помощью mpcmoveAdaptive
для имитации блока Adaptive MPC Controller в Simulink® вычислительно эффективным способом.
MPCobj
- контроллер MPCMPC- контроллера, заданный как неявный объект контроллера MPC. Чтобы создать контроллер MPC, используйте mpc
команда.
x
- Текущее состояние контроллера MPCmpcstate
объектТекущее состояние контроллера MPC, заданное как mpcstate
объект.
Прежде чем вы начнете симуляцию с mpcmoveAdaptive
, инициализируйте состояние контроллера, используя x = mpcstate(MPCobj)
. Затем измените свойства по умолчанию x
по обстоятельствам.
Если вы используете оценку состояния по умолчанию, mpcmoveAdaptive
ожидает x
для представления x[n|n-1]
. mpcmoveAdaptive
команда обновляет значения состояния в предыдущем контрольном интервале этой информацией. Поэтому вы не должны программно обновляться x
вообще. Оценщик состояния по умолчанию использует линейный изменяющийся во времени фильтр Калмана.
Если вы используете пользовательскую оценку состояния, mpcmoveAdaptive
ожидает x
для представления x[n|n]
. Поэтому перед каждым mpcmoveAdaptive
команда, вы должны задать x.Plant
, x.Disturbance
, и x.Noise
к лучшим оценкам этих состояний (с использованием последних измерений) на контрольном интервале.
Для получения дополнительной информации об оценке состояния для адаптивного MPC и изменяющегося во времени MPC, см. Оценку состояния.
Plant
- Обновленная модель предсказанияОбновленная модель предсказания, заданная как одно из следующего:
Свободное от задержки дискретное пространство дискретных времен (ss
) модель. Этот объект является обновлением для MPCobj.Model.Plant
и он должен:
Иметь тот же шаг расчета как контроллер; то есть Plant.Ts
должен соответствовать MPCobj.Ts
Имеют одинаковые строения входного и выходного сигналов, такие как тип, порядок и размерности
Задайте те же состояния, что и модель предсказания контроллера, MPCobj.Model.Plant
Массив до p + 1 моделей пространства состояний без задержки в дискретном времени, где p - горизонт предсказания MPCobj
. Используйте эту опцию, чтобы изменить модель предсказания контроллера над горизонтом предсказания.
Если Plant
содержит менее p + 1 моделей, последняя модель повторяется для остальной части горизонта предсказания.
Совет
Если вы используете объект, отличный от модели пространства состояний без задержки, в дискретном времени, чтобы задать модель предсказания в MPCobj
можно преобразовать его в такую модель, чтобы определить структуру модели предсказания.
Если исходный объект | Тогда |
---|---|
Не является моделью пространства состояний | Преобразуйте его в модель пространства состояний с помощью ss . |
Модель в непрерывном времени | Преобразуйте его в модель в дискретном времени с тем же шагом расчета, что и контроллер, MPCobj.Ts , использование c2d с дискретизацией Эйлера по умолчанию. |
Модель с задержками | Преобразуйте задержки в состояния, используя absorbDelay . |
Nominal
- Обновленные номинальные условия[]
Обновленные номинальные условия, указанные как одно из следующих:
Структура со следующими полями:
Область | Описание | Дефолт |
---|---|---|
| Состояние объекта в рабочей точке |
|
| Вход объекта в рабочей точке, включая манипулируемые переменные и измеренные и неизмеренные нарушения порядка |
|
| Выход объекта в рабочей точке |
|
| Для моделей в непрерывном времени, |
|
Массив до p + 1 номинальных структур условий, где p - горизонт предсказания MPCobj
. Используйте эту опцию, чтобы изменить номинальные условия контроллера над горизонтом предсказания.
Если Nominal
содержит менее p + 1 структур, последняя структура повторяется для остальной части горизонта предсказания.
Если Nominal
пуст, []
, или если поле отсутствует или пустое, mpcmoveAdaptive
использует соответствующую MPCobj.Model.Nominal
значение.
ym
- Токовые измеренные выходыТоковые измеренные выходы, заданные как вектор-строка длины Nym вектора, где Nym - количество измеренных выходов.
Если вы используете пользовательскую оценку состояния, ym
игнорируется. Если вы задаете ym
= []
, затем mpcmoveAdaptive
использует соответствующее номинальное значение.
r
- Исходные значения выходного сигнала объекта| []
Выходные опорные значения объекта, заданные как p -by - Ny массив, где p - горизонт предсказания MPCobj
и Ny количество выходов. Строка r(i,:)
задает ссылочные значения на шаге i горизонта предсказания.
r
должна содержать по крайней мере одну строку. Если r
содержит менее p строк, mpcmoveAdaptive
повторяет последнюю строку, чтобы заполнить p -by Ny массив. Если вы поставляете ровно одну строку, поэтому для всего горизонта предсказания применяется постоянная ссылка.
Если вы задаете r
= []
, затем mpcmoveAdaptive
использует соответствующее номинальное значение.
Чтобы реализовать предварительный просмотр ссылок, который может улучшить отслеживание, когда ссылка изменяется предсказуемым образом, r
должны содержать ожидаемые изменения, идеально для p шагов.
v
- Текущие и ожидаемые измеренные нарушения порядка| []
Токовые и ожидаемые измеренные нарушения порядка, заданные как p -by - Nmd массив, где p - горизонт предсказания MPCobj
и Nmd количество измеренных нарушений порядка. Строка v(i,:)
задает ожидаемые измеренные значения нарушения порядка на шаге i горизонта предсказания.
Моделирование измеренных нарушений порядка обеспечивает feedforward. Если ваша модель объекта управления не включает измеренные нарушения порядка, используйте v
= []
.
v
должна содержать по крайней мере одну строку. Если v
содержит менее p строк, mpcmoveAdaptive
повторяет последнюю строку, чтобы заполнить p -by Nmd массив. Если вы поставляете ровно одну строку, поэтому для всего горизонта предсказания применяется постоянное измеренное нарушение порядка.
Если вы задаете v
= []
, затем mpcmoveAdaptive
использует соответствующее номинальное значение.
Чтобы реализовать предварительный просмотр нарушений порядка, который может улучшить отслеживание, когда нарушение порядка изменяется предсказуемым образом, v
должны содержать ожидаемые изменения, идеально для p шагов.
options
- Переопределите значения для выбранных свойств контроллераmpcmoveopt
объектПереопределите значения для выбранных свойств MPCobj
, заданный как объект опций, созданный вами с mpcmoveopt
. Эти опции применяются к текущему mpcmoveAdaptive
только мгновенное время. Использование options
приводит к тому же результату, что и переопределение или изменение MPCobj
перед каждым вызовом на mpcmoveAdaptive
, но включает значительно меньше накладных расходов. Использование options
эквивалентно использованию блока Adaptive MPC Controller Simulink в сочетании с опциональными входными сигналами, которые изменяют настройки контроллера, такие как ограничения MV и OV.
mv
- Оптимальные манипулируемые переменные ходыОптимальная манипулируемая переменная перемещается, возвращается как вектор-столбец длины Nmv, где Nmv - количество манипулируемых переменных.
Если контроллер обнаруживает недопустимую задачу оптимизации или сталкивается с числовыми трудностями в решении плохо обусловленной задачи оптимизации, mv
остается на своем последнем успешном решении, xc.LastMove
.
В противном случае, если задача оптимизации является допустимой, и решатель достигает заданного максимального количества итераций, не найдя оптимального решения, mv
:
Остается на своем последнем успешном решении, если Optimizer.UseSuboptimalSolution
свойство контроллера false
.
Является ли неоптимальное решение, достигнутое после окончательной итерации, если Optimizer.UseSuboptimalSolution
свойство контроллера true
. Для получения дополнительной информации см. Suboptimal QP Solution.
info
- Детали решенияПодробные данные решения, возвращенные как структура со следующими полями.
Uopt
- Оптимальная манипулируемая переменная последовательностьПредсказанные оптимальные манипулированные переменные корректировки (движения), возвращенные как (p + 1) -by - Nmv массив, где p - горизонт предсказания, а Nmv - количество манипулированных переменных.
Uopt(i,:)
содержит вычисленные оптимальные значения во времени k+i-1
, для i = 1,...,p
, где k
- текущее время. Первая строка Info.Uopt
содержит те же манипулированные значения переменных, что и выходной аргумент mv
. Поскольку контроллер не вычисляет оптимальные движения управления в момент времени k+p
, Uopt(p+1,:)
равно Uopt(p,:)
.
Yopt
- Оптимальная выходная переменная последовательностьОптимальная выходная последовательность переменной, возвращенная как массив (p + 1) -by - Ny, где p - горизонт предсказания, а Ny - количество выходов.
Первая строка Info.Yopt
содержит вычисленные выходы во времени k
на основе расчетных состояний и измеренных нарушений порядка; это не измеренный выход во времени k
. Yopt(i,:)
содержит предсказанные выходные значения во времени k+i-1
, для i = 1,...,p+1
.
Yopt(i,:)
содержит вычисленные выходные значения во времени k+i-1
, для i = 2,...,p+1
, где k
- текущее время. Yopt(1,:)
вычисляется на основе расчетных состояний и измеренных нарушений порядка.
Xopt
- Оптимальная последовательность состояний модели предсказанияОптимальная последовательность состояний модели предсказания, возвращенная как (p + 1) -by - Nx массив, где p - горизонт предсказания, а Nx - количество состояний в объекте и неизмеренных моделях возмущения (состояния из шумовых моделей не включены).
Xopt(i,:)
содержит вычисленные значения состояния во время k+i-1
, для i = 2,...,p+1
, где k
- текущее время. Xopt(1,:)
совпадает со значениями текущего состояния.
Topt
- Временные интервалыВременные интервалы, возвращенные как вектор-столбец длины p + 1. Topt(1)
= 0, представляющее текущее время. Последующие временные шаги Topt(i)
заданы Ts*(i-1)
, где Ts = MPCobj.Ts
- шаг расчета контроллера.
Использование Topt
при построении графика Uopt
, Xopt
, или Yopt
последовательности.
Slack
- Переменная SlackОслабьте переменную, ε, используемый в ограничительном смягчении, возвращенном как 0
или положительная скалярная величина значение.
.r= 0 - Все ограничения были удовлетворены для всего горизонта предсказания.
.r> 0 - нарушается по крайней мере одно мягкое ограничение. Когда больше чем одно ограничение нарушено, ε представляет худший случай мягкое нарушение ограничений (измеренный Вашими значениями ECR для каждого ограничения).
Смотрите задачу оптимизации для получения дополнительной информации.
Iterations
- Количество итераций решателя0
| -1
| -2
Количество итераций решателя, возвращаемое как одно из следующего:
Положительное целое число - количество итераций, необходимых для решения задачи оптимизации, которая определяет оптимальные последовательности.
0
- Не удалось решить задачу оптимизации в указанном максимальном количестве итераций.
–1
- Задача оптимизации была недопустима. Задача оптимизации недопустима, если ни одно решение не может удовлетворить всем жестким ограничениям.
–2
- Числовая ошибка при решении задачи оптимизации.
QPCode
- Состояние оптимизационного решения'feasible'
| 'infeasible'
| 'unrealiable'
Статус решения оптимизации, возвращенный как одно из следующего:
'feasible'
- Получено оптимальное решение (Iterations
> 0)
'infeasible'
- Решатель обнаружил проблему без возможного решения (Iterations
= -1) или произошла числовая ошибка (Iterations
= –2)
'unreliable'
- Решатель не смог сходиться (Iterations
= 0). В этом случае, если MPCobj.Optimizer.UseSuboptimalSolution
является false
, u
замораживает в самом последнем успешном решении. В противном случае он использует неоптимальное решение, найденное во время последней итерации решателя.
Cost
- Стоимость целевой функцииСтоимость целевой функции, возвращенная как неотрицательное скалярное значение. Стоимость определяет степень достижения контроллером своих целей. Для получения дополнительной информации смотрите Задачу Оптимизации.
Значение стоимости имеет значение только при QPCode = 'feasible'
, или когда QPCode = 'feasible'
и MPCobj.Optimizer.UseSuboptimalSolution
является true
.
Если модель предсказания является инвариантной по времени, используйте mpcmove
.
Используйте блок Adaptive MPC Controller Simulink для симуляций и генерации кода.
getEstimator
| mpc
| mpcmove
| mpcmoveopt
| mpcstate
| review
| setEstimator
| sim
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.