mpc

Создайте контроллер MPC

Синтаксис

MPCobj = mpc(Plant)
MPCobj = mpc(Plant,Ts)
MPCobj = mpc(Plant,Ts,p,m,W,MV,OV,DV)
MPCobj = mpc(Models,Ts,p,m,W,MV,OV,DV)

Описание

MPCobj = mpc(Plant) создает образцовый прогнозирующий контроллер, основанный на объектах на модели прогноза дискретного времени. Модель Plant прогноза может быть или моделью LTI с заданным шагом расчета или моделью Identification Toolbox™ линейной системы. Контроллер, MPCobj, наследовал его интервал управления от Plant.Ts и его единицу измерения времени от Plant.TimeUnit. Все другие свойства контроллера являются значениями по умолчанию. После того, как вы создадите контроллер MPC, можно установить его свойства с помощью MPCobj.PropertyName = PropertyValue.

MPCobj = mpc(Plant,Ts) задает интервал управления Ts. Если Plant является моделью LTI дискретного времени с незаданным шагом расчета (Plant.Ts = –1), это наследовало шаг расчета Ts, когда используется для прогнозов.

MPCobj = mpc(Plant,Ts,p,m,W,MV,OV,DV) задает дополнительные свойства контроллера, такие как горизонт прогноза (p), горизонт управления (m), и вход, входной шаг и выходные веса (W). Можно также установить свойства переменных, которыми управляют (MV), выходные переменные (OV), и ввести переменные воздействия (DV). Если какое-либо из этих значений не использовано или пусто, значения по умолчанию применяются.

MPCobj = mpc(Models,Ts,p,m,W,MV,OV,DV) создает образцовый прогнозирующий контроллер, основанный на объектах на наборе модели прогноза, Models. Этот набор включает объект, входное воздействие и модели шума измерения наряду с номинальными условиями, при которых были получены модели.

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

Plant

Модель объекта управления, которая будет использоваться в прогнозах, заданных как модель LTI (tf, ss или zpk) или модель Identification Toolbox линейной системы. Если входной параметр Ts не задан, Plant должен быть или объектом LTI дискретного времени с заданным шагом расчета или моделью System Identification Toolbox.

Если вы не задаете в противном случае, проектирование контроллера принимает, что все входные параметры объекта являются переменными, которыми управляют, и всем объектом, выходные параметры измеряются. Используйте команду setmpcsignals или свойства LTI InputGroup и OutputGroup определять другие типы сигнала.

Если вы задаете Plant как модель Identification Toolbox линейной системы, любые шумовые каналы отбрасываются по умолчанию. Чтобы преобразовать шумовые каналы в неизмеренные воздействия, сначала преобразуйте идентифицированную модель в модель в пространстве состояний с помощью опции 'augmented'. Для получения дополнительной информации об идентификации моделей объекта управления смотрите, Идентифицируют Объект от Данных.

Ts

Шаг расчета контроллера (управляют интервалом), заданный как значение положительной скалярной величины.

p

Горизонт прогноза, заданный как положительное целое число. Интервал управления, Ts, определяет длительность каждого шага. Значение по умолчанию равняется 10 + максимальные интервалы задержки (если таковые имеются).

m

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

  • Положительный целочисленный сигнал, меньше чем или равный горизонту прогноза.

  • Векторный сигнал положительного целочисленного определения, блокирующего длины интервала. Для получения дополнительной информации смотрите Переменное Блокирование, которым Управляют.

Значением по умолчанию является 2.

W

Контроллер, настраивающий веса, заданные как структура. Для получения дополнительной информации о том, как задать эту структуру, смотрите Веса.

MV

Границы и другие свойства переменных, которыми управляют, заданных как 1 nu массивом структур, где nu является количеством переменных, которыми управляют, заданных в модели объекта управления. Для получения дополнительной информации о том, как задать эту структуру, смотрите ManipulatedVariables.

OV

Границы и другие свойства выходных переменных, заданных как 1 ny массивом структур, где ny является количеством выходных переменных, заданных в модели объекта управления. Для получения дополнительной информации о том, как задать эту структуру, смотрите OutputVariables.

DV

Масштабные коэффициенты и другие свойства входных параметров воздействия, заданных как 1 nd массивом структур, где nd является количеством входных параметров воздействия (измеренный + неизмеренный) заданный в модели объекта управления. Для получения дополнительной информации о том, как задать эту структуру, смотрите DisturbanceVariables.

Models

Объект, входное воздействие, и модели шума измерения, наряду с номинальными условиями, при которых были получены эти модели, задал как структура. Для получения дополнительной информации о том, как задать эту структуру, см. Модель.

