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 использование указателя анонимной функции.

Функция step вычисляет значения наблюдения и вознаграждения для заданного действия в окружении. Требуемые входные и выходные аргументы следующие.

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

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

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

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

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

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

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

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

[InitialObservation,LoggedSignals] = myResetFunction

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

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

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

The 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