В этом примере показано, как создать функцию оценки политики для агента PG.
Во-первых, создайте и обучите агента обучения с подкреплением. В данном примере загружает агента PG, обученного в Train PG Agent, для балансировки системы тележки с шестом:
Затем создайте функцию оценки политики для этого агента с использованием имен по умолчанию:
Эта команда создает evaluatePolicy.m
файл, который содержит функцию политики и agentData.mat
файл, который содержит обученного актёра глубокой нейронной сети.
Просмотрите сгенерированную функцию.
function action1 = evaluatePolicy(observation1)
%#codegen
% Reinforcement Learning Toolbox
% Generated on: 22-Apr-2021 21:10:23
actionSet = [-10 10];
% Select action from sampled probabilities
probabilities = localEvaluate(observation1);
% Normalize the probabilities
p = probabilities(:)'/sum(probabilities);
% Determine which action to take
edges = min([0 cumsum(p)],1);
edges(end) = 1;
[~,actionIndex] = histc(rand(1,1),edges); %#ok<HISTC>
action1 = actionSet(actionIndex);
end
%% Local Functions
function probabilities = localEvaluate(observation1)
persistent policy
if isempty(policy)
policy = coder.loadDeepLearningNetwork('agentData.mat','policy');
end
observation1 = observation1(:)';
probabilities = predict(policy, observation1);
end
Для заданного наблюдения функция политики оценивает вероятность для каждого потенциального действия, используя сеть актёра. Затем функция политики случайным образом выбирает действие на основе этих вероятностей.
Поскольку сеть актёра для этого агента PG имеет один входной слой и один выходной слой, можно сгенерировать код для этой сети с помощью функциональности генерации Deep Learning Toolbox™. Для получения дополнительной информации см. раздел Развертывание обученных политик обучения с подкреплением.