【优化控制】基于matlab策略迭代算法求解重构机械臂容错跟踪控制优化问题【含Matlab源码 2682期】

一、策略迭代算法

强化学习有两种常见迭代训练算法:策略迭代算法和值迭代算法。本文中主要讲述策略迭代算法。

先从一个简答的问题开始,下图为一个四方格子,每个位置的状态空间分别为{1, 2, 3, 4}, 其中 3 的位置是个陷阱, 4的位置有个金币。有一个机器人从状态1的位置开始寻找金币。落入陷阱的回报为-1,找到金币的回报为1,在其他位置间移动回报为0,可选的动作空间为{上,下,左,右}, 通过这个简单的问题,来学习强化学习的学习原理。
在这里插入图片描述
强化学习的学习过程,个人理解就是通过不断的尝试,去更新每个状态的值函数(每个状态的值代表了当前状态的优劣,如果状态值很大,从其他状态选择一个动作,转移到该状态便是一个正确的选择),然后通过更新后的值函数去动态的调整策略,在调整策略后,又去更新值函数,不断的迭代更新,最后训练完成一个满足要求的策略。在这个过程中,抽象出两个主要的过程,第一个叫策略评估,第二个叫策略改善。

针对上面给出的简单问题,先说明一些简单的概念:

每个状态的值函数:
代表机器人处于该状态时的优劣值。

针对问题的当前策略:
代表机器人处于某状态时,选择的下一步动作。对于选择的下一步动作,可以是确定式的,比如当机器人处于1位置的时候,确定的只选择往右走。也可以是概率式的,可以0.5的概率选择往右走, 0.5的概率选择往下走。当然确定式策略选择是概率式的策略选择的一种特例。下文中采用确定式策略进行描述

策略评估:
策略评估就是通过某种方式,计算状态空间中每个状态的值函数。由于状态空间之间存在很多转移关系,要直接计算某个状态的值函数,是很困难的,一般采用
迭代方法。

策略改善:
对策略的改善,即通过当前拥有的信息,对当前策略进行优化,修改当前策略。

############################## 策略评估的过程
初始化的策略和值函数。
在这里插入图片描述对于这个简单的例子,通过一步计算便得到了稳定的值函数,但是对于大多数的问题,都需要通过多步的迭代,才能得到稳定的值函数。

############################## 策略改善的过程
对于这个简单的例子,采用贪心的方式对策略进行改善,通过上一步策略评估过程计算出的稳定的值函数,让每个状态在选择下一步动作的时候,选择使动作收益最大的动作。
在这里插入图片描述
总结
强化学习策略迭代算法的过程就是不断的重复 策略评估 和 策略改善的过程,直到整个策略收敛(值函数和策略不再发生大的变化)

二、部分源代码

clear all
close all
clc

global Q Q1 R l1 l2 wc0 lr P k k1 sita;

扫描二维码关注公众号,回复: 15291644 查看本文章

k=5;
Q=keye(2);
Q1=k
eye(4);
R=0.1*eye(2);
sita=1;

lr=0.001;
l1=2;
l2=20eye(4);
P=0.6
eye(2);
k1=1;
wc0=[20 30 40 20 30 40 50 40 50 55];

xw0=[1 1 0 0 2 -2 0 0 wc0 0 0];

options = odeset(‘OutputFcn’,@odeplot);
[t,xw]= ode15s(‘plant2’,[0 60],xw0,options);

U=[];
% % config a %%

% y1d=0.4sin(0.3t)-0.1cos(0.5t);
% y2d=0.3cos(0.6t)+0.6sin(0.2t);
% y3d=(3cos((3t)/10))/25 + sin(t/2)/20;
% y4d=(3cos(t/5))/25-(9sin((3*t)/5))/50;
%

% %  config b %%  

y1d=0.2cos(0.5t)+0.2sin(0.4t);
y2d=0.3cos(0.2t)-0.4sin(0.6t);
y3d=(2cos((2t)/5))/25 - sin(t/2)/10;
y4d=-(6cos((3t)/5))/25-(3*sin(t/5))/50;

U=[];
%
for i=1:size(xw,1)
% % config a %%
% x1d=0.4sin(0.3t(i))-0.1cos(0.5t(i));
% x2d=0.3cos(0.6t(i))+0.6sin(0.2t(i));
% x3d=(3cos((3t(i))/10))/25 + sin(t(i)/2)/20;
% x4d=(3cos(t(i)/5))/25 - (9sin((3t(i))/5))/50;
%
% dx1d=(3
cos((3t(i))/10))/25 + sin(t(i)/2)/20;
% dx2d=(3
cos(t(i)/5))/25 - (9sin((3t(i))/5))/50;
% dx3d=cos(t(i)/2)/40-(9sin((3t(i))/10))/250;
% dx4d=-(27cos((3t(i))/5))/250-(3*sin(t(i)/5))/125;

% % config b %%

x1d=0.2cos(0.5t(i))+0.2sin(0.4t(i));
x2d=0.3cos(0.2t(i))-0.4sin(0.6t(i));
x3d=(2cos((2t(i))/5))/25 - sin(t(i)/2)/10;
x4d=-(6cos((3t(i))/5))/25-(3*sin(t(i)/5))/50;

dx1d=0.3cos(0.2t(i))-0.4sin(0.6t(i));
dx2d=-(6cos((3t(i))/5))/25-(3sin(t(i)/5))/50;
dx3d=-cos(t(i)/2)/20-(4
sin((2t(i))/5))/125;
dx4d=(18
sin((3t(i))/5))/125-(3cos(t(i)/5))/250;

dxd=[dx1d;dx2d;dx3d;dx4d];

e1=xw(i,1)-x1d;
e2=xw(i,2)-x2d;
e3=xw(i,3)-x3d;
e4=xw(i,4)-x4d;
e=[e1 e2 e3 e4];

sigma=[e1^2 e1e2 e1e3 e1e4 e2^2 e2e3 e2e3 e3^2 e3e4 e4^2];
d_sigma=[2e1 0 0 0;e2 e1 0 0;e3 0 e1 0;e4 0 0 e1;0 2e2 0 0;0 e3 e2 0;0 e4 0 e2;0 0 2e3 0;0 0 e4 e3;0 0 0 2e4];

% congif a %
%
% Md=[0.36cos(x2d)+0.6066 0.18cos(x2d)+0.1233;
% 0.18cos(x2d)+0.1233 0.1233];
% Cd=[-0.36
sin(x2d)x4d -0.18sin(x2d)x4d;
% 0.18
sin(x2d)(x3d-x4d) 0.18sin(x2d)x3d];
% Nd=[-5.88
sin(x1d+x2d)-17.64sin(x1d);
% -5.88
sin(x1d+x2d)];

三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]强化学习笔记(二)---- 策略迭代算法

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

猜你喜欢

转载自blog.csdn.net/TIQCmatlab/article/details/131125602