Конструкция и инициализация

Минимизировать вычислительное служебное, Образцовое Прогнозирующее создание Контроллера происходит в двух фазах. Первое происходит в construction, когда вы вызываете команду mpc, или когда вы изменяете свойство контроллера. Конструкция включает простую валидность и проверки на непротиворечивость, такие как размерности сигнала и неотрицательность весов.

Второй фазой является initialization, который происходит, когда вы используете объект впервые в симуляции или аналитической процедуре. Инициализация вычисляет все постоянные свойства, требуемые для эффективной числовой производительности, такие как матрицы, задающие проблему оптимального управления и усиления средства оценки состояния. Дополнительные, диагностические проверки происходят во время инициализации, такой как верификация, что состояния контроллера заметны.

По умолчанию обе фазы отображают информативные сообщения в командном окне. Можно включить эти сообщения или от использования команды mpcverbosity.

Свойства

Все параметры, задающие традиционный (неявный) закон о MPC управлении, хранятся в объекте MPC, свойства которого перечислены в следующей таблице.

Контроллер MPC объект

Свойство

Описание

ManipulatedVariables (или MV или Manipulated или Input)

Масштабные коэффициенты, входные границы, границы входного уровня, соответствующие значения ECR, целевые значения, сигнализируют об именах и модулях.

OutputVariables (или OV или Controlled или Output)

Масштабные коэффициенты, входные границы, границы входного уровня, соответствующие значения ECR, целевые значения, сигнализируют об именах и модулях.

DisturbanceVariables (или DV или Disturbance)

Масштабные коэффициенты воздействия, имена и модули

Weights

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

Model

Объект, входное воздействие, и выходные модели шума и номинальные условия.

Ts

Шаг расчета контроллера

Optimizer

Параметры, управляющие решателем QP

PredictionHorizon

Горизонт прогноза

ControlHorizon

Количество свободных перемещений управления или вектор блокирования перемещений

History

CreationTime

Notes

Текст или комментарии о контроллере MPC объект

UserData

Любые дополнительные данные

ManipulatedVariables

ManipulatedVariables (или MV или Manipulated или Input) является nu - размерный массив структур (nu = количество переменных, которыми управляют), один на переменную, которой управляют. Каждой структуре описали поля в следующей таблице, где p обозначает горизонт прогноза. Если не обозначено в противном случае, численные значения находятся в технических модулях.

Переменная структура, которой управляют,

Имя поля

Содержимое

Значение по умолчанию

ScaleFactor

Неотрицательный масштабный коэффициент для этого мВ

1

Min

1 к вектору длины p нижних границ на этом мВ

-Inf

Max

1 к вектору длины p верхних границ на этом мВ

Inf

MinECR

1 к вектору длины p неотрицательных параметров, задающих Min, связал мягкость (0 = трудно).

(Безразмерный) 0

MaxECR

1 к вектору длины p неотрицательных параметров, задающих Max, связал мягкость (0 = трудно).

(Безразмерный) 0

Target

1 к вектору длины p целевых значений для этого мВ

'nominal'

RateMin

1 к вектору длины p нижних границ на от интервала к интервалу изменяются для этого мВ

-Inf

RateMax

1 к вектору длины p верхних границ на от интервала к интервалу изменяются для этого мВ

Inf

RateMinECR

1 к вектору длины p неотрицательных параметров, задающих RateMin, связал мягкость (0 = трудно).

(Безразмерный) 0

RateMaxECR

1 к вектору длины p неотрицательных параметров, задающих RateMax, связал мягкость (0 = трудно).

(Безразмерный) 0

Name

Имя сигнала мВ только для чтения (вектор символов)

InputName модели объекта управления LTI

Units

Модули сигнала мВ только для чтения (вектор символов)

InputUnit модели объекта управления LTI

Примечание

Уровни относятся к различию Δu (k) =u (k)-u (k-1). Ограничения и веса на основе производных du/dt непрерывно-разовых входных сигналов должны быть правильно повторно сформулированы для различия дискретного времени Δu (k), с помощью приближения du/dt ≅ Δu (k)/Ts.

OutputVariables

OutputVariables (or OV или Controlled или Output) является ny - размерный массив структур (ny = количество выходных параметров), один на выходной сигнал. Каждой структуре описали поля в следующей таблице. p обозначает горизонт прогноза. Если не задано в противном случае, значения находятся в технических модулях.

Структура выходной переменной

Имя поля

Содержимое

Значение по умолчанию

ScaleFactor

Неотрицательный масштабный коэффициент для этого OV

1

Min

1 к вектору длины p нижних границ на этом OV

-Inf

