2021年MathorCup高校数学建模挑战赛b题:三维团簇的能量预测(三等)

微信公众号:数学建模与人工智能

https://github.com/QInzhengk/Math-Model-and-Machine-Learning

三维团簇的能量预测

  • 摘要
  • 一、问题重述 1
  • 二、问题的分析 1
  • 三、模型假设 2
  • 四、符号说明 2
  • 五、模型的建立与求解 3
    • 5.1 问题一:金团簇能量预测模型的建立和Au20全局最优结构的预测 3
      • 5.1.1求解思路 3
      • 5.1.2数据处理 4
      • 5.1.3金团簇能量预测模型的建立与求解 5
        • 5.1.3.1 K近邻回归模型的建立与求解
        • 5.1.3.2随机森林回归模型的建立与求解
        • 5.1.3.3 LightGBM回归模型的建立与求解
        • 5.1.3.4金团簇能量预测模型的选取
      • 5.1.4基于LightGBM回归模型的粒子群优化算法的建立与求解 7
    • 5.2 问题二:金团簇不同结构异构体的产生和Au32的全局最优结构的预测 10
      • 5.2.1求解思路 10
      • 5.2.2基于Monte Carlo方法和L-J势函数的异构体Au32的生成 10
      • 5.2.3基于LightGBM回归模型的粒子群优化算法的Au32最优结构预测与稳定性分析 12
    • 5.3 问题三:硼团簇能量预测模型的建立和B45-全局最优结构的预测 13
      • 5.3.1求解思路 13
      • 5.3.2数据处理 14
      • 5.3.3硼团簇能量预测模型的建立与求解 14
      • 5.3.4基于随机森林回归模型的粒子群优化算法的建立与求解 15
    • 5.4 问题四:硼团簇不同结构异构体的产生和B40-的全局最优结构的预测 17
      • 5.4.1求解思路 17
      • 5.4.2基于随机森林回归模型的粒子群优化算法的B40-最优结构预测与稳定性分析 17
  • 六、模型评价与改进 18
  • 七、参考文献 19
  • 八、附录 20
  • 未完待续
  • 官方优秀论文
  • 2020年第十届MathorCup高校数学建模挑战赛A题:无车承运人平台线路定价问题(二等)

摘要

团簇可以分为金属团簇和非金属团簇,由于金属团簇具有良好的催化性能,因此备受关注。但由于团簇的势能面过于复杂,同时有时候还需要考虑相对论效应等,所以搜索团簇的全局最优结构显得尤为困难。其中,传统的理论计算方法研究效率较低且非常耗时。因此,需要对这种方法加以改进,例如:考虑全局优化算法,结合机器学习等方法,训练团簇结构和能量的关系,从而预测新型团簇的全局最优结构,有利于发现新型团簇材料的结构和性能。本文根据团簇数据样本,通过机器学习和优化算法以及软件编程,对其数据进行处理和预测搜索,完成了以下几方面的问题:
针对问题一,首先,通过Python编程读取xyz文件将其整合,并求出原始数据平均值对缺失的155号数据进行填充。通过金团簇Au20的原子坐标、原子数目和团簇能量来预测金团簇能量,利用库伦矩阵和特征值提取转换成向量以满足机器学习算法,然后利用K近邻回归模型、随机森林回归模型、LightGBM回归模型算法对金团簇能量进行预测,通过MSE评价指标选取最优算法为LightGBM回归模型。最后利用粒子群优化算法与其结合搜索和预测出金团簇Au20的全局最优结构的能量为-1558.381512。
针对问题二,首先,根据金团簇Au20的结构,通过Monte Carlo方法和L-J势函数模拟生成异构体Au32的结构,重新训练LightGBM回归模型,然后利用基于LightGBM回归的粒子群优化算法预测出全局最优结构的能量为-2484.139072。通过分析团簇的对称性以及平均键合能、一级解离能和二级解离能确定结构相对稳定。
针对问题三,同问题一,首先通过Python编程读取xyz文件将其整合,利用库伦矩阵和特征值提取转换成向量以满足机器学习算法且保证原始数据不丢失,然后利用随机森林回归模型、LightGBM回归模型算法对硼团簇能量进行预测,并且对两种模型进行网格搜索找到最优参数,来达到整体模型的偏差和方差的大和谐,通过MSE评价指标选取最优算法为随机森林回归模型。最后利用粒子群优化算法与其结合,搜索和预测出硼团簇B45-的全局最优结构的能量为-114059.5529096。
针对问题四,通过Python编程首先对硼团簇B45-的坐标通过排列组合列出40个坐标所有情形共有 个,然后根据L-J势能函数计算所有情形的势能,取势能最低的作为B40-的坐标。最后通过B40-的坐标训练随机森林回归模型,利用基于随机森林回归模型的粒子群优化算法找到硼团簇B40-的全局最优结构的能量为-101138.961718,最后分析稳定性较为稳定且比B45-稳定。
关键词:团簇;LGB回归模型;随机森林回归模型;蒙特卡洛;粒子群优化算法

