В этом примере показано, как создать функцию оценки политики для агента 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™. Дополнительные сведения см. в разделе Развертывание обучающих политик обученного усиления.