Max

1 к вектору длины p верхних границ на этом OV

Inf

MinECR

1 к вектору длины p неотрицательных параметров, задающих Min, связал мягкость (0 = трудно).

(Безразмерный) 1

MaxECR

1 к вектору длины p неотрицательных параметров, задающих Max, связал мягкость (0 = трудно).

(Безразмерный) 1

Name

OV только для чтения сигнализируют об имени (вектор символов)

OutputName модели объекта управления LTI

Units

OV только для чтения сигнализируют о модулях (вектор символов)

OutputUnit модели объекта управления LTI

В порядке отклонить постоянные должные воздействия, например, получить нелинейность, измерилось значение по умолчанию, выходное возмущение, используемое в программном обеспечении Model Predictive Control Toolbox™, интегрировано белый шум (см. Выходное Возмущение).

DisturbanceVariables

DisturbanceVariables (или DV или Disturbance) (nv +nd) - размерный массив структур (nv = количество измеренных входных воздействий, nd = количество неизмеренных входных воздействий). Каждой структуре описали поля в следующей таблице.

Структура переменной воздействия

Имя поля

Содержимое

Значение по умолчанию

ScaleFactor

Неотрицательный масштабный коэффициент для этого DV

1

Name

Имя сигнала DV только для чтения (вектор символов)

InputName модели объекта управления LTI

Units

Модули сигнала DV только для чтения (вектор символов)

InputUnit модели объекта управления LTI

Порядок сигналов воздействия в массиве DV следующий: первые записи nv относятся к измеренным входным воздействиям, последний n d записи относятся к неизмеренным входным воздействиям.

Веса

Weights является структурой, задающей QP взвешивание матриц. Это содержит четыре поля. Значения этих полей зависят от того, используете ли вы стандартную квадратичную функцию стоимости (см. Стандартную Функцию стоимости), или альтернативная функция стоимости (см. Альтернативную Функцию стоимости).

Стандартная функция стоимости

В следующей таблице перечислены содержимое четырех полей структуры. В таблице p обозначает горизонт прогноза, n u количество переменных, которыми управляют и n y количество выходных переменных.

Для MV, MVRate и весов OV, если вы задаете меньше, чем строки p, последняя строка повторяется автоматически, чтобы сформировать матрицу, содержащую строки p.

Веса для стандартной функции стоимости

Имя поля (сокращения)

Содержимое

(Безразмерное) значение по умолчанию

ManipulatedVariables (или MV или Manipulated или Input)

(1 к p)-by-nu размерный массив неотрицательных весов мВ

zeros(1,nu)

ManipulatedVariablesRate (или MVRate или ManipulatedRate или InputRate)

(1 к p)-by-nu размерный массив инкрементных МВ весов

0.1*ones(1,nu)

OutputVariables (or OV или Controlled или Output)

(1 к p)-by-ny размерный массив весов OV

1 (Значение по умолчанию для выходных весов следующее: если nuny, все выходные параметры взвешиваются с модульным весом; если nu <ny, nu значение по умолчанию выходных параметров к 1, с настройкой, данной измеренным выходным параметрам и остальным значение по умолчанию к 0.)

ECR

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

1e5*(max weight)

Примечание

Если все веса MVRate строго положительны, получившаяся проблема QP строго выпукла. Если некоторые веса MVRate являются нулем, Гессиан QP мог бы быть положителен полуопределенный. Чтобы сохранить проблему QP строго выпуклой, когда количество условия матрицы Гессиана K ΔU больше, чем 1 012, количество, 10*sqrt(eps) добавляется к каждому диагональному термину. Смотрите Функцию стоимости.

Альтернативная функция стоимости

Можно задать недиагональный Q и матрицы веса R в функции стоимости. Для этого задайте поля ManipulatedVariables, ManipulatedVariablesRate и OutputVariables как массивы ячеек, каждый содержащий одну положительную полу определенную матрицу соответствующего размера. А именно, OutputVariables должен быть массивом ячеек, содержащим ny-by-ny матрица Q, ManipulatedVariables должен быть массивом ячеек, содержащим nu-by-nu матрица Ru, и ManipulatedVariablesRate должен быть массивом ячеек, содержащим nu-by-nu R Δu матрица (см. Альтернативную Функцию стоимости и пример mpcweightsdemo). Можно использовать диагональные матрицы веса для одного или нескольких из этих полей. Если вы не используете поле, диспетчер MPC использует значения по умолчанию, показанные в приведенной выше таблице.

Например, можно задать недиагональные веса, можно следующим образом

