前言:
眼前兄弟们对“共轭梯度法c语言”大致比较关切,兄弟们都想要学习一些“共轭梯度法c语言”的相关文章。那么小编同时在网络上网罗了一些对于“共轭梯度法c语言””的相关文章,希望朋友们能喜欢,兄弟们一起来学习一下吧!引自:《制造智能技术基础》(主编:张智海, 副主编:李冬妮、苏丽颖、张磊、贾旭杰、裴植、谢小磊)
我们每天在工作和生活中,都在和各类优化问题打交道。比如外出游玩时,什么时间出发、采用何种方式出行用时最短,或者经济支出最小?再如有五项工作,每一项的难度和耗时均不相同,并且其中两项有先后顺序、四项需要交上级审核,而上级只在下午两点到三点有空,那么如何安排这五项工作的顺序,才能够保证完成工作且用时最短?等等。
像这样制定出行计划、排定工作顺序,就是优化技术一种简单、直观的应用。优化技术是以数学为基础,来求解各种工程优化问题的应用技术。事实上优化问题由来已久,最早可以追溯到牛顿和拉格朗日时代。由于牛顿等对微积分的重要贡献,使得采用差分方程法解决优化问题成为可能;拉格朗日发明了著名的拉格郎日乘子法;柯西首先提出了最速下降法,用于解决无约束最小化问题。通俗理解,各种带“最”字的问题,如函数最小值、利润最大、时间最短、装货最多等问题,都能视为可以用优化方法求解的优化问题,或称最优化问题。20世纪50年代高速计算机出现后,最优化领域的发展进入了旺盛时期,产生了大量新算法,在许多科学领域和包括制造业在内的工程应用领域中都发挥出了重要作用。
在数学上,最优化问题可以分为函数优化问题和组合优化问题两大类。函数优化问题的研究对象是一定区间内的连续变量,研究解决的是连续性问题;组合优化问题的研究对象在解空间内是离散状态,研究解决的是离散问题。经典的组合优化问题有旅行商问题(traveling salesman problem,TSP)、生产调度问题(scheduling problem)、0-1背包问题(knapsack problem)、装箱问题(bin packing problem)、图着色问题(graph coloring problem)和聚类问题(clustering problem)等。在工程实践中,最优化问题一般表述成选择一组参数,在一系列限制条件下,找到这些参数的某种组合,使所求问题的目标值达到最优。在求解过程中,需将工程问题抽象表示成数学问题,再采用最优化方法进行求解。最优化方法可以理解为基于某种思想或机制,寻找最优解的一种搜索规则。
「 1. 优化的意义 」
优化意为采取一定措施使变得优异。在计算机算法领域,通常指采用一定算法,得到所要求解问题的更优解。
在实际应用中,某个工程问题可以有很多种解决办法,某个系统也可以有很多种运行状态,并且都会受到一定主客观条件的限制。在满足这些限制条件的前提下,从众多方案或参数值中找到最优的那一个,以使得该问题或该系统的某个或多个性能指标达到现有条件下的最优状态,这一过程就是求解最优化问题,也就是优化的意义所在。即通过特定的优化方法,求得问题的最优解,从而为系统设计、施工、管理、运行等提供最优方案。
在求解过程中,通常需要将具体的工程问题转化为抽象的数学问题。一般做法是选择一组能反映问题本质的参数(自变量,或称决策变量),在一系列限制条件(约束条件)下,使某些设计指标(目标函数)达到最优值。因此,最优化问题通常可以表示为以下形式。
对于一组可用列向量X表示的变量,目的是求得目标函数f(X)的最大值或最小值,一般可以用数学语言表达为:
其中,s.t.是subject to的缩写,意为在……的约束条件下,g(X)和h(X)即为约束条件,通常也表现为函数形式,maxf(X)和minf(X)表示目标函数的最大值和最小值,即求解目标。
综上,求解最优化问题,就是将实际的工程问题转化为式(1)形式的数学问题,再采用特定算法进行求解。这一转化过程就是建立优化问题的数学模型,又称数学建模。
「 2. 数学模型及常见优化方法 」
数学模型是运用数理逻辑的方法和数学符号语言建构的科学问题或工程问题的抽象模型。针对某个问题或系统,将其全部(或部分)客观特征或变量及其相互关系,借助数学符号语言,精确或近似地表述成一种数学关系结构。再采用数学方法,对该模型进行优化,从而求解出实际问题的最优解。
常见的经典优化方法有梯度下降法、牛顿法和拟牛顿法、共轭梯度法、爬山法等。下面分别作以简介。
1)梯度下降法
梯度下降法(gradient descent)的直观解释如图1所示。假设我们在一座大山(目标函数)中的某处想下山(要找到目标函数的最小值),我们不知道下山的路径在哪里(不知道最小值在什么位置),于是决定边走边寻找(迭代求解),每走到一个位置,就求解当前位置的梯度,并沿梯度负方向,即当前下降最快的方向走一步(这一距离称为步长)到达下一位置,然后继续求解下一位置的梯度,再沿其负方向再走一步……如此往复,一直走到我们觉得(满足停止条件)已经到了山脚(找到了能搜索到的最小值)。当然事实上我们很可能走到的并不是真正的山脚(找到的不是全局最小值,或称全局最优解),而只是到了某一个局部的山谷最低处(只找到了局部最小值,或称局部最优解)。
图1 梯度下降法的直观解释
梯度下降法是求解无约束最优化问题的常用方法。但通常其解不能保证是全局最优解。但已经证明,当目标函数是凸函数时,梯度下降法求得的解就是全局最优解。
梯度下降法在接近最优解的区域时,收敛速度会明显变慢,也就是越接近目标值,步长越小、前进越慢,因此采用梯度下降法求解往往需要很多次迭代。相当于我们越接近山脚,地势会越趋于平缓,每走一步下降的高度也越低。优化算法通常采用迭代计算,由初始解开始,按照一定规则不断产生新解,如此反复。
在这里,算法收敛是指算法能够在迭代时间趋于无穷时,最终找到问题的全局最优解。在数值分析领域,一个收敛序列向其极限逼近的速度称为收敛速度。而在优化算法中,收敛速度通常指一个迭代序列向其局部最优值逼近(假设计算过程收敛,并能达到最优值)的速度。算法的收敛速度是衡量算法优劣的重要指标。在求解实际的优化问题时,计算时间不可能是无穷的,因此一个实际好的优化算法,是在可接受的时间内,以较快速度收敛于一个可接受的解。
2)牛顿法和拟牛顿法
(1)牛顿法。牛顿法(Newton's method)是一种在实数域和复数域上近似求解方程的方法。使用函数的泰勒级数展开式来寻找方程的根。牛顿法最大的特点是收敛速度很快。
(2)拟牛顿法。拟牛顿法(Quasi-Newton methods)是求解非线性优化问题最有效的方法之一。其优化思想是改善牛顿法每次都需要求解复杂的Hessian矩阵的逆矩阵的缺陷,使用正定矩阵来近似Hessian矩阵的逆,从而简化了计算复杂度。
3)共轭梯度法
共轭梯度法是介于梯度下降法与牛顿法之间的一个方法,其优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。既克服了梯度下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hessian矩阵并求逆的缺点。共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是求解大型非线性优化问题最有效的算法之一,是一种非常重要的优化方法。
共轭梯度法是根据正定二次函数极小值问题推导出来的,后被推广到求解一般形式的无约束问题。正定二次函数极小值问题是指
其中,A为n´n阶的正定矩阵,X,BÎEn,c为常数。如果能构造出A的共轭向量组P(1),P(2),...,P(n),并分别沿这n个方向进行一维搜索,经过n步即可求得问题的极小值。这就是共轭法的思想。共轭梯度法在每个搜索方向中加入负梯度方向的分量,并确保每个搜索方向之间都是共轭的。
4)爬山法
爬山法,也称直接搜索法,是求解多变量无约束优化问题的一类方法。顾名思义,该方法在求解过程中就像爬山一样,一直向比当前位置高的地方走,但有时为了到达山顶,不得不先上矮山顶,然后再下来,这样翻越一个个的小山头,直到最终达到山顶。
爬山法是一种局部择优的贪心搜索算法。每次从当前节点开始,与邻接点进行比较:①若当前节点是最大的,则返回当前节点,作为最大值;②若当前节点不是最大的,就用最高的邻接点替换当前节点,从而实现向高处攀爬的目的,如此循环往复,直到达到最高点为止。
该算法存在的主要问题是:①局部最大,即某个节点会比周围任何一个邻接点都高,但只是局部最优解,并非全局最优解;②高地问题,即搜索一旦到达高地,就无法确定搜索的最佳方向,会产生随机走动,使搜索效率降低;③山脊问题,即搜索可能会在山脊的两面来回震荡,前进步伐很小。当出现上述问题后,只能随机重启爬山算法来解决,如图2所示。
图2 爬山法的直观解释
「 3. 传统优化方法的局限性 」
以梯度为基础的传统优化算法具有较高的计算效率、较强的可靠性、比较成熟等优点,是一类最重要的、应用非常广泛的优化算法。但广泛存在于信号处理、图像处理、生产调度、任务分配、模式识别、自动控制、机械设计以及经济学和管理学等科学领域中的优化问题,往往是复杂和困难的。这类优化问题通常具有以下特点:①目标函数没有明确的解析表达式;②目标函数虽有明确的表达式,但不可能恰好估值;③目标函数为多峰函数;④目标函数有多个,即多目标优化。并且目标函数或约束条件不连续、不可微、高度非线性,或者问题本身是困难的组合问题。
传统优化方法在求解时要求目标函数具备是凸函数、连续可微、可行域是凸集等条件,而且处理非确定性信息的能力较差。这使得传统优化方法在解决许多实际问题时受到了限制。鉴于实际工程问题的复杂性、非线性、约束性以及建模困难等诸多特点,寻求高效的优化算法已成为相关学科的主要研究内容之一。
「 4. 智能优化方法的产生与发展 」
为解决上述复杂优化问题,人们受人类智能、生物群体社会性或自然现象规律的启发,研究并模拟这些行为或现象的过程及背后规律,发明了许多新型的优化算法,主要包括:①模仿自然界生物进化机制的遗传算法;②通过群体内个体间的合作与竞争来优化搜索的差分进化算法;③模拟生物免疫系统学习和认知过程的免疫算法;④模拟蚂蚁集体寻径行为的蚁群算法;⑤模拟鸟群和鱼群等群体行为的粒子群算法;⑥源于固体物质退火过程的模拟退火算法;⑦模拟人脑记忆过程的禁忌搜索算法;⑧模拟动物神经网络行为特征的神经网络算法等。这些算法在优化领域被称为智能优化算法,它们具有简单、通用、便于并行处理等特点。
目前常见的智能优化算法多是建立在生物智能或物理现象基础上的一类随机搜索算法,现阶段在理论上还不如传统优化算法严谨和完善,在实际求解中往往也不能求得的是最优解,因而常常被视为只是一些元启发式搜索方法(meta-heuristic)。但从实际应用的观点看,这类新算法一般不要求目标函数和约束条件的连续性与凸性,有时甚至不要求目标函数有解析表达式,对计算中数据的不确定性也有很强的适应能力,往往能够提供在某个应用场景下实际可被接受的解。认知心理学的相关研究中也表明,动物的决策行为采取的也是启发式方法,尤其是在资源(环境、食物数量、觅食时间等)不充足的情况下,这样做出的决策也许不是最优的,但至少是有效的。因此智能优化算法在求解现代复杂的工程优化问题中有着广泛应用,发挥着重要作用。
「 5. 智能优化方法在制造业的应用 」
在现代智能制造领域,各种智能优化算法在车间生产调度、厂区内自动导航车的路径规划、仓储和物流优化配置等问题的优化求解中,都有重要应用。
例如,在电子设备、计算机、汽车、日用器具等离散制造业中,产品的多个零件需要在不同机器上经过一些不连续的工序、并且在一定的约束条件下加工完成。离散制造行业的特点是待加工的零件通常是多品种和小批量的,生产现场管理复杂,刀具、工装种类繁多,人工管理工作量大,容易导致多种物料或半成品的供应和堆积的情况,有时现场较易发生不确定事件。此外,离散制造企业生产中常伴随着因下游产业或客户的订单需求变化而产生的生产计划不固定、反馈信息滞后等问题。
而智能优化算法广泛应用于生产流程各环节的优化中,包含对产品工艺改进、生产节拍和生产平衡的调整、产品品质与合格率、生产工序能力、产品物流规划、减少在制品积压和设备闲置浪费等方面。
1)生产调度方面
对生产调度的改进,针对离散制造业其自身工艺的可间断性、可替代性等特点,使用多种智能优化算法,对零件的加工次序、工人的配置使用、流水线和机器的布设位置等进行优化求解,以提高工厂的生产效率。
(1)排定生产计划。不同的零件需要不同的加工工序,每一道加工工序需要在不同的机器上耗费不同的时间来完成。在上述多种约束条件下,如何排定生产计划,才能使得整个工厂或作业车间的生产效率最高。智能优化方法在求解此类优化问题中体现出了很强的优越性。对生产顺序进行智能排产,可使机器或工人达到最大程度的加工效率,以减少工人等待、机器空转、半成品堆积的现象。
当生产过程中机器出现故障、或因临时追加了紧急订单等不可预见因素,必须停止当前的生前计划来响应新出现的情况时,可以利用智能优化算法,从断点处开始,重新产生新的生产计划。
(2)工厂布局设计。工厂布局是工业生产制造中的重要组成部分。随着加工工序的进行,工件需要在车间内不同机器上、甚至是不同车间之间进行生产,这一过程中启停机器、移动工件及人员操作所消耗的成本是无法忽视的,如何设置车间内各类生产设备的安放位置才能把人员、设备、物料都需要的空间做最适当的分配和最有效的组合,从而尽量节省空间,降低生产过程中移动工件及人员所消耗的成本,获取最大的生产经济效益。这就是生产设备布局问题的研究内容,也是智能优化算法领域的热点问题。
(3)工人指派问题。不同产品的加工工序,需要有不同技能的工人进行操作;而同一名工人,可能只具备一种操作技能,也可能同时具备几种甚至是全部操作技能(又称为多能工和全能工)。在工人总数有限的前提下,如何在生产线上配置工人,才能使得产品的生产效率最高,或者能够最大化保证某些关键零部件的生产、能够优先保证需要紧急交付的订单的生产,也适合采用智能优化方法进行求解。
(4)并行机调度问题。在晶圆生产、钢铁生产等行业和领域中,工厂通常会使用若干台同类机器并行生产,共同完成所有的作业,是一类生产场景中常见的调度问题。涉及到平衡各机器的生产负载以达到最短的完工时间,处理随机机器出现故障时对其它机器生产造成的干扰以及对整个生产计划的影响等。
2)物流及仓储方面
(1)车辆路径规划问题。生产流程中需要以最低的成本,对原材料、半成品、零部件、成品等物料进行配送、仓库储存和调用,实现原材料、半成品、零部件、成品等物料从产地或仓库到工厂的配送、仓库储存和调用,一方面应减少不增值活动,一方面应保证现场场地上不堆积物料且生产线上不缺料。在生产制造物料的运输过程中,将产生车辆路径规划问题(vehicle routing problem)。在车辆路径规划问题上面智能优化算法有着非常广泛的应用,蚁群算法、粒子群算法等等智能优化算法在问题规模较大、求解难度高的车辆路径规划问题的求解精度和速度上都有着十分良好的表现。
(2)机器人调度。随着自动化技术的日益成熟,移动机器人技术在工厂、仓库之中的应用也越来越广泛。作为现代智能仓库、智能工厂的重要组成部分,移动机器人逐渐代替了人工劳动,大幅度提高了工厂的生产效率。在许多大规模的复杂应用场景之下,多移动机器人编队的调度和控制,例如路径规划、任务分配等就成为了影响工厂工作效率的主要因素。在解决多机器人的路径规划和任务分配的问题上,智能优化算法是一个十分有效的解决方法,可以极大地提高求解速度和解的准确性。
(3)港口调度问题。在全球跨国贸易体系中,船舶远洋运输是不可或缺的一部分。运输船舶在港口进行货物装卸载的调度问题就尤其重要。港口调度问题涉及众多参数和约束条件,包括泊位的数量,不同的水深(可供停泊不同吨位的船只),起重机械的数量和起重能力,货物缓冲区的大小,港口内转运车辆的运载能力及运输路径规划,港口仓库的大小等。其理论问题的模型涉及装箱问题、车辆路径规划问题等,是一个较为复杂的应用问题,同时也是智能优化算法领域的研究热点问题。
3)生产工艺优化
对各类零件的加工工艺流程的优化,主要是研究在一定的条件下,如何用最合适的生产路线和生产设备,以最节省的投资和操作费用,合成最佳的工艺流程。包括对零件表面除锈、抛光等工序的处理,如齿轮类零件、管类零件等不同形态的零件,其最适合的工艺流程也不尽相同。通过对工艺流程的研究及优化,能够尽可能的挖掘出设备的潜能,找到生产瓶颈,寻求解决的途径,以达到产量高、功耗低和效益高的生产目标。
标签: #共轭梯度法c语言 #衡量算法性能的主要指标 #衡量算法优劣的主要指标是什么意思