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

适合前端新手做的网站设计师经常用的网站

适合前端新手做的网站,设计师经常用的网站,网站制作书籍推荐,游戏网站建设网Q-learning算法 主要思路 由于 V π ( s ) ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_\pi(s)\sum_{a\in A}\pi(a\mid s)Q_\pi(s,a) Vπ​(s)∑a∈A​π(a∣s)Qπ​(s,a) #xff0c;当我们直接预测动作价值函数#xff0c;在决策中选择Q值最大即动作价值最大的动作…Q-learning算法 主要思路 由于 V π ( s ) ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_\pi(s)\sum_{a\in A}\pi(a\mid s)Q_\pi(s,a) Vπ​(s)∑a∈A​π(a∣s)Qπ​(s,a) 当我们直接预测动作价值函数在决策中选择Q值最大即动作价值最大的动作则可以使策略和动作价值函数同时最优那么由上述公式可得状态价值函数也是最优的。 Q ( s t , a t ) ← Q ( s t , a t ) α [ r t γ max ⁡ a Q ( s t 1 , a ) − Q ( s t , a t ) ] Q(s_t,a_t)\leftarrow Q(s_t,a_t)\alpha[r_t\gamma\max_aQ(s_{t1},a)-Q(s_t,a_t)] Q(st​,at​)←Q(st​,at​)α[rt​γamax​Q(st1​,a)−Q(st​,at​)] Q-learning基于时序差分的更新方法具体流程如下所示 初始化 Q ( s , a ) Q(s,a) Q(s,a)for 序列 e 1 → E e1\to E e1→E do: 得到初始状态sfor 时步 t 1 → T t1\to T t1→T do 使用 ϵ − g r e e d y \epsilon -greedy ϵ−greedy 策略根据Q选择当前状态s下的动作a得到环境反馈 r , s ′ r,s r,s′ Q ( s , a ) ← Q ( s , a ) α [ r γ max ⁡ a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s,a)\leftarrow Q(s,a)\alpha[r\gamma\max_{a^{\prime}}Q(s^{\prime},a^{\prime})-Q(s,a)] Q(s,a)←Q(s,a)α[rγmaxa′​Q(s′,a′)−Q(s,a)] s ← s ′ s\gets s s←s′ end for end for 算法实战 我们在悬崖漫步环境下实习Q-learning算法。 首先创建悬崖漫步的环境 import matplotlib.pyplot as plt import numpy as np from tqdm import tqdm # tqdm是显示循环进度条的库class CliffWalkingEnv:def __init__(self, ncol, nrow):self.nrow nrowself.ncol ncolself.x 0 # 记录当前智能体位置的横坐标self.y self.nrow - 1 # 记录当前智能体位置的纵坐标def step(self, action): # 外部调用这个函数来改变当前位置# 4种动作, change[0]:上, change[1]:下, change[2]:左, change[3]:右。坐标系原点(0,0)# 定义在左上角change [[0, -1], [0, 1], [-1, 0], [1, 0]]self.x min(self.ncol - 1, max(0, self.x change[action][0]))self.y min(self.nrow - 1, max(0, self.y change[action][1]))next_state self.y * self.ncol self.xreward -1done Falseif self.y self.nrow - 1 and self.x 0: # 下一个位置在悬崖或者目标done Trueif self.x ! self.ncol - 1:reward -100return next_state, reward, donedef reset(self): # 回归初始状态,坐标轴原点在左上角self.x 0self.y self.nrow - 1return self.y * self.ncol self.x创建Q-learning算法 class QLearning:def __init__(self, ncol, nrow, epsilon, alpha, gamma,n_action4):self.epsilon epsilon # 随机探索的概率self.alpha alpha # 学习率self.gamma gamma # 折扣因子self.n_action n_action # 动作数量# 给每一个状态创建一个长度为4的列表。self.Q_table np.zeros([nrow*ncol,n_action]) # 初始化Q(s,a)def take_action(self,state):# 选取下一步的操作if np.random.random()self.epsilon:action np.random.randint(self.n_action) # 随机探索else:action np.argmax(self.Q_table[state]) # 贪婪策略选择Q值最大的动作return actiondef best_action(self, state): # 用于打印策略Q_max np.max(self.Q_table[state])a [0 for _ in range(self.n_action)]for i in range(self.n_action):if self.Q_table[state, i] Q_max:a[i] 1return adef update(self,s0,a0,r,s1):td_error rself.gamma*self.Q_table[s1].max()-self.Q_table[s0,a0]self.Q_table[s0, a0] self.alpha * td_errorncol 12 nrow 4 np.random.seed(0) epsilon 0.1 alpha 0.1 gamma 0.9 env CliffWalkingEnv(ncol, nrow) agent QLearning(ncol, nrow, epsilon, alpha, gamma) num_episodes 500 # 智能体在环境中运行的序列的数量 return_list [] # 记录每一条序列的回报 # 显示10个进度条 for i in range(10):# tqdm的进度条功能with tqdm(totalint(num_episodes / 10), descIteration %d % i) as pbar:for i_episode in range(int(num_episodes / 10)): # 每个进度条的序列数episode_return 0state env.reset()done Falsewhile not done:action agent.take_action(state)next_state, reward, done env.step(action)episode_return reward # 这里回报的计算不进行折扣因子衰减agent.update(state, action, reward, next_state)state next_statereturn_list.append(episode_return)if (i_episode 1) % 10 0: # 每10条序列打印一下这10条序列的平均回报pbar.set_postfix({episode:%d % (num_episodes / 10 * i i_episode 1),return:%.3f % np.mean(return_list[-10:])})pbar.update(1)episodes_list list(range(len(return_list))) plt.plot(episodes_list, return_list) plt.xlabel(Episodes) plt.ylabel(Returns) plt.title(Q-learning on {}.format(Cliff Walking)) plt.show()action_meaning [^, v, , ] print(Q-learning算法最终收敛得到的策略为) def print_agent(agent, env, action_meaning, disaster[], end[]):for i in range(env.nrow):for j in range(env.ncol):if (i * env.ncol j) in disaster:print(****, end )elif (i * env.ncol j) in end:print(EEEE, end )else:a agent.best_action(i * env.ncol j)pi_str for k in range(len(action_meaning)):pi_str action_meaning[k] if a[k] 0 else oprint(pi_str, end )print()action_meaning [^, v, , ] print(Sarsa算法最终收敛得到的策略为) print_agent(agent, env, action_meaning, list(range(37, 47)), [47]) print_agent(agent, env, action_meaning, list(range(37, 47)), [47])Iteration 0: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 2040.03it/s, episode50, return-105.700] Iteration 1: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 2381.99it/s, episode100, return-70.900] Iteration 2: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 3209.35it/s, episode150, return-56.500] Iteration 3: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 3541.95it/s, episode200, return-46.500] Iteration 4: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 5005.26it/s, episode250, return-40.800] Iteration 5: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 3936.76it/s, episode300, return-20.400] Iteration 6: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 4892.00it/s, episode350, return-45.700] Iteration 7: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 5502.60it/s, episode400, return-32.800] Iteration 8: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 6730.49it/s, episode450, return-22.700] Iteration 9: 100%|███████████████████████████████████████████████████████████████████| 50/50 [00:0000:00, 6768.50it/s, episode500, return-61.700] Q-learning算法最终收敛得到的策略为 Qling算法最终收敛得到的策略为 ^ooo ovoo ovoo ^ooo ^ooo ovoo ooo ^ooo ^ooo ooo ooo ovoo ooo ooo ooo ooo ooo ooo ^ooo ooo ooo ooo ooo ovoo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ovoo ^ooo **** **** **** **** **** **** **** **** **** **** EEEE ^ooo ovoo ovoo ^ooo ^ooo ovoo ooo ^ooo ^ooo ooo ooo ovoo ooo ooo ooo ooo ooo ooo ^ooo ooo ooo ooo ooo ovoo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ooo ovoo ^ooo **** **** **** **** **** **** **** **** **** **** EEEE
http://www.zqtcl.cn/news/195232/