MPCobj.Weights.OutputVariables = {Q};
MPCobj.Weights.ManipulatedVariables = {Ru};
MPCobj.Weights.ManipulatedVariablesRate = {Rdu};

где Q = Q. Ru = R u и Rdu = R Δu является положительными полуопределенными матрицами.

Примечание

Вы не можете задать недиагональные веса, которые отличаются на каждом шаге горизонта прогноза. Тот же Q, Ru и веса Rdu применяются на каждом шаге.

Модель

Свойство Model задает объект, входное воздействие, и вывело шумовые модели и номинальные условия, согласно образцовой настройке, описанной в Оценке состояния Контроллера. Это - 1D структура, содержащая следующие поля.

Модели, используемые MPC

Имя поля

Содержимое

Значение по умолчанию

Plant

Модель LTI или идентифицированная линейная модель объекта

Никакое значение по умолчанию

Disturbance

Модель LTI, описывающая, ожидала неизмеренные входные воздействия

[] (По умолчанию, входные воздействия, как ожидают, будут интегрированы белый шум. Чтобы смоделировать сигнал, интегратор с безразмерным усилением единицы добавляется для каждого неизмеренного входного воздействия, если сложение не заставляет контроллер терять наблюдаемость состояния. В этом случае воздействие, как ожидают, будет белым шумом, и таким образом, безразмерное усиление единицы будет добавлено к тому каналу вместо этого.)

Noise

Модель LTI, описывающая ожидаемый шум для выходных измерений

[] (По умолчанию, шум измерения, как ожидают, будет белым шумом с модульным отклонением. Чтобы смоделировать сигнал, безразмерное усиление единицы добавляется для каждого измеренного канала.)

Nominal

Структура, содержащая состояние, вход и выходные значения, где Model.Plant линеаризуется

Значения по умолчанию полей показывают в следующей таблице:

Поле

Описание

Значение по умолчанию

X

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

[]

U

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

[]

Y

Plant вывод в рабочей точке

[]

DX

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

[]

Примечание

Прямое сквозное соединение от переменных, которыми управляют, до любого вывода в Model.Plant не позволено. Смотрите, что MPC Моделирует.

Задайте типы сигнала ввода и вывода через свойства InputGroup и OutputGroup Model.Plant, или, более удобно, используйте команду setmpcsignals. Допустимые типы сигнала перечислены в следующих таблицах.

Введите группы в модели объекта управления

Назовите (Сокращения)

Значение

ManipulatedVariables (или MV или Manipulated или Input)

Индексы переменных, которыми управляют, в Model.Plant

MeasuredDisturbances (или MD или Measured)

Индексы измеренных воздействий в Model.Plant

UnmeasuredDisturbances (или UD или Unmeasured)

Индексы неизмеренных воздействий в Model.Plant

Выведите группы в модели объекта управления

Назовите (Сокращения)

Значение

MeasuredOutputs (или MO или Measured)

Индексы измеренных выходных параметров в Model.Plant

UnmeasuredOutputs (или UO или Unmeasured)

Индексы неизмеренных выходных параметров в Model.Plant

По умолчанию все входные параметры Model.Plant являются переменными, которыми управляют, и все выходные параметры измеряются.

Nominal структуры содержит значения (в технических модулях) для состояний, входных параметров, выходных параметров и производных/различий состояния в рабочей точке, где Model.Plant применяется. Эта точка обычно является точкой линеаризации. О полях сообщают в следующей таблице (см. также Моделирование MPC).

Номинальная стоимость в рабочей точке

Поле

Описание

Значение по умолчанию

X

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

[]

U

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

[]

Y

Plant вывод в рабочей точке

[]

DX

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

[]

Ts

Шаг расчета контроллера MPC. По умолчанию, если Model.Plant является моделью дискретного времени, Ts = Model.Plant.ts. Для непрерывно-разовых моделей объекта управления задайте контроллер Ts. Модуль измерения Ts наследован от Model.Plant.TimeUnit.

Оптимизатор

Optimizer является структурой с полями, которые содержат параметры для оптимизации QP.

Свойства оптимизатора

Поле

Описание

Значение по умолчанию

MaxIter

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

  • 'Default' — Контроллер MPC автоматически вычисляет максимальное количество итераций решателя QP как:

    MaxIter=4(nc+nv)

    где

    • ncy является общим количеством ограничений через горизонт прогноза.

    • nv является общим количеством переменных оптимизации через горизонт управления.

    Значение MaxIter по умолчанию имеет нижнюю границу 120.

  • Положительное целое число — остановки решателя QP после итераций MaxIter. Если решателю не удается сходиться в итоговой итерации, контроллере:

    • Замораживает перемещение контроллера, если UseSuboptimalSolution является false.

    • Применяет субоптимальное решение, достигнутое после итоговой итерации, если UseSuboptimalSolution является true.

