本发明涉及燃烧,具体是指一种基于改进kmeans算法的高效仿真加速算法。
背景技术:
1、现有技术中,为了获得更为精确的反应流模拟结果,cfd通常需要使用高分辨率的网格去捕捉流场的各个细节,然而高分辨率的网格计算需要更多的计算资源和时间,进一步降低了cfd的计算速度,cfd的许多问题需要考虑不同尺度的流动传热和化学反应,为了获得更准确的模拟结果,需要同时满足多个问题的尺度要求,这增加了计算的复杂性和所需时间,因此,加快反应流仿真计算响应速度并保持高精确模拟结果的加速算法研究意义重大;
2、低马赫数燃烧过程的反应流主要由化学反应和组分输运两个因素决定,反应组分的净反应生成速率与组分浓度和温度成指数函数关系,因而反应区组分浓度在数值上的增减要远高于非反应区:因此,其本身特性表现为:以组分为例,组分浓度较高的区域发生反应的可能性要远高于浓度较低的区域,如图1所示;由此,形成加速算法的初步思路,即利用kmeans算法识别出反应区与非反应区,而对于两个区使用不同的组分浓度计算策略,从而节省算力资源;
3、kmeans算法为常用的聚类算法,但kmeans算法存在以下不足:算法最终结果依赖于初始聚类中心的选择,而初始化聚类中心为随机选取,无法保证聚类结果的唯一性和最优解;因此,如何在对化学反应流的识别中,提高kmeans算法的稳定性,改善其收敛性,同时,使其更适用反应流的仿真计算,也是本发明的主要解决问之一。
技术实现思路
1、本发明的目的在于克服现有技术中的缺陷,提供一种基于改进kmeans算法的高效仿真加速算法,以在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
2、为了实现上述目的,本发明的技术方案如下:
3、一种基于改进kmeans算法的高效仿真加速算法,包括以下内容及步骤:
4、s1:将燃烧反应流场自适应划分或加密的网格分配至各个进程中;
5、s2:基于改进的kmeans算法进行反应区和非反应区的识别,改进的kmeans算法具体为:从反应流数据集的所有数据点中选取k个初始聚类中心,令k=2,分别对应选择所有数据点中的最大值和最小值作为初始聚类中心;计算所有数据点与两个聚类中心的欧式距离,并根据距离最近的原则将各个数据点分配到相应的聚类中;重新计算每个聚类的均值,并将该均值作为新的聚类中心;重复上述聚类计算,直至聚类中心不再变化,或者,聚类中心的变化在允许的范围内,则视为已收敛至目标值,完成识别;
6、s3:将非反应区从整个流场中剥离,对于非反应区,使用一个代表性网格点的计算值进行替代计算;对反应区进行反应流的化学反应计算;
7、s4:各个进程根据分配到计算任务进行并行计算。
8、进一步地,还包括采用并行分区策略加速计算进程,首先将所有网格组分数据集中至一个中央处理单元中;根据步骤s2中改进的kmeans算法对所有网格组分数据进行统一聚类分析;最后通过s1步骤中原预设的进程分配途径将聚类分析结果分发返还至各个进程中。
9、进一步地,s4步骤中还包括在各个进程并行计算过程中对改进的kmeans算法进行负载均衡处理,具体为:统计全局负载的均值global_mean,对全局负载均值进行标记,将该全局负载均值global_mean作为平衡后需要达到的目标负载;根据统计时长的大小从高到低排序,查询到当前状态的最高负载与最低负载的进程;最高负载进程向最低负载进程输送任务,输送的任务量为:loadtrans=min(loadmax-global_mean,global_mean-loadmin);不断重复上述过程,直至所有进程均达到理想的目标负载global_mean。
10、优选地,负载均衡算法中采用基于广播的通信模式实现负载的分配,利用点对点通信实现负载的平衡过程,用于减小负载均衡算法的通信耗时。
11、优选地,步骤s1中的自适应网格划分与加密的方法为:
12、(1)依据上一代的计算结果使用改进kmeans算法进行识别,收集识别结果;
13、(2)将所有的网格等大划分为若干个单元,对反应区在单元中网格数量占比位列全局前90%进行加密;
14、(3)将所有网格均等划分为若干单元,统计每个单元的反应区网格数量的整体占比,综合所有单元排名前90%的单元在下次迭代过程中加密;
15、(4)对标记的网格继续进行加密,再次更新网格,并依此不断重复,直至达到最小网格尺寸时停止。
16、与现有技术相比,本发明的基于改进kmeans算法的高效仿真加速算法具有以下
17、有益效果:
18、1、通过机器学习等方法识别出反应流中的反应区和非反应区,将非反应区从流场中进行剥离,非反应区的计算使用一个具有代表性的值进行替代计算,其余非反应区的网格正常计算组分的生成速率,从而省略了大多数网格的计算,实现计算的加速;通过对比发现,与openfoam原有standard算法相比,经过kmap算法优化加速后的openfoam算法在省略大部分网格计算量的前提下,获得与原算法基本一致的仿真结果,说明kmap算法保持原算法的精度水准;
19、2、改进kmeans算法选择初始位置时由两个随机点改为整个数组的最大值和最小值,使算法更适用于反应流识别需求,且具有更好的稳定性,因为数组的最大值和最小值在数组中是唯一确定的,避免了初始点随机导致的局部最优解,保证最终求解会收敛到唯一值,具有更好的收敛性;由于最大值和最小值通常为数组中的极端情况,在选择初始值时即完成了初步的一次聚类,从而更快的到达收敛状态,减少了算法的迭代次数和计算复杂度;
20、3、经过并行改进的kmap算法消除了由于信息不一致所导致的分类偏差,完成了所有数据的协同计算,提升了算法的适用性和通用性;此外,结合负载均衡算法和kmap算法,有效发挥各自优势,弥补不足,kmap算法为负载均衡提供了更多计算余力,而负载均衡算法则消除了kmap算法进程间的负载差异,结合后的算法能大幅提升kmap算法的加速效果。
1.一种基于改进kmeans算法的高效仿真加速算法,其特征在于,包括以下内容及步骤:
2.根据权利要求1所述的基于改进kmeans算法的高效仿真加速算法,其特征在于:还包括采用并行分区策略加速计算进程,首先将所有网格组分数据集中至一个中央处理单元中;根据步骤s2中改进的kmeans算法对所有网格组分数据进行统一聚类分析;最后通过s1步骤中原预设的进程分配途径将聚类分析结果分发返还至各个进程中。
3.根据权利要求2所述的基于改进kmeans算法的高效仿真加速算法,其特征在于:s4步骤中还包括在各个进程并行计算过程中对改进的kmeans算法进行负载均衡处理,具体为:统计全局负载的均值global_mean,对全局负载均值进行标记,将该全局负载均值global_mean作为平衡后需要达到的目标负载;根据统计时长的大小从高到低排序,查询到当前状态的最高负载与最低负载的进程;最高负载进程向最低负载进程输送任务,输送的任务量为:loadtrans=min(loadmax-global_mean,global_mean-loadmin);不断重复上述过程,直至所有进程均达到理想的目标负载global_mean。
4.根据权利要求3所述的基于改进kmeans算法的高效仿真加速算法,其特征在于:负载均衡算法中采用基于广播的通信模式实现负载分配方法,利用点对点通信实现负载的平衡过程,用于减小负载均衡算法的通信耗时。
5.根据权利要求1所述的基于改进kmeans算法的高效仿真加速算法,其特征在于:步骤s1中的自适应网格划分与加密的方法为: