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

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

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

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

Блок 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®, которые указывают, что требованиям, заданным в блоке, не удовлетворяют.

    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

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

    • 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);

Смотрите также

| | | | | |

Похожие темы