Если CustomSolver или CustomSolverCodeGen является true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter.

'Default'
MinOutputECR

Минимальное значение допускало OutputMinECR и OutputMaxECR, заданный как неотрицательный скаляр. Значение 0 указывает, что трудно выходные ограничения позволены. Если любое из свойств OutputVariables.MinECR или OutputVariables.MaxECR контроллера MPC является меньше, чем MinOutputECR, предупреждение выведено, и значение повышено до MinOutputECR во время вычисления.

0
UseSuboptimalSolution

Отметьте указание, применить ли субоптимальное решение после того, как количество итераций оптимизации превышает MaxIter, заданный как логическое значение.

false
UseWarmStart

Отметьте указание ли к горячему запуску каждая итерация решателя QP путем передачи в списке активных неравенств от предыдущей итерации, заданной как логическое значение. Неравенства активны, когда их равный фрагмент верен.

Если CustomSolver или CustomSolverCodeGen является true, диспетчер не требует, чтобы пользовательский решатель соблюдал UseWarmStart.

true
CustomSolver

Отметьте указание, использовать ли пользовательский решатель QP для симуляции, заданной как логическое значение. Если CustomSolver является true, пользователь должен обеспечить функцию mpcCustomSolver на пути MATLAB®.

Этот пользовательский решатель не используется для генерации кода. Чтобы сгенерировать код для контроллера с пользовательским решателем, используйте CustomSolverCodeGen.

Если CustomSolver является true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter и UseWarmStart.

Для получения дополнительной информации об определении пользовательских решателей смотрите Пользовательский Решатель QP.

false
CustomSolverCodeGen

Отметьте указание, использовать ли пользовательский решатель QP для генерации кода, заданной как логическое значение. Если CustomSolverCodeGen является true, пользователь должен обеспечить функцию mpcCustomSolverCodeGen на пути MATLAB.

Этот пользовательский решатель не используется для симуляции. Чтобы моделировать контроллер с пользовательским решателем, используйте CustomSolver.

Если CustomSolverCodeGen является true, диспетчер не требует, чтобы пользовательский решатель соблюдал MaxIter и UseWarmStart.

Для получения дополнительной информации об определении пользовательских решателей смотрите Пользовательский Решатель QP.

false

Примечание

Значение MaxIter по умолчанию может быть очень большим для некоторых настроек контроллера, таким как те с большим прогнозом и управлять горизонтами. При симуляции таких контроллеров, если решатель QP не может найти выполнимое решение, симуляция, может казаться, прекращает отвечать, поскольку решатель продолжает искать итерации MaxIter.

PredictionHorizon

PredictionHorizon является целым числом шагов горизонта прогноза. Интервал управления, Ts, определяет длительность каждого шага. Значение по умолчанию равняется 10 + максимальные интервалы задержки (если таковые имеются).

ControlHorizon

ControlHorizon является или многими свободными перемещениями управления или вектором блокирования перемещений (см., что Переменная, которой Управляют, Блокируется). Значение по умолчанию равняется 2.

История

History хранит время, контроллер MPC был создан (только для чтения).

Примечания

Notes хранит текст или комментирует как массив ячеек из символьных векторов.

UserData

Любые дополнительные данные хранимы в контроллере MPC объект.

Примеры

свернуть все

Создайте модель объекта управления с передаточной функцией (s+1)/(s2+2s).

Plant = tf([1 1],[1 2 0]);

Объект является SISO, таким образом, его вход должен быть переменной, которой управляют, и его вывод должен быть измерен. В целом это - хорошая практика, чтобы определять все типы сигнала объекта с помощью или команды setmpcsignals или свойств LTI InputGroup и OutputGroup.

Задайте шаг расчета для контроллера.

Ts = 0.1;

Задайте границы на переменной, которой управляют, u, таким образом, что -1u1.

MV = struct('Min',-1,'Max',1);

MV содержит только верхние и нижние границы на переменной, которой управляют. В целом можно задать дополнительные свойства MV. Когда вы не задаете другие свойства, их значения по умолчанию применяются.

Задайте горизонт прогноза с 20 интервалами и горизонт управления с 3 интервалами.

p = 20;
m = 3;

Создайте контроллер MPC, использующий заданные значения. Пятый входной параметр пуст, таким образом, настраивающие веса значения по умолчанию применяются.

MPCobj = mpc(Plant,Ts,p,m,[],MV);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.

Вопросы совместимости

развернуть все

Ошибки, запускающиеся в R2018b

Представлено до R2006a