rlFunctionEnv

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

Описание

Используйте rlFunctionEnv задавать пользовательскую среду обучения с подкреплением. Вы предусматриваете функции MATLAB®, которые задают шаг и сбрасывают поведение для среды. Этот объект полезен, когда это необходимо, чтобы настроить вашу среду вне предопределенных сред, доступных с rlPredefinedEnv.

Создание

Описание

пример

env = rlFunctionEnv(obsInfo,actInfo,stepfcn,resetfcn) создает среду обучения с подкреплением с помощью обеспеченных спецификаций наблюдений и спецификаций действия, obsInfo и actInfo, соответственно. Вы также устанавливаете StepFcn и ResetFcn свойства с помощью функций MATLAB.

Входные параметры

развернуть все

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

Спецификация действия в виде rlFiniteSetSpec или rlNumericSpec объект. Эти объекты задают свойства, такие как размерности, типы данных и имена сигналов действия.

Свойства

развернуть все

Поведение шага для среды в виде имени функции, указателя на функцию или анонимной функции.

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

[Observation,Reward,IsDone,LoggedSignals] = myStepFunction(Action,LoggedSignals)

Чтобы использовать дополнительные входные параметры вне необходимого набора, задайте StepFcn использование указателя анонимной функции.

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

  • Action — Текущее действие, которое должно совпадать с размерностями и типом данных, заданным в actInfo.

  • Observation — Возвращенное наблюдение, которое должно совпадать с размерностями и типами данных, заданными в obsInfo.

  • Reward — Вознаградите за текущий шаг, возвращенный как скалярное значение.

  • IsDone — Логическое значение, указывающее, закончить ли эпизод симуляции. Ступенчатая функция, которую вы задаете, может включать логику, чтобы решить, закончить ли симуляцию на основе наблюдения, вознаграждения или каких-либо других значений.

  • LoggedSignals — Любые данные, которые вы хотите передать от одного шага до следующего в виде структуры.

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

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

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

[InitialObservation,LoggedSignals] = myResetFunction

Чтобы использовать входные параметры с вашей функцией сброса, задайте ResetFcn использование указателя анонимной функции.

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

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

InitialObservation выведите должен совпадать с размерностями и типом данных obsInfo.

Чтобы передать информацию от условия сброса в первый шаг, укажите ту информацию в функции сброса как структура output LoggedSignals.

Для примера, показывающего несколько способов задать функцию сброса, смотрите, Создают Среду MATLAB Используя Пользовательские Функции.

Информация, чтобы передать следующему шагу в виде структуры. Когда вы создаете среду, независимо от того, что вы задаете как LoggedSignals выход ResetFcn инициализирует это свойство. Когда шаг происходит, программное обеспечение заполняет это свойство с данными, чтобы передать следующему шагу, как задано в StepFcn.

Функции объекта

getActionInfoПолучите спецификации данных о действии из среды обучения с подкреплением или от агента
getObservationInfoПолучите спецификации данных о наблюдении из среды обучения с подкреплением или от агента
trainОбучите агентов обучения с подкреплением в заданной среде
simСимулируйте обученных агентов обучения с подкреплением в заданной среде
validateEnvironmentПроверьте пользовательскую среду обучения с подкреплением

Примеры

свернуть все

Создайте среду обучения с подкреплением путем предоставления пользовательских динамических функций в MATLAB®. Используя rlFunctionEnv, можно создать среду обучения с подкреплением MATLAB из спецификации наблюдений, спецификации действия и step и reset функции, которые вы задаете.

В данном примере создайте среду, которая представляет систему для балансировки тележки на полюсе. Наблюдения средой являются положением тележки, скоростью тележки, углом маятника и угловой производной маятника. (Для дополнительных деталей об этой среде смотрите, Создают Среду MATLAB Используя Пользовательские Функции.) Создают спецификацию наблюдений для тех сигналов.

oinfo = rlNumericSpec([4 1]);
oinfo.Name = 'CartPole States';
oinfo.Description = 'x, dx, theta, dtheta';

Среда имеет дискретное пространство действий, где агент может применить одно из двух возможных значений силы к тележке,-10 Н или 10 Н. Создайте спецификацию действия для тех действий.

ActionInfo = rlFiniteSetSpec([-10 10]);
ActionInfo.Name = 'CartPole Action';

Затем задайте пользовательский step и reset функции. В данном примере используйте предоставленные функции myResetFunction.m и myStepFunction.m. Для получения дополнительной информации об этих функциях и как они создаются, смотрите, Создают Среду MATLAB Используя Пользовательские Функции.

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

env = rlFunctionEnv(oinfo,ActionInfo,'myStepFunction','myResetFunction');

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

Как альтернатива использованию имен функций, можно задать функции как указатели на функцию. Для получения дополнительной информации и пример, смотрите, Создают Среду MATLAB Используя Пользовательские Функции.

Введенный в R2019a