Задайте пользовательскую цель сигнала с неопределенной переменной (графический интерфейс пользователя)

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

Конкурентоспособная модель демографической динамики

Модели sdoPopulation модели Simulink простая экология 2D организма с помощью конкурентоспособных уравнений Лотки - Вольтерры:

  • численность населения энного организма.

  • свойственный темп роста на душу населения каждого организма.

  • конкурентоспособная задержка каждого организма.

  • пропускная способность среды организма.

  • близость этих двух населения и как строго они влияют друг на друга.

Модель использует нормированные единицы.

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

open_system('sdoPopulation')

Двумерный сигнал, P, моделирует численности населения для P1 (первый элемент) и P2 (второй элемент). Модель первоначально сконфигурирована с одним организмом, P1, доминируя над экологией. Осциллограф Population показывает генеральную совокупность P1, колеблющуюся между высокими и низкими значениями, в то время как P2 является постоянным в 0,1. Блок Population Phase Portrait показывает численности населения этих двух организмов друг относительно друга.

Проблема проектирования стабилизации генеральной совокупности

Настройтесь, и значения, чтобы соответствовать следующим конструктивным требованиям:

  • Минимизируйте область значений генеральной совокупности, то есть, максимальную разницу между P1 и P2.

  • Стабилизируйте P1 и P2, то есть, гарантируйте, что никакая генеральная совокупность организма не вымирает или становится чрезвычайно многочисленной.

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

Открытый Response Optimization Tool

Дважды кликните блок Open Optimization Tool в модели, чтобы открыться пред сконфигурированный сеанс инструмента Response Optimization. Сеанс задает следующие переменные:

  • Набор переменных DesignVars - Design для, и параметры модели.

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

  • P1 и P2 - Регистрируемые сигналы, представляющие население этих двух организмов.

Задайте пользовательскую целевую функцию сигнала

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

  1. Откройте диалоговое окно Create Requirement. В Новом списке выберите Custom Requirement.

  2. Задайте следующее в диалоговом окне Create Requirement:

  • Имя - вводит PopulationRange.

  • Введите - Выбирают Minimize функциональный вывод из списка.

  • Функция - Вводит @sdoPopulation_PopRange. Для получения дополнительной информации об этой функции, смотрите Пользовательские Детали Целевой функции Сигнала.

  • Выберите Signals, и Systems to Bound (Необязательно) - Устанавливают флажки P1 и P2.

3. Нажать ОК.

Новая переменная, PopulationRange, появляется в Response Optimization Tool Workspace.

Пользовательские детали целевой функции сигнала

PopulationRange использует функцию sdoPopulation_PopRange. Эта функция вычисляет максимальную разницу между населением через различные значения пропускной способности среды. Путем минимизации этого значения можно достигнуть обоих голов проекта. Функция вызвана оптимизатором на каждом шаге итерации.

Чтобы просмотреть функцию, введите edit sdoPopulation_PopRange. Следующее обсуждает детали этой функции.

Ввод/вывод

Функция принимает data, структуру со следующими полями:

  • DesignVars - Текущие значения итерации, и.

  • Nominal - Регистрируемые данные сигнала, полученные путем симуляции модели с помощью значений параметров, заданных data.DesignVars и номинальной стоимостью для всех других параметров. Поле Nominal является самостоятельно структурой с полями для каждого регистрируемого сигнала. Имена полей являются регистрируемыми именами сигнала. Пользовательское требование использует регистрируемые сигналы, P1 и P2. Поэтому data.Nominal.P1 и data.Nominal.P2 являются объектами timeseries, соответствующими P1 и P2.

  • Uncertain - Регистрируемые данные сигнала, полученные путем симуляции модели с помощью демонстрационных значений неопределенной переменной K_unc. Поле Uncertain является вектором структур N, где N является количеством демонстрационных значений, заданных для K_unc. Каждый элемент этого вектора подобен data.Nominal и содержит результаты симуляции, полученные из соответствующего демонстрационного значения, заданного для K_unc.

Функция возвращает максимальную разницу между численностями населения через различные пропускные способности. Следующий фрагмент кода в функции выполняет это действие:

val = max(maxP(1)-minP(2),maxP(2)-minP(1));

Область значений времени данных

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

%Get the population data
tMin = 5; %Ignore signal values prior to this time
iTime = data.Nominal.P1.Time > tMin;
sigData = [data.Nominal.P1.Data(iTime), data.Nominal.P2.Data(iTime)];

iTime представляет временной интервал интереса, и столбцы sigData содержат P1 и данные P2 для этого интервала.

Оптимизация для различных значений пропускной способности

Функция включает эффекты варьирования пропускной способности путем итерации через элементы data.Uncertain. Следующий фрагмент кода в функции выполняет это действие:

...
for ct=1:numel(data.Uncertain)
   iTime = data.Uncertain(ct).P1.Time > tMin;
   sigData = [data.Uncertain(ct).P1.Data(iTime), data.Uncertain(ct).P2.Data(iTime)];
   maxP = max([maxP; max(sigData)]);  %Update maximum if new signals are bigger
   minP = min([minP; min(sigData)]);  %Update minimum if new signals are smaller
end
...

Максимальное и минимальное население получено через все симуляции, содержавшиеся в data.Uncertain.

Оптимизируйте проект

Нажмите Optimize.

Оптимизация сходится после многих итераций.

График P1,P2 показывает демографическую динамику с первой генеральной совокупностью организма в синем и второй генеральной совокупностью организма в красном. Пунктирные линии указывают на демографическую динамику для различных полных значений среды. График PopulationRange показывает, что максимальная разница между двумя населением организма уменьшает в зависимости от времени.

Блок Population Phase Portrait показывает население, первоначально отличающееся, но они в конечном счете сходятся к стабильным численностям населения.

% Close the model
bdclose('sdoPopulation')