数学建模社区-数学中国

标题: 常见数学建模方法学习总结及资料汇总 [打印本页]

作者: 杨利霞    时间: 2021-7-16 15:27
标题: 常见数学建模方法学习总结及资料汇总
" O6 }# Q& @6 g- v+ V5 k: H; `
常见数学建模方法学习总结及资料汇总6 ^6 \6 {; |* A% @1 M+ W

1 m; Z. g. }' m5 \, J- u数学建模方法
- V  g* z" N9 l9 M( n* |* r9 d前言# b9 l! k1 \1 ?. x2 f' Z# m2 ]3 t
层次分析法(AHP)
3 Z4 b) l2 {3 }多属性决策模型
4 V, G& Z3 ]8 U7 _模拟退火模型) ?6 F# U7 D/ Z* Y7 M6 @
种群竞争模型3 h  p! p9 Q/ b! @; _
遗传算法模型
/ X; T) f. e3 ]/ P; x: \: i- B线性规划模型/ o% a2 _. _4 q1 W( n6 m7 s
非线性规划模型
  K3 z7 K7 E6 s% ^" u1 R5 ]& RPCA主成分分析8 f" `8 i9 [  j! }$ W* }0 ]/ s
聚类分析+ K+ k: Q6 ~6 O+ U( J. t, W5 `
多元回归分析6 ~; o2 ~! ~! m
前言9 q7 Y; s6 j; D# F. P' N: f% ?$ Q
这是我在进行初级的数学建模时进行的一些原理学习,网上资料显得比较杂乱无章,这里我对一些数学建模方法的文档和视频资料进行了收集并汇总了以下写的好的,在学习时跟着这些资料学习并看看我的汇总就可以达到一个比较好的效果啦~0 ?- q- n, X$ J( `) k
/ [  @9 q! p* J4 {2 a
: s( g& N  ?$ k3 t* U
层次分析法(AHP)
" C" d$ h+ C5 v9 _  F2 n2 A) D, {. }$ e应用:决策。(择优选择方案、优劣等级划分…)
2 R4 k, s2 e! s9 D. W& z
9 g9 J/ V- h7 V/ u; b
* E# m% Y4 R/ C
原理:根据问题的性质,使问题归结为最低层(供决策的方案、措施)到中间层(指标),中间层到最高层(总目标)的相对权值,通过一系列计算,来确定优劣性。
5 R& J2 K$ s/ c# a- f. o其中,中间层到最高层的相对权值,表示考虑方案的不同指标对最终结果选择的权重。最底层到中间层的相对权值,表示单个指标下,表现多个方案的好坏对比的权重。
  Q( q  B3 E0 X# F8 p1 y
/ A& Y# ]- _9 l7 P
) O! m) O- s/ k  m! a% {( t7 p
基本步骤:  p; u7 ?  \7 K3 t  q. E; {
1、划分层次(层次模型):分为目标——准则层(指标)——方案层。; d5 X2 N' Q( A) u$ q5 a
2、构造判断矩阵(又称成对比较矩阵)。根据1~9尺度进行相应填写。
  {, g- Q1 i1 C* I( o) ?7 c; h/ W3、一致性检验与求权重矩阵 。CR(一致性比率)<0.1则成对比较矩阵通过。一致性检验是检验判断构造的矩阵是否合格。权重矩阵是用来计算最终方案权值的。
+ ~6 X* j  }7 h' f# ~. _4、根据权重矩阵求最优方案。
5 Y6 `: I2 c* B; z. N! R6 ?+ V; Q3 M0 e( ~

9 l% f; J/ a6 g. u; \" ^视频学习:
+ a# _3 G! e8 y' t/ e) C, |先看:
0 B- T! P8 s7 V; ]2 _- m' j- ]链接: AHQ初步学习; p- K# l6 R# k
后看: AHQ加深理解
! p1 x7 h7 @2 b7 A" _! @9 U# A* o) J7 ^7 z4 F( m
* u- Y& V( u8 e! X" A0 s
多属性决策模型8 E/ ]- A+ Q+ s: H4 }9 K
应用:决策。
: j8 o% {4 o$ O0 A* l7 @6 i, d1 w8 {( B$ G

+ c9 N2 l& ?4 }原理:类似于一般的加权求总分。主要思想是把量纲不同的数值转化为同一个量纲,然后构建权重矩阵,计算加权分值进行决策。
) z) H' h6 Q6 ~9 g; p, J7 o' f3 t
; c! x  c7 y7 x* g( z( `

" z- w  \7 ^8 ]5 w基本步骤:5 F2 K" L: q$ _8 N: e- V/ r: F  c
加权算数平均算子,属性值类型归一化。, i, L% p* r+ h
1、根据属性类型,划分为效益型、成本型等,对决策矩阵(属性值构成的矩阵)进行归一化。2 K  H7 B6 _" D# n- a" `7 v
2、构建成对比较矩阵,得到各个属性指标权重矩阵。(同AHP,也要进行一致性检验)
  H' Y: P: `# V2 }' h7 k3、根据权值矩阵与归一化的决策矩阵确定每个方案的最终权值,进行决策。
2 t- q) {+ D* v, X1 `1 d( c+ u8 b6 v. [

0 J2 O  r7 ?9 |4 e" L( u6 Z文档资料:多属性决策模型
5 q3 D' n& P' ~3 F8 o7 U, |  `视频资料:多属性决策模型
" S! }5 B4 M- I7 U' d& ]
# q- C" T. h* V3 f  y& B1 {- N
# A& G* J- |1 N, i
层次分析法和多属性决策模型的区别:层次分析法针对于定性问题定量分析,多属性决策模型则不然。即如果“属性值”并不是一个能用“数值”很好地表示的值的话,采用AHP的1~9尺度是更优方案。如果“属性值”全都是适合的“数值”的话,就用多属性决策模型的方案。, J9 d/ P: Y6 Y+ X& X3 e
) o2 S, t: w# F! A: o

- x$ T( f/ R  g) K+ m: j5 _模拟退火模型
% U' k4 V: o8 g$ D应用:无法确定能否在规定时间内找到最优解的NP问题——旅行商问题(TSP,访问每一座城市并回到最初城市的最短回路);背包问题(在限定的总重量下,如何选择物品使总价值最高);最大流问题(充分利用管道能力,使总流量最大);图着色问题(用最少的颜色,对地图进行着色);…& V- ~% K0 f& z+ C4 M: b
0 {3 i# u) A% N& o6 q6 r
, F: u  R: D" L7 n
原理:一种寻找最优解的算法,传统的算法可能被局限于局部最优解,模拟退火算法给出一定概率使计算中能够跳出局部最优解继续求解,当求出更优解时可以得到答案。! w: |6 S: B' @$ T

* t* I/ N+ W& z+ O5 i6 l
! y# J( z6 j1 a- d. y
基本步骤:% Y' d. I* o% R) i' L  o/ f
1、初始化。(T温度,S初始解状态,迭代次数)
, \9 |9 g6 ?0 W6 C' f5 D! j) w2、如果计算的最新状态趋近于最优解,则把这个最优解作为下一次计算的起点。- V: B" F" ^& M) O8 s  K8 T/ z. Y
3、如果计算的最新状态趋远于最优解,则根据方案取一定概率,使新的状态作为下一次计算的起点。
. \, X* b" F$ j8 P8 b5 _4、重复1、2、3步骤,直至达到平衡状态并满足条件。* E% o5 Z* X7 R/ O9 ?" O

! `, [2 t) t7 W% G# y8 J
. r5 G; O5 ^/ h5 w
文档资料:& U- f4 q4 f6 f/ p# ?5 ]5 {
模拟退火模型通俗理解- b) l8 y1 y/ p* `, r, k$ l
模拟退火模型加深理解- V8 k' p$ G; N
7 }* Q- h! M% y4 Z  t7 W
( D9 O' T5 \0 _% d8 [
种群竞争模型
+ P1 R+ C% l# W. S8 Z' F/ C% n应用:种群之间的竞争,优胜劣汰;产品的市场竞争模型…1 P. U1 F2 r- O* [' [

: K8 i  u7 r9 j$ ]% s( T
) ?( r9 x7 z& z) F! t, K5 f
原理:当两个物种共同生存,相互会起到阻滞作用时建立的模型。种群竞争设置的参数为【初始数量,自然增长率,环境容量,种群对资源的消耗量】。
7 @1 E- y; s9 `9 K6 C( {- ~" w( L- u# G$ f9 T; |
: B6 f+ R  g9 Z2 W/ p
基本步骤:无。这个模型的资料大多都很简略。
% Q* K' G: |; V; B: X6 u1 l# q) B9 C
# Z9 u5 Q% w9 p1 B8 I* ^
文档资料:种群竞争模型% O! M! H; b) |8 K2 k
% I- O$ _4 d( j, f- P

0 s: j: t/ o. d' [9 N0 h  b: `6 F遗传算法模型& Z, e0 L# r- d4 T
应用:对于同一个物种,有着个体之间性能的差异,遗传算法针对的是物种内的优胜劣汰。
5 y: c- W2 H6 t- E- T" k+ f. x5 _0 I+ c
$ m; `! s4 R; f$ Q
原理:建立遗传算法模型,通过N代的遗传、交叉、变异、复制,找到问题的最优解。
- h/ K, h) X& w基本步骤:8 g5 A' @, S5 U- v  e0 `1 m' v
$ _' t. ?) ?& F8 F+ Q1 J" i

9 b. Q; F6 ?, o, Y/ M1、根据初始化种群个体来初始化编码和数据。
. T% X0 [  ~  f8 B6 w5 ~3 Y' I- K2、评估个体的适应度,作为优胜劣汰的评价标准。8 k2 \  S- r3 J6 [" P' _
3、通过选择、交叉、变异、复制(为了保证最优个体能存活,对当代最优个体直接复制到下一代)来决定下一代的种群群体。
6 u. c' |- Q9 F' p3 t5 X- y! `4、重复步骤1~3,最好的迭代结果次数是种群群体性能趋于稳定时。
. F& U! U+ @3 p* Y; c5 `; i' g. ?  J4 O# O6 {8 A5 [
# z$ k2 M9 E' [9 h" A, {) v
文档资料:
) X# i( X  b/ A/ i7 ~  M) b' ]) c遗传算法通俗理解
* J. v  B% R/ C2 |" _! h, F& u遗传算法加深理解$ H1 b: h. s$ @

4 Y+ }; ~5 C! I5 e
, u) l, r+ }0 ^4 o2 r  K
线性规划模型, k/ R" ^% M: A' o8 a- l+ [
应用:对于有线性限制的问题求最优解。
* B* e2 `9 Y- o/ o2 }
" S# z6 ~$ w& M! u) |4 i$ ]5 t

% S3 U$ M  n) v/ X; Q原理:根据限制建立线性关系,根据决策函数求最优解。高中的东西了。如果存在最优解,只能在可行域的边界找到(一般为顶点)。
9 R$ d# B$ I6 k2 x- H/ g; d, O6 m% l2 [

, [2 t! e* z' H' b4 o4 o4 W基本步骤:
& j! ?1 K: s+ C8 o4 g1、假设/寻找决策变量。(影响目标结果且有条件限制的变量)7 R  ~, m- R6 y1 c) C
2、建立目标函数。(需要求最优解的东西)2 Z; E7 S# c- R6 k
3、寻找约束条件。(变量之间的约束关系)
% \$ G% W( k5 K9 o" }, U4、求解。% F: D- ?0 e7 E8 Z1 T+ p; t, f/ Z6 Q4 N
$ t" W2 L7 v5 Z% K9 @7 [% Y

2 A0 c; y0 W) T文档:线性规划
) \2 O( _$ O$ B# O+ L6 W/ i
" L" _' l( A* j( V
+ U' X2 n7 C9 V6 K
非线性规划模型! D/ C' i' k# [4 p' e
应用:对于有非线性限制的问题求最优解(约束函数或者目标函数含有非线性关系)。
" z8 Z# t# H5 ]/ L3 _- X+ J& [3 r- D4 l

8 i  P: v5 G( v原理:解决非线性规划模型,这种模型没有通用的解决方案,各个方法都有自己适用的范围。最优解可能在可行域的任意一点找到。通常非线性规划模型可以概括为:' l( o3 y) D2 L1 o

: D$ `$ S) @& |8 u, C( u+ R

  [# r1 P- B% ^  @& [0 @2 e其含义为:优化目标为f(x),受限于一个等式h(x)与一个不等式g(x)。
! h! P3 C' |3 f& w7 ^. X+ w# f" L

/ C5 u9 @0 A1 M  p9 m7 B5 G基本步骤:, X: \6 x# Y, x
1、同线性规划,找出决策变量;建立目标函数;寻找约束条件。9 b- Q2 w/ |$ C6 c8 _
2、求解过程中,选定初始点x,构建点x在趋于最优解的搜索方向,以该搜索方向为基础,设定搜索步长,找到下一个迭代点。
( `* W+ ~0 }, c5 g3、以新迭代点为初始点,重复进行2步骤。. j8 Z& ~8 E+ ~2 ]

( t( r: p8 P' s
" `& J' t" P! @* |% R
文档资料(比较多,稍微看看就好):非线性规划
4 W$ L- h- G: h
! }1 N- x- f2 R% [: u  r# e

3 R. X" A4 |* q' zPCA主成分分析/ L$ c9 ?+ \1 S1 H6 |5 Q8 I8 ^
应用:降维。! K. v  F' U2 k

0 i8 ]  Y* [% x4 g  @3 [% E  Q
) R9 ]+ T$ F2 M# L! l) V# U, h, T1 k
原理:在损失较少信息的基础上实现降维。周志华西瓜书上提到的最近重构性和最大可分性,实际上是关于协方差与方差的问题。协方差代表维度之间的相关性,方差可以表示维度可以保留的信息。故PCA降维的优化目标为:在N维中选择R维作为“主成分”,这R维之间两两之间协方差尽量小,方差尽量大。, }2 t. m3 V* T, T  m4 Q

- P5 x  H' @) s- K! V
2 l2 Z7 u: b5 q$ S$ P
基本步骤:涉及线性代数、矩阵分析。文档资料中有兴趣自行了解。
3 `, Q3 i% I" j# y( ^
( ]# ^& }) w9 \
" m6 L8 h; S! j# s& D+ {, @) ?) |- k- \
文档资料:' M- D2 a: W, n
PCA理解与基本概念
- G, q6 u0 {( h+ H( E% GPCA维度的选择0 `+ v  A) Q  b) {2 [

8 y6 y/ J8 d; o: |
1 X/ Q# J, I" T4 Y8 x
聚类分析' a8 |  M+ M6 @
应用:无监督分类。
0 j; B4 ?/ ]& u$ ]8 h8 C
2 J* B$ k7 u# z2 ^$ w% ~& N; F. ?

