nlmpcmoveopt

Опция установлена для nlmpcmove функция

Описание

Задавать опции для nlmpcmove функция, используйте nlmpcmoveopt опция установлена.

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

Создание

Синтаксис

Описание

пример

options = nlmpcmoveopt создает набор по умолчанию опций для nlmpcmove функция. Чтобы изменить значения свойств, используйте запись через точку.

Свойства

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

Настраивающие веса выходной переменной, которые заменяют Weights.OutputVariables свойство контроллера во время выполнения, заданное как вектор-строка или массив неотрицательных значений.

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

Чтобы варьироваться настраивающиеся веса по горизонту прогноза со времени k +1 ко времени k +p, задайте массив со столбцами Ny и до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит настраивающие веса выходной переменной для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, веса в итоговой строке используются в остающихся шагах горизонта прогноза.

Переменные настраивающие веса, которыми управляют, которые заменяют Weights.ManipulatedVariables свойство контроллера во время выполнения, заданное как вектор-строка или массив неотрицательных значений.

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

Чтобы варьироваться настраивающиеся веса по горизонту прогноза со времени k ко времени k +p-1, задайте массив со столбцами Nmv и до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит переменные настраивающие веса, которыми управляют, для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, веса в итоговой строке используются в остающихся шагах горизонта прогноза.

Настраивающие веса с плавающей ставкой, которыми управляют, которые заменяют Weights.ManipulatedVariablesRate свойство контроллера во время выполнения, заданное как вектор-строка или массив неотрицательных значений.

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

Чтобы варьироваться настраивающиеся веса по горизонту прогноза со времени k ко времени k +p-1, задайте массив со столбцами Nmv и до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит настраивающие веса с плавающей ставкой, которыми управляют, для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, веса в итоговой строке используются в остающихся шагах горизонта прогноза.

Ослабьте переменный настраивающий вес, который заменяет Weights.ECR свойство контроллера во время выполнения, заданное как положительная скалярная величина.

Нижние границы выходной переменной, заданные как вектор-строка из длины Ny или массив со столбцами Ny, где Ny является количеством выходных переменных. OutputMin(:,i) заменяет OutputVariables(i).Min свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k +1 ко времени k +p, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Верхние границы выходной переменной, заданные как вектор-строка из длины Ny или массив со столбцами Ny, где Ny является количеством выходных переменных. OutputMax(:,i) заменяет OutputVariables(i).Max свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k +1 ко времени k +p, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Переменные нижние границы, которыми управляют, заданные как вектор-строка из длины Nmv или массив со столбцами Nmv, где Nmv является количеством переменных, которыми управляют. MVMin(:,i) заменяет ManipulatedVariables(i).Min свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Переменные верхние границы, которыми управляют, заданные как вектор-строка из длины Nmv или массив со столбцами Nmv, где Nmv является количеством переменных, которыми управляют. MVMax(:,i) заменяет ManipulatedVariables(i).Max свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Нижние границы с плавающей ставкой, которыми управляют, заданные как вектор-строка из длины Nmv или массив со столбцами Nmv, где Nmv является количеством переменных, которыми управляют. MVRateMin(:,i) заменяет ManipulatedVariables(i).RateMin свойство контроллера во время выполнения. MVRateMin границы должны быть неположительными.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Верхние границы с плавающей ставкой, которыми управляют, заданные как вектор-строка из длины Nmv или массив со столбцами Nmv, где Nmv является количеством переменных, которыми управляют. MVRateMax(:,i) заменяет ManipulatedVariables(i).RateMax свойство контроллера во время выполнения. MVRateMax границы должны быть неотрицательными.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Нижние границы состояния, заданные как вектор-строка из длины Nx или массив со столбцами Nx, где Nx является количеством состояний. StateMin(:,i) заменяет States(i).Min свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k +1 ко времени k +p, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

Верхние границы состояния, заданные как вектор-строка из длины Nx или массив со столбцами Nx, где Nx является количеством состояний. StateMax(:,i) заменяет States(i).Max свойство контроллера во время выполнения.

Чтобы использовать те же границы через горизонт прогноза, задайте вектор-строку.

Чтобы варьироваться границы по горизонту прогноза со времени k +1 ко времени k +p, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит границы для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые границы используются в остающихся шагах горизонта прогноза.

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

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

