mpcmoveAdaptive

Вычислите оптимальное управление с обновлением модели предсказания

Описание

mv = mpcmoveAdaptive(MPCobj,x,Plant,Nominal,ym,r,v) вычисляет оптимальные перемещения манипулированной переменной в текущее время. Этот результат зависит от свойств, содержащихся в контроллере MPC, состояниях контроллера, обновленной модели предсказания и номинальных значений. Результат также зависит от измеренных выходных переменных, выходных ссылок (уставок) и измеренных входов нарушения порядка. 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® вычислительно эффективным способом.

Входные параметры

свернуть все

MPC- контроллера, заданный как неявный объект контроллера MPC. Чтобы создать контроллер MPC, используйте mpc команда.

Текущее состояние контроллера 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, см. Оценку состояния.

Обновленная модель предсказания, заданная как одно из следующего:

  • Свободное от задержки дискретное пространство дискретных времен (ss) модель. Этот объект является обновлением для MPCobj.Model.Plant и он должен:

    • Иметь тот же шаг расчета как контроллер; то есть Plant.Ts должен соответствовать MPCobj.Ts

    • Имеют одинаковые строения входного и выходного сигналов, такие как тип, порядок и размерности

    • Задайте те же состояния, что и модель предсказания контроллера, MPCobj.Model.Plant

  • Массив до p + 1 моделей пространства состояний без задержки в дискретном времени, где p - горизонт предсказания MPCobj. Используйте эту опцию, чтобы изменить модель предсказания контроллера над горизонтом предсказания.

    Если Plant содержит менее p + 1 моделей, последняя модель повторяется для остальной части горизонта предсказания.

Совет

Если вы используете объект, отличный от модели пространства состояний без задержки, в дискретном времени, чтобы задать модель предсказания в MPCobjможно преобразовать его в такую модель, чтобы определить структуру модели предсказания.

Если исходный объектТогда
Не является моделью пространства состоянийПреобразуйте его в модель пространства состояний с помощью ss.
Модель в непрерывном времениПреобразуйте его в модель в дискретном времени с тем же шагом расчета, что и контроллер, MPCobj.Ts, использование c2d с дискретизацией Эйлера по умолчанию.
Модель с задержкамиПреобразуйте задержки в состояния, используя absorbDelay.

Обновленные номинальные условия, указанные как одно из следующих:

  • Структура со следующими полями:

    Область

    Описание

    Дефолт

    X

    Состояние объекта в рабочей точке

    []

    U

    Вход объекта в рабочей точке, включая манипулируемые переменные и измеренные и неизмеренные нарушения порядка

    []

    Y

    Выход объекта в рабочей точке

    []

    DX

    Для моделей в непрерывном времени, DX является производной от состояния в рабочей точке: DX= f (X, U). Для моделей в дискретном времени, DX= x (k + 1) - x (k) = f (X, U) - X.

    []

  • Массив до p + 1 номинальных структур условий, где p - горизонт предсказания MPCobj. Используйте эту опцию, чтобы изменить номинальные условия контроллера над горизонтом предсказания.

    Если Nominal содержит менее p + 1 структур, последняя структура повторяется для остальной части горизонта предсказания.

Если Nominal пуст, [], или если поле отсутствует или пустое, mpcmoveAdaptive использует соответствующую MPCobj.Model.Nominal значение.

Токовые измеренные выходы, заданные как вектор-строка длины Nym вектора, где Nym - количество измеренных выходов.

Если вы используете пользовательскую оценку состояния, ym игнорируется. Если вы задаете ym = [], затем mpcmoveAdaptive использует соответствующее номинальное значение.

Выходные опорные значения объекта, заданные как p -by - Ny массив, где p - горизонт предсказания MPCobj и Ny количество выходов. Строка r(i,:) задает ссылочные значения на шаге i горизонта предсказания.

r должна содержать по крайней мере одну строку. Если r содержит менее p строк, mpcmoveAdaptive повторяет последнюю строку, чтобы заполнить p -by Ny массив. Если вы поставляете ровно одну строку, поэтому для всего горизонта предсказания применяется постоянная ссылка.

Если вы задаете r = [], затем mpcmoveAdaptive использует соответствующее номинальное значение.

Чтобы реализовать предварительный просмотр ссылок, который может улучшить отслеживание, когда ссылка изменяется предсказуемым образом, r должны содержать ожидаемые изменения, идеально для p шагов.

Токовые и ожидаемые измеренные нарушения порядка, заданные как p -by - Nmd массив, где p - горизонт предсказания MPCobj и Nmd количество измеренных нарушений порядка. Строка v(i,:) задает ожидаемые измеренные значения нарушения порядка на шаге i горизонта предсказания.

Моделирование измеренных нарушений порядка обеспечивает feedforward. Если ваша модель объекта управления не включает измеренные нарушения порядка, используйте v = [].

v должна содержать по крайней мере одну строку. Если v содержит менее p строк, mpcmoveAdaptive повторяет последнюю строку, чтобы заполнить p -by Nmd массив. Если вы поставляете ровно одну строку, поэтому для всего горизонта предсказания применяется постоянное измеренное нарушение порядка.

