Вычислите планирующее усиление действие MPC управления в один момент времени
mv = mpcmoveMultiple(MPCArray,states,index,ym,r,v)
[mv,info]
= mpcmoveMultiple(MPCArray,states,index,ym,r,v)
[___] = mpcmoveMultiple(___,options)
вычисляет оптимальные переменные перемещения, которыми управляют, в текущее время с помощью образцового прогнозирующего контроллера, выбранного индексом из массива контроллеров MPC. Это заканчивается, зависит от свойств, содержавшихся в контроллере MPC и состояниях контроллера. Результат также зависит от измеренного объекта выходные параметры, выходные ссылки (заданные значения) и измеренные входные параметры воздействия. mv
= mpcmoveMultiple(MPCArray
,states
,index
,ym
,r
,v
)mpcmoveMultiple
обновляет состояние контроллера, когда оценка состояния по умолчанию используется. Вызовите mpcmoveMultiple
неоднократно, чтобы моделировать образцовое прогнозирующее управление с обратной связью.
[___] = mpcmoveMultiple(___,
изменяет настройки выбранного контроллера с помощью опций, которые вы задаете с options
)mpcmoveopt
. Эти изменения применяются в течение момента текущего времени только, позволяя симуляцию командной строки с помощью mpcmoveMultiple
, чтобы подражать блоку Multiple MPC Controllers в Simulink® в вычислительном отношении эффективным способом.
MPCArray
— Контроллеры MPCКонтроллеры MPC, чтобы моделировать, заданный как массив ячеек традиционного (неявного) контроллера MPC объекты. Используйте команду mpc
, чтобы создать контроллеры MPC.
Все диспетчеры в MPCArray
должны использовать или оценку состояния по умолчанию или пользовательскую оценку состояния. Несоответствие не разрешено.
states
— Текущий контроллер MPC состоянияmpcstate
Текущий диспетчер утверждает для каждого контроллера MPC в MPCArray
, заданном как массив ячеек объектов mpcstate
.
Прежде чем вы начнете симуляцию с mpcmoveMultiple
, инициализируете каждое состояние контроллера использование x = mpcstate(MPCobj)
. Затем измените свойства по умолчанию каждого состояния как соответствующие.
Если вы будете использовать оценку состояния по умолчанию, mpcmoveMultiple
ожидает, что x
будет представлять x[n|n-1]
(где x
является одной записью в states
, текущем состоянии одного контроллера MPC в MPCArray
). Команда mpcmoveMultiple
обновляет значения состояния в предыдущем интервале управления с той информацией. Поэтому вы не должны программно обновлять x
вообще. Средство оценки состояния по умолчанию использует установившийся Фильтр Калмана.
Если вы будете использовать пользовательскую оценку состояния, mpcmoveMultiple
ожидает, что x
будет представлять x[n|n]
. Поэтому до каждой команды mpcmoveMultiple
, необходимо установить x.Plant
, x.Disturbance
и x.Noise
к наилучшим оценкам этих состояний (использующий последние измерения) в текущем интервале управления.
index
— Индекс выбранного контроллераИндекс выбранного контроллера в массиве ячеек MPCArray
, заданный как положительное целое число.
ym
— Текущие измеренные выходные параметрыТекущие измеренные выходные параметры, заданные как вектор - строка из длины Nym, где Nym является количеством измеренных выходных параметров. Если вы используете пользовательскую оценку состояния, ym
проигнорирован. Если вы устанавливаете ym
= []
, то mpcmoveMultiple
использует соответствующую номинальную стоимость.
r
— Plant значения ссылки выводаОбъект выходные значения ссылки, заданные как p-by-Ny массив, где p является горизонтом прогноза выбранного контроллера и Ny, является количеством выходных параметров. Строка r(i,:)
задает ссылочные значения на шаге i горизонта прогноза.
r
должен содержать по крайней мере одну строку. Если r
содержит меньше, чем строки p, mpcmoveMultiple
копирует последнюю строку, чтобы заполнить p-by-Ny массив. Если вы предоставляете точно одну строку, поэтому, постоянная ссылка применяется к целому горизонту прогноза.
Если вы устанавливаете r
= []
, то mpcmoveMultiple
использует соответствующую номинальную стоимость.
Чтобы реализовать ссылочный предварительный просмотр, который может улучшить отслеживание, когда ссылка отличается по предсказуемому способу, r
должен содержать ожидаемые изменения, идеально для шагов p.
v
Текущие и ожидаемые измеренные воздействияТекущие и ожидаемые измеренные воздействия, заданные как p-by-Nmd массив, где p является горизонтом прогноза выбранного контроллера и Nmd, являются количеством измеренных воздействий. Строка v(i,:)
задает ожидаемые измеренные значения воздействия на шаге i горизонта прогноза.
Моделирование измеренных воздействий обеспечивает действие управления feedforward. Если ваша модель объекта управления не включает измеренные воздействия, используйте v
= []
.
v
должен содержать по крайней мере одну строку. Если v
содержит меньше, чем строки p, mpcmoveMultiple
копирует последнюю строку, чтобы заполнить p-by-Nmd массив. Если вы предоставляете точно одну строку, поэтому, постоянное измеренное воздействие запрашивает целый горизонт прогноза.
Если вы устанавливаете v
= []
, то mpcmoveMultiple
использует соответствующую номинальную стоимость.
Чтобы реализовать предварительный просмотр воздействия, который может улучшить отслеживание, когда воздействие отличается по предсказуемому способу, v
должен содержать ожидаемые изменения, идеально для шагов p.
опции
Замените значения для свойств выбранного контроллераmpcmoveopt
Замените значения для выбранных свойств выбранного контроллера MPC, заданного как, опции возражают, что вы создаете с mpcmoveopt
. Эти опции применяются к текущему моменту времени mpcmoveMultiple
только. Используя options
приводит к тому же результату как переопределение или изменение выбранного контроллера перед каждым вызовом mpcmoveMultiple
, но включает значительно меньше служебное. Используя options
эквивалентно использованию кратного Контроллеры MPC блок Simulink в сочетании с дополнительными входными сигналами, которые изменяют настройки контроллера, такие как мВ и ограничения OV.
mv
— Оптимальные переменные перемещения, которыми управляют,Оптимальные переменные перемещения, которыми управляют, возвращенные как вектор-столбец длины Nmv, где Nmv является количеством переменных, которыми управляют.
Если контроллер обнаруживает неосуществимую задачу оптимизации или сталкивается с числовыми трудностями при решении плохо обусловленной задачи оптимизации, mv
остается в своем новом успешном решении, x.LastMove
.
В противном случае, если задача оптимизации выполнима, и решатель достигает заданного максимального количества итераций, не находя оптимальное решение, mv
:
Остается в его новом успешном решении, если свойством Optimizer.UseSuboptimalSolution
контроллера является false
.
Субоптимальное решение, достигнутое после итоговой итерации, если свойством Optimizer.UseSuboptimalSolution
контроллера является true
. Для получения дополнительной информации смотрите Субоптимальное Решение QP.
информация
Детали решенияДетали решения, возвращенные как структура со следующими полями.
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
или значение положительной скалярной величины.
ε = 0 — Все ограничения были удовлетворены для целого горизонта прогноза.
ε> 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
.
Используйте Несколько Контроллеров MPC блок Simulink для симуляций и генерации кода.
generateExplicitMPC
| getEstimator
| mpcmove
| mpcstate
| review
| setEstimator
| sim
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.