首页 >> 用品 >> YYDS!Python充分利用自动驾驶

YYDS!Python充分利用自动驾驶

2025-11-02 12:16:17

了车位布景均都改用同一个reward function:

这个function只能在其源码中的修改,在均层只能调整二阶。(车位布景的reward function原文件里有,懒得打乘积了……)

2、搭建三维

DQN网络的结构和搭建过程已经在我另一篇文章中的探讨过,所以这里取而代之参考解释。我改用第一种state透露作法——Kinematics进行示范。

由于state统计资料量相当大(5辆车*7个形态),可以取而代之考虑用作CNN,直接把二维统计数据的size[5,7]转成[1,35]方能,三维的输入就是35,可用是均匀分布action总数,总计5个。

import torchimport torch.nn as nnfrom torch.autograd import Variableimport torch.nn.functional as Fimport torch.optim as optimimport torchvision.transforms as Tfrom torch import FloatTensor, LongTensor, ByteTensorfrom collections import namedtupleimport random Tensor = FloatTensorEPSILON = 0 # epsilon used for epsilon greedy approachGAMMA = 0.9TARGET_NETWORK_REPLACE_FREQ = 40 # How frequently target netowrk updatesMEMORY_CAPACITY = 100BATCH_SIZE = 80LR = 0.01 # learning rateclass DQNNet(nn.Module): def 紧接init紧接(self): super(DQNNet,self).紧接init紧接() self.linear1 = nn.Linear(35,35) self.linear2 = nn.Linear(35,5) def forward(self,s): s=torch.FloatTensor(s) s = s.view(s.size(0),1,35) s = self.linear1(s) s = self.linear2(s) return s class DQN(object): def 紧接init紧接(self): self.net,self.target_net = DQNNet(),DQNNet() self.learn_step_counter = 0 self.memory = [] self.position = 0 self.capacity = MEMORY_CAPACITY self.optimizer = torch.optim.Adam(self.net.parameters(), lr=LR) self.loss_func = nn.MSELoss() def choose_action(self,s,e): x=np.expand_dims(s, axis=0) if np.random.uniform() < 1-e: actions_value = self.net.forward(x) action = torch.max(actions_value,-1)[1].data.numpy() action = action.max() else: action = np.random.randint(0, 5) return action def push_memory(self, s, a, r, s_): if len(self.memory) < self.capacity: self.memory.append(None) self.memory[self.position] = Transition(torch.unsqueeze(torch.FloatTensor(s), 0),torch.unsqueeze(torch.FloatTensor(s_), 0), torch.from_numpy(np.array([a])),torch.from_numpy(np.array([r],dtype='float32')))# self.position = (self.position + 1) % self.capacity def get_sample(self,batch_size): sample = random.sample(self.memory,batch_size) return sample def learn(self): if self.learn_step_counter % TARGET_NETWORK_REPLACE_FREQ == 0: self.target_net.load_state_dict(self.net.state_dict()) self.learn_step_counter += 1 transitions = self.get_sample(BATCH_SIZE) batch = Transition(*zip(*transitions)) b_s = Variable(torch.cat(batch.state)) b_s_ = Variable(torch.cat(batch.next_state)) b_a = Variable(torch.cat(batch.action)) b_r = Variable(torch.cat(batch.reward)) q_eval = self.net.forward(b_s).squeeze(1).gather(1,b_a.unsqueeze(1).to(torch.int64)) q_next = self.target_net.forward(b_s_).detach() # q_target = b_r + GAMMA * q_next.squeeze(1).max(1)[0].view(BATCH_SIZE, 1).t() loss = self.loss_func(q_eval, q_target.t()) self.optimizer.zero_grad() # reset the gradient to zero loss.backward() self.optimizer.step() # execute back propagation for one step return lossTransition = namedtuple('Transition',('state', 'next_state','action', 'reward'))3、运行结果

各个大部分都顺利完成在此之后就可以组合在朋友们军事训练三维了,流程和用CARLA将近,就不鲜为人知了。

函数调用生态系统(DQN的类加进去再多):