Если вы задаете v = [], затем mpcmoveAdaptive использует соответствующее номинальное значение.

Чтобы реализовать предварительный просмотр нарушений порядка, который может улучшить отслеживание, когда нарушение порядка изменяется предсказуемым образом, v должны содержать ожидаемые изменения, идеально для p шагов.

Переопределите значения для выбранных свойств MPCobj, заданный как объект опций, созданный вами с mpcmoveopt. Эти опции применяются к текущему mpcmoveAdaptive только мгновенное время. Использование options приводит к тому же результату, что и переопределение или изменение MPCobj перед каждым вызовом на mpcmoveAdaptive, но включает значительно меньше накладных расходов. Использование options эквивалентно использованию блока Adaptive MPC Controller Simulink в сочетании с опциональными входными сигналами, которые изменяют настройки контроллера, такие как ограничения MV и OV.

Выходные аргументы

свернуть все

Оптимальная манипулируемая переменная перемещается, возвращается как вектор-столбец длины Nmv, где Nmv - количество манипулируемых переменных.

Если контроллер обнаруживает недопустимую задачу оптимизации или сталкивается с числовыми трудностями в решении плохо обусловленной задачи оптимизации, mv остается на своем последнем успешном решении, xc.LastMove.

В противном случае, если задача оптимизации является допустимой, и решатель достигает заданного максимального количества итераций, не найдя оптимального решения, mv:

  • Остается на своем последнем успешном решении, если Optimizer.UseSuboptimalSolution свойство контроллера false.

  • Является ли неоптимальное решение, достигнутое после окончательной итерации, если Optimizer.UseSuboptimalSolution свойство контроллера true. Для получения дополнительной информации см. Suboptimal QP Solution.

Подробные данные решения, возвращенные как структура со следующими полями.

Предсказанные оптимальные манипулированные переменные корректировки (движения), возвращенные как (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,:).

Оптимальная выходная последовательность переменной, возвращенная как массив (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,:) вычисляется на основе расчетных состояний и измеренных нарушений порядка.

Оптимальная последовательность состояний модели предсказания, возвращенная как (p + 1) -by - Nx массив, где p - горизонт предсказания, а Nx - количество состояний в объекте и неизмеренных моделях возмущения (состояния из шумовых моделей не включены).

Xopt(i,:) содержит вычисленные значения состояния во время k+i-1, для i = 2,...,p+1, где k - текущее время. Xopt(1,:) совпадает со значениями текущего состояния.

Временные интервалы, возвращенные как вектор-столбец длины p + 1. Topt(1) = 0, представляющее текущее время. Последующие временные шаги Topt(i) заданы Ts*(i-1), где Ts = MPCobj.Ts - шаг расчета контроллера.

Использование Topt при построении графика Uopt, Xopt, или Yopt последовательности.

Ослабьте переменную, ε, используемый в ограничительном смягчении, возвращенном как 0 или положительная скалярная величина значение.

  • .r= 0 - Все ограничения были удовлетворены для всего горизонта предсказания.

  • .r> 0 - нарушается по крайней мере одно мягкое ограничение. Когда больше чем одно ограничение нарушено, ε представляет худший случай мягкое нарушение ограничений (измеренный Вашими значениями ECR для каждого ограничения).

Смотрите задачу оптимизации для получения дополнительной информации.

Количество итераций решателя, возвращаемое как одно из следующего:

  • Положительное целое число - количество итераций, необходимых для решения задачи оптимизации, которая определяет оптимальные последовательности.

  • 0 - Не удалось решить задачу оптимизации в указанном максимальном количестве итераций.

  • –1 - Задача оптимизации была недопустима. Задача оптимизации недопустима, если ни одно решение не может удовлетворить всем жестким ограничениям.

  • –2 - Числовая ошибка при решении задачи оптимизации.

Статус решения оптимизации, возвращенный как одно из следующего:

  • 'feasible' - Получено оптимальное решение (Iterations > 0)

  • 'infeasible' - Решатель обнаружил проблему без возможного решения (Iterations = -1) или произошла числовая ошибка (Iterations = –2)

  • 'unreliable' - Решатель не смог сходиться (Iterations = 0). В этом случае, если MPCobj.Optimizer.UseSuboptimalSolution является false, u замораживает в самом последнем успешном решении. В противном случае он использует неоптимальное решение, найденное во время последней итерации решателя.

Стоимость целевой функции, возвращенная как неотрицательное скалярное значение. Стоимость определяет степень достижения контроллером своих целей. Для получения дополнительной информации смотрите Задачу Оптимизации.

Значение стоимости имеет значение только при QPCode = 'feasible', или когда QPCode = 'feasible' и MPCobj.Optimizer.UseSuboptimalSolution является true.

Совет

  • Если модель предсказания является инвариантной по времени, используйте mpcmove.

  • Используйте блок Adaptive MPC Controller Simulink для симуляций и генерации кода.

Введенный в R2014b