mpcmoveMultiple

Вычислите действие MPC управления табличного управления в один момент времени

Описание

mv = mpcmoveMultiple(MPCArray,states,index,ym,r,v) вычисляет оптимальные переменные перемещения, которыми управляют, в текущее время с помощью прогнозирующего контроллера модели, выбранного индексом из массива контроллеров MPC. Это заканчивается, зависит от свойств, содержавшихся в контроллере MPC и состояниях контроллера. Результат также зависит от измеренного объекта выходные параметры, выходные ссылки (заданные значения) и измеренные входные параметры воздействия. mpcmoveMultiple обновляет состояние контроллера, когда оценка состояния по умолчанию используется. Вызвать mpcmoveMultiple неоднократно симулировать прогнозирующее управление модели с обратной связью.

[mv,info] = mpcmoveMultiple(MPCArray,states,index,ym,r,v) возвращает дополнительные детали о расчете в структуре. Чтобы определить ли вычисление оптимального управления, завершенное обычно, проверяйте данные в info.

[___] = mpcmoveMultiple(___,options) изменяет настройки выбранного контроллера с помощью опций, с которыми вы задаете mpcmoveopt. Эти изменения применяются в течение момента текущего времени только, позволяя использование симуляции командной строки mpcmoveMultiple подражать блоку Multiple MPC Controllers в Simulink® в вычислительном отношении эффективным способом.

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

свернуть все

Контроллеры MPC, чтобы симулировать в виде массива ячеек традиционного (неявного) контроллера MPC объекты. Используйте mpc команда, чтобы создать контроллеры MPC.

Все контроллеры в MPCArray должен использовать или оценку состояния по умолчанию или пользовательскую оценку состояния. Несоответствие не разрешено.

Токовый контроллер утверждает для каждого контроллера 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 к наилучшим оценкам этих состояний (использующий последние измерения) в текущем контрольном интервале.

Индекс выбранного контроллера в массиве ячеек MPCArrayВ виде положительного целого числа.

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

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

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

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

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

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

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

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

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

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

Замените значения для выбранных свойств выбранного контроллера MPC в виде, опции возражают, что вы создаете с mpcmoveopt. Эти опции применяются к току mpcmoveMultiple момент времени только. Используя options приводит к тому же результату как переопределение или изменение выбранного контроллера перед каждым вызовом mpcmoveMultiple, но включает значительно меньше служебное. Используя options эквивалентно использованию блока Simulink Multiple MPC Controllers в сочетании с дополнительными входными сигналами, которые изменяют настройки контроллера, такие как мВ и ограничения OV.

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

свернуть все

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

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

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

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

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

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

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

  • ε = 0 — Всем ограничениям удовлетворили для целого горизонта предсказания.

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

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

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

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

  • 0 — Задача оптимизации не могла быть решена в заданном максимальном количестве итераций.

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

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

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

  • 'feasible' — Оптимальное решение было получено (Iterations > 0)

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

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

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

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

Советы

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

Смотрите также

| | | | | |

Введенный в R2014b