2022国赛数学建模思路汇总A题B题C题D题 高教社杯

一、2022 高教社杯数学建模竞赛

2022国赛数学建模竞赛的时间确定为9月15日(周四)18时至9月18日(周日)20时。

A君为大家准备了一系列的学习资料,本次比赛A君也会不断提供赛题资料和思路给大家,帮助大家顺滑答题。


超强建模实例

学长多年以来建模获奖的致胜宝典,基本囊括了所有竞赛所需的数学模型,包括详细的具体建模过程;

竞赛出题后,来这搜索相关模型,改一下然后套用,拿个国二都没问题!

这是学长多年保奖秘诀(/≧▽≦)/,今天分享给大家~

(获取见文末)
在这里插入图片描述超级详细的现成建模模型,比赛的时候可以直接用:

每个文件如下:
在这里插入图片描述
今年的深圳杯、电工杯、华数杯、去年的国赛都能在里面找到相似题型和完整解法!

二、赛题思路

思路分享:
https://blog.csdn.net/dc_sinor/article/details/126876855


三、往年国赛常见问题类型

趁现在赛题还没更新,A君给大家汇总一下华数杯经常使用到的数学模型,题目八九不离十基本属于一下四种问题,对应的解法A君也相应给出

分别为:

  • 分类模型
  • 优化模型
  • 预测模型
  • 评价模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 分类问题

判别分析:

又称“分辨法”,是在分类确定的条件下,根据某一研究对象的各种特征值判别其类型归属问题的一种多变量统计分析方法。

其基本原理是按照一定的判别准则,建立一个或多个判别函数;用研究对象的大量资料确定判别函数中的待定系数,并计算判别指标;据此即可确定某一样本属于何类。当得到一个新的样品数据,要确定该样品属于已知类型中哪一类,这类问题属于判别分析问题。

聚类分析:

聚类分析或聚类是把相似的对象通过静态分类的方法分成不同的组别或者更多的子集,这样让在同一个子集中的成员对象都有相似的一些属性,常见的包括在坐标系中更加短的空间距离等。

聚类分析本身不是某一种特定的算法,而是一个大体上的需要解决的任务。它可以通过不同的算法来实现,这些算法在理解集群的构成以及如何有效地找到它们等方面有很大的不同。

神经网络分类:

BP 神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。RBF(径向基)神经网络:径向基函数(RBF-Radial Basis Function)神经网络是具有单隐层的三层前馈网络。它模拟了人脑中局部调整、相互覆盖接收域的神经网络结构。感知器神经网络:是一个具有单层计算神经元的神经网络,网络的传递函数是线性阈值单元。主要用来模拟人脑的感知特征。线性神经网络:是比较简单的一种神经网络,由一个或者多个线性神经元构成。采用线性函数作为传递函数,所以输出可以是任意值。自组织神经网络:自组织神经网络包括自组织竞争网络、自组织特征映射网络、学习向量量化等网络结构形式。K近邻算法: K最近邻分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。


3.2 优化问题

线性规划:

研究线性约束条件下线性目标函数的极值问题的数学理论和方法。英文缩写LP。它是运筹学的一个重要分支,广泛应用于军事作战、经济分析、经营管理和工程技术等方面。建模方法:列出约束条件及目标函数;画出约束条件所表示的可行域;在可行域内求目标函数的最优解及最优值。

非线性规划

非线性规划是具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。非线性规划研究一个 n元实函数在一组等式或不等式的约束条件下的极值问题,且 目标函数和约束条件至少有一个是未知量的非线性函数。目标函数和约束条件都是 线性函数的情形则属于线性规划。

整数规划:

规划中的变量(全部或部分)限制为整数,称为整数规划。若在线性模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法往往只适用于整数线性规划。一类要求问题的解中的全部或一部分变量为整数的数学规划。从约束条件的构成又可细分为线性,二次和非线性的整数规划。

动态规划:

包括背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等。

动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。

多目标规划:

多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。任何多目标规划问题,都由两个基本部分组成:

(1)两个以上的目标函数;
(2)若干个约束条件。有n个决策变量,k个目标函数, m个约束方程,则:

Z=F(X)是k维函数向量,Φ(X)是m维函数向量;G是m维常数向量;


3.3 预测问题

回归拟合预测

拟合预测是建立一个模型去逼近实际数据序列的过程,适用于发展性的体系。建立模型时,通常都要指定一个有明确意义的时间原点和时间单位。而且,当t趋向于无穷大时,模型应当仍然有意义。将拟合预测单独作为一类体系研究,其意义在于强调其唯“象”性。一个预测模型的建立,要尽可能符合实际体系,这是拟合的原则。拟合的程度可以用最小二乘方、最大拟然性、最小绝对偏差来衡量。

灰色预测

