Проектируйте оптимизацию, чтобы соответствовать требованиям переходной характеристики (код)

Этот пример показывает, как программно оптимизировать параметры контроллера, чтобы удовлетворить требования к переходной характеристике, используя sdo.optimize функция.

Структура модели

Simulink® модели watertank_stepinput включает нелинейную систему Бака с водой объекта и ПИ-контроллера в системе обратной связи с одним циклом.

Блок Step применяет шаговый вход. Можно также использовать другие типы входов, такие как наклон, чтобы оптимизировать ответ, генерируемый такими входами.

Этот рисунок показывает систему бака с водой.

Вода входит в бак в верхнюю часть со скоростью, пропорциональной открытию клапана. Открытие клапана пропорционально напряжению, V, приложенному к насосу. Вода уходит через отверстие в основе бака со скоростью, пропорциональной квадратному корню уровня воды, H. Присутствие квадратного корня в скорости потока жидкости воды приводит к нелинейному объекту.

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

Переменные

H - высота воды в баке.

Vol - объем воды в баке.

V - напряжение, приложенное к насосу.

Параметры

A - площадь поперечного сечения бака.

b является константой, связанной со скоростью потока жидкости в бак.

a является константой, связанной со скоростью потока жидкости из бака.

Дифференциальное уравнение

ddtVol=AdHdt=bVaH

ГосударстваH
Исходные данныеV
ВыходыH

Требования к проектированию

Высота воды в баке, H, должны соответствовать следующей переходной характеристикой требованиям:

  • Время нарастания менее 2,5 секунд

  • Время урегулирования менее 20 секунд

  • Перерегулирование менее 5%

Задайте требования к переходной характеристике

  1. Откройте модель Simulink.

    sys = 'watertank_stepinput';
    open_system(sys);

  2. Логгирование уровня воды, H.

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

    PlantOutput = Simulink.SimulationData.SignalLoggingInfo;
    PlantOutput.BlockPath               = [sys '/Water-Tank System'];
    PlantOutput.OutputPortIndex         = 1;
    PlantOutput.LoggingInfo.NameMode    = 1;
    PlantOutput.LoggingInfo.LoggingName = 'PlantOutput';
  3. Сохраните регистрационную информацию.

    simulator = sdo.SimulationTest(sys);
    simulator.LoggingInfo.Signals = PlantOutput;

    simulator является sdo.SimulationTest объект, который вы также используете позже, чтобы симулировать модель.

  4. Задайте требования к переходной характеристике.

    StepResp = sdo.requirements.StepResponseEnvelope;
    StepResp.RiseTime = 2.5;
    StepResp.SettlingTime = 20;
    StepResp.PercentOvershoot = 5;
    StepResp.FinalValue = 2;
    StepResp.InitialValue = 1;

    StepResp является sdo.requirements.StepResponseEnvelope объект. Значения, присвоенные StepResp.FinalValue и StepResp.InitialValue соответствуют шаговому изменению высоты бака с водой от 1 на 2.

Задайте конструктивные переменные

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

  1. Выберите параметры модели для оптимизации. Здесь оптимизируйте параметры ПИД-регулятора.

    p = sdo.getParameterFromModel(sys,{'Kp','Ki'});
    

    p массив из 2 param.Continuous объекты.

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

    p(1).Minimum = 0;
    p(2).Minimum = 0;

Оптимизация отклика модели

  1. Создайте конструкторскую функцию, чтобы оценить производительность системы для набора значений параметров.

    evalDesign = @(p) sldo_model1_design(p,simulator,StepResp);
    

    evalDesign является анонимной функцией, которая вызывает функцию затрат sldo_model1_design. Функция стоимости моделирует модель и оценивает требования проекта.

    Совет

    Тип edit sldo_model1_design чтобы просмотреть эту функцию.

  2. Оцените текущий ответ. (Необязательно)

    1. Вычислите ответ модели с помощью текущих значений конструктивных переменных.

      initDesign = evalDesign(p);

      Во время симуляции блок Step Response выдает предупреждения об утверждениях в MATLAB® prompt, который указывает, что требования, указанные в блоке, не удовлетворены.

    2. Исследуйте нелинейные ограничения неравенства.

      initDesign.Cleq
      ans =
      
          0.1739
          0.0169
         -0.0002
         -0.0101
         -0.0229
          0.0073
         -0.0031
          0.0423

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

  3. Задайте опции оптимизации.

    opt = sdo.OptimizeOptions;
    opt.MethodOptions.Algorithm = 'sqp';

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

  4. Оптимизируйте ответ.

    [pOpt,optInfo] = sdo.optimize(evalDesign,p,opt);

    При каждой итерации оптимизации программное обеспечение моделирует модель и решатель оптимизации по умолчанию fmincon изменяет конструктивные переменные в соответствии с требованиями проекта. Для получения дополнительной информации см. «Как алгоритм оптимизации формулирует задачи минимизации».

    После завершения оптимизации в командном окне отображаются следующие результаты:

                                   max        Step-size    First-order 
     Iter F-count        f(x)   constraint                 optimality
        0      5            0       0.1739
        1     10            0      0.03411            1         0.81
        2     15            0            0        0.235       0.0429
        3     15            0            0     2.26e-18            0
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the selected value of the function tolerance,
    and constraints are satisfied to within the selected value of the constraint tolerance.

    Сообщение Local minimum found that satisfies the constraints указывает, что решатель оптимизации нашел решение, которое удовлетворяет требованиям проекта в пределах заданных допусков. Для получения дополнительной информации о выходах, отображаемых во время оптимизации, смотрите Итеративное отображение.

  5. Исследуйте информацию об окончании оптимизации, содержащуюся в optInfo выходной аргумент. Эти сведения помогают вам проверить, соответствует ли ответ переходной характеристики требованиям.

    Для получения примера проверьте следующие поля:

    • Cleq, что показывает оптимизированные нелинейные ограничения неравенства.

      optInfo.Cleq
      ans =
      
         -0.0001
         -0.0028
         -0.0050
         -0.0101
         -0.0135
         -0.0050
         -0.0050
         -0.0732

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

    • exitflag, что определяет, почему оптимизация завершена.

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

  6. Просмотрите оптимизированные значения параметров.

    pOpt
    pOpt(1,1) =
     
           Name: 'Kp'
          Value: 2.0545
        Minimum: 0
        Maximum: Inf
           Free: 1
          Scale: 1
           Info: [1x1 struct]
    
     
    pOpt(2,1) =
     
           Name: 'Ki'
          Value: 0.3801
        Minimum: 0
        Maximum: Inf
           Free: 1
          Scale: 1
           Info: [1x1 struct]
  7. Симулируйте модель с оптимизированными значениями.

    1. Обновите оптимизированные значения параметров в модели.

      sdo.setValueInModel(sys,pOpt);
      
    2. Симулируйте модель.

      sim(sys);

См. также

| | | | | |

Похожие темы