Проектирование контроллера модели обычно требует некоторой настройки весов функции затрат. Этот раздел содержит советы по настройке. Смотрите Задачу Оптимизации для получения дополнительной информации о уравнениях функции стоимости.
Перед настройкой весов функции затрат задайте масштабные коэффициенты для каждой входной и выходной переменной объекта. Удерживайте эти масштабные коэффициенты постоянными, когда вы настраиваете контроллер. Дополнительные сведения см. в разделе «Задание масштабных коэффициентов».
Во время настройки используйте sensitivity
и review
команды для получения диагностической обратной связи. sensitivity
команда предназначена для помощи с выбором веса функции затрат.
Измените вес путем установки соответствующего свойства контроллера следующим образом:
Как изменить этот вес | Установите это свойство контроллера | Размер массива |
---|---|---|
OV отслеживание уставки (wy) | Weights.OV | p -by- ny |
Отслеживание уставки СН (шu) | Weights.MV | p -by- nu |
Шаг МВ (wΔu) | Weights.MVRate | p -by- nu |
Здесь MV является переменной, управляемой объектом, и nu является количеством MV. OV является выходной переменной объекта управления, и ny является количеством OV. Наконец, p количество шагов в горизонте предсказания.
Если массив весов содержит n < p строк, контроллер дублирует последнюю строку, получая полный массив p строк. Значение по умолчанию (n = 1) минимизирует количество параметров, которые будут настроены, и поэтому рекомендуется. Альтернативу можно найти в разделе Изменяющиеся во времени веса и ограничения.
Учитывая ny OV, предположим, что nyc должны удерживаться на ссылку значении (уставке) или около него. Если i OV не находится в этой группе, установите Weights.OV(:,i)
= 0.
Если nu ≥ nyc, обычно можно достичь нулевой ошибки отслеживания OV в установившемся состоянии, если по крайней мере nyc MV не ограничены. Значение по умолчанию Weights.OV = ones(1,ny)
является хорошей начальной точкой в этом случае.
Однако, если nu > nyc, у вас будут избыточные степени свободы. Поэтому, если вы не принимаете профилактических мер, MV могут дрейфовать, даже когда OV близки к их исходным значениям.
Наиболее распространенной превентивной мерой является определение ссылочных значений (целей) для количества избыточных СН, которые у вас есть, nu - nyc. Такие целевые показатели могут представлять экономически или технически желательные установившиеся значения.
Альтернативной мерой является установка w∆u > 0 для по крайней мере nu – nyc MV, чтобы препятствовать их изменению контроллером.
Если nu < nyc, у вас недостаточно степеней свободы, чтобы сохранить все требуемые OV на заданном уровне. В этом случае рассмотрите приоритет отслеживания уставки. Для этого установите Weights.OV(:,i) > 0
для определения приоритета для i-го OV. Основные принципы для этого заключаются в следующем:
0.05 - Низкий приоритет: Большая ошибка отслеживания приемлема
0.2 - Приоритет ниже среднего
1 - Средний приоритет - значение по умолчанию. Используйте это значение, если nyc = 1.
5 - Выше среднего приоритета
20 - Высокий приоритет: Требуется небольшая ошибка отслеживания
По умолчанию Weights.MV = zeros(1,nu)
. Если некоторые MV имеют цели, соответствующие веса отслеживания уставки MV должны быть ненулевыми. В противном случае цели игнорируются. Если количество целей СН меньше (nu - nyc), попробуйте использовать один и тот же вес для каждой. Предлагаемое значение составляет 0,2, то же, что и отслеживание OV ниже среднего. Это значение позволяет MV временно отойти от своих целей, чтобы улучшить отслеживание OV.
В противном случае цели отслеживания уставки MV и OV, вероятно, будут конфликтовать. Приоритизируйте путем установки Weights.MV(:,i)
значения способом, подобным тому, который предлагается для Weights.OV
(см. выше). Типичная практика устанавливает средний приоритет отслеживания СН ниже, чем средний приоритет отслеживания СН (например, 0,2 < 1).
Если i MV не имеет цели, установите Weights.MV(:,i)
= 0 (значение по умолчанию).
По умолчанию Weights.MVRate = 0.1*ones(1,nu)
. Причины этого по умолчанию включают:
Если объект является стабильным без разомкнутого контура, большие шаги являются ненужными и, вероятно, нежелательными. Например, когда предсказания модели несовершенны, как это всегда происходит на практике, более консервативные шаги обычно обеспечивают более устойчивую эффективность контроллера, но более плохое отслеживание уставки.
Эти значения заставляют матрицу Гессия QP быть положительно-определенной, так что QP имеет уникальное решение, если никакие ограничения не активны.
Чтобы побудить контроллер использовать еще меньшие шаги для i-го MV, увеличьте Weights.MVRate(:,i)
значение.
Если объект является нестабильным без обратной связи, вам может потребоваться уменьшить среднее Weight.MVRate
значение для обеспечения достаточно быстрого реагирования на нарушения.
Советы относительно Weights.ECR
см. в разделе «Смягчение ограничений» свойство.
Чтобы сосредоточиться на настройке отдельных весов функции затрат, выполните симуляционные тесты с обратной связью при следующих условиях:
Никаких ограничений.
Нет ошибок предсказания. Модель предсказания контроллера должна быть идентичной модели объекта управления. И приложение MPC Designer, и приложение sim
функция обеспечивает опцию моделирования в этих условиях.
Используйте изменения в ссылке и измеренных нарушением порядка сигналах (если таковые имеются), чтобы вызвать динамическую характеристику. По результатам каждого теста рассмотрите изменение величин выбранных весов.
Одним из предлагаемых подходов является использование постоянных Weights.OV(:,i) = 1
чтобы обозначить «средний приоритет отслеживания OV» и настроить все другие веса так, чтобы они относились к этому значению. Используйте sensitivity
команда для наведения. Используйте review
команда для проверки типичных проблем настройки, таких как отсутствие устойчивости замкнутого цикла.
См. «Настройка моделей нарушения порядка и шума» для тестов, фокусирующихся на способности контроллера к подавлению помех.
Когда у вас будут веса, которые хорошо работают при вышеописанных условиях, проверяйте чувствительность к ошибке предсказания. Существует несколько способов сделать это:
Если у вас есть нелинейная модель объекта управления вашей системы, такая как Simulink® моделируйте эффективность с обратной связью в рабочих точках, отличных от тех, для которых применяется модель предсказания LTI.
В качестве альтернативы запустите симуляции с обратной связью, в которых модель LTI, представляющая объект, отличается (например, по структуре или значениям параметров) от модели предсказания MPC. И приложение MPC Designer, и приложение sim
функция обеспечивает опцию моделирования в этих условиях. Для получения примера смотрите Тестирование Контроллера Робастности.
Если эффективность контроллера, по-видимому, значительно ухудшается по сравнению с тестами без предсказания ошибки, для разомкнутого контура стабильного объекта рассмотрите возможность сделать контроллер менее агрессивным.
В MPC Designer, на вкладке Tuning, вы можете сделать это с помощью Closed-Loop Performance ползунка.
Движение к более устойчивому управлению уменьшает веса OV/MV и увеличивает веса скорости MV, что приводит к ослабленному контролю выходов и более консервативным движениям управления.
В командной строке можно внести следующие изменения для уменьшения агрессивности контроллера:
Увеличьте все Weight.MVRate
значения мультипликативным коэффициентом порядка 2.
Уменьшите все Weight.OV
и Weight.MV
значений путем деления на один и тот же коэффициент.
После корректировки весов переоцените эффективность как с ошибкой предсказания, так и без нее.
Если оба теперь приемлемы, прекратите настраивать веса.
Если есть улучшение, но все еще слишком много деградации с ошибкой модели, увеличьте робастность контроллера дополнительно.
Если изменение заметно не улучшает эффективность, восстановите исходные веса и сосредоточьтесь на настройке оценки состояния (см. «Настройка нарушений порядка и шума»).
Наконец, если изменения настройки не обеспечивают адекватной робастности, рассмотрите один из следующих опций: