exponenta event banner

Задание цели пользовательского сигнала с неопределенной переменной (GUI)

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

Модель конкурентной динамики населения

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

$$\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$ - размер популяции 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$Это обеспечивает устойчивость к неопределенности несущей способности среды.

Открыть оптимизатор ответа

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

  • DesignVars - конструктивные переменные, заданные для $R_2, \tau_2$$\alpha$параметров модели и.

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

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

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

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

  1. Откройте диалоговое окно Создать требование (Create Requirement). В списке Создать выберите Пользовательское требование.

  2. В диалоговом окне Создать требование (Create Requirement) укажите следующее.

  • Имя - Ввод PopulationRange.

  • Тип (Type) - выберите Минимизировать вывод функции из списка.

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

  • Выбор связанных сигналов и систем (необязательно) - выберите P1 и P2 флажки.

3. Нажмите кнопку ОК.

Новая переменная, PopulationRange, появляется в браузере оптимизатора ответа.

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

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

Для просмотра функции введите edit sdoPopulation_PopRange. Ниже рассматривается подробная информация об этой функции.

Ввод/вывод

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

  • DesignVars - текущие итерационные значения $R_2, \tau_2$и.$\alpha$

  • Nominal - Данные регистрируемого сигнала, полученные путем моделирования модели с использованием значений параметров, указанных data.DesignVars и номинальные значения для всех остальных параметров. Nominal само поле является структурой с полями для каждого зарегистрированного сигнала. Имена полей - это имена регистрируемых сигналов. Пользовательское требование использует записанные сигналы, P1 и P2. Поэтому data.Nominal.P1 и data.Nominal.P2 являются объектами временных рядов, соответствующими 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')