本发明涉及产品设计制造领域,尤其涉及构造复杂机电产品响应面模型的方法及系统。
背景技术:
由于响应面模型是基于采样点数据构造的,而采样点的估值彼此独立,所以可利用并行计算快捷的得到其仿真值,因此响应面方法可以大大提高机电产品的优化设计效率。一般响应面模型由基函数以其对应的系数线性组合而成,模型的构造包括采样方法、基函数字典的构造、寻求稀疏表示的算法和模型的建立。
在采样方法中,现有技术采用设计空间内采样;在基函数字典的构造中,现有技术采用的是固定字典,如有离散余弦变换(discretecosinetransform,dct)基、离散傅里叶变换(discretefouriertransform,dft)基、离散小波变换(discretewavelettransform,dwt)基和针对图像的多尺度几何分析(ridgelet,curvelet,bandlet,contourlet等)。
在寻求稀疏表示的算法中涉及的信号的稀疏表达是指:将给定的信号在己知的基函数(或基向量)集上进行分解,然后以变换向量表示原始信号。具体而言,就是将信号投影到基函数(或基向量)空间时,大部分变换系数的量级很小,只有少数几个变换系数量级较大,因此可以将变换系数向量看作原始信号的一种稀疏表达。利用稀疏表达理论对信号进行重建时,基函数集中的冗余基函数(或基向量)的系数的量级往往很小,而只挑选出对描述信号有关键作用的基函数(或基向量),从而实现信号的高保真重建。类似地,可以把黑箱函数(源模型)看成一种信号,寻找一组合适的基函数,使得源模型在这组基函数下具有稀疏达。一方面,可以根据采样点的多少适当增减基函数的数目,以增强基函数对黑箱函数的表达能力;另一方面,利用稀疏表达理论,剔除冗余的基函数。这样,便可以为源模型构造一个更加精确的逼近模型。寻求稀疏表示的算法会得到每个基函数对应的系数,以此便能构造响应面模型。稀疏度指的是基函数对应的系数中非零个数,非零个数越少,则稀疏度越好,非零个数越多,则稀疏度越差。
在稀疏表达的基础上,为了能精确重构源模型,需要进行采样规划,然后建立外部采样与内部稀疏表达之间的数学方程模型,以求解稀疏表达系数。现有技术中都是基于l1范数的系数求解方法已经成为信号重构的主流方法,该方法的典型代表主要有匹配追踪(matchingpursuit,mp)、基追踪(basispursuit,bp)、正交匹配追踪(orthogonalmatchingpursuit,omp)以及lasso等。基于其他范数意义下的方法有lars、spca以及slda等。但是现有的mp、omp和bp等算法只能在保证重构的响应面模型的精度的情况下,达到一个较好的稀疏性,根本无法适用在寻求稀疏度小同时进度足够高的表达,无法构建一个更加精确、简洁的响应面模型。
技术实现要素:
本发明的目的在于提出一种基于模拟退火算法构建响应面模型的方法及应用其对复杂机电产品进行设计制造的系统,该方法利用模拟退火思想在混合字典上寻求稀疏度小同时精度足够高的表达,可构建一个更加精确、简洁的响应面模型。
为达此目的,本发明采用以下技术方案:
具体的,所述步骤a中所述的拉丁超立方采样的方法包括如下步骤:
a1.从区间[0,1/m],[1/m,2/m],[2/m,3/m],…,[1-1/m,1]中随机选取一个区间;
a2.从该区间中随机选取一个值作为其值;采样点的所有分量都执行这样的操作后,便形成采样点坐标,完成一次采样;总共有p个变量,则重复p次操作,由拉丁超立方采样的方法产生的采样点可以表示为x=[x1,x2,...,xp],xi(i=1,2....p)即为一个变量的采样点向量,包含m个元素;
a3.将x映射到仿真模型的变量区间,然后带入仿真模型计算,得出一组仿真结果y=[y1,y2,...,yn]。
具体的,所述步骤b中自适应混合基由正余弦和勒让德基构成,包括如下步骤:
b1.正余弦基的构建:其分为正弦基和余弦基;正余弦基函数如下:
将x代入一个基函数,即得到一列数据,这列数据就是这个基函数上的采样数据,也代表了这个基函数的特征,将x分别带入n个基函数,则得到n列数据,最后得到一个矩阵:
b2.勒让德基的构建:将勒让德展开0阶展开到n阶得到n+1个勒让德基函数,多变量勒让德基是单变量多项式勒让德基的张量积,即得到:
η是指数向量,如η=[0,1,5,2],那么同样将x代入,得到:
将φ1、φ2结合得到一个大矩阵φ=[φ1,φ2],φ即本发明所述的自适应混合基;设采样点x为m*1的列向量,y为m*1的列向量,字典基函数个数为n,即字典φ为m*n的矩阵。
具体的,所述步骤c中的所述模拟退火算法包括:主函数、模拟退火函数、扰动函数和误差求解函数这四个子函数模块;模拟退火算法求解混合字典中各基函数对应的系数的过程包括如下内容:c1.误差求解函数:误差求解函数基于最小二乘法,输入s个基函数,样本y,即可利用最小二乘法计算基函数对应的s个系数;在matlab里面只需s个基函数组成的矩阵左除样本y即可;具体步骤为:
(c11):初始化个体编码、字典和样本y;
(c12):最小二乘法求解系数;
(c13):按公式yr=d*θ计算重构的样本y(d为s个基函数组成的矩阵,θ为系数);
(c14):计算y-yr的二范数,即为误差matlab为norm(y-yr)。
具体的,模拟退火算法求解混合字典中各基函数对应的系数的过程还包括如下内容:c2.模拟退火函数:设置两个循环,一个退火循环即大循环,每次循环温度t按速率v递减,直到递减为临界值tmin为止;一个迭代循环即小循环,设置迭代次数iter;在小循环中设置一个扰动函数,每次改变挑选的s个基函数中的一个,再设置一个容忍函数,每次挑选的基函数构造的响应面误差不达标时,随机判断是否接受这个挑选,作为进入下一次迭代循环的初始基函数;以下命名均遵循以下规则:col存储s个基函数在字典中对应的位置;eff存储对应的系数;error存储对应的误差,在col、eff、error后加不同的字符表示不同的变量;具体步骤为:
(c201):设置函数参数,设置初始温度t,信号样本y,退火速率v,混合基字典φ(m*n),挑选的基函数的个数s,迭代次数iter;
(c202):初始化从字典的n个基函数中随机选取s个基函数,得到列向量col1,调用误差求解函数,输出这s个基函数对应的误差error1、系数eff1;初始化errorbest=error1,colbest=col1,effbest=eff1(errorbest存储循环过程中的最小误差,effbest存储对应的系数,colbest存储s个基函数在字典中对应的位置);
(c203):大循环判断条件:t>0.0001,若成立,则进入退火循环,若不成立,则退出循环;
(c204):小循环判断条件:循环次数是否到达iter,若成立,则进入循环,若不成立,则退出循环;
(c205):调用扰动函数,随机改变s个基函数中的一个,得到col2,并调用误差求解函数,输出这s个基函数对应的误差error2、系数eff2,delta=error2-error1;
(c206):判断error2<errorbest,若成立,则更新errorbest=error2,colbest=col2,effbest=eff2,若不成立,则进入(c207);
(c207):判断error2是否达到要求精度,若达到,则退出整个退火循环,若没达到,则进入(c208);
(c208):判断delta<0,若成立,则更新col1=col2,error1=error2;若不成立,则判断是否接受误差,根据e-delta/t是否大于的[0,1]之间的一个随机数,若成立,则更新col1=col2,error1=error2,若不成立,则进行退出判断语句,进入(c209);
(c209):更新t=t*v,进入(c203);
(c210):输出errorbest、effbest、effbest中的非0个数sparsity。
具体的,模拟退火算法求解混合字典中各基函数对应的系数的过程还包括如下内容:c3.扰动函数:扰动函数每次从字典d的1到n个基函数中随机挑选一个基函数来替换挑选的s个基函数中的其中的一个,从而达到不断变换挑选的s个基函数的目的;具体步骤如下:
(c31):随机从字典d中选择一个基函数作为替换基函数;
(c32):随机从s个基函数中选择一个作为待替换基函数;
(c33):替换s中的基函数;
(c34):输出新的基函数组。
具体的,模拟退火算法求解混合字典中各基函数对应的系数的过程还包括如下内容:c4.主函数融合了二分法和模拟退火的思想,具体包括如下步骤:
(c41):设置初始温度t,信号样本y,退火速率v,混合基字典d(m*n),挑选的基函数的个数初值s=n/2,挑选个数最大值kmax,挑选个数最小值kmin;
(c42):while循环判断条件,kmax-kmin>=0,若成立,则进入循环,若不成立,则退出循环;
(c43):将初值带入模拟退火函数,模拟退火函数构建的响应面模型的误差和求解系数的非0个数sparsity;
(c44):判断模拟退火函数输出的误差是否达到精度,若达到,flag=1,若没达到,flag=0
(c45):根据flag判断精度是否达标,若达标,则更新kmax=sparsity/2;若不达标,则更新kmin=s;
(c46):更新s=(kamx+kmin)/2;
(c47):重复步骤(c42)。
一种应用上述的方法的设计制造系统,其包括:数据录入模块、采样模块、混合字典模块、稀疏表示模块、响应面模型构建模块、数据优化处理及输出模块和加工执行模块;数据录入模块:用于向所述设计制造系统中输入对应复杂产品的加工设计或制造期望参数;采样模块:通过拉丁超立方采样的方式获得采样数据;混合字典模块:采用自适应混合基构造一个混合字典;稀疏表示模块:所述混合字典模块构建好混合字典之后,所述稀疏表示模块再根据所述采样模块中的采样数据中的x和y,模拟退火算法求解所述混合字典中各基函数对应的系数;利用模拟退火算法的思想,引入大种群思想来加快计算速率;响应面模型构建模块:由稀疏表示模块得到s个基函数对应的系数eff、字典d和信号样本y;字典d中s个基函数以外的其他基函数系数为0,由此得到字典d每个基函数对应的系数,记为向量θ,构建出响应面模型为y=d*θ;数据优化处理及输出模块:对响应面模型运算出的结果进行优化处理,并将后续加工需要的参数输出;加工执行模块:接收所述数据优化处理及输出模块输出的参数,并根据该参数完成后续的制造过程。
本发明提出的一种用来求解基函数的系数的算法及设计制造系统,既能保证利用求解出的系数构建的响应面模型的精度又能保证模型的稀疏度,利用模拟退火思想在混合字典上寻求稀疏度小同时精度足够高的表达,构建一个更加精确、简洁的响应面模型。进行复杂产品设计时,只需进行少量的仿真模型计算,然后将得到的数据按照本发明进行字典的训练,然后构建一个响应面模型,之后再改变产品设计需要仿真时则可直接利用响应面模型得出结果,无需再进行复杂的仿真模型计算。正由于本模型稀疏度小,因此仅需从源模型取得较少的采样点便能构建精确的模型,这使得构建源模型的替代模型的成本也极大降低。
附图说明
图1是本发明中一个实施例中采用于模拟退火算法构建响应面模型的方法对复杂产品进行设计制造的系统的工作原理流程图;
图2是本发明中一个实施例中所述的误差求解函数的流程图;
图3是本发明中一个实施例中所述的模拟退火函数的流程图;
图4是本发明中一个实施例中所述的扰动函数的流程图;
图5是本发明中一个实施例中所述的主函数的流程图。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
现有技术中一般响应面模型由基函数以其对应的系数线性组合而成,有如下表达式:
ci是基函数对应的系数,ψi(x)是基函数。
构造响应面模型的第一个环节是在设计空间内采样,获得采样点集x({xi|i=1,2,...,m}),然后进行仿真分析得到响应值数据集y({yi|i=1,2,...,m}),最后由x和y根据不同的算法原理构建不同的近似模型。
基函数字典的构造方式是典型的固定正交基字典有离散余弦变换(discretecosinetransform,dct)基、离散傅里叶变换(discretefouriertransform,dft)基、离散小波变换(discretewavelettransform,dwt)基和针对图像的多尺度几何分析(ridgelet,curvelet,bandlet,contourlet等)。
现有的寻求稀疏表示的算法是基于l1范数的系数求解方法已经成为信号重构的主流方法,该方法的典型代表主要有匹配追踪(matchingpursuit,mp)、基追踪(basispursuit,bp)、正交匹配追踪(orthogonalmatchingpursuit,omp)以及lasso等。基于其他范数意义下的方法有lars、spca以及slda等。
现有模型的建立是经过上述步骤之后得到一组可以稀疏表示黑箱函数的基向量及其对应的系数,由此得到模型y=ψc,ψ为挑选出来的基向量组成的矩阵,c为每个基向量对应的系数。
本发明提出一种基于模拟退火算法构建响应面模型的方法,其包括如下步骤:
1、采样
先根据具体的复杂机电产品的设计制造期望情况,在操作终端录入期望参数或者标准。在构造本发明响应面模型的过程中,采样点由拉丁超立方设计(latinhypercubedesign,lhd)获得,这是因为lhd有利于提高模型的逼近精度。lhd采样是一种全空间分布的随机采样方法,与一般的随机采样方法不同的是,它产生的采样点在设计域内是均匀分布的。因此,由lhd产生的采样点能更加全面地反映源模型的特性信息。对于采样点的每一个分量,首先从区间[0,1/m],[1/m,2/m],[2/m,3/m],…,[1-1/m,1]中随机选取一个区间,然后从该区间中随机选取一个值作为其值。采样点的所有分量都执行这样的操作后,便形成采样点坐标,完成一次采样。总共有p个变量,则重复p次操作,由lhd采样产生的采样点可以表示为x=[x1,x2,...,xp],xi(i=1,2....p)即为一个变量的采样点向量,包含m个元素。
将x映射到仿真模型的变量区间,然后带入仿真模型计算,得出一组仿真结果y=[y1,y2,...,yn]。
2、基函数字典的构造
字典的构造要遵循:字典基函数的特征要尽可能的包含信号的特征。不同的信号所需要的字典可能不相同,实际应用中需要根据信号的特征构建自适应字典。本发明采用自适应混合基,构建一个冗余的混合字典,这样的冗余字典能保证基函数包含信号的所有特征。
下面给出本发明用的到其中一种混合基的构建方法,混合基由正余弦基和勒让德基构成。
2.1、正余弦基
正余弦基分为正弦基和余弦基。正余弦基函数如下:
2.2、勒让德基
将勒让德展开0阶展开到n阶得到n+1个勒让德基函数,多变量勒让德基是单变量多项式勒让德基的张量积,即
最后,将φ1、φ2结合得到一个大矩阵φ=[φ1,φ2],φ即本发明所述的自适应混合基。以下均设采样点x为m*1的列向量,y为m*1的列向量,字典基函数个数为n,即字典φ为m*n的矩阵。
3、寻求稀疏表示的算法
构建好自适应混合基字典之后,需要根据采样数据x和y求解字典各基函数对应的系数,这里用到了本发明提出的一种用来求解基函数的系数的算法,既能保证利用求解出的系数构建的响应面模型的精度又能保证模型的稀疏度。
算法利用模拟退火的思想限定每次挑选个数s,每次只挑选s个基函数,计算其系数,并且每一次挑选的s个基函数都会发生变化,同时控制精度,只要精度达到要求,停止挑选,未被挑选的函数系数设0,从而达到控制稀疏度的目的,然后在外循环利用二分法的思想,适当的减少或增加挑选个数s,使得求解出的算法构建的模型即有较好的稀疏度又能保证模型的精度。
算法分为几个子函数模块:主函数、模拟退火函数、扰动函数、误差求解函数。
3.1、误差求解函数
误差求解函数基于最小二乘法,输入s个基函数,样本y,即可利用最小二乘法计算基函数对应的s个系数。在matlab里面只需s个基函数组成的矩阵左除样本y即可。
step1:数据初始化。个体编码、字典、样本y;
step2:最小二乘法求解系数;
step3:按公式yr=d*θ计算重构的样本y(d为s个基函数组成的矩阵,θ为系数);
step4:计算y-yr的二范数,即为误差(matlab为norm(y-yr))。
流程图如图1所示。
3.2、模拟退火函数
利用模拟退火的思想,设置两个循环,一个退火循环(大循环),每次循环温度t按速率v递减,直到递减为临界值tmin为止;一个迭代循环(小循环),设置迭代次数iter即可。在小循环中设置一个扰动函数,每次改变挑选的s个基函数中的一个,再设置一个容忍函数,每次挑选的基函数构造的响应面误差不达标时,随机判断是否接受这个挑选,作为进入下一次迭代循环的初始基函数。
以下命名均遵循以下规则:
col存储s个基函数在字典中对应的位置;
eff存储对应的系数;
error存储对应的误差,
在col、eff、error后加不同的字符表示不同的变量。
step1:设置函数参数。设置初始温度t,信号样本y,退火速率v,混合基字典φ(m*n),挑选的基函数的个数s,迭代次数iter;
step2:初始化数据。从字典的n个基函数中随机选取s个基函数,得到列向量col1,调用误差求解函数,输出这s个基函数对应的误差error1、系数eff1。初始化errorbest=error1,colbest=col1,effbest=eff1(errorbest存储循环过程中的最小误差,effbest存储对应的系数,colbest存储s个基函数在字典中对应的位置);
step3:大循环判断条件:t>0.0001,若成立,则进入退火循环,若不成立,则退出循环;
step4:小循环判断条件:循环次数是否到达iter,若成立,则进入循环,若不成立,则退出循环;
step5:调用扰动函数。随机改变s个基函数中的一个,得到col2,并调用误差求解函数,输出这s个基函数对应的误差error2、系数eff2;计算delta=error2-error1;
step6:判断error2<errorbest,若成立,则更新errorbest=error2,colbest=col2,effbest=eff2,若不成立,则进入step7;
step7:判断error2是否达到要求精度,若达到,则退出整个退火循环,若没达到,则进入step8;
step8:判断delta<0,若成立,则更新col1=col2,error1=error2;若不成立,则判断是否接受误差,根据e-delta/t是否大于的[0,1]之间的一个随机数,若成立,则更新col1=col2,error1=error2,若不成立,则进行退出判断语句,进入step9;
step9:更新t=t*v,进入step3;
step10:输出errorbest、effbest、effbest中的非0个数sparsity。
程序图如图2所示。
3.3、扰动函数
扰动函数每次从字典d的1到n个基函数中随机挑选一个基函数来替换挑选的s个基函数中的其中的一个,从而达到不断变换挑选的s个基函数的目的。
step1:随机从字典d中选择一个基函数作为替换基函数;
step2:随机从s个基函数中选择一个作为待替换基函数;
step3:替换s中的基函数。
step4:输出新的基函数组。
流程图如图3所示。
3.4、主函数
主函数融合了二分法和模拟退火的思想,加速了搜寻最佳稀疏度的过程。
step1:设置初始温度t,信号样本y,退火速率v,混合基字典d(m*n),挑选的基函数的个数初值s=n/2,挑选个数最大值kmax,挑选个数最小值kmin;
step2:while循环判断条件,kmax-kmin>=0,若成立,则进入循环,若不成立,则退出循环;
step3:将初值带入模拟退火函数,模拟退火函数构建的响应面模型的误差和求解系数的非0个数sparsity;
step4:判断模拟退火函数输出的误差是否达到精度,若达到,flag=1,若没达到,flag=0;
step5:根据flag判断精度是否达标,若达标,则更新kmax=sparsity/2;若不达标,则更新kmin=s;
step6:更新s=(kamx+kmin)/2;
step7:重复步骤step2;
主函数程序流程图如图4所示。
4、响应面模型的构建
由上述步骤可得s个基函数对应的系数eff、字典d、信号样本y。d中s个基函数以外的其他基函数系数为0,由此得到字典d每个基函数对应的系数,记为向量θ,此时响应面模型为y=d*θ。
5、响应面模型在复杂产品中的应用
响应面模型构造完后,复杂产品设计受到到多个变量的影响,如需得到复杂产品设计中的自变量xt对应的原仿真模型的值yt,只需将x带入构建字典d的n个基函数,即可得新的字典dt,按照响应面模型y=dt*θ计算xt对应的yt的估计值ytr。因为响应面模型的构建过程中保证了模型的精度,所以ytr即可作为yt。
6、参数输出及应用
输出后续加工需求的结果数据作为后续生产设备的制造参数,用于对复杂产品的生产制造。
一种应用上述的方法的设计制造系统,其包括:数据录入模块、采样模块、混合字典模块、稀疏表示模块、响应面模型构建模块、数据优化处理及输出模块和加工执行模块;数据录入模块:用于向所述设计制造系统中输入对应复杂产品的加工设计或制造期望参数;采样模块:通过拉丁超立方采样的方式获得采样数据;混合字典模块:采用自适应混合基构造一个混合字典;稀疏表示模块:所述混合字典模块构建好混合字典之后,所述稀疏表示模块再根据所述采样模块中的采样数据中的x和y,模拟退火算法求解所述混合字典中各基函数对应的系数;利用模拟退火算法的思想,引入大种群思想来加快计算速率;响应面模型构建模块:由稀疏表示模块得到s个基函数对应的系数eff、字典d和信号样本y;字典d中s个基函数以外的其他基函数系数为0,由此得到字典d每个基函数对应的系数,记为向量θ,构建出响应面模型为y=d*θ;
数据优化处理及输出模块:对响应面模型运算出的结果进行优化处理,并将后续加工需要的参数输出;加工执行模块:接收所述数据优化处理及输出模块输出的参数,并根据该参数完成后续的制造过程。
本发明提出的一种用来求解基函数的系数的算法及设计制造系统,利用模拟退火思想在混合字典上寻求稀疏度小同时精度足够高的表达,构建一个更加精确、简洁的响应面模型。进行复杂产品设计时,只需进行少量的仿真模型计算,然后将得到的数据按照本发明进行字典的训练,然后构建一个响应面模型,之后再改变产品设计需要仿真时则可直接利用响应面模型得出结果,无需再进行复杂的仿真模型计算。
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。