一、问题重述 1

更新时间:2022/4/13

二、问题的分析 1

问题一的分析:问题一要求通过附件给出的1000个金团簇Au20的结构,建立金团簇能量预测的数学模型,并预测金团簇Au20的全局最优结构,描述形状。首先,观察所给原始数据,发现155号数据缺失,通过计算原始数据平均值对缺失值进行填补。其次,为满足机器学习算法的向量输入需求,通过库伦矩阵等方法将原子坐标进行转换,利用机器学习算法得到金团簇预测模型。最后,结合粒子群优化算法搜索和预测金团簇Au20的全局最优结构并画出图形。
问题二的分析:问题二要求在问题一的基础上设计算法,产生金团簇不同结构的异构体,自动搜索和预测金团簇Au32的全局最优结构,并描述其几何形状,分析稳定性。用Monte Carlo方法及L-J势函数模拟金团簇Au20异构体Au32的生成。并用基于LightGBM回归的粒子群优化算法搜索和预测金团簇Au32的全局最优结构并画出图形。通过分析团簇的对称性以及平均键合能、一级解离能和二级解离能分析其稳定性。
问题三的分析:问题三要求通过附件给出的3751个硼团簇B45-的结构,建立硼团簇能量预测的数学模型,并预测硼团簇B45-的全局最优结构,描述形状。同问题一为满足机器学习算法的向量输入需求,通过库伦矩阵等方法将原子坐标进行转换,利用机器学习算法得到硼团簇预测模型。最后,结合粒子群优化算法搜索和预测硼团簇B45-的全局最优结构并画出图形。
问题四的分析:问题四要求在问题三的基础上设计算法,产生硼团簇不同结构的异构体,自动搜索和预测硼团簇B40-的全局最优结构,并描述其几何形状,分析稳定性。首先对硼团簇B45-的坐标通过排列组合列出40个坐标所有情形,根据势能函数计算所有情形的势能[1],取势能最低的作为B40-的坐标。最后通过B40-的坐标训练模型,利用基于随机森林回归模型的粒子群优化算法找到硼团簇B40-的全局最优结构并画出图形。通过分析团簇的对称性以及平均键合能、一级解离能和二级解离能分析其稳定性。

三、模型假设 2

(1)数据样本中不存在不精确数据。
(2)团簇在空间中的平移或旋转都不会影响基于原子坐标的能量预测模型。
(3)使用原子直接的距离来描述体系的结构适用于当前团簇原子规模。
(4)基于原子坐标的机器学习模型可以一定程度上描述体系的对称性。

四、符号说明 2

五、模型的建立与求解 3

5.1 问题一:金团簇能量预测模型的建立和Au20全局最优结构的预测 3

5.1.1求解思路 3