灰色预测是就灰色系统所做的预测。是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来寻找系统变动的规律,生成有较强规律性的数据序列,然后建立相应的微分方程模型,从而预测事物未来发展趋势的状况。其用等时距观测到的反映预测对象特征的一系列数量值构造灰色预测模型,预测未来某一时刻的特征量,或达到某一特征量的时间。

马尔科夫预测:是一种可以用来进行组织的内部人力资源供给预测的方法.它的基本 思想是找出过去人事变动的 规律,以此来推测未来的人事变动趋势.转换矩阵实际上是转换概率矩阵,描述的是组织中员工流入,流出和内部流动的整体形式,可以作为预测内部劳动力供给的基础.

BP神经网络预测

BP网络(Back-ProPagation Network)又称反向传播神经网络, 通过样本数据的训练,不断修正网络权值和阈值使误差函数沿负梯度方向下降,逼近期望输出。它是一种应用较为广泛的神经网络模型,多用于函数逼近、模型识别分类、数据压缩和时间序列预测等。

支持向量机法

支持向量机(SVM)也称为支持向量网络[1],是使用分类与回归分析来分析数据的监督学习模型及其相关的学习算法。在给定一组训练样本后,每个训练样本被标记为属于两个类别中的一个或另一个。支持向量机(SVM)的训练算法会创建一个将新的样本分配给两个类别之一的模型,使其成为非概率二元线性分类器(尽管在概率分类设置中,存在像普拉托校正这样的方法使用支持向量机)。支持向量机模型将样本表示为在空间中的映射的点,这样具有单一类别的样本能尽可能明显的间隔分开出来。所有这样新的样本映射到同一空间,就可以基于它们落在间隔的哪一侧来预测属于哪一类别。


3.4 评价问题

层次分析法

是指将一个复杂的 多目标决策问题 作为一个系统,将目标分解为多个目标或准则,进而分解为多指标(或准则、约束)的若干层次,通过定性指标模糊量化方法算出层次单排序(权数)和总排序,以作为目标(多指标)、多方案优化决策的系统方法。

优劣解距离法

又称理想解法,是一种有效的多指标评价方法。这种方法通过构造评价问题的正理想解和负理想解,即各指标的最大值和最小值,通过计算每个方案到理想方案的相对贴近度,即靠近正理想解和远离负理想解的程度,来对方案进行排序,从而选出最优方案。

模糊综合评价法

是一种基于模糊数学的综合评标方法。 该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。 它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。

灰色关联分析法(灰色综合评价法)

对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者关联程度较高;反之,则较低。因此,灰色关联分析方法,是根据因素之间发展趋势的相似或相异程度,亦即“灰色关联度”,作为衡量因素间关联程度的一种方法。

典型相关分析法:是对互协方差矩阵的一种理解,是利用综合变量对之间的相关关系来反映两组指标之间的整体相关性的多元统计分析方法。它的基本原理是:为了从总体上把握两组指标之间的相关关系,分别在两组变量中提取有代表性的两个综合变量U1和V1(分别为两个变量组中各变量的线性组合),利用这两个综合变量之间的相关关系来反映两组指标之间的整体相关性。

主成分分析法(降维)

是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

因子分析法(降维)

因子分析是指研究从变量群中提取共性因子的统计技术。最早由英国心理学家C.E.斯皮尔曼提出。他发现学生的各科成绩之间存在着一定的相关性,一科成绩好的学生,往往其他各科成绩也比较好,从而推想是否存在某些潜在的共性因子,或称某些一般智力条件影响着学生的学习成绩。因子分析可在许多变量中找出隐藏的具有代表性的因子。将相同本质的变量归入一个因子,可减少变量的数目,还可检验变量间关系的假设。

BP神经网络综合评价法

是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

常用技术 - 退火算法

放一个年年都用到的技术,退火算法

按我个人的理解的话,是解决组合优化的问题是,使用随机化的方法得到新解,如果新解比旧解要好,那么就接受。如果新解没有旧解好,那么也按一定概率[exp(-delta_f/T)]接受。T是一个温度,内循环就产生新解直到达到平稳,外循环就退火(缓慢的速率温度)。到结束温度时,会收敛到最优解。那么我用的示例是旅行商问题。直接贴代码吧。

from matplotlib import pyplot as plt
import numpy as np

def coordinate_init(size):
    #产生坐标字典
    coordinate_dict = {}
    coordinate_dict[0] = (0, 0)#起点是(0,0)
    for i in range(1, size + 1):#顺序标号随机坐标
        coordinate_dict[i] = (np.random.uniform(0, size), np.random.uniform(0, size))
    coordinate_dict[size + 1] = (0, 0)#终点是(0,0)
    return coordinate_dict

