exponenta event banner

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 в сочетании с дополнительными входными сигналами, изменяющими настройки контроллера, такими как ограничения MV и OV.

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

свернуть все

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

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

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

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

  • Достигнуто ли неоптимальное решение после окончательной итерации, если Optimizer.UseSuboptimalSolution свойство контроллера: true. Дополнительные сведения см. в разделе Неоптимальное решение QP.

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

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

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

  • start> 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.

Совет

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

Представлен в R2014b