-
通俗的解释一下涌泉码的工作思想
2018-09-05 10:05:15要想充分理解涌泉码我们先来讲一下传统的方式: 发送端和接收端双向沟通,发送端给接受端发送一...先来通俗的解释一下,首先发送端将数据分为若干个组,然后向周围的水桶中发送水滴,然后,当桶满了之后,就会返回...要想充分理解涌泉码我们先来讲一下传统的方式:
发送端和接收端双向沟通,发送端给接受端发送一个包,接收端接受成功以后会反馈一个确认信息ACK,说明我已经收到了,但是,当用户量非常大的时候,ACK越来越多,就会产生反馈风暴,造成堵塞。
之后我们就来介绍一下涌泉码:(图为简单的原理图)
先来通俗的解释一下,首先发送端将数据分为若干个组,然后向周围的水桶中发送水滴,然后,当桶满了之后,就会返回一个反馈信息,当收到所有分组的反馈信息之后,就会发送下一个数据,否则继续发送原来的数据。这也就是涌泉的由来。
首先生成若干个编码分组,我这里是四个,然后发送端编码器会想向四周的译码器缓存区发送包,当这个缓存区满了之后(即一组数据都完成了解码),才会返回给发送端一个ACK,当收到所有的ACK之后,收到所有的ACK代表完成传输,发送端才会发送新的包,否则继续发送组合包。
-
模糊自适应的PID控制器——通俗易懂的解释
2019-12-23 11:28:14PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性...在讲解模糊PID前,我们先要了解PID控制器的原理(本文主要介绍模糊PID的运用,对PID控制器的原理不做详细介绍)。PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。
1.1传统PID控制
传统PID控制器自出现以来,凭借其结构简单、稳定性好、工作可靠、调整方便等优点成为工业控制主要技术。当被控对象的结构和参数具有一定的不确定性,无法对其建立精确的模型时,采用PID控制技术尤为方便。PID控制原理简单、易于实现,但是其参数整定异常麻烦。对于小车的速度控制系统而言,由于其为时变非线性系统不同时刻需要选用不同的PID参数,采用传统的PID控制器,很难使整个运行过程具有较好的运行效果。
1.2模糊PID控制
模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。
2.1模糊化
模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。具体如下图所示。而我们将一步步讲解如何将模糊PID算法运用到智能车上。(最好用笔一步步自己写一遍!!!)
首先我们的智能车会采集到赛道的相关数据,例如摄像头车,其采集到的数据经过算法处理之后会得到与中线的偏差E,以及当前偏差和上次偏差的变化(差值)EC两个值(即此算法为2维输入,同理也可以是1维和3维,但2维更适合智能车)。例如此时车偏离中线的距离为150,而上一时刻偏离中线的距离为120,则E为150,EC为150 - 120 = 30。
其次我们要对这两个值进行模糊化。这里我们对E进行举例。摄像头车采集回来的E是有范围的,即与中线的偏差是在一个区间内可行的。在这里我们假设该区间为-240到240,即小车偏离中线的最大距离为240,正负即为左右。再假设中线偏差变化率的可行区间为-40到+40。
接着我们要对这两个值进行模糊化。我现在将E的区间(-240 到 240)分成8个部分,那么他们分别为-240 ~ -180,-180 ~ -120 ,-120 ~ -60,-60 ~ 0,0 ~ 60,60 ~ 120,120 ~ 180,180 ~ 240。然后我们把-180,-120,-60,0,60,120,180分别用NB,NM,NS,ZO,PS,PM,PB表示(个人理解N为negative,P为positive,B为big,M为middle,S为small,ZO为zero)。例如,当E = 170时,此时的E属于PM和PB之间,而此时的E也会对应2(或1)个隶属度。E隶属于PM(120)的百分比为(180 - 170) / (180 - 120) = 1 / 6 ,而同理隶属于PB(180)的百分比为(170 - 120) / (180 - 120) = 5 / 6 。意思就是120到180进行线性分割了,E离PM和PB哪个更近,则隶属于哪个就更大(当输出值E大于180(PB)时,则隶属度为1,隶属度值为PB,即E完全隶属于PB,同理当E小于 - 180 (NB)时也一样)。同理也可以对EC进行模糊化。
2.2 模糊推理
对于采集回来的E和EC,我们可以推出它们各所占的隶属度,此时我们可以根据模糊规则表去找出输出值所对应的隶属度。
我们假设为E的两个隶属度值为PM、PB,E属于PM的隶属度为a(a < 1),则属于PB的隶属度为(1 - a)。再假设EC的两个隶属度值为NB、NM,EC属于NM的隶属度为b,则属于NB的隶属度为(1 - b)。而在假设中,E属于PM的隶属度为a,EC属于NB的隶属度为( 1 - b ),则输出值属于ZO的隶属度为a *( 1 - b )(看图)。
同理我们可以得出,当输出值属于ZO的另外两个隶属度为a * b, ( 1 - a ) * ( 1 - b) ,而输出值属于NS的隶属度为 ( 1 - a ) * b。在这里我们先证明一个条件,将这四个隶属度加起来,刚好等于1。这是因为
(a + (1 - a)) * (b + (1 - b)) = a * b + ( 1 - a ) * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) (下图)
即一个十字相乘的概念。这个等式说明输出值的隶属度之和等于1(第三步求解的时候需要用到隶属度之和)。
因此,我们知道了输出值为ZO的隶属度和为 a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ,输出值为NS的隶属度为 ( 1 - a ) * b 。
2.3 清晰化
对于输出值,我们同样采用给予隶属度的办法。例如,我们把输出值假设为[1000,1400](即舵机的摆角值范围)的区间同样划分为八个部分,即7个隶属值NB,NM,NS,ZO,PS,PM,PB。根据上一步所得出的结论,我们就可以用隶属度乘以相应的隶属值算出输出值的解,即 (a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO + ( 1 - a ) * b * NS。到此为止,整个模糊过程就结束了。
3 模糊PID
我们已经知道了整个模糊的过程,但上述的过程还不够完美。因为我们的输出值只有一个输出,并没有实现PID。因此我们可以先对E和EC进行模糊化,然后分别对kp和ki和kd(PID的三个参数)进行求解,再套入公式。
一般的我们也可以只用kp,kd,不用ki。而模糊规则表一般的论文已经基本给出。因此带入算法之后我们的难度也只是在于调节kp,kd,和适当调节规则表。当然调节的难度会大于普通的PID,因为还要定kp,kd的输出范围,调得不好可能效果并没有普通的PID好。
4. 部分解释
4.1对于部分论文所说的重心法解模糊,其实就是上述方法。公式如下。
式中μ(Zi) * Zi相当于文章上面的(a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO + ( 1 - a ) * b * NS,即隶属度乘以隶属度值之和,而μ(Zi)之和就是输出值的隶属度之和,我们已经证明它是等于1的。
————————————————
版权声明:本文为CSDN博主「我爱广工大」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_36340979/article/details/79168052 -
浅谈javascript之事件、函数、方法、对象 各代表何含义,通俗解释及其之间的关联与区别
2017-02-20 00:48:13简单来说: 在javascript中,所有的事件都是通过函数来执行的,函数本身...函数就是对事件作出具体反馈映射,即执行处理某种事件的动作,需要一段执行过程。 【方法】 当把一个函数赋给某个对象当属性时,就变成了方法:简单来说:
在javascript中,所有的事件都是通过函数来执行的,函数本身即是动作(针对事件来说),也是方法(针对对象来说)!对象是指的谁触发了事件,绑定事件的主谋。
【事件】
事件就如神经开关,刺激激发动作函数,只需交互一瞬间; 比方:“针刺皮肤,神经刺激敏感”就是一个事件。【函数】
函数就是对事件作出具体反馈映射,即执行处理某种事件的动作,需要一段执行过程。比方:“针刺皮肤,激发反馈,立刻躲闪”躲闪动作就是函数。故,所有的函数动作本身都是静态的,不会自我运行,必须借用外力即事件刺激激活调用才可运行。
即,函数动作必须与事件绑定才有意义,函数与事件二者是息息相关,相依为命的,才能称之为完整是动作。
总,函数动作必须有事件激发调用。
【方法】
当把一个函数赋给某个对象当属性时,就变成了方法:
12345var
person = {
age : 26,
say :
function
(){
alert(
'I am a person! '
);
}
你调用这个对象的方法,他会弹出一句话说:I am a person!
【对象】
在javascript中,一切都是对象!既然是一切,那么 函数、方法、事件本身也是对象。只不过,它们是一种特殊的对象,具有特殊功能和含义;对象也可以简单的理解为一个大仓库,具有各种资源(各种属性——定义这个大仓库的特征,比如,长-宽-高-颜色-材质-建造日期-使用年限-容纳多少物品...;各种方法—也就是函数——定义这个大仓库用途段能干什么?手比如,可以做仓储存放粮食蔬菜水果-可以放置农具机械-可以囤积零售商品-可以做修理厂...)。好了,现在你有一个具有各种资源大仓库了,美美的你想做某些事件,你想到了这个大仓库里有你想要的资源,那么你就可以调用这里的资源了,也就是调用这个对象里的方法了。
【总之】不管是函数动作还是方法手段,都是干什么,本质都是产生动作动机,必须有函数function(){};来执行!
-
Mapreduce 通俗版
2017-09-01 17:58:00演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)。我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试人员)解释了MapReduce的概念,这让我感到兴奋。在所有辛勤的工作之后...英文出处:Shekhar Gulati。欢迎加入翻译组。昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)。我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试人员)解释了MapReduce的概念,这让我感到兴奋。在所有辛勤的工作之后,我们在Xebia印度办公室享用了丰盛的晚餐,然后我径直回了家。
回家后,我的妻子(Supriya)问道:“你的会开得怎么样?”我说还不错。 接着她又问我会议是的内容是什么(她不是从事软件或编程领域的工作的)。我告诉她说MapReduce。“Mapduce,那是什么玩意儿?”她问道: “跟地形图有关吗?”我说不,不是的,它和地形图一点关系也没有。“那么,它到底是什么玩意儿?”妻子问道。 “唔…让我们去Dominos(披萨连锁)吧,我会在餐桌上跟你好好解释。” 妻子说:“好的。” 然后我们就去了披萨店。
我们在Domions点餐之后,柜台的小伙子告诉我们说披萨需要15分钟才能准备好。于是,我问妻子:“你真的想要弄懂什么是MapReduce?” 她很坚定的回答说“是的”。 因此我问道:
我: 你是如何准备洋葱辣椒酱的?(以下并非准确食谱,请勿在家尝试)
妻子: 我会取一个洋葱,把它切碎,然后拌入盐和水,最后放进混合研磨机里研磨。这样就能得到洋葱辣椒酱了。
妻子: 但这和MapReduce有什么关系?
我: 你等一下。让我来编一个完整的情节,这样你肯定可以在15分钟内弄懂MapReduce.
妻子: 好吧。
我:现在,假设你想用薄荷、洋葱、番茄、辣椒、大蒜弄一瓶混合辣椒酱。你会怎么做呢?
妻子: 我会取薄荷叶一撮,洋葱一个,番茄一个,辣椒一根,大蒜一根,切碎后加入适量的盐和水,再放入混合研磨机里研磨,这样你就可以得到一瓶混合辣椒酱了。
我: 没错,让我们把MapReduce的概念应用到食谱上。Map和Reduce其实是两种操作,我来给你详细讲解下。
Map(映射): 把洋葱、番茄、辣椒和大蒜切碎,是各自作用在这些物体上的一个Map操作。所以你给Map一个洋葱,Map就会把洋葱切碎。 同样的,你把辣椒,大蒜和番茄一一地拿给Map,你也会得到各种碎块。 所以,当你在切像洋葱这样的蔬菜时,你执行就是一个Map操作。 Map操作适用于每一种蔬菜,它会相应地生产出一种或多种碎块,在我们的例子中生产的是蔬菜块。在Map操作中可能会出现有个洋葱坏掉了的情况,你只要把坏洋葱丢了就行了。所以,如果出现坏洋葱了,Map操作就会过滤掉坏洋葱而不会生产出任何的坏洋葱块。
Reduce(化简):在这一阶段,你将各种蔬菜碎都放入研磨机里进行研磨,你就可以得到一瓶辣椒酱了。这意味要制成一瓶辣椒酱,你得研磨所有的原料。因此,研磨机通常将map操作的蔬菜碎聚集在了一起。
妻子: 所以,这就是MapReduce?
我: 你可以说是,也可以说不是。 其实这只是MapReduce的一部分,MapReduce的强大在于分布式计算。
妻子: 分布式计算? 那是什么?请给我解释下吧。
我: 没问题。
我: 假设你参加了一个辣椒酱比赛并且你的食谱赢得了最佳辣椒酱奖。得奖之后,辣椒酱食谱大受欢迎,于是你想要开始出售自制品牌的辣椒酱。假设你每天需要生产10000瓶辣椒酱,你会怎么办呢?
妻子: 我会找一个能为我大量提供原料的供应商。
我:是的..就是那样的。那你能否独自完成制作呢?也就是说,独自将原料都切碎? 仅仅一部研磨机又是否能满足需要?而且现在,我们还需要供应不同种类的辣椒酱,像洋葱辣椒酱、青椒辣椒酱、番茄辣椒酱等等。
妻子: 当然不能了,我会雇佣更多的工人来切蔬菜。我还需要更多的研磨机,这样我就可以更快地生产辣椒酱了。
我:没错,所以现在你就不得不分配工作了,你将需要几个人一起切蔬菜。每个人都要处理满满一袋的蔬菜,而每一个人都相当于在执行一个简单的Map操作。每一个人都将不断的从袋子里拿出蔬菜来,并且每次只对一种蔬菜进行处理,也就是将它们切碎,直到袋子空了为止。
这样,当所有的工人都切完以后,工作台(每个人工作的地方)上就有了洋葱块、番茄块、和蒜蓉等等。
妻子:但是我怎么会制造出不同种类的番茄酱呢?
我:现在你会看到MapReduce遗漏的阶段—搅拌阶段。MapReduce将所有输出的蔬菜碎都搅拌在了一起,这些蔬菜碎都是在以key为基础的 map操作下产生的。搅拌将自动完成,你可以假设key是一种原料的名字,就像洋葱一样。 所以全部的洋葱keys都会搅拌在一起,并转移到研磨洋葱的研磨器里。这样,你就能得到洋葱辣椒酱了。同样地,所有的番茄也会被转移到标记着番茄的研磨器里,并制造出番茄辣椒酱。
披萨终于做好了,她点点头说她已经弄懂什么是MapReduce了。我只希望下次她听到MapReduce时,能更好的理解我到底在做些什么。
编注:下面这段话是网上其他人用最简短的语言解释MapReduce:
We want to count all the books in the library. You count up shelf #1, I count up shelf #2. That’s map. The more people we get, the faster it goes.
我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。
Now we get together and add our individual counts. That’s reduce.
现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。
- 顶
- 0
- 踩
-
通俗易懂地介绍——MapReduce
2017-10-18 18:17:25演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)。我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试人员)解释了MapReduce的概念,这让我感到兴奋。在所有辛勤的工作之后... -
灰度发布,AB测试。通俗介绍
2019-07-18 17:41:27今天有个客户来公司介绍...我个人的理解是:通过工具(集成SDK等)有策略性选取部分用户使用新版本页面/ios APP/Android APP,根据用户使用反馈情况,选择回退初始版本还是全面放开新版本。、 一个不错的解释如下: ... -
负反馈放大器(斋藤彰英著).pdf
2019-05-21 13:47:52这本书是关于放大电路最通俗易懂的解释,书里没有繁琐的讲解和公式。是学习模电的很好的入门书籍 -
性能测试常用术语解释
2019-10-07 19:18:00性能测试,有很多专业术语,为了方便大家理解,这里用通俗的语言来解释下,如果有不准的地方,欢迎反馈。 并发:跑道里参加赛跑的人 迭代:每个人跑多少圈 循环:一次迭代里面,反复执行其中一段脚本,就是反复... -
怎样向妻子解释MapReduce
2011-09-02 18:43:00”一文,比较通俗地阐述了MapReduce的概念。译文如下,译者是伯乐在线的黄慧谕。 昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)... -
【博文精选】怎样向妻子解释MapReduce
2014-10-19 09:57:53”一文,比较通俗地阐述了MapReduce的概念。译文如下,译者是伯乐在线的黄慧谕。 昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)... -
[博文精选] 怎样向妻子解释MapReduce(转载)
2011-08-28 12:37:00”一文,比较通俗地阐述了MapReduce的概念。译文如下,译者是伯乐在线的黄慧谕。 昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)... -
python中的所有异常都是基类_python 17 异常
2021-03-17 19:17:30一、什么是错误,什么是异常,它们两者区别这里解释如下:个人觉得很通俗易懂Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类 Exception的... -
首开CSDN技术博客,正在学习CI的思想,写点先
2011-01-27 17:15:00持续集成的思想: 持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地... -
学习记录--javascript多态
2016-04-08 22:04:59多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。换句话说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈。通俗点讲就是,下课了,老师喊了... -
java异常处理方式推荐做法_谈谈Java异常处理这件事儿
2021-03-15 16:21:14此文已由作者谢蕾授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。...首先,先说一下异常处理的通俗解释:当危险或知道事情不对的时候做出的反馈。目录结构Java的异常分类常见的异常处理... -
网易java修复_谈谈Java异常处理这件事儿
2021-03-14 02:18:52此文已由作者谢蕾授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。...首先,先说一下异常处理的通俗解释:当危险或知道事情不对的时候做出的反馈。目录结构Java的异常分类常见的异常处理... -
谈谈Java异常处理这件事儿
2018-10-26 09:14:53此文已由作者谢蕾授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。...首先,先说一下异常处理的通俗解释:当危险或知道事情不对的时候做出的反馈。目录结构Java的异常分类常见的异常处理... -
【LINUX】Shell及其环境开发工具
2021-01-22 17:08:44通俗解释: shell就相当于和操作系统交互,人通过Shell来交互。 环境开发工具 软件包管理器 (yum) 软件包就相当于手机市场中的应用市场里边存放着g各种各样的APP应用,你可以自己选择需要的APP安装 其中Linux中... -
编码、摘要和加密(三)——数据加密
2019-05-07 23:50:13文章目录0. 前言1. 相关概念1.1 密钥1.2 加密模式1.2.1 电子密码...关于加密,此处没有更加通俗易懂的解释。与同是对于字节类型数据处理的编码和摘要对比: 编码是可逆的,任何人只要知道编码规则,就能够进行解码... -
Deep Brief Network 和 Autoencoder
2019-08-28 13:27:27一RBM、Deep Brief Network 和 Autoencoder区别 一、RBM 1、定义【无监督学习】 RBM记住三个要诀:1)两层结构图,可视层和隐藏层;【没输出层】2)层内无连接,层间全连接;...比较通俗解释... -
《JavaScript设计模式与开发实践》读书笔记之基础部分
2017-09-18 03:34:22几个名词 ...换句话说,给不同的对象发送不同的消息,这些对象会根据这个消息分别给出不同的反馈 多态背后的思想是将“做什么”和“谁去做以及怎样去做”分离开来,也就是将“不变的事物”与“可能改... -
【C# interface接口】模拟MP3/AVI播放器
2019-05-16 13:29:11对接口的理解,见我的另一篇博客,里面有详细说明:【C# interface接口】对接口的理解、接口的使用方式(最通俗的解释) 功能 点击“MP3”,显示“成功选择MP3” 点击下方功能按钮,显示反馈信息 思路 声明一个... -
粒子群算法PSO入门代码火经典案例求Ackley函数附-PSO.zip
2019-08-12 18:49:37我来通俗解释: 粒子群算法是生物学家研究鸟类捕食创造的,把一只鸟比作成一个粒子,设想一个有20只秃鹫(粒子)的群体吧,秃鹫相互独立具有个体特征但又相互协助体现群体特征,现在我就是这20只中的一只好了(人... -
asp.net知识库
2015-06-18 08:45:45XPath最通俗的教程(ZZ) XPath中相对路径和绝对路径 XPath 简单语法 Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的... -