姓名:冯浩轩 学号:21021210683 学院:电子工程学院
本文旨在通过一维热传导方程以及牛顿冷却定律对焊接部分进行机理建模,并采用智能算法对炉温曲线进行优化。
粒子群算法是一种常见的启发式算法,模拟鸟群觅食的场景,在每个鸟都知道距离食物最近位置条件下,综合考虑自己的历史最佳位置、距离食物最近的鸟的位置以及自身的速度惯性大小,从而决定下一时刻的速度与位置。由粒子群算法可知,第i 只鸟的第d步的速度=上一步自身速度权重+自我认知部分+社会认知部分,列出公式如下:
粒子群算法流程图如下:
根据这种启发式算法,得到拟合结果以及绝对误差如下:
由上图可看出,在分段拟合的情况下,实验温度与模型得到的温度基本重合,除过200cm到250cm部分与实际情况略有偏差。但从模型温度与实验温度差曲线中看出,总体的绝对误差在4℃以内,表明拟合效果很好。且各个参数值如下表:
其中h为热交换系数与热传导率的比值,a2为热扩散率。
513 问题一各温区温度设定下的炉温曲线
将t1=173℃,t2=198℃,t3=230℃,t4=257℃,v=78cm/min=13cm/s代入上述模型中,得到焊接区域中心的温度曲线,同时将其与回焊炉内部温度曲线对比,用matlab作图如下,
由上图可知,炉温曲线的最高温度达到2422832℃,且升温和降温的斜率都没有超过3℃,符合题目要求。并得到了小温区3,6,7中点以及小温区8结束处焊接区域中心的温度,见下表:
每隔05秒焊接区域中心的温度数据已存入resultcsv中,具体见支撑材料。
同时用matlab作出焊接区域整体温度的时间空间分布图如下,
在上图中,颜色越暗代表温度越低,反之温度越高。由上图可以看出,离焊接区域中心越近,温度越低,且整体随着时间的增加温度呈现先上升,后下降的趋势。而在上述模型中,综合回焊炉温度分布以及焊接区域中心温度分布,与该图对比可以验证模型的准确性。
52 问题二 最大的传送带过炉速度
问题二要求求解该条件下的满足制程界限的最大传送带过炉速度。针对问题二,首先通过详细分析得传送带过炉速度与各指标都满足单调关系,因此利用matlab作出四条曲线缩小最大过炉速度所处范围,最后利用二分法代入上述模型求解得到满足制程界限的最大传送带过炉速度。
521 传送带过炉速度范围的缩小化处理
由于各温区温度的设定值为182℃(1到5小温区),203℃(小温区6),237℃(小温区7),254℃(8到9小温区),25℃(10到11小温区)。将其代入回焊炉的通用分段函数中,求得此情况下的回焊炉温度分布:
此时x=vt。因此,只有回焊炉温度分布发生变化,模型中其他等式不加改动。另外,由于小温区温度只有±10℃的调节,因此,问题一求解的决策变量K,K’在误差允许范围内可视为不变量。通过初步分析,当传送带过炉速度越大时,在控制其他条件不发生变化的情况下:①单位时间内温度上升或下降的幅度变大,即炉温曲线斜率的绝对值变大;
②温度上升过程中,在温度达到150℃~190℃的时间会减小,一方面是由于传送带运动快,另一方面是由于速度快导致整个运动过程中焊接区域中心能达到的最高温度会降低;
③温度大于217℃的时间会减小,理由同②;
④峰值温度会降低,原因是速度过快导致在热传递的过程中温度来不及达到更高值。综上,最大斜率绝对值与传送带速度呈正相关,其余变量与传送带速度呈负相关。在问题二中设定了各温区的温度分别为:T1=182℃, T2=203℃,T3=237℃, T4=254℃,T5= 25℃。在此条件下需要求出允许的最大传送带过炉速度v 。首先由题意可知,v 的调节范围是65~100cm/min,即:
因此,为简化问题,首先,运用如下公式,
其中,表示对炉温曲线离散化处理之后第i时刻的温度,表示对炉温曲线离散化的步长。满足以下条件:
我们首先使用二分法求得最大速度所在的大致区间,结果为:
522 最大传送带过炉速度
因变量都满足制程界限的要求,且传送带速度能保证尽量大。为确定精确的传送带过炉最大速度,在该区间内进行二分法查找。
通过matlab作出其他变量与传送带速度的单调函数如下,
由上图可以看出,制程界限的各个指标确实随着过炉速度的变化而单调变化,这与上述分析相符。通过二分法得到求解结果:得到最大过炉速度为:804425
53 问题三 217℃峰值温度所覆盖面积最小
问题三要求计算217℃到峰值覆盖面积的最小值。首先我们将此时间段内无限分割后小梯形面积相加的函数作为目标函数。再将制程界限与微分方程作为约束条件,利用粒子群算法求解目标函数的最小值以及对应的五个决策变量的结果。
531 217℃峰值温度所覆盖面积的计算
由于由该模型得到的微分方程的解是数值解,因此我们将从217℃到峰值温度所包围面积用t2/2-t1/2个小梯形相加的方法,如下图所示:
由上图可得
因此所求面积S为:
上式中,t1为电路板第一次到达217℃时对应的时间,t2为电路板到达峰值时对应的时间。
在本题中各小温区设定温度可以进行±10℃范围内的调整,调整时要求小温区1~5中的温度保持一致,小温区8~9中的温度保持一致,小温区10~11中的温度保持25℃,传送带的过炉速度调节范围为65~100cm/min。同时,理想的炉温曲线需满足题目所要求的制程界限。
因此,可建立如下单目标优化模型:
决策变量:
四部分小温区的面积ti(i=1~4),传送带的过炉速度v
目标函数:
目标为阴影面积最小,即
约束条件:
532 利用粒子群算法的求解流程
本问中我们利用粒子群算法进行模型的求解,基本步骤如下:
Step1:设置初始化参数及初始化粒子分布,本文中粒子个数为5。
Step2:计算出目标函数值,即炉温曲线超过217℃的覆盖面积。
Step3:不断更改粒子的速度和位置,重复计算目标函数值,找到全局最优值即覆盖面积的最小值及其所处位置。
Step4:判断是否达到迭代数,若满足则输出全局最优值及位置,否则返回Step3。
533 利用粒子群算法的求解结果
同时在该求解结果下,电路板炉温曲线如下图所示:
通过该曲线可以看出,回焊炉内部的最高温度为2649℃,而炉温曲线的最高温度为2403389℃,使得在满足各个制程界限条件下的超过217℃的覆盖面积达到最小。
54 问题四 超过217℃炉温曲线关于峰值面积尽可能对称问题
问题四要求求解满足题目要求下的尽可能对称的炉温曲线。针对问题四,将面积差的平方与时长差的平方相加最小作为优化目标,将制程界限和微分方程作为约束条件,利用粒子群算法求解目标函数的最小值以及五个决策变量的取值。
541 对该对称问题模型的建立
在问题三中已得到217℃到峰值部分炉温曲线覆盖的面积S左:
设直线y=217与炉温曲线相交对应的横坐标为t1和t3,同理可得峰值下降到217℃部分的炉温曲线覆盖面积S右:
则要使左右面积对称,需:
综上,我们将多目标函数转化为单目标多变量的优化问题,把目标函数令为:
表明左右两部分越相似决策变量仍为四部分小温区的面积ti(i=1~4)和传送带的过炉速度v
约束条件为:
同样用粒子群算法求解得到满足问题要求下的最佳指标值。
542求解结果
过炉速度为v=8878
左半部分的面积为s左=44917
同时在该求解结果下,电路板炉温曲线如图所示:
deepthinker是深度智能算法软件。
深度智能算法PaaS平台-沉思者(DeepThinker),集成公司自主研发的算法系统,由6大个子系统,自主改进融合了7种RNN网络以及10种CNN网络,对多种信号的多模态语义进行分析、关联和映射,得出更加完整、准确的算法识别分析结果。
平台提供可视化可编辑的场景化算法组件,为各个行业实现从场景化的算法构建,模型训练,推理验证,应用发布等全栈式算法服务。
相关信息
智能优化算法要解决的一般是最优化问题。优化思想里面经常提到邻域函数,它的作用是指出如何由当前解得到一个(组)新解。其具体实现方式要根据具体问题分析来定。局部搜索就是基于贪婪思想利用邻域函数进行搜索,若找到一个比现有值更优的解就弃前者而取后者。
优化算法有很多,经典算法包括:有线性规划,动态规划等;改进型局部搜索算法包括爬山法,最速下降法等,本文介绍的模拟退火、遗传算法以及禁忌搜索称作指导性搜索法。而神经网络,混沌搜索则属于系统动态演化方法。
本文参考Google OR-Tools 官网文档 介绍OR-Tools的使用方法。实际生活中有很多组合优化问题,例如最短路径、背包问题、人员排班等,这些组合优化问题一般属于规模较大的整数规划或者约束满足问题,一般没有直接的算法获得绝对最优解,只能通过启发式或元启发式算法获得相对最佳解。OR-Tools针对路径问题、背包问题和流问题提供了专用接口,相对于通用的求解器有更高的计算效率。
路径优化问题的目标都是在一个复杂的网络中找一个效能最高的路径,这个网络可以用下面这个节点图来示意
按照优化的目标是针对节点还是边,路径优化问题可以分成两类:节点路径优化( node-routing)和边路径优化(arc-routing)。节点路径优化的目标是以最短的路径长度访问到每个节点,而边路径优化的目标是以最短的路径长度实现访问图中的每条边。
旅行商(TSP)问题就是一个非常经典的node-routing问题,在这个问题下,图中每个节点代表了一个城市,而节点之间的边表示两座城市间的行程;每条边赋予一个权值,代表了两座城市间的距离;目标就是为旅行商找一条行程最短的路线来访问到每座城市。在这个标准的TSP问题定义上还可以附加各种额外条件来符合现实情况:
下面我们先了解一些解决以TSP为例的路径问题的算法,再使用OR-Tools演示一下。
启发(heuristic)这个词带有联想、经验的意思,这也正是启发式算法的思想,是带有领域知识的非精确算法,启发式算法一般要依赖于问题领域,不同的问题因为环境的不同启发式算法的形式也不同。对于TSP问题,一种最简单和直接的启发式算法是最邻近优先(Nearest Neighbor)法,就是每次都访问离当前位置最近的城市,这种算法的时间复杂度为 :
这种算法得到的解通常来说只有最优解的10%到15%。或者可以用一种更好的启发式算法,最短边贪心算法,就是不断选择最短的边来构造路径:
贪心算法的时间复杂度为 ,解的优良程度大概是最优解的15%到20%。除了这两种典型的启发式算法,还有其他很多种实现,就不列举了。
启发式算法的最大优点就是计算速度非常快,但是缺点也很明显,解的质量不高,因为本质上所有的启发式算法都属于局部最优算法,在随机初始化后只会沿这个方向发展,到达局部最优点后就停止了。
元启发式算法有时也称为智能优化算法,宽泛的来说也属于启发式算法,不过因为相对朴素的启发式算法有很大程度的改进因此一般单独划分出来讨论。元启发式算法的一大特点是面向全局的优化,会利用各种手段跳出局部最优来尝试寻找更好的解;另一个特点是通常会参考现实世界的物理过程来具体实现,从大多数元启发式算法的名字就可以直接体现,例如模拟退火算法、遗传算法、蚁群算法和霍普菲尔德神经网络等等。
在这篇文章里我们介绍一下模拟退火算法。它是受加热金属的退火过程所启发而提出的一种逼近算法,该算法在1983年由Kirkpatrick等人提出,并且最初设计这个算法就是为了解决TSP问题的。
模拟退火参考了一个物理现象:在某个温度下,金属分子停留在能量小的状态的概率比停留在能量大的状态的概率要大。更加具体的物理背景是这样的,在温度 下,金属物体的分子可能会处于若干种状态,停留在状态 的概率满足Boltzmann分布:
其中 表示分子能量的随机变量, 表示在状态 下的能量, 为Boltzmann常量,而 为概率分布的标准化因子
其中 是状态空间。根据分子能量的Boltzmann分布方程,分子不同状态的能量与温度的关系具有以下的特性:
上面这些特性归结起来就是温度越低,能量越低的状态的概率越高,极限情况下,只有能量最低的状态点概率不为零。举个例子,假设分子的能量概率分布函数如下:
其中能量点为 , ,则可能的概率变化情况如下表所示
我们了解了金属分子能量的退火过程,会发现在温度降低的过程中,分子能量一直在试图往最低的状态发展,这个过程就类似于我们求解最优问题解的过程。具体来对比的话,可以有以下细节:
因此,模拟退火算法就参照实际的物理过程,并采用实际物理过程的一些术语来实现。基本的算法流程如下:
模拟退火算法的主流程并不复杂,但是具体到每一步还有很多细节需要注意,我们针对主要的几个点进行叙述。
首先是解的定义和形式,不同的问题解的定义也不同,但都要尽量让解的形式简洁并利于 *** 作,邻域中每个邻居解都是可行解,并且解空间中任何两个状态可达。邻域可以理解为当前解附近的解空间。对于TSP问题,一种可行的解定义是:用解 表示为访问城市的一个排序,而解的领域可用不同的 *** 作算子来定义,例如最简单的互换 *** 作,下图是采用互换 *** 作从当前解 转到下一个解 的示意图
优化问题的目标函数就对应于分子退火过程中的状态能量,具体的目标函数表达形式和自身问题相关,在TSP里,目标函数就是当前解下的路径总长度
关于算法第2步的退火 *** 作,就是在当前温度下,由一个状态(解)变到另一个状态(解),而这个转变的过程服从一个概率分布,通常采用Metropolis接受准则,即:
这里 表示如果当前状态是 ,则下一个状态是 的概率; 表示当前状态的目标值; 。按照这个接受准则,如果下一个状态对应的目标值比当前状态的更小,则一定会跳到这个状态;如果更大,并不是肯定不接受,而是按一定的概率去转换。利用概率特征,算法在陷入局部最优时将有机会跳出。
实际的退火过程中降温是不能太快的,否则容易导致形成不是最稳定的状态;同样在退火算法中,降温过程需要保持合适的速度以保证解的质量。一般有两种降温方式,一种是
这里的 一般会取接近1的小数。另一种是
这里的 表示设定的降温总次数。
而退火算法的停止准则可以是温度下降到指定值时停止,也可以是总降温次数到达指定的次数时停止,或者是设定一个目标值,当前解接近这个值时停止。
以模拟退火算法为代表的元启发算法看起来有点“玄妙”的感觉,我们其实在用算法在模拟某些物理过程,通常情况下元启发算法的效果相当令人满意,而且相比启发式算法,元启发式算法更加通用,不同的问题只要合理的定义变量都可以用元启发算法来解算。不过元启发算法也有些缺点,比如某些算法参数无法定量,只能靠经验设定,例如在模拟退火算法中,温度的初始值很重要,如果设的太大会导致计算时间过程;如果太小则会影响解的质量。而且元启发算法找寻相对最优解的时间会比启发式算法长,这在某些场景下并不适用。
事实上现在一般的组合优化引擎(包括OR-Tools)会把启发式算法和元启发算法进行结合,例如把初始解的生成过程用启发式算法计算,后续的元启发过程在这个解上进行,因此在OR-Tools工具的参数中会有些启发式参数可配置。
我们新建一个Net Core控制台应用,利用OR-Tools解决一个标准的TSP问题。首先定义一个简单的数据集
DistanceMatrix存储了城市的距离信息,一维索引 i 代表了城市的编号,共有13个城市,DistanceMatrix[i][j]表示第i个城市和第j个城市的距离,比如DistanceMatrix[0][1]=2451,就表示城市0和城市1的距离是2451。VehicleNumber表示访问城市的个体数,为1就是标准的TSP问题,大于1则扩展为VRP问题。Depot表示了起始城市索引,这里就从第0号城市开始。
在Routing接口中,OR-Tools除了把模型单独封装为一个类,还多出一个地点索引管理类,由它负责算法内部对城市地点索引的管理和计算。新建一个RoutingIndexManager对象,指定当前TSP问题的基础参数
然后用RoutingIndexManager对象初始化一个RoutingModel对象
接着是一个比较繁琐和让人困惑的步骤,我们需要为RoutingModel对象指定获取距离值的回调方法:
当求解器内部计算取两个城市的索引时,会调用我们指定的回调函数获取它们之间的距离。至于为什么要在回调函数内用IndexToNode()方法做一个看似多次一举的 *** 作,是因为算法内部用的索引和原始数据的索引不一样,例如算法内部可能计算到fromIndex为0,toIndex为13的情况(第13个城市其实就是回到起始点),而在外部原始数据里是没有DistanceMatrix[0][13]这个值的。
然后我们还需要把RegisterTransitCallback返回的回调函数Id值作为SetArcCostEvaluatorOfAllVehicles方法的参数来通知模型,结点间边的权值就用城市距离表示。
我们再写一个打印解的方法
在最终计算之前,我们还可以设定一下算法搜索参数。我们先只指定FirstSolutionStrategy的值,也就是用哪种启发式算法来初始化解,这里指定为PathCheapestArc,即上面提到的最短边算法;此外把LogSearch设为true,从而可以看到算法的过程信息。
最后调用计算方法来得到结果
完整的程序
我们再来试试修改下searchParameters的配置。我们只是指定了FirstSolutionStrategy的值,用哪种元启发算法我们并没有指定,这个值由LocalSearchMetaheuristic指定,其默认值是AUTOMATIC,表示由求解器自己选择。这里例子里求解器应该选择的是Greedy Descent算法,我们手动改成模拟退火:
然后定义好停止时间,否则算法不会停下的
来看看模拟退火算法的结果,最终解和之前一样,不过中间过程就不一样了
可以把适应度函数设置成随机森林分类准确率,也可以把适应度函数设置为随机森林回归结果和真实结果的均方差。随机森林回归和分类之间的关系是,它们都是基于决策树的集成学习算法,但是它们的分裂节点的评价标准不同,分类是基于信息增益,而回归是基于均方差。
以上就是关于基于智能算法的炉温曲线优化问题的研究2全部的内容,包括:基于智能算法的炉温曲线优化问题的研究2、deepthinker是什么软件、Google OR-Tools(五) 路径问题 Routing等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)