8.算法设计问题

Download Report

Transcript 8.算法设计问题

第8章 面向问题的新算法构造问题
当你的模型求解用已知的求解方法效果不好
或没有现成的求解方法时,尝试针对要求解的数
学问题自己设计一个专用的算法将是完成数学建
模任务的关键。
本章通过几个典型的算法设计案例介绍这方
面的做法,以达到读者了解和学习这方面技能的
目的。
8.1 离散点集拐点的快速查找算法
问题的提出
平面波形曲线一般是由一系列较短时间间隔采集数据点获得的
平面离散点集,再经过分段线性插值的方法画出的。
波形特怔(如波形曲线的极值点和拐点)的计算机自动识别在
各种探伤和检测的计算机信息处理中占有重要的地位。如何快速确
定构成波形的这些离散点集中的拐点在平面曲线波形的计算机自动
识别中是经常要考虑的问题之一。
目前确定平面离散点集中的拐点方法还没有较好的算法,请
尝试给出一个求离散点集中拐点的快速查找算法。
问题的分析与算法构造
拐点是曲线凹凸交界点,注意到不在同一
直线上的三点可以确定此段曲线的凹凸性。
因此,要获得曲线拐点信息至少需要四个点。
观察由平面散点集画出的散点图,发现散
点图中的某点如果是拐点,要由该点左边的2个
点和右边的一个点共四个点来确定,逐次连接
顺序两点连线更易看出是否拐点(图8-1)
定义1. 设平面上两点的坐标分别为 P1(x1 ,y1) 和
P2(x2 ,y2), P1P2,称具有方向 P1P2 且过此两点的
有向直线为正向直线,而称对应的直线方程
L:
 x2  x1  y  y1    y1  y2  x  x1   0
为关于点P1 ,P2的正向直线方程。
定义2. 给定平面上一条正向直线L后,平面上不在
L上的点分为两类:
处于L顺时针一侧的点称为关于正向直线L的内点,
处于L逆时针一侧的点称为关于正向直线L的外点。
定理1.记关于平面上两点 P1(x1 ,y1)和 P2(x2 ,y2)的
正向直线方程L的左端表达式为函数
S12  x, y    x2  x1  y  y1    y2  y1  x  x1 
对于不在直线L上的任何一点
P0  x0 , y0 
,有
1) 如果 S12  x0 , y0   0 ,
则 P  x , y 是正向直线L的内点.
2) 如果 S12  x0 , y0   0 ,
则 P0  x0 , y0  是正向直线L的外点。
0
0
0
证明: 关于正向直线L的内点有如下四种情况

取与点 P  x , y 有同一横坐标且在
L上的参考点 Q  x , y  ,
则有
S12  x0 , y*    x2  x1   y*  y1    y1  y2  x0  x1   0
*
0
0
0
0
将 P0  x0 , y0 代入函数 S12  x, y  ,有
S12  x0 , y0    x2  x1  y0  y1    y1  y2  x0  x1 
  x2  x1   y0  y*  y*  y1    y1  y2  x0  x1 
  x2  x1   y0  y*    x2  x1   y*  y1    y1  y2  x0  x1 
  x2  x1   y0  y* 