1 n. }+ v/ _3 N9 X1 v" Y) w原理:对没有标示性的数据,按照算法,进行簇划分。3 e' y( Q* o0 b/ F# w

+ T$ T" S% n2 i. b
3 O. _4 q7 ^8 o) L
基本步骤:
# M' s8 F3 e' d8 |& {/ r. G聚类算法分很多类别。最常使用是基于距离和基于密度的聚类方案,具体方案选择结合实际。* M( @4 E5 {  Q2 U4 }' k( V
在基于距离聚类中比较典型的是k-means聚类,通过多次迭代更新中心点,找到多个中心点(簇的中心)与多个簇,实现:簇内点紧凑,簇间分离程度高。需要设置K(簇数)的值,效率高。
% x  G  K6 G& J8 }基于密度的聚类有DBSCAN和MeanShift(均值漂移)等,主要思路是根据数据点的紧凑程度,将聚合程度较高的数据形成簇。
$ u7 y" s6 N- V基于密度的聚类相比于基于距离的聚类,可以找到数据点分布呈不规则形状的簇,效率要差一些,相比之下,基于距离的聚类,同一个簇中各个数据点都不会太偏离中心点,效率高。$ Q$ L; r  \% |) |4 T/ ^

# C, O8 |% H$ T

+ n7 h4 T$ e# F. ~: K. r5 ]7 f  D鸢尾花分类的聚类代码,用来辅助学习与理解。: F8 @6 a- S3 r. \
1
( O7 x. ]/ f) ]' N% yfrom sklearn import datasets $ u* w: Z/ v# u3 u
from sklearn import model_selection! U4 a1 P; N- f& j' B/ y2 Q
from sklearn.cluster import KMeans! A) l* {: A2 D: z+ A
import matplotlib.pyplot as plt3 M; k9 P* a9 X$ k7 t

/ {* A" {  m; G2 l/ n/ y

/ m1 j! g+ H3 g# step1.加载数据
: O$ L- ^# @0 V( Airis = datasets.load_iris()6 L& X; n' t, d1 |

0 Z  Q: A* i( |( U& y6 }" m
& [) @: |9 U2 d+ a: ^" h
# 2.取特征空间中的4个维度- c# \1 Z- x' x, ]
X = iris.data[:,:4]  
, W; D. o! S* x, ]- Z3 G/ z+ p3 W

3 x$ v+ H# m7 J& Q2 [# 3.搭建模型,构造KMeans聚类器( ]+ e  v) s/ f7 ^) }- P; E" ^0 u
estimator = KMeans(n_clusters=3)
, E3 S5 H, k' m2 u8 n4 G1 P' q3 A5 a8 c4 M: r
- x2 Z7 ^/ a& B9 i
#开始聚类训练   7 {' ~2 t- j4 k& o" Y
estimator.fit(X)
( c$ z$ }, B8 d4 v7 L+ D* j0 v. Z" H+ u  ?; J$ f$ m1 N' L% W

' C8 [2 @6 @+ n; n2 B# 获取聚类标签* z2 B! w( z6 [# @
label_pred = estimator.labels_
4 Y1 c3 |6 R* U1 B
! m0 S/ J: ~% M, k4 N- P7 H

% k  e% i+ }0 g0 L# 绘制数据分布图(以花萼长度和宽度为展示依据)3 l" R; U2 A1 b% N& o  h0 n
# plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see') 4 a5 X$ x2 O1 T' Y5 @. q
# print(X[:,0]) / `; I* Q# N1 L6 `9 I% a
# plt.xlabel('calyx length')  
& ^2 u0 G) Z- x& ~, g; O$ O( B# plt.ylabel('calyx width')  & W5 `; v2 J4 P0 H* L/ S6 v
# plt.legend(loc=2)  
1 R* `' ^% ^, i) D# plt.show()  
: u6 S* a8 V. A5 [' @1. [) L7 T0 n0 u( s6 t) u) E
2
: s5 H7 g; i' N( B( ~8 o3
% M/ J3 M* P* j$ J5 Y, ?  ]4* c9 w0 G, ]# T0 I2 G; q
5
5 O$ `! U3 u/ n1 J4 W66 N( }4 C( R- h# _
70 m: K% L& i0 ~1 _  p
8
/ ~6 t8 q" G" C  K6 A) f9
9 ]/ B4 _% e- P; l6 ]: u10
, T& k) O- |7 B% M8 [. E11# f! \  T# S- @- Q! C) B$ T, q
12. C. Z& m- x5 W1 ^
137 Y" v2 \7 A8 W8 J% l" o( N  u
14
* w5 c; k7 `1 P& X% ?( F1 j1 W15
1 \) y9 @' J3 d/ R6 C+ k7 x9 l16
1 C" r# v9 n% m, [2 Q9 Z% X% d172 w- p3 d2 a5 Y9 p
18
7 u, F4 |) b# ?8 G2 C3 Q6 W19
# v( Q+ d5 ~* C. C( G& U5 k* t20) T& A/ V8 T& E' l8 G# k
213 t" v* C( |- T0 B9 [
220 H" b7 [( Q/ T5 Z- ]& u
23. e9 u  E2 |3 m! F
24' F, L( o' w$ ^* z
25
; I4 F5 J. b) ~# c4 l  @26" }. M# N0 c/ m/ |  |
27. j8 C8 s/ h) {$ ]" @4 b# n/ S3 Q! I$ S
以下为聚类结果图,针对两个维度进行了显示。
) D! l. b6 M4 X/ ?  S0 _3 ?% T9 E! z: o
% v- K! ?1 M9 r; s
+ @/ N% }) l( L3 X" T1 s

$ e( \  ~6 r+ C* E多元回归分析  M: V: e8 T! Y  f
应用:主要用于描述关系或进行预测。. H- ^/ f* N# p$ }; K

% _* S# m! _5 x* v0 |

  h$ p! z1 ~, s1 X" k! z3 H% m原理:建立因变量和多个自变量之间的线性或者非线性关系。常见的回归分析是线性回归,在线性回归中因变量y也可以不作为结果,而作为另一个需要得到的结果g(x)的因变量,即:! `2 }5 U$ [2 t4 a* q. v& K
,这样的的线性回归称为广义线性回归。) t7 w! l# v% q' {5 {6 d: p
基本步骤:主要分为线性回归和非线性回归。就不总结了大伙自己看看吧。  o! ~& ]0 V* d+ y$ S" ]

) j) f" O2 {9 m3 L+ P3 T! e( C$ G
6 }, Z$ q0 v# p
文档资料:挺多的不找了,大部分都是线性回归,非线性回归资料少。" O3 Z+ Z5 n: l8 h7 E

. j6 W4 ~+ _  P/ k) M# [7 R! v
4 ~, p  ?* n; B4 ^
下面两个图分别是线性回归和非线性回归的图。
4 S3 X- {  F3 Z, H7 i3 W" q2 q/ A  h. {3 {5 L! P

( t1 z0 p3 m8 \/ R( i6 w, X
+ _+ [6 u9 L$ T& Q' c9 {1 ?

+ H% f! c/ C- d/ E$ {/ A————————————————
- \5 B5 k- z$ m0 A2 ]3 M* d版权声明:本文为CSDN博主「Rulcy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
5 i4 B4 u' J1 W- }4 Q. g( I原文链接:https://blog.csdn.net/weixin_44371912/article/details/106934687- F7 ~& P  d0 Q0 a: N
9 D0 o, w& |( R% J2 V- ^

8 ?. j2 a; h6 O- t4 D6 ~. \9 Y




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5