相关文章:

  • dw建设网站步骤活动汪活动策划网站
  • 民和县公司网站建设网站开发的特点
  • 模板企业快速建站上传网站中ftp地址写什么
  • 云南本地企业做网站太原网站制作公司哪家好
  • 西部数码域名网站模板wordpress抓取股票行情
  • 丰台深圳网站建设公司关于服装店网站建设的策划方案
  • win7 iis网站无法显示随州网站建设哪家实惠
  • 利用网站新媒体宣传法治建设建站哪个平台好
  • 网站seo课设wordpress 500 根目录
  • 电子商务网站建设的阶段化分析如何利用视频网站做数字营销推广
  • 电子商务网站建设ppt模板国外注册机网站
  • 西部数码做跳转网站百度seo排名培训优化
  • 农业网站素材wordpress all in one
  • 学习网站建设有前景没wordpress 和dokuwiki
  • 服装网站开发方案网站设计美工排版编辑
  • 旅游网站首页模板下载广州市建设工程检测中心网站
  • 餐饮加盟网站建设wordpress 首行缩进
  • kkday是哪里做的网站橙云 php网站建设
  • 站长之家0网站规划作品
  • 物流公司网站建设系统规划广告设计怎么学
  • 异地备案 网站中信建设有限责任公司经济性质
  • 网站没有备案怎么申请广告宿迁莱布拉网站建设
  • 太原适合网站设计地址网站建设 教学视频教程
  • 建商城网站需要多少钱网站开发维护报价单
  • 唐山网站建设冀icp备婚纱网站页面设计
  • 做购物网站支付需要怎么做手机网站建设教程
  • 国外网站空间租用哪个好建站快车打电话
  • 自媒体网站 程序做药公司的网站前置审批
  • 简洁网站模板素材廊坊建设企业网站
  • 长沙建站找有为太极就治就网站内容如何自动关联新浪微博