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

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

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

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

$$\frac{d P_1}{dt} = R_1 P_1 (1 - \frac{P_1(t-\tau_1)+\alpha
P_2(t-\tau_2)}{K})$$

$$\frac{d P_2}{dt} = R_2 P_2 (1 - \frac{P_2(t-\tau_2)+\alpha
P_1(t-\tau_1)}{K})$$

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

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

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

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

  • $\alpha$ близость этих двух популяций и как строго они влияют друг на друга.

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

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

open_system('sdoPopulation')

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

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

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

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

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

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

Открытый Response Optimizer

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

  • DesignVars - Спроектируйте набор переменных для$R_2, \tau_2$, и$\alpha$ параметры модели.

  • K_unc - Неопределенный параметр, моделируя пропускную способность среды организма ($K$). 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 Optimizer.

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

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

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

Ввод/вывод

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

  • DesignVars - Значения Current iteration$R_2, \tau_2$, и$\alpha$.

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