Создайте окружения Simulink для изучения укрепления

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

  1. Получает действия от агента

  2. Выходные наблюдения в ответ на действия

  3. Генерирует премиальное измерение, как хорошо действие способствует достижению задачи

Создание модели среды включает определение следующего:

  • Действие и наблюдение сигнализируют что использование агента взаимодействовать со средой.

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

  • Среда динамическое поведение.

Действие и сигналы наблюдения

Когда вы создаете объект среды, необходимо задать действие, и наблюдение сигнализирует что использование агента взаимодействовать со средой. Можно создать и дискретные и непрерывные пространства действия. Для получения дополнительной информации смотрите rlNumericSpec и rlFiniteSetSpec, соответственно.

Что сигнализирует, что вы выбираете, когда действия и наблюдения зависят от вашего приложения. Например, для приложений системы управления, интегралы (и иногда производные) сигналов ошибки являются часто полезными наблюдениями. Кроме того, для приложений отслеживания уставки имея изменяющийся во времени ссылочный сигнал, когда наблюдение полезно.

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

Предопределенные окружения Simulink

Программное обеспечение Reinforcement Learning Toolbox™ обеспечивает, предопределил среды Simulink®, для которых уже заданы действия, наблюдения, вознаграждения и динамика. Можно использовать эти среды для:

  • Изучите концепции изучения укрепления

  • Получите знакомство с программными функциями Reinforcement Learning Toolbox

  • Протестируйте свои собственные агенты изучения укрепления

Для получения дополнительной информации смотрите Загрузку Предопределенные окружения Simulink.

Пользовательские окружения Simulink

Чтобы задать вашу собственную среду обучения укрепления, создайте модель Simulink с блоком RL Agent. В этой модели соедините действие, наблюдение, и вознаградите сигналы блоку RL Agent.

Для сигналов действия и наблюдения необходимо создать объекты спецификации с помощью rlNumericSpec для непрерывных сигналов и rlFiniteSetSpec для дискретных сигналов. Для сигналов шины создайте спецификации с помощью bus2RLSpec.

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

После конфигурирования модели Simulink создайте объект среды для модели с помощью функции rlSimulinkEnv.

Если у вас есть эталонная модель с входным портом соответствующих мер, выходным портом наблюдения, и скаляр вознаграждает выходной порт, можно автоматически создать модель Simulink, которая включает эту эталонную модель и блок RL Agent. Для получения дополнительной информации смотрите createIntegratedEnv. Эта функция возвращает объект среды, спецификации действия и спецификации наблюдения для модели.

Ваша среда может включать стороннюю функциональность. Для получения дополнительной информации смотрите, Объединяются с Существующей Симуляцией или Средой (Simulink)

Модель среды бака для воды

Этот пример создает укрепление бака для воды, изучая среду Simulink®, которая содержит блок RL Agent вместо контроллера для уровня воды в корпусе. Для примера, который обучает агент с помощью этой среды, смотрите, Создают Агент окружения Simulink и Train.

mdl = 'rlwatertank';
open_system(mdl)

Блок RL Agent соединяется со следующими сигналами:

  • Скалярный выходной сигнал действия

  • Вектор входных сигналов наблюдения

  • Скалярный премиальный входной сигнал

  • Логический входной сигнал для остановки симуляции

Действия и наблюдения

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

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

actionInfo = rlNumericSpec([1 1]);
actionInfo.Name = 'flow';

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

Для этой среды существует три сигнала наблюдения, отправленные в агент, заданный как векторный сигнал. Вектор наблюдения [edt eh]T, где:

  • h высота воды в корпусе

  • e=r-h, где r ссылочное значение для высоты воды

Вычислите сигналы наблюдения в подсистеме generate observations.

open_system([mdl '/generate observations'])

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

observationInfo = rlNumericSpec([3 1],...
    'LowerLimit',[-inf -inf 0  ]',...
    'UpperLimit',[ inf  inf inf]');
observationInfo.Name = 'observations';
observationInfo.Description = 'integrated error, error, and measured height';

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

Премиальный сигнал

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

вознаграждение=10(|e|<0.1)-1(|e|0.1)-100(h0||h20)

Вознаграждение положительно, когда ошибка ниже 0.1 и отрицательна в противном случае. Кроме того, существует большой премиальный штраф, когда высота воды вне 0 к области значений 20.

Создайте это вознаграждение в подсистеме calculate reward.

open_system([mdl '/calculate reward'])

Остановите сигнал

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

Вычислите этот сигнал в подсистеме stop simulation.

open_system([mdl '/stop simulation'])

Создайте объект среды

Создайте объект среды для модели Simulink.

env = rlSimulinkEnv(mdl,[mdl '/RL Agent'],observationInfo,actionInfo);

Сбросьте функцию

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

env.ResetFcn = @(in)localResetFcn(in);

Локальная функция

function in = localResetFcn(in)

% randomize reference signal
blk = sprintf('rlwatertank/Desired \nWater Level');
h = 3*randn + 10;
while h <= 0 || h >= 20
    h = 3*randn + 10;
end
in = setBlockParameter(in,blk,'Value',num2str(h));

% randomize initial height
h = 3*randn + 10;
while h <= 0 || h >= 20
    h = 3*randn + 10;
end
blk = 'rlwatertank/Water-Tank System/H';
in = setBlockParameter(in,blk,'InitialCondition',num2str(h));

end

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

| |

Похожие темы

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