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 с помощью Пользовательских Функций.

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

addpath(fullfile(matlabroot,'examples','rl','main'))    % Make sure the functions are on the path
env = rlFunctionEnv(oinfo,ActionInfo,'myStepFunction','myResetFunction');

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

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

Введенный в R2019a