首先,通过Python编程读取xyz文件将其整合,并求出原始数据平均值对缺失的155号数据进行填充。由于原始数据中只包含金团簇Au20的原子坐标、原子数目和团簇能量,因此要通过原子坐标和原子数目来预测金团簇能量,就需要一种描述方法将随机生成的结构信息表征成数值向量的模式,同时还要保证原始数据不能丢失,利用库伦矩阵和特征值提取转换成向量以满足机器学习算法,然后利用K近邻回归模型、随机森林回归模型、LightGBM回归模型算法对金团簇能量进行预测,通过MSE评价指标选取最优算法。最后利用粒子群优化算法与其结合搜索和预测出金团簇Au20的全局最优结构并画出图形。

5.1.2数据处理 4

5.1.3金团簇能量预测模型的建立与求解 5

5.1.3.1 K近邻回归模型的建立与求解

5.1.3.2随机森林回归模型的建立与求解

随机森林算法是Breiman[3]提出的群体分类模型的一种,能有效分析非线性、共线性和具有交互作用数据,在变量和数据的使用上进行随机化生成很多树,随机产生样本及节点变量,使得随机森林中的每一个棵树都不尽相关,进行bootstrap抽样,在原始训练样本集N中多次有放回地随机抽取n个新的训练样本集,生成n个分类树组成的随机森林,得到模型最优时的森林,当出现新样本时随机森林中的每一个树分别进行判断。
通过Python使用sklearn库调用随机森林回归算法进行金团簇能量预测,将在数据处理中得到的32×1维的特征向量作为特征变量,金团簇Au20能量作为目标变量,划分80%的训练集和20%的测试集进行求解。在sklearn中直接调用maen_squared_error( )函数计算MSE为0.458028,模型运行时间为2.342937秒。
随机森林回归模型使用便捷,特征无须做过多变换,具有较高精度,模型并行训练快;但结果不容易解释。

5.1.3.3 LightGBM回归模型的建立与求解

LightGBM(Light Gradient Boosting Machine)是微软亚洲研究所DMYK团队的一个开源的算法,李淑锦, 嵇晓佳[4]认为LGB回归模型基于直方图进行计算获得更高的速度和更高的效率,占用更少的内存,支持并行计算,并且由于缩减了训练时间因此可以进行大数据处理。LGB回归模型在计算时会将浮点型数值转化成离散型数值,从而生成了一个直方图。并且在图中累计离散数值统计量,降低占用的内存来找最佳分割点,算法流程图如图1.3所示。

2021年MathorCup高校数学建模挑战赛b题:三维团簇的能量预测(三等)_第1张图片
通过Python调用LightGBM回归算法进行金团簇能量预测,将在数据处理中得到的32×1维的特征向量作为特征变量,金团簇Au20能量作为目标变量,划分80%的训练集和20%的测试集进行求解。计算MSE为0.364445,模型运行时间为12.187506秒。发现LightGBM回归模型精度高,但训练时间长,模型复杂。

5.1.3.4金团簇能量预测模型的选取

将K近邻回归模型、随机森林回归模型和LightGBM回归模型预测准确率进行对比,如图1.4所示。2021年MathorCup高校数学建模挑战赛b题:三维团簇的能量预测(三等)_第2张图片
K近邻回归模型在三种模型中MSE最大,精确度较低,故在随机森林回归模型和LightGBM回归模型中进行选取,又比较算法的时间开销如表1.1所示
表1.1 算法时间开销

算法 运行时间/ms
KNeighbors 96.31
RandomForest 2342.94
LightGBM 12187.51

综合考虑,选取LightGBM回归模型作为金团簇能量预测的模型。

5.1.4基于LightGBM回归模型的粒子群优化算法的建立与求解 7

5.2 问题二:金团簇不同结构异构体的产生和Au32的全局最优结构的预测 10

5.2.1求解思路 10

5.2.2基于Monte Carlo方法和L-J势函数的异构体Au32的生成 10

