当前位置: 首页 > news >正文

深圳市国外网站建设服务机构南充免费推广网站

深圳市国外网站建设服务机构,南充免费推广网站,网站建设教程网站,广东深圳市宝安区0.简介 基于时序差分算法的强化学习算法除了Sarsa算法以外还有一种著名算法为Q-learning算法#xff0c;为离线策略算法#xff0c;与在线策略算法Sarsa算法相比#xff0c;其时序差分更新方式变为 Q(St,At)←Q(St,At)α[Rt1γmaxaQ(St1,a)−Q(St,At)] 对于 Sarsa 来说为离线策略算法与在线策略算法Sarsa算法相比其时序差分更新方式变为 Q(St,At)←Q(St,At)α[Rt1γmaxaQ(St1,a)−Q(St,At)] 对于 Sarsa 来说 1在状态 s 时就知道了要采取那个动作 a并且真的采取了这个动作2当前动作 a 和下一个动作 a 都是 根据 ϵ -贪婪策略选取的因此称为on-policy学习 对于 Q-Learning 1在状态s时只是计算了 在 s 时要采取哪个 a 可以得到更大的 Q 值并没有真的采取这个动作 a。2动作 a 的选取是根据当前 Q 网络以及 ϵ-贪婪策略即每一步都会根据当前的状况选择一个动作A目标Q值的计算是根据 Q 值最大的动作 a 计算得来因此为 off-policy 学习。 1.导入相关库 import matplotlib.pyplot as plt import numpy as np from tqdm import tqdm 2.悬崖漫步环境实现环节 class cliffwalking():def __init__(self,colnum,rownum,stepr,cliffr,initx,inity):self.colnumcolnumself.rownumrownumself.steprsteprself.cliffrcliffrself.initxinitxself.inityinityself.disasterlist(range((self.rownum-1)*self.colnum1,self.rownum*self.colnum-1))self.end[self.rownum*self.colnum-1]self.xself.initxself.yself.initydef step(self,action):change[[0,-1],[0,1],[-1,0],[1,0]]#change[0]上change[1]下change[2]左change[3]右坐标系原点(0,0)在左上角self.xmin(self.colnum-1,max(0,self.xchange[action][0]))self.ymin(self.rownum-1,max(0,self.ychange[action][1]))nextstateself.y*self.colnumself.xrewardself.steprdoneFalseif nextstate in self.disaster:rewardself.cliffrdoneTrueif nextstate in self.end:doneTruereturn nextstate,reward,donedef reset(self):self.xself.initxself.yself.inityreturn self.y*self.colnumself.x 3.Q-learning算法实现 class Qlearning(): Qlearning算法 def __init__(self,colnum,rownum,alpha,gamma,epsilon,actionnum4):self.colnumcolnumself.rownumrownumself.alphaalpha#学习率self.gammagamma#折扣因子self.epsilonepsilonself.actionnumactionnum#动作个数self.qtablenp.zeros([self.colnum*self.rownum,self.actionnum])def takeaction(self,state):if np.random.random()self.epsilon:actionnp.random.randint(0,self.actionnum)else:actionnp.argmax(self.qtable[state])return actiondef bestaction(self,state):qmaxnp.max(self.qtable[state])anp.where(self.qtable[state]qmax)return adef update(self,s0,a0,r,s1):tderrorrself.gamma*np.max(self.qtable[s1])-self.qtable[s0][a0]self.qtable[s0][a0]self.alpha*tderror 4.打印目标策略函数 def printtheagent(agent,env,actionmeaning):for i in range(env.rownum):for j in range(env.colnum):if (i*env.colnumj) in env.disaster:print(****,end )elif (i*env.colnumj) in env.end:print(EEEE,end )else:aagent.bestaction(i*env.colnumj)b[0 for _ in range(len(actionmeaning))]for m in range(len(actionmeaning)):b[m]1 if m in a else 0 pistrfor k in range(len(actionmeaning)):pistractionmeaning[k] if b[k]0 else oprint(%s%pistr,end )print() 5.相关参数设置 ncol12#悬崖漫步环境中的网格环境列数 nrow4#悬崖漫步环境中的网格环境行数 step_reward-1#每步的即时奖励 cliff_reward-100#悬崖的即时奖励 init_x0#智能体在环境中初始位置的横坐标 init_ynrow-1#智能体在环境中初始位置的纵坐标 alpha0.1#价值估计更新的步长 epsilon0.1#epsilon-贪婪算法的探索因子 gamma0.9#折扣衰减因子 num_episodes500#智能体在环境中运行的序列总数 tqdm_num10#进度条的数量 printreturnnum10#打印回报的数量 actionmeaning[↑,↓,←,→]#上下左右表示符6.程序主体部分实现 np.random.seed(5) returnlist[] envcliffwalking(colnumncol,rownumnrow,steprstep_reward,cliffrcliff_reward,initxinit_x,inityinit_y) agentQlearning(colnumncol,rownumnrow,alphaalpha,gammagamma,epsilonepsilon,actionnum4) for i in range(tqdm_num):with tqdm(totalint(num_episodes/tqdm_num)) as pbar:for episode in range(int(num_episodes/tqdm_num)):episodereturn0stateenv.reset()doneFalsewhile not done:actionagent.takeaction(state)nextstate,reward,doneenv.step(action)episodereturnrewardagent.update(state,action,reward,nextstate)statenextstatereturnlist.append(episodereturn)if (episode1)%printreturnnum0:pbar.set_postfix({episode:%d%(num_episodes/tqdm_num*iepisode1),return:%.3f%(np.mean(returnlist[-printreturnnum:]))})pbar.update(1) episodelistlist(range(len(returnlist))) plt.plot(episodelist,returnlist) plt.xlabel(Episodes) plt.ylabel(Returns) plt.title(Qlearning on{}.format(Cliff Walking)) plt.show() print(Qlearning算法最终收敛得到的策略为:) printtheagent(agentagent,envenv,actionmeaningactionmeaning) 7.结果展示 Iteration 0: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 428.50it/s, episode50, return-114.000]  Iteration 1: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 895.23it/s, episode100, return-72.500]  Iteration 2: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 1222.78it/s, episode150, return-66.100]  Iteration 3: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 1519.26it/s, episode200, return-40.000]  Iteration 4: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 1533.70it/s, episode250, return-26.600]  Iteration 5: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 1925.46it/s, episode300, return-38.000]  Iteration 6: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 2387.50it/s, episode350, return-47.000]  Iteration 7: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 2949.12it/s, episode400, return-25.500]  Iteration 8: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 3133.12it/s, episode450, return-34.000]  Iteration 9: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 3133.44it/s, episode500, return-60.400] Qlearning算法最终收敛得到的策略为: ↑ooo o↓oo ooo→ o↓oo ooo→ ooo→ ooo→ ooo→ o↓oo ooo→ o↓oo o↓oo  o↓oo ooo→ ooo→ ooo→ ooo→ ooo→ o↓oo ooo→ o↓oo ooo→ ooo→ o↓oo ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ o↓oo ↑ooo **** **** **** **** **** **** **** **** **** **** EEEE 8.总结 打印出的回报是行为策略在环境中交互得到的而不是Q-learning算法在学习的目标策略的真实回报目标策略打印出来如上所示发现其更偏向于走在悬崖边上这与Sarsa算法得到的比较保守的策略相比更优。 比较Sarsa算法与Q-learnig算法在训练中的回报曲线图可以发现在一个序列中Sarsa算法获得期望回报高于Q-learning算法原因是训练过程中智能体采取基于当前Q(s,a)函数的-贪婪策略来平衡探索与利用Q-learning算法由于沿着悬崖边走会以一定的概率探索“掉入悬崖”这一动作而Sarsa相对保守的路线使得智能体几乎不可能掉入悬崖。
http://www.dnsts.com.cn/news/225723.html

