rlFunctionEnv

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

Описание

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

Создание

Описание

пример

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

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

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

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

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

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

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

Свойства

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

Поведение шага для среды в виде функции, указателя на функцию или анонимной функции. Когда вы создаете rlFunctionEnv объект, stepfcn входной параметр устанавливает значение этого свойства.

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

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

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

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

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

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

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

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

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

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

[InitialObservation,LoggedSignals] = myResetFunction

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

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

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

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

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

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

getActionInfoПолучите спецификации данных о действии из среды обучения с подкреплением или от агента
getObservationInfoПолучите спецификации данных о наблюдении из среды обучения с подкреплением или от агента
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