-
2021-04-22 03:18:24
1引言由于互通立交中主线与匝道、匝道与匝道相互交叉、制约,使线形单元参数的拟定带有盲目性和随机性,线形调整有很大的困难,路线不易满足控制条件要求,线形单元参数经多次试算、调整,仍难以满足规范要求。本文从立交匝道平面线形设计的特点出发,根据线位约束条件和规范要求拟定可行的线形组合型式,以线形单元参数为设计变量,以满足线位要求与规范标准为约束条件,建立线形优化设计模型[1],探讨相应的优化计算方法,并利用大型通用的计算软件MATLAB优化工具箱的优化函数,进行线形参数的优化设计,从而减少了选择和调整线形参数的盲目性,使所得线形既能符合规范标准又能满足线位约束条件,丰富和完善了立交匝道平面线形设计的理论和方法。2优化计算方法立交匝道平面线形优化问题属于非线性规划里的有约束最优化问题:minf(x)xRns.t.gi(x)=0(i=1,…me)gi(x)0(i=me+1,…m)lbxub(1)求解该问题,早期方法通常是构造惩罚函数来将有约束最优化问题转换为无约束最优化问题,即把条件极值问题通过参数化无约束条件优化序列来求解,但求解效率不高,目前该方法已被更有效的基于K-T(kuhn-tucker)方程进行求解的方法所取代,K-T方程是有约束最优化问题求解的必要条件。K-T方程可表示为:f(x*)+mi=1i*gi(x*)=0i*gi(x*)=0i=1,…mei0i=me+1…,m(2)上式第一个方程描述了目标函数和约束条件在解处梯度抵消,其中Langrange乘子i(i=1,…,m)平衡了目标函数和约束条件梯度之间的大小差异。求解K-T方程是很多非线性规划算法的基础,这些方法试图直接计算Langrange乘子,通过拟牛顿法使用拟牛顿更新程序,给K-T方程累积二阶信息以保证超线性收敛。因在每个主要迭代步骤中解决一个二次规划子问题,故称为序列二次规划方法(SequentialQuad-raticProgamming,SQP)。序列二次规划法在每次迭代时,收敛可由拟牛顿法得到的Langrange函数构成的Hessian矩阵来保证,从而转化为二次规划子问题,其解产生线性搜索过程的搜索方向。对给定的规划问题,SQP方法主要思路是形成基于Langrange函数二次近似的二次规划子问题:L(x,)=f(x)+mi=1igi(x)MATLAB优化工具箱的SQP算法的实现由三部分组成:(1)Langrange函数Hessian矩阵的更新在每次主迭代中,H均作为Langrange函数Hessian矩阵的正定拟牛顿近似,采用BFGS方法进行计算,更新公式为:Hk+1=Hk+qkqTkqkTsk-HkTHksTkHksk式中:sk=xk+1-xkqk=f(xk+1)+mi=1igi(xk+1)-(f(xk)+mi=1igi(xk))(2)二次规划问题的求解SQP法每次主要迭代过程,都要求解一次二次规划(QP)问题:minxRn12dTHd+cTds.t.Ai*d=bii=1,…,meAi*dbii=me+1,…,m(3)求解过程包含两个阶段:1计算解的一个可行点;2产生可行点的一个迭代序列,这个序列收敛到问题的解。(3)线性搜索和目标函数的计算求解QP子问题得到一个向量dk,由它可得到新的迭代:xk+1=xk+kdkk必须保证目标函数有足够的下降量,目标函数形式如下:(x)=f(x)+mei=1i*gi(x)+mi=me+1i*max{0,gi(x)}(4)其中:i=(k+1)i=maxi{i*((k)i+i)/2}i=1,…,m3优化计算模型31线形设计的基础匝道平面线形总是
更多相关内容 -
人工智能-机器学习-既有线有砟轨道优化线形算法研究及其软件研制.pdf
2022-05-08 11:50:26人工智能-机器学习-既有线有砟轨道优化线形算法研究及其软件研制.pdf -
云计算-抛物线形复合断面渠道的水力计算与优化研究.pdf
2022-07-04 13:07:46云计算-抛物线形复合断面渠道的水力计算与优化研究.pdf -
铁路既有线纵断面线形分段的优化算法.pdf
2022-07-12 10:02:35铁路既有线纵断面线形分段的优化算法.pdf -
立交匝道平面线形优化设计及MATLAB的应用.pdf
2021-10-31 23:23:17立交匝道平面线形优化设计及MATLAB的应用.pdf -
基于MATLAB语言的拱桥拱肋线形优化设计.pdf
2021-07-10 14:51:17基于MATLAB语言的拱桥拱肋线形优化设计.pdf -
分布式MIMO系统线形小区天线位置优化研究.pdf
2021-08-09 23:51:26#资源达人分享计划# -
基于粒子群算法的抛物线形渠道断面优化方法.pdf
2021-09-28 23:53:54基于粒子群算法的抛物线形渠道断面优化方法.pdf -
PSO算法的抛物线形渠道断面优化方法研究-论文.zip
2021-08-18 17:43:08PSO算法的抛物线形渠道断面优化方法研究-论文.zip -
于 PSO算法的抛物线形渠道断面优化方法研究-论文.zip
2021-08-18 17:36:08于 PSO算法的抛物线形渠道断面优化方法研究-论文.zip -
70067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究.zip
2021-09-14 03:27:2570067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究.zip -
70067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究.doc
2021-09-14 03:27:1870067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究.doc -
70067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究(1).zip
2021-09-14 03:27:1170067121643441810_-_基于 PSO算法的抛物线形渠道断面优化方法研究(1).zip -
人工智能-机器学习-线形离子阱量子计算系统的优化和脉冲声子激光的研究.pdf
2022-05-26 12:58:50人工智能-机器学习-线形离子阱量子计算系统的优化和脉冲声子激光的研究.pdf -
optimal-beamforming.zip_优化波束_凸优化_凸优化阵列_阵列 凸优化_阵列综合 MATLAB
2022-07-14 08:25:49针对均匀线形阵列的阵列波束综合问题,并把这一问题描述成一个凸优化问题。针对更普适的情况。 -
array-pattern-synthesis.zip_array-synthesis_凸优化 波束_波束优化_阵列优化_阵列综
2022-07-15 17:10:00针对均匀线形阵列的阵列波束综合,并把波束综合问题描述成一个凸优化问题。 -
混合梁斜拉桥成桥索力优化理论及工程应用
2020-06-28 10:28:38为研究斜拉桥其最优成桥索力对主梁内力、线形的影响,以本溪某混合梁斜拉桥为工程背景.在既有索力优化理论的基础上,采用了基于复合约束的最小能量法,以塔梁的拉压应变能和弯曲应变能建立目标函数,运用显示梯度的数学... -
工矿企业厂外道路纵断面优化设计研究 (2012年)
2021-06-15 15:13:35厂外道路纵断面优化设计是在平面线形已定的基础上,用数学方法优化纵断面线形,提高选线设计质量,降低工程投资.采用多项式曲线拟合能反映地面的起伏趋势,在反弯点附近利用最小二乘法拟合坡线,并根据约束条件调整变坡点... -
激光热处理光束优化系统
2021-02-12 11:09:46为了改善激光热处理硬化层分布的均匀性,在分析国内外激光热处理光束优化系统研究现状及存在问题的基础上,提出了光束优化系统的两种方案,激光扫描环形光斑和线形光斑。建立了两种光斑温度场的数学模型,模拟了温度... -
线形腔光纤激光器的光反馈效应研究 (2010年)
2021-05-22 16:37:57提出了一种基于线形腔光纤激光器结构的光学反馈系统,对系统输出功率变化表达式进行...通过适当调节反馈腔腔长与目标靶反射率可优化系统反馈信号的灵敏度.根据以上特性,该系统可应用于光学测量领域,例如位移、距离、 -
抛物线形断面最优水力参数及方程指数计算方法 (2014年)
2021-05-16 07:48:43针对目前抛物线形断面最优水力参数及抛物线方程指数计算尚没有比较... 精度分析及算例计算结果表明:最优水力参数的提出将为该类断面的进一步优化设计提供可靠依据;最优抛物线形断面比其他水力最优断面经济指标更好。 -
新型低损耗塑料光纤结构优化的数值分析
2021-02-05 08:38:19模式损耗随d2的增加呈线形增大趋势,n2∶n1越大,反共振波长处的损耗越低。在此基础上,用模拟退火优化算法对空气层厚d1和纤芯半径rco进行了最优化求解。最后,用以上求得结构参数的优化组合即N=3,d2=2... -
非线形互补问题的障碍函数法* (2007年)
2021-05-17 09:18:15将非线形互补问题转化为约束的优化问题,在已经的利用内点障碍函数方法求解约束优化问题的基础上,提出了利用障碍函数方法求解非线形互补问题的采用序列无约束最小化方法(SUMT)的算法,并利用障碍函数的单调性证明了... -
大跨度斜拉桥施工过程索力和线形双控研究 (2008年)
2021-05-11 15:42:51采用一阶最优化计算方法,以成桥后结构的弯曲应变能和主粱的线形为目标函数,以斜拉索的初始张拉力和主梁节段的预抛高值为设计变量,建立了斜拉桥施工控制的空间非线性有限元分析模型,并以某大跨度预应力混凝土斜拉... -
JavaScript大型线形图
2022-03-29 18:27:47JavaScript大型线形图JavaScript大型线形图
这个演示程序属于LightningChart JS的例子集,是JavaScript的数据可视化库。
LightningChart JS是完全由GPU加速和性能优化的图表库,用于展示大量的数据。它提供了一种简单的方法来创建复杂和互动的图表,并将其添加到你的网站或网络应用中。
该演示可以作为一个例子或种子项目使用。本地执行需要以下步骤。
确保已经安装了相关版本的Node.js
在终端中打开项目文件夹。
npm install # fetches dependencies
npm start # builds an application and starts the development server
该应用程序在浏览器中可以使用http://localhost:8080,webpack-dev-server提供热重载功能。
说明
这个例子展示了一个相对较大的数据集(几百万个数据点)的线形图的可视化。
LightningChart JS为网络中的数据可视化创造了一场革命--以前,线形图的可视化只可能在几十万个数据点的范围内实现,即使如此,也需要复杂的开发者努力来实现任何令人满意的缩放或平移互动。
有了LC JS,一百万点的折线图可以在一秒钟内加载完毕,其结果是前所未有的--缩放和平移等操作都是即时的。
此外,与以前的替代品相比,使用方法简单得令人发指。使用基于SVG/Canvas的绘图,用户在处理大量数据时将受到严重限制,因为这些技术不能很好地扩展。
下面是用LC JS创建一百万点线图的简单过程。:
const chart = lightningChart().ChartXY()
const series = chart.addLineSeries({
dataPattern: {
pattern: 'ProgressiveX'
}
})
.setStrokeStyle(stroke => stroke.setThickness(1))
.addArrayY(new Array(1000000).fill().map(_ => Math.random()))
这需要大约100毫秒的时间来加载,并将立即以闪电般的速度进行互动!
线形图的最大可能大小与使用的硬件,特别是RAM(内存)和GPU(显卡)有很好的比例关系 - 在普通的办公电脑上,LC J S可以处理超过一亿个数据点。
-
自锚式悬索桥主缆线形计算非线性规划方法 (2008年)
2021-05-29 14:23:42考虑弯矩对加劲梁轴向刚度的影响,在迭代计算过程中,提出采用非线性规划方法,并与传统的影响矩阵法进行对比,计算结果表明,两者结果吻合,从而使借助大型通用优化软件对自锚式悬索桥主缆线形进行精确求解成为可能... -
基于UC3846的开关电源电压反馈的优化设计
2021-01-12 21:27:27介绍并比较了电流模式PWM控制器中电压反馈的基本电路,设计出了基于电流控制型PWM控制芯片UC3846的电压反馈的实用电路,该电路能满足在高频电路、非线形负载情况下稳定的输出。实验结果证明,该电路具有较好的控制... -
可逆式反击锤式破碎机反击板形状优化设计
2020-06-29 11:30:45以理论力学为基础,建立了物料运动的轨迹方程,确定了影响物料运动轨迹曲线的基本参数,并运用Matlab软件进行仿真分析,通过对物料运动轨迹的分析,确定影响反击板形状的主要因素,并对折线形反击板进行了优化设计。... -
LAMP 性能优化
2018-11-08 09:56:49一、LAMP的优化技巧:Linux 日志切分 如果没有日志切分,日志可能很快会把硬盘塞满,最后不得不手动清理。做日志切分推荐用logrotate,易于配置,一旦配置完成就会默默无闻地工作。 调整swapiness swappiness...一、LAMP的优化技巧:Linux
日志切分
如果没有日志切分,日志可能很快会把硬盘塞满,最后不得不手动清理。做日志切分推荐用logrotate,易于配置,一旦配置完成就会默默无闻地工作。
调整swapiness
swappiness用来控制使用系统swap的概率,ubuntu内核默认是60。建议修改为0,使系统尽可能使用物理内存而非swap。实际上,在上次Linode升级套餐后,我已经关掉了swap,系统运行得依然稳定。具体修改方法可以百度一下。
UPDATE: 经 @7id 提醒,swappiness参数更多的是降低磁盘io操作,对于内存不是特别小的情况,差别不大。详细请看下方留言。
二、LAMP的优化技巧:Apache
启用压缩
启用压缩,可以减少传输的内容。对WebServer来说这几乎是必须的,但默认的Apache安装并未开启压缩。对于比较慢的连接,启用压缩会有更多好处。
调整MaxRequestsPerChild
MaxRequestsPerChild用于设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果这个参数为0,Apache进程占用的内存会只增不减。一些使用Apache的VPS经常遇到iorate很高,可以尝试调整一下这个参数(ref)。
三、LAMP的优化技巧:Mysql
关掉InnoDB
如果服务器用来放blog或是论坛,多数时候MyISAM就足够用了。此时可以把InnoDB关掉。my.cnf中的注释说:”You might want to disable InnoDB to shrink the mysqld process by circa 100MB.”。实测在VPS关掉Innodb时虽然没节约了100MB,但50M还是有的,内存珍贵,能省则省吧。
只需在my.cnf加入一行 skip-innodb 就可以把InnoDB的功能关掉。
四、LAMP的优化技巧:PHP
开启输出缓冲
在使用mod_php时,如果不开Output Buffering,每一个输出都会使Apache向客户端发送数据,导致效率很低。使用fastcgi时,由于WebServer本身有buffer,影响并不大。但默认的apt-get安装,使用的就是mod _php,因此建议在php.ini里把Output Buffering打开。
以上只是一些最初级的调整,叫做“优化”都显得有点夸大。但在初期遇到问题时,调整这些地方往往可以很快见效。
除此之外,建议用nginx换掉Apache。以上就是LAMP的优化技巧技巧。
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。Memcache官方网站:http://www.danga.com/memcached,更多详细的信息可以来这里了解。
为什么会有Memcache和memcached两种名称?其实Memcache是这个项目的名称,而memcached是它服务器端的主程序文件名,知道我的意思了把~~~~。一个是项目名称,一个是主程序文件名,在网上看到了很多人不明白,于是混用了。
Memcache的安装
分为两个过程:memcache服务器端的安装和memcached客户端的安装。
所谓服务器端的安装就是在服务器(一般都是linux系统)上安装Memcache实现数据的存储。
所谓客户端的安装就是指php(或者其他程序,Memcache还有其他不错的api接口提供)去使用服务器端的Memcache提供的函数,需要php添加扩展。
PHP的Memcache
如果正常的话,浏览器将输出:
程序代码分析
初始化一个Memcache的对象:$mem = new Memcache;
连接到我们的Memcache服务器端,第一个参数是服务器的IP地址,也可以是主机名,第二个参数是Memcache的开放的端口:$mem->connect("192.168.0.200", 12000);
保存一个数据到Memcache服务器上,第一个参数是数据的key,用来定位一个数据,第二个参数是需要保存的数据内容,这里是一个字符串,第三个参数是一个标记,一般设置为0或者MEMCACHE_COMPRESSED就行了,第四个参数是数据的有效期,就是说数据在这个时间内是有效的,如果过去这个时间,那么会被Memcache服务器端清除掉这个数据,单位是秒,如果设置为0,则是永远有效,我们这里设置了60,就是一分钟有效时间:$mem->set(‘key1‘, ‘This is first value’, 0, 60);
从Memcache服务器端获取一条数据,它只有一个参数,就是需要获取数据的key,我们这里是上一步设置的key1,现在获取这个数据后输出输出:
现在是使用replace方法来替换掉上面key1的值,replace方法的参数跟set是一样的,不过第一个参数key1是必须是要替换数据内容的key,最后输出了:
同样的,Memcache也是可以保存数组的,下面是在Memcache上面保存了一个数组,然后获取回来并输出:
现在删除一个数据,使用delte接口,参数就是一个key,然后就能够把Memcache服务器这个key的数据删除,最后输出的时候没有结果:
最后我们把所有的保存在Memcache服务器上的数据都清除,会发现数据都没有了,最后输出key2的数据为空,最后关闭连接:
Memcache的使用
使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能够迅速的进行存取。那么一般的焦点就是集中在如何分担数据库压力和进行分布式,毕竟单台Memcache的内存容量的有限的。我这里简单提出我的个人看法,未经实践,权当参考。
分布式应用
Memcache本来支持分布式,我们客户端稍加改造,更好的支持。我们的key可以适当进行有规律的封装,比如以user为主的网站来说,每个用户都有User ID,那么可以按照固定的ID来进行提取和存取,比如1开头的用户保存在第一台Memcache服务器上,以2开头的用户的数据保存在第二胎Mecache服务器上,存取数据都先按照User ID来进行相应的转换和存取。
但是这个有缺点,就是需要对User ID进行判断,如果业务不一致,或者其他类型的应用,可能不是那么合适,那么可以根据自己的实际业务来进行考虑,或者去想更合适的方法。
减少数据库压力
这个算是比较重要的,所有的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,导致数据库性能极具下降,无法同时服务更多的用户,比如MySQL,特别频繁的锁表,那么让Memcache来分担数据库的压力吧。我们需要一种改动比较小,并且能够不会大规模改变前端的方式来进行改变目前的架构。
我考虑的一种简单方法:
后端的数据库操作模块,把所有的Select操作提取出来(update/delete/insert不管),然后把对应的SQL进行相应的hash算法计算得出一个hash数据key(比如MD5或者SHA),然后把这个key去Memcache中查找数据,如果这个数据不存在,说明还没写入到缓存中,那么从数据库把数据提取出来,一个是数组类格式,然后把数据在set到Memcache中,key就是这个SQL的hash值,然后相应的设置一个失效时间,比如一个小时,那么一个小时中的数据都是从缓存中提取的,有效减少数据库的压力。缺点是数据不实时,当数据做了修改以后,无法实时到前端显示,并且还有可能对内存占用比较大,毕竟每次select出来的数据数量可能比较巨大,这个是需要考虑的因素。
Memcache的安全
我们上面的Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄露被其他无关人员查看,重则服务器被入侵,因为Mecache是以root权限运行的,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这些都是我们未知的,所以危险性是可以预见的。为了安全起见,我做两点建议,能够稍微的防止黑客的入侵或者数据的泄露。
内网访问
最好把两台服务器之间的访问是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块指向内网,那么就让Web服务器通过内网的网卡来访问Memcache服务器,我们Memcache的服务器上启动的时候就监听内网的IP地址和端口,内网间的访问能够有效阻止其他非法的访问。
# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid
Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内存,并且允许最大1024个并发连接。
设置防火墙
防火墙是简单有效的方式,如果却是两台服务器都是挂在网的,并且需要通过外网IP来访问Memcache的话,那么可以考虑使用防火墙或者代理程序来过滤非法访问。一般我们在Linux下可以使用iptables或者FreeBSD下的ipfw来指定一些规则防止一些非法的访问,比如我们可以设置只允许我们的Web服务器来访问我们Memcache服务器,同时阻止其他的访问。
上面的iptables规则就是只允许192.168.0.2这台Web服务器对Memcache服务器的访问,能够有效的阻止一些非法访问,相应的也可以增加一些其他的规则来加强安全性,这个可以根据自己的需要来做。
-
非线性优化详解
2021-12-20 16:00:50基于slam的非线性优化详解1. 目的:根据之前的数据求解当前的最优最准确的状态估计
我们需要解决的就是根据之前的状态和当前的输入数据,比如运动数据,当前时刻的图像,来估计当前的一个位姿,slam中状态主要有两种方法,一种为增量式的滤波类方法,如卡曼滤波,另一种为批量式的非线性优化,我们主要介绍非线性优化。
首先我们的目的是需要求解一个minF(x),在slam状态估计中,就是求一个最优的状态估计,F(x)为e误差的一个平方和,十四讲中用二范数表示||e||,其中e是观测值和模型计算的误差;
2. 非线性最小二乘
m i n ∣ ∣ F ( x ) ∣ ∣ = 1 / 2 ∣ ∣ f ( x ) ∣ ∣ 2 min||F(x)|| = 1/2||f(x)||^2 min∣∣F(x)∣∣=1/2∣∣f(x)∣∣2
2.1 一阶梯度法即最速下降法
由于是非线性的,且导数计算复杂,所以要通过迭代法去找到F(x)的一个最小值,也就是导数逼近与0的一个点,
但是我们应该每次迭代多大呢?迭代的数选取不合适,就很可能找不到最优值。所以我们需要通过计算求每次迭代的数。所以我们的一阶梯度法即最速下降法和二阶梯度法就出来了。
首先将F(x)进行泰勒展开
F ( x i + △ x k ) ≈ F ( X K ) + J ( x k ) T △ x k + 1 / 2 △ x k T H ( x k ) △ x k F(x_i+\bigtriangleup x_k)\approx F(X_K)+J(x_k)^{T} \bigtriangleup x_k+1/2\bigtriangleup x_k^{T}H(x_k)\bigtriangleup x_k F(xi+△xk)≈F(XK)+J(xk)T△xk+1/2△xkTH(xk)△xk
一阶梯度法就是只保留一阶梯度,即雅克比矩阵那一项
显然当我们的** △ x k = − J ( x k ) \bigtriangleup x_k=-J(x_k) △xk=−J(xk)时,F(x)必然会下降 **
雅克比矩阵
J ( x k ) = ∣ ∂ X 1 ∂ x 1 ∂ X 1 ∂ x 2 ∂ X 1 ∂ x n ∂ X 2 ∂ x 2 ∂ X 2 ∂ x 2 ∂ X 2 ∂ x n ∂ X n ∂ x n ∂ X n ∂ x 2 ∂ X n ∂ x n ∣ J(x_k) = \begin{vmatrix} \frac{\partial X_1}{\partial x_1}& \frac{\partial X_1}{\partial x_2} & \frac{\partial X_1}{\partial x_n}\\ \frac{\partial X_2}{\partial x_2}& \frac{\partial X_2}{\partial x_2} & \frac{\partial X_2}{\partial x_n}\\ \frac{\partial X_n}{\partial x_n}& \frac{\partial X_n}{\partial x_2} & \frac{\partial X_n}{\partial x_n}\\ \end{vmatrix} J(xk)=∣∣∣∣∣∣∣∂x1∂X1∂x2∂X2∂xn∂Xn∂x2∂X1∂x2∂X2∂x2∂Xn∂xn∂X1∂xn∂X2∂xn∂Xn∣∣∣∣∣∣∣2.2 二阶梯度法-牛顿法
看完上面应该大概了解了基本的思想。就是找出每次需要迭代的数的大小。从而实现二范数的最小值。
海塞矩阵
高斯牛顿法
注意高斯牛顿法是将f(x)进行泰勒展开,而不是F(x),f(x)代表的是误差!
f ( x + △ x ) ≈ f ( x ) + J ( x ) T △ x f(x+\bigtriangleup x)\approx f(x)+ J(x)^T\bigtriangleup x f(x+△x)≈f(x)+J(x)T△x同样得到
△ x ∗ = a r g m i n 1 / 2 ∣ ∣ f ( x ) + J ( x ) T △ x ∣ ∣ 2 \bigtriangleup x^*=argmin1/2||f(x)+J(x)^T\bigtriangleup x||^2 △x∗=argmin1/2∣∣f(x)+J(x)T△x∣∣2
将 ∣ ∣ f ( x ) + J ( x ) T △ x ∣ ∣ 2 ||f(x)+J(x)^T\bigtriangleup x||^2 ∣∣f(x)+J(x)T△x∣∣2展开并对 △ x \bigtriangleup x △x求导,得:
J ( x ) f ( x ) + J ( x ) J T ( x ) △ x = 0 J(x)f(x)+J(x)J^T(x)\bigtriangleup x=0 J(x)f(x)+J(x)JT(x)△x=0
**解这个方程就能求出 △ x \bigtriangleup x △x了。**也就找到了最优的增量。
缺点: J ( x ) J ( x ) T J(x)J(x)^T J(x)J(x)T可能为奇异矩阵或病态的情况,此时增量的稳定性差,会导致算法的不收敛。LM列文伯格马夸尔特方法
LM给增量添加了一个范围,成为信赖域,具体看slam十四讲吧,懒得打了