import gymimport highway_envfrom matplotlib import pyplot as pltimport numpy as npimport timeconfig = { "observation": { "type": "Kinematics", "vehicles_count": 5, "features": ["presence", "x", "y", "vx", "vy", "cos_h", "sin_h"], "features_range": { "x": [-100, 100], "y": [-100, 100], "vx": [-20, 20], "vy": [-20, 20] }, "absolute": False, "order": "sorted" }, "simulation_frequency": 8, # [Hz] "policy_frequency": 2, # [Hz] } env = gym.make("highway-v0")env.configure(config)

军事训练三维:

dqn=DQN()count=0reward=[]avg_reward=0all_reward=[]time_=[]all_time=[]collision_his=[]all_collision=[]while True: done = False start_time=time.time() s = env.reset() while not done: e = np.exp(-count/300) #随机选择action的可能性,随着军事训练至多激增逐渐增高 a = dqn.choose_action(s,e) s_, r, done, info = env.step(a) env.render() dqn.push_memory(s, a, r, s_) if ((dqn.position !=0)Simon(dqn.position % 99==0)): loss_=dqn.learn() count+=1 print('trained times:',count) if (count%40==0): avg_reward=np.mean(reward) avg_time=np.mean(time_) collision_rate=np.mean(collision_his) all_reward.append(avg_reward) all_time.append(avg_time) all_collision.append(collision_rate) plt.plot(all_reward) plt.show() plt.plot(all_time) plt.show() plt.plot(all_collision) plt.show() reward=[] time_=[] collision_his=[] s = s_ reward.append(r) end_time=time.time() episode_time=end_time-start_time time_.append(episode_time) is_collision=1 if info['crashed']==True else 0 collision_his.append(is_collision)

我在字符串中的填充了一些手绘的函数,在运行过程中的就可以掌握一些关键的指标,每军事训练40次统计一次最低。

最低撞击到发生率:

epoch最低不间断(s):

最低reward:

可以显现出最低撞击到发生率才会随军事训练至多激增逐渐增高,每个epoch持续的时间才会逐渐延长(如果发生撞击到epoch才会正要之前)

四、概括

相比较于我在之前文章中的用作过的的系统CARLA,highway-env生态系统包突出更完全一致化,用类似游戏的透露作法,使得正则表达式可以在一个期望的一个系统中的得到军事训练,而不用再考虑统计数据赚取作法、传感器精度、浮点不间断等普通人疑虑。对于端到端的正则表达式设计和测试非常友好,但从电子计算机的相反来看,可以正因如此的方面较更少,研究成果上来不太紧凑。

郑州看妇科哪里好
重庆皮肤病医院哪家更好
北京看妇科哪个医院比较好
驻马店看白癜风去哪里最好
北京男科医院去哪家好
咳嗽有痰吃什么药
脚抽筋
咳嗽黄痰可以喝太极急支糖浆吗
尿路感染
皮肤科疾病症状

上一篇: 说实话,简洁干练的长裤是职场必备,轻松穿出时髦OL气质

下一篇: 王贵齐委员:降低肿瘤筛查成本 不断提高应用可及性

相关阅读
10个“奔着颜值”方式从的卫生间小物件,没成想,最后被实用性圈粉

好处,就是可以把浴室屋内前面难看的管路,给遮屋中,一个原理,还应对了两个问题。7、滚把除去架这个计划,颜值真神的的大感人的,第一次见的时候,忍不屋中真是半天,怎么可以有人把这些扫把、滚把

2025-11-03 00:20:39
稳健医疗(300888):2021年度利润分配预案,每10股派推测金红利9.0元(含税)

此最新消息叫做交易所公开谈及,由和讯网计算机系统暂定整理。2022年04月初22日暂定显示: 稳健医疗300888本着回报持股、

2025-11-03 00:20:39
国内最一部的“国字头”大学,努力加机遇,终成中专升级为一本

其实,所该学校的蓬勃发展很多时候和人的蓬勃发展是相当多种不同的,有出生,有快速增长,有壮大,也有衰落。 今天我们要说道的这所所该学校,从创建人末期的预科班,到目前的一本类“立国”K

2025-11-03 00:20:39
恭喜你!年前贵人八方来,好运不迟到,顺风筏的属相

吉祥牛 吉祥牛之人办事掸族,反复仍要经反复柔和,进入年底,上有幸运接引,下有嫔妃三人万事兴,倘若抓牢这个机缘,必定有一番出色的作为。另一方面,属下牛之人,某种程度是旺运联动姻缘,少

2025-11-03 00:20:39
第一次内部装修,建议你先搞清楚这26个内部装修步骤,看完你也是行家

,但是一般敦促先以张贴墙砖后张贴铺上。11、张贴砖建筑工程 张贴砖早先以无需把地漏、上限大石买好,如果有应用软件浴缸的话也要如期送入当晚,同时可以铺张贴窗台大石、飘窗大石或

2025-11-03 00:20:39