Чтобы варьироваться цели по горизонту прогноза (предварительный просмотр) со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит цели для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые цели используются в остающихся шагах горизонта прогноза.

Значения параметров, используемые моделью прогноза, пользовательской функцией стоимости и пользовательскими ограничениями, заданными как вектор ячейки с длиной, равняются Model.NumberOfParameters свойство контроллера. Если у контроллера нет параметров, то Parameters должен быть {}.

Контроллер, nlmpcobj, передачи эти параметры к:

  • Функции модели в nlmpcobj.Model (StateFcn и OutputFcn)

  • Функция стоимости nlmpcobj.Optimization.CustomCostFcn

  • Ограничение функционирует в nlmpcobj.Optimization (CustomEqConFcn и CustomIneqConFcn)

  • Функции Якоби в nlmpcobj.Jacobian

Порядок параметров должен совпадать с порядком, заданным для этих функций.

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

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

Чтобы варьироваться исходные предположения по горизонту прогноза со времени k +1 ко времени k +p, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит исходные предположения для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые предположения используются в остающихся шагах горизонта прогноза.

Если X0 [], исходные предположения по умолчанию являются текущими состояниями модели прогноза (x входной параметр к nlmpcmove).

В общем случае во время симуляции с обратной связью, вы не задаете X0 самостоятельно. Вместо этого при вызове nlmpcmove, возвратите opt выходной аргумент, который является nlmpcmoveopt объект. opt.X0 содержит расчетные оптимальные траектории состояния как исходные предположения. Можно затем передать opt в как options входной параметр к nlmpcmove для следующего интервала управления. Эти шаги являются лучшой практикой, даже если вы не задаете никакие другие опции во время выполнения.

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

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

Чтобы варьироваться исходные предположения по горизонту прогноза со времени k ко времени k +p-1, задайте массив с до строк p. Здесь, k является текущим временем, и p является горизонтом прогноза. Каждая строка содержит исходные предположения для одного шага горизонта прогноза. Если вы задаете меньше, чем строки p, итоговые предположения используются в остающихся шагах горизонта прогноза.

Если MV0 [], исходные предположения по умолчанию являются управляющими сигналами, используемыми на объекте в предыдущем интервале управления (lastmv входной параметр к nlmpcmove).

В общем случае во время симуляции с обратной связью, вы не задаете MV0 самостоятельно. Вместо этого при вызове nlmpcmove, возвратите opt выходной аргумент, который является nlmpcmoveopt объект. opt.MV0 содержит расчетные оптимальные переменные траектории, которыми управляют, как исходные предположения. Можно затем передать opt в как options входной параметр к nlmpcmove для следующего интервала управления. Эти шаги являются лучшой практикой, даже если вы не задаете никакие другие опции во время выполнения.

Исходное предположение для слабой переменной в решении, заданном как неотрицательный скаляр. Если Slack0 [], исходным предположением по умолчанию является 0.

В общем случае во время симуляции с обратной связью, вы не задаете Slack0 самостоятельно. Вместо этого при вызове nlmpcmove, возвратите opt выходной аргумент, который является nlmpcmoveopt объект. opt.Slack содержит расчетную слабую переменную как исходное предположение. Можно затем передать opt в как options входной параметр к nlmpcmove для следующего интервала управления. Эти шаги являются лучшой практикой, даже если вы не задаете никакие другие опции во время выполнения.

Функции объекта

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

Примеры

свернуть все

Создайте nlmpcmoveopt по умолчанию опция установлена.

options = nlmpcmoveopt;

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

  • Шаг расчета модели, заданной как одно числовое значение. Задайте значение 0.25.

  • Получите факторы, заданные как двухэлементный вектор-строка. Задайте значение [0.7 0.35].

Порядок, в котором вы задаете параметры, должен совпадать с порядком, заданным в пользовательских списках аргументов функции. Кроме того, размерности параметров должны совпадать с размерностями, ожидаемыми пользовательскими функциями.

options.Parameters = {0.25,[0.7 0.35]};

Чтобы использовать эти параметры при вычислении дополнительных действий управления для нелинейного контроллера MPC, передайте options к nlmpcmove функция.

Введенный в R2018b