拐点的确定及算法
(1)计算 S  x , y  并将其存储在变量S1中
(2)对 k  3, 4, , n  1
1) S  x , y   S 2
2)如果 S1 S 2  0,则 P  x , y  是拐点,
保存或打印 P  x , y 
3)替换S1的值,进行下个点的判别:S2 => S1
(3)停止
12
k 1k
3
k 1
3
k 1
k
k
k
k
k
k
算例
考虑在[-3,3]上的函数 y=x*sin x2,它在[-3,3]上的有7个拐
点,分别为:
x1= -2.5514, x2=-1.88206, x3= -0.994103, x4=0. ,
x5=0.994103, x6=1.88206, x7=2.5514.
现在从该曲线上取400个等距点获得该曲线图形的离散点集。
用本算法快速准确的求出了该离散点集的拐点,分别为:
第31点 {-2.55, -0.55478};第76个点 {-1.875, 0.685072};
第135个点 {-0.99, -0.822248},第201个点 {2.4286110-15 ,
1.43243 10-44 };
第268个点 {1.005, 0.851079},第327个点 {1.89, -0.788757};
第372个点 {2.565, 0.748299}。
计算结果是非常令人满意的。
它的散点图与求出的拐点在同一坐标系中的图形见图
8.2 层次分析法
人们在进行社会的、经济的以及科
学管理领域问题的系统分析中,面临的
常常是一个由相互关联、相互制约的众
多因素构成的复杂而往往缺少定量数据
的系统。
层次分析法为这类问题的决策和排序
提供了一种简洁而实用的建模方法。
层次分析法(Analytic Hierarchy Process,
简称AHP)是一种定性和定量相结合的层次化
分析方法,由美国运筹学家T. L. Saaty 教授于
70年代初期提出。
它较好地把半定性和半定量问题转化为定
量问题来处理,特别适用于那些难于完全定量
分析的问题。
节层次分析法中的比较尺度的定义、比较
矩阵构的造构和一致性检验等都是数学建模中
把定性问题变为定量问题常见方法。
问题的提出
“五一”假期快到了,张勇决定假期
去踏青。他想去杭州、黄山和庐山三个踏
青地点,但由于时间的原因,他只能在这
3个地点中选一个来作为踏青目的地。请
用数学建模的方式帮他选择这个踏青地。
问题的分析
本题是决策问题。要做的是从多个选择中选择最好的一个。
选择依据:
在多个对象中选择其中一个,人们往往要根据自己的目标和
有利于目标实现的多种因素的考量来做出最后选择。
但:
目标和要考量的因素往往是不能用数量描述的定性概念。
如问题中张勇的目标是选择一个踏青地点,而选择踏青地他
要考虑踏青地的景色、费用、居住、饮食和旅途等因素,这
些因素显然都是定性的概念。
要做的事情
如何把定性的内容变为定量的内容,还要考虑有什么样的
结构描述这类决策问题。
层次分析法的递阶层次结构
• 目标层:
层次中只有一个因素,一般它是决策问题的预定目标
或理想结果,处于层次结构的第一层。
• 准则层:
层次中包含了为实现目标所涉及的中间环节,它可以
由若干个层次组成,包括所需考虑的准则、子准则,处于
层次结构的中间层。
• 方案层:
层次包括了为实现目标可供选择的各种措施、决策方
案等,因此也称为措施层,处于层次结构的最底层。
最佳旅游地
目标层
准则层
方案层
景
色
费
用
杭洲
饮
食
黄山
居
住
旅
游
庐山
踏青问题的3层的递阶层次结构
构造判断矩阵
问题
1.层次结构虽反映了因素之间的关系,但准则层中的各准则因素在目
标衡量中所占的比重在决策者的心目中各占有的比例不同。
2.在确定影响某因素的诸因子在该因素中所占的比重时,主要困难是
这些比重常常不易定量化。
3.当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度
的影响时,常常会因考虑不周全、顾此失彼甚至有可能提出一组隐含
矛盾的数据。
解决方法
两个因子通过比较容易知道它们所影响的因素的大小。
根据这个特点,Saaty等人提出先采取对因子进行两两比较建立成对
比较矩阵的办法来描述各因素两两比较后对所影响因素的数据,然后
再用代数方法确定影响该因素的诸因子在该因素中所占的比重。
成对比较矩阵的构造方法
假设要比较n个因子 {C1, C2 , , Cn } 对某因素Z的影响大小:
每次取其中的两个因子 Ci 和 C j ,以 aij 表示这两个因
子对Z 的影响大小之比,全部比较结果用矩阵表示
A  (aij ) nn
称A为Z - C之间的成对比较判断矩阵(简称判断矩阵)。
容易看出
1
a ji 
aij
Saaty 标度
标度 aij
含义
1
Ci与Cj的影响相同
3
Ci与Cj的影响稍强
5
Ci与Cj的影响强
7
Ci与Cj的影响明显的强
9
Ci与Cj的影响绝对的强
2,4,6,8
Ci与Cj的影响之比在上述相邻等级之间
1/2,1/3…,1/9
Ci与Cj的影响之比为aij 的倒数
本例的一个判断矩阵
定义:若矩阵 A  (aij )nn 满足
1
1. aij  0; 2. a ji 
aij
则称之为正互反矩阵。
一致性条件:
aij a jk  aik , i, j, k  1, 2,
,n
构造判断矩阵
问题
1.层次结构虽反映了因素之间的关系,但准则层中的各准则因素在目
标衡量中所占的比重在决策者的心目中各占有的比例不同。
2.在确定影响某因素的诸因子在该因素中所占的比重时,主要困难是
这些比重常常不易定量化。
3.当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度
的影响时,常常会因考虑不周全、顾此失彼甚至有可能提出一组隐含
矛盾的数据。
解决方法
两个因子通过比较容易知道它们所影响的因素的大小。
根据这个特点,Saaty等人提出先采取对因子进行两两比较建立成对
比较矩阵的办法来描述各因素两两比较后对所影响因素的数据,然后
再用代数方法确定影响该因素的诸因子在该因素中所占的比重。
成对比较矩阵的构造方法
假设要比较n个因子 {C1, C2 , , Cn } 对某因素Z的影响大小:
每次取其中的两个因子 Ci 和 C j ,以 aij 表示这两个因
子对Z 的影响大小之比,全部比较结果用矩阵表示
A  (aij ) nn
称A为Z - C之间的成对比较判断矩阵(简称判断矩阵)。
容易看出
1
a ji 
aij
假设因子
则有
{C1, C2 ,
, Cn }
Z  w1  C1  w2  C2 
 w1
