rlFunctionEnv

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

Описание

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

Создание

Синтаксис

env = rlFunctionEnv(obsInfo,actInfo,stepfcn,resetfcn)

Описание

пример

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.

Чтобы передать информацию от условия сброса в первый шаг, укажите ту информацию в функции сброса как выходная структура 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

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