相关文章:

  • 广东微信网站建设价格学好seo
  • 网站制作网站优化网络营销推广的具体做法
  • 网站建设的话术青海省电话黄页
  • 网站建设和技术服务合同范本网站地图代码
  • 网站开发有什么好的论坛群站优化之链轮模式
  • 知乐商城是什么网站百度如何建网站
  • 制作网站的工具装修公司哪家好广州市
  • wordpress网站调用导航菜单专科网站开发就业方向
  • 做面料哪个网站好缩我短网址生成
  • seo网站优化价格wordpress微信验证码登录
  • 企业为啥要做网站食品网站的建设背景
  • 网文网站网站对联广告html代码
  • 法治建设网站模块名称南宁网站建设公司招聘
  • 创建asp.net网站山西住房城乡建设部网站
  • 网站备案的接入商佛山网站搭建公司哪家好
  • 昆明做网站找启搜网络建站宝盒哪个牌子好
  • 如何修改一个网站的后台登陆系统常州手机网站制作
  • 怎么创建免费网站拼多多推广引流软件免费
  • 邯郸网站建设纵横专注网站开发
  • 网站SEO做点提升流量万象自助建站系统源码下载
  • 抓取的网站如何做seo外贸网站建设可以吗
  • 响应式网站网站建设网站开发师招聘
  • 呼市做网站公司网站首页的功能需求分析
  • 常州网站建设公司市场四川省建筑信息平台
  • wordpress主题外贸网站大型门户网站建设需要哪些技术和注意事项
  • 学生做网站的目的建电影网站的程序
  • 宁波优质网站制作哪家好wordpress 菜单 页面
  • 如何自己做个网站成都企业网站设计制作
  • 专业企业网站建设河北网站建设方案详细
  • 雅加达网站建设用vs2008做网站