5.2.3基于LightGBM回归模型的粒子群优化算法的Au32最优结构预测与稳定性分析 12

5.3 问题三:硼团簇能量预测模型的建立和B45-全局最优结构的预测 13

5.3.1求解思路 13

首先,根据金团簇Au20的结构,通过Monte Carlo方法和L-J势函数模拟生成异构体Au32的结构,重新训练LightGBM回归模型,然后利用基于LightGBM回归的粒子群优化算法预测出全局最优结构。通过分析团簇的对称性以及平均键合能、一级解离能和二级解离能分析其稳定性[5]。

5.3.2数据处理 14

5.3.3硼团簇能量预测模型的建立与求解 14

5.3.4基于随机森林回归模型的粒子群优化算法的建立与求解 15

5.4 问题四:硼团簇不同结构异构体的产生和B40-的全局最优结构的预测 17

5.4.1求解思路 17

通过Python编程首先对硼团簇B45-的坐标通过排列组合列出40个坐标所有情形共有 个,然后根据L-J势能函数计算所有情形的势能,取势能最低的作为B40-的坐标。最后通过B40-的坐标训练随机森林回归模型,利用基于随机森林回归模型的粒子群优化算法找到硼团簇B40-的全局最优结构并画出图形。通过分析团簇的对称性以及平均键合能、一级解离能和二级解离能分析其稳定性。

5.4.2基于随机森林回归模型的粒子群优化算法的B40-最优结构预测与稳定性分析 17

六、模型评价与改进 18

对于问题一:问题一中选取了K近邻回归模型、随机森林回归模型、LightGBM回归模型对金团簇能量进行预测,随机森林回归模型和LightGBM回归模型准确度较高,运行时间较短,加快了粒子群优化算法搜索金团簇Au20的最优结构的速度。对于问题一只选取了三种机器学习模型而且并没有进行调参,对此增加了多层神经网络和支持向量回归模型并进行参数调优,发现LightGBM回归模型精确度最高为0.347896且运行速度较快。并对粒子群优化算法种群数和迭代次数扩大在其中加入金属对称性的约束条件,发现找到的最优结构更好能量更低。
对于问题二:在产生金团簇异构体时采取的是L-J势函数,对此进行改进采取LJ+AT势能函数发现产生的异构体更稳定,预测的最优结构对应的能量更低。
对于问题三、问题四:采取的是随机森林回归模型和LightGBM回归模型做比较选取对此进行改进,将随机森林回归模型和LightGBM回归模型进行融合发现效果更好。因为预测向量中的每个值都接近于真实值时,才能保证在进行局部优化或全局搜索时的方向和真实情况是一致的。所以建立算法置信度模型,置信度定义为预测误差小于给定允许误差的点所占的比例,这个比例越大,表明算法越可靠,从结果看在准确度方面是可行的。

七、参考文献 19

八、附录 20

第一题:

read_file_1.py:
import numpy
from scipy.spatial.distance import cdist
def read_xyz_comment(path):
    with open(path, 'r') as f:
        for i, line in enumerate(f):
            if(i==1):
                comment=float(line)
    return comment
def read_xyz_coords(path):
    elements = []
    coords = []
    with open(path, 'r') as f:
        for i, line in enumerate(f):
            if i < 2:
                continue
            ele, x, y, z = line.strip().split()
            point = [float(x), float(y), float(z)]
            elements.append(ele)
            coords.append(point)
    return coords

#计算库伦矩阵
def get_coulomb_matrix(numbers, coords, alpha=1, use_decay=False):
......

未完待续

官方优秀论文

链接:https://pan.baidu.com/s/1ytLtH2cqSnmD9DrWZ2QS-g
提取码:yhzj

2020年第十届MathorCup高校数学建模挑战赛A题:无车承运人平台线路定价问题(二等)

你可能感兴趣的:(数学建模,Python,算法,python,机器学习,人工智能,数据分析)