w
 1
 w2
A   w1


 wn
 w1
w1
w2
w2
w2
wn
w2
对Z的权为 wj , j  1, 2,
n
 wn  Cn , wi  0,  wi  1
w1 
wn 

 w1 
w2 
 
w

wn , 记w   2 

 

 

 wn 
wn 
wn 
i 1
aij 
,n
wi
, i, j  1, 2,
wj
Aw  nw
说明权向量可以通过求矩阵的特征值对应的特征向量得到 !
,n
一致性检验处理
定理:n 阶正互反矩阵A为一致矩阵当且仅当其最大
特征值
max .n
max  n.
且当正互反矩阵非一致时,必有
一致性指标CI计算公式
CI 
max  n
n 1
随机一致性指标RI的值
n
1
2
3
4
5
6
RI
0
0
0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49
一致性比例CR的计算公式为
7
8
9
CI
CR 
RI
通过一致性检验的条件:CR  0.10
若没有通过一致性检验,要对比较矩阵作适当修正。
10
组合权向量的计算
上面的做法得到的是一组元素对其上一层中某元素的
权重向量。
如果该组元素还有下一层的一组元素与其相连,则
有下层的元素通过该层建立了与上层元素的权重集合,这
种权重集合称为组合权向量。
用层次分析法解决决策问题,我们最终要得到最底层
中各方案对于目标的排序权重,从而可以进行方案选择。
组合权向量之间的公式
设目标层只有一个因素O,第二层包含n个因素B,
其关于O的权重记为
 2
w
  w1 , w2 ,
, wn 
T
第三层次包含m个因素C.第三层对第二层的每个因素的权重为
w j   w1 j ,
 3
B   B1, B2 ,
, Bn 
, wmj  , j  1, 2,
T
C  C1, C2 ,
, Cm 
,n
如上关系表示为数学形式
O  w1  B1  w2  B2 
B j  w1 j  C1  w2 j  C2 

记W 3  w13 , w23 ,
而B   B1 , B2 ,
, wn3

 2
 wn  Bn  B  w
 wm j  Cn  C  wj3 , j  1, 2,
 w11 w12

w21 w22




 wm1 wm 2
w1n 

w2 n 


wmn 

, Bn   C  w13 , C  w23 ,

, C  wn3  C W 3
O  B  w 2  C W 3  w 2   C1 , C2 ,

, Cm   W 3  w 2
第3层对第一层的组合权向量为
3
w W
3
 2
w

,n
组合一致性检验处理
设第k层有个成对比较矩阵,其对应的n个一致性指标和
k 
k 
RI
,n
j , j  1, 2,
随机一致性指标为 CI j , j  1, 2, , n 和
定义第k层的一致性指标和随机一致性指标为
CI
k 

k 
k 
 CI1 , CI 2 ,
k 
, CI n

w
RI  k   RI1 k  , RI 2 k  ,
 k 1
 k 1
其中 w 是第k-1层对第1层的组合权向量。
第k层的一致性比率计算公式为
CI
k 
/ RI
k 
第k层对第1层组合一致性比率计算公式:
CR
k
k 
CI
k 1
 CR    k  , k  3, 4,
RI
CR   0.1
p

, RI n k   w k 1
层次分析法的基本步骤
(1)建立层次结构模型,其中最高层为单个目标层,最底层
是要决策的方案;
(2)从第二层开始,由上到下的顺序面做:
1)对每一层构造出各层次中的所有成对比较矩阵;
2)计算每一个成对比较矩阵的最大特征值和特征向量,计
算
CI
 n
CR 
判别 CR  0.10
CI  max
n 1
RI
若成立,一致性检验通过,将特征向量归一化得到权重;
否则,重新构造该成对比较矩阵;
(3)计算组合权重
w k   W k   wk 1 , k  2,3,
(4)计算组合一致性比率;
(5)做组合一致性检验 。通过,做出决策,否则重构模型