def distance_matrix(coordinate_dict,size):#生成距离矩阵
    d=np.zeros((size+2,size+2))
    for i in range(size+1):
        for j in range(size+1):
            if(i==j):
                continue
            if(d[i][j]!=0):
                continue
            x1 = coordinate_dict[i][0]
            y1 = coordinate_dict[i][1]
            x2 = coordinate_dict[j][0]
            y2 = coordinate_dict[j][1]
            distance=np.sqrt((x1-x2)**2+(y1-y2)**2)
            if(i==0):
                d[i][j]=d[size+1][j]=d[j][i]=d[j][size+1]=distance
            else:
                d[i][j]=d[j][i]=distance
    return d

def path_length(d_matrix,path_list,size):#计算路径长度
    length=0
    for i in range(size+1):
        length+=d_matrix[path_list[i]][path_list[i+1]]
    return length

def new_path(path_list,size):
    #二交换法
    change_head = np.random.randint(1,size+1)
    change_tail = np.random.randint(1,size+1)
    if(change_head>change_tail):
        change_head,change_tail=change_tail,change_head
    change_list = path_list[change_head:change_tail + 1]
    change_list.reverse()#change_head与change_tail之间的路径反序
    new_path_list = path_list[:change_head] + change_list + path_list[change_tail + 1:]
    return change_head,change_tail,new_path_list

def diff_old_new(d_matrix,path_list,new_path_list,head,tail):#计算新旧路径的长度之差
    old_length=d_matrix[path_list[head-1]][path_list[head]]+d_matrix[path_list[tail]][path_list[tail+1]]
    new_length=d_matrix[new_path_list[head-1]][new_path_list[head]]+d_matrix[new_path_list[tail]][new_path_list[tail+1]]
    delta_p=new_length-old_length
    return delta_p


T_start=2000#起始温度
T_end=1e-20#结束温度
a=0.995#降温速率
Lk=50#内循环次数,马尔科夫链长
size=20
coordinate_dict=coordinate_init(size)
print(coordinate_dict)#打印坐标字典
path_list=list(range(size+2))#初始化路径
d=distance_matrix(coordinate_dict,size)#距离矩阵的生成
best_path=path_length(d,path_list,size)#初始化最好路径长度
print('初始路径:',path_list)
print('初始路径长度:',best_path)
best_path_temp=[]#记录每个温度下最好路径长度
best_path_list=[]#用于记录历史上最好路径
balanced_path_list=path_list#记录每个温度下的平衡路径
balenced_path_temp=[]#记录每个温度下平衡路径(局部最优)的长度
while T_start>T_end:
    for i in range(Lk):
        head, tail, new_path_list = new_path(path_list, size)
        delta_p = diff_old_new(d, path_list, new_path_list, head, tail)
        if delta_p < 0:#接受状态
            balanced_path_list=path_list = new_path_list
            new_len=path_length(d,path_list,size)
            if(new_len

说实话,我最讨厌别人的博客只有代码没有输出,所以,输出还是要有的:

{0: (0, 0), 1: (8.0813445997638, 19.378598885734345), 2: (5.9336947559652735, 18.43334356701462), 3: (2.4187354288286844, 11.208318685158517), 4: (11.364680404115896, 17.838011084801682), 5: (14.57899298590396, 10.443803487389676), 6: (14.475687688871977, 6.430692753878264), 7: (15.564547884718248, 1.8489819656041484), 8: (2.762034307781256, 1.3609270597085188), 9: (2.4449326896325507, 13.971590679990305), 10: (6.376590999061471, 13.590205047457003), 11: (2.0008565516450005, 0.25779568392405805), 12: (8.756514935267091, 15.616855386568506), 13: (8.19333746755698, 14.267482040877905), 14: (6.688671060971291, 7.594062408648769), 15: (16.826772155106706, 18.439257279177564), 16: (0.17109735207725185, 9.772548332790812), 17: (10.057710887083482, 4.213811533920735), 18: (14.404568409630825, 16.182396066315434), 19: (6.522071276732497, 4.044136354883117), 20: (3.2651888440785837, 14.12486494048631), 21: (0, 0)}
初始路径: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
初始路径长度: 225.0507842833548
结束温度的局部最优路径: [0, 11, 8, 19, 14, 17, 7, 6, 5, 18, 15, 4, 1, 2, 12, 13, 10, 20, 9, 3, 16, 21]
结束温度的局部最优路径长度: 78.12501363830815
最好路径: [0, 11, 8, 19, 14, 17, 7, 6, 5, 18, 15, 4, 1, 2, 12, 13, 10, 20, 9, 3, 16, 21]
最好路径长度: 78.12501363830815

在这里插入图片描述

你可能感兴趣的:(2022国赛数学建模,2022高教社杯,2022高教社杯思路,2022国赛数学建模思路,算法,数学建模,编程)