文档库 最新最全的文档下载
当前位置:文档库 › 层次分析报告法及matlab程序

层次分析报告法及matlab程序

层次分析报告法及matlab程序
层次分析报告法及matlab程序

层次分析法建模

层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法

70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论。吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。

传统的常用的研究自然科学和社会科学的方法有:

机理分析方法:利用经典的数学工具分析观察的因果关系;

统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、

社会现象)现象的规律。

基本内容:(1)多目标决策问题举例AHP建模方法

(2)AHP建模方法基本步骤

(3)AHP建模方法基本算法

(3)AHP建模方法理论算法应用的若干问题。

参考书:1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社

2、程理民等,运筹学模型与方法教程,(第10章),清华大学出版社

3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社

一、问题举例:

A.大学毕业生就业选择问题

获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。就毕业生来说选择单位的标准和要求是多方面的,例如:

①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长);

②工作收入较好(待遇好);

③生活环境好(大城市、气候等工作条件等);

④单位名声好(声誉-Reputation);

⑤工作环境好(人际关系和谐等)

⑥发展晋升(promote, promotion)机会多(如新单位或单位发展有后劲)等。

问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?

B.假期旅游地点选择

暑假有3个旅游胜地可供选择。例如:1P :苏州杭州,2P 北戴河,3P 桂林,到底到哪个

地方去旅游最好?要作出决策和选择。为此,要把三个旅游地的特点,例如:①景色;②费用;③居住;④环境;⑤旅途条件等作一些比较——建立一个决策的准则,最后综合评判确定出一个可选择的最优方案。

目标层

准则层

方案层

C .资源开发的综合判断

7种金属可供开发,开发后对国家贡献可以通过两两比较得到,决定对哪种资源先开发,效用最用。

二、问题分析:

例如旅游地选择问题:一般说来,此决策问题可按如下步骤进行:

(S1)将决策解分解为三个层次,即:

目标层:(选择旅游地) 准则层:(景色、费用、居住、饮食、旅途等5个准则)

方案层:(有1P ,2P ,3P 三个选择地点)

并用直线连接各层次。

(S2)互相比较各准则对目标的权重,各方案对每一个准则的权重。这些权限重在人的思维过

程中常是定性的。

例如:经济好,身体好的人:会将景色好作为第一选择;

中老年人:会将居住、饮食好作为第一选择; 经济不好的人:会把费用低作为第一选择。

而层次分析方法则应给出确定权重的定量分析方法。

(S3)将方案后对准则层的权重,及准则后对目标层的权重进行综合。 (S4)最终得出方案层对目标层的权重,从而作出决策。

以上步骤和方法即是AHP 的决策分析方法。

三、确定各层次互相比较的方法——成对比较矩阵和权向量

在确定各层次各因素之间的权重时,如果只是定性的结果,则常常不容易被别人接受,因而Santy 等人提出:一.致矩阵法.... 即:1. 不把所有因素放在一起比较,而是两两相互比较

2. 对此时採用相对尺度,以尽可能减少性质不同的诸因素相互比较的困难,提高准确度。

因素比较方法 —— 成对比较矩阵法:

目的是,要比较某一层n 个因素n C C C , ,,21 对上一层因素O 的影响(例如:旅游决策解中,比较景色等5个准则在选择旅游地这个目标中的重要性)。

採用的方法是:每次取两个因素i C 和j C 比较其对目标因素O 的影响,并用ij a 表示,全部比较的结果用成对比较矩阵表示,即:

)1( 1

,0 ,)(=?=

>=ij ij ij

ji ij nxn ij a a a a a a A 或 (1) 由于上述成对比较矩阵有特点: ji

ij ij ij a a a a A 1 ,0 , )(=

>= 故可称A 为正互反矩阵:显然,由 ji

ij a a 1

=

,即:1=?ji ij a a ,故有:1=ji a

例如:在旅游决策问题中:

2112=a =(费用)(景色)21C C 表示:???2O 1O 21的重要性为(费用)对目标

的重要性为景色)对目标(C C

故:),费用重要性为即景色重要性为21(2

112=a

14413==a = (居住条件)(景色)31

C C 表示:???1O C 4O (3

1的重要性为(居住条件)对目标的重要性为景色)对目标C

即:景色为4,居住为1。

17723==a =(居住条件)(费用)32

C C 表示:???1O C 7O (32的重要性为(居住条件)对目标

的重要性为费用)对目标C

即:费用重要性为7,居住重要性为1。

因此有成对比较矩阵:?

??

?????

?

??=113

5

13

1112513131211714

1

553374121

21

A ??问题:稍加分析就发现上述成对比较矩阵的问题: ① 即存在有各元素的不一致性,例如:

既然:4

1114a ;22113313113212112==?===?==

a a C C a C C a 所以应该有:188412

1

3

12

31213223======

C C C C a a C C a

而不应为矩阵A 中的1

723=a

②成对比较矩阵比较的次数要求太 ,因:n 个元素比较次数为:!

2)

1(2

-=

n n C n 次, 因此,问题是:如何改造成对比较矩阵,使由其能确定诸因素n C C , ,1 对上层因素O 的权重?

对此Saoty 提出了:在成对比较出现不一致情况下,计算各因素n C C , ,1 对因素(上层因素)O 的权重方法,并确定了这种不一致的容许误差范围。

为此,先看成对比较矩阵的完全一致性——成对比较完全一致性

四:一致性矩阵

Def :设有正互反成对比较矩阵:

???

?

???????

?

?

??======

========= 1 a , , 1 , , 1 1nn 221122222212211121121111n n n n n n j i

ij n

n n

n W W W W a W W a W W a W W a W W a W W a W W a W W a W W a A

(4) 除满足:(i )正互反性:即

)1 ( 1

0=?=

>ji ij ji

ij ij a a a a a 或 而且还满足:(ii )一致性:即

n 2, 1,j i, ==?==

h

a h

a a k a a a a j i kj i j i ij //有点点错误 则称满足上述条件的正互反对称矩阵A 为一致性矩阵,简称一致阵。

一致性矩阵(一致阵)性质:

性质1:A 的秩 Rank(A)=1//显然

A 的唯一非0的特征根为n

性质2:A 的任一列(行)向量都是对应特征根n 的特征向量:

即有(特征向量、特征值):

?????????? ??=n n n n n n W W W W W W W W W W W

W W W W W W W A

2

1

2221212111,则向量??????

?

??=321W W W W

满足:W n nW nW nW W W W W W W W W W W W W W W W W A n n n n

n n n

=??????? ??=??????? ?????????

? ??=

212121

1211

1 即: 0)(=-nI A

我的理解:通过A(变换A 与W 中的

元素有关)变换将一致W 矩阵变成权向量W(特征向量),如果正互反矩阵W ’接近一致矩阵,同样的道理变换A 可以将W ’变成权向量(这里的权向量与W ’稍有不同)

启发与思考:既然一致矩阵有以上性质,即n 个元素W 1, W 2, W 3 , …W n 构成的向量??????

? ??=n W W W W 21

是一致矩阵A 的特征向量,则可以把向量W 归一化后的向量ω,看成是诸元素W 1, W 2,

W 3 , …W n

目标的权向量,因此,可以用求A 的特征根和特征向量的办法,求出元素W 1, W 2, W 3 , …W n 相对于目标O 的劝向量。

解释:

一致矩阵即:n 件物体n M M M , , ,21 ,它们重量分别为n W W W , , ,21 ,将他们两两比较

重量,其比值构成一致矩阵,若用重量向量????

??

? ??=n W W W W 21右乘A ,则

:()???????

?

?????

??∑???

?

? ??????

?

?? ??称特征根法,求权向量的方法量权向量,此种用特征向为即对上层因素O的权重,,C ,,C C ,就表示诸因素=W=则归一化后的特征向量,=:重量向量 为特征根的特征向量为

以的特征根为n 21 1W W W W ,121 i n W W W n n A 分析:

若重量向量????

??

?

??=n W W W W 21未知时,则可由决策者对物体n M M M , , ,21 之间两两相比关系,

主观作出比值的判断,或用Delphi (调查法)来确定这些比值,使A 矩阵(不一定有一致性)为已知的,并记此主观判断作出的矩阵为(主观)判断矩阵A ,并且此A (不一致)在不一致的容许范围内,再依据:A

的特征根或和特征向量W 连续地依赖于

矩阵的元素ij

a ,即当ij

a 离一致性的要求不太远时,A 的特

征根i 和特征值(向量)W 与一致矩阵A 的特征根λ和特征向量W 也相差不大的道理:由特征向量W 求权向量W 的方法即为特征向量法,并由此引出一致性检查的方法。

问题:Remark

以上讨论的用求特征根来求权向量的方法和思路,在理论上应解决以下问题: 1. 一致阵的性质1是说:一致阵的最大特征根为n (即必要条件),但用特征根来求特征向量

时,应回答充分条件:即正互反矩阵是否存在正的最大特征根和正的特征向量?且如果正互

反矩阵A 的最大特征根n =max λ时,A 是否为一致阵?

2. 用主观判断矩阵A 的特征根λ和特征向量W 连续逼近一致阵A 的特征根λ和特征向量W

时,即: 由λλ=→k k

k lim

得到:W W k k =∞

→lim

即: A A k k =∞

→lim

是否在理论上有依据。

3.一般情况下,主观判断矩阵A 在逼近于一致阵A 的过程中,用与A 接近的*A 来代替A ,即有A A ≈*,这种近似的替代一致性矩阵A 的作法,就导致了产生的偏差估计问题,即一致性检验问题,即要确定一种一致性检验判断指标,由此指标来确定在什么样的允许范围内,主观判断矩阵是可以接受的,否则,要 两两比较构造主观判断矩阵。此问题即一致性检验问题的内容。

以上三个问题:前两个问题由数学严格比较可获得(见教材P325,定理1、定理2)。第3个问题:Satty 给出一致性指标(TH1,TH2介绍如下:) 附: Th1:(教材P326,perronTh 比隆 1970 )对于正矩阵A (A 的所有元素为正数) (1)A 的最大特征根是正单根λ;

(2)λ对应正特征向量W (W 的所有分量为正数)

(3)W e A e e A k T k

k =∞→lim 其中:????

??

? ??=111

e 为半径向量,W 是对应λ的归一化特征向量

证明:(3)可以通过将A 化为标准形证明

Th2:n 阶正互反阵A 的最大特征根n ≥λ;

当n =λ时,A 是一致阵

五、一致性检验——一致性指标:

1.一致性检验指标的定义和确定——I C ?(平均值)的定义:

当人们对复杂事件的各因素,采用两两比较时,所得到的主观判断矩阵A ,一般不可直接保证正互反矩阵A 就是一致正互反矩阵A ,因而存在误差(及误差估计问题)。这种误差,必然导致特征值和特征向量之间的误差()]

[W W )(-及λλ-。此时就导致问题W max W A λ=与问题nW AW =之间的差别。(上述问题中max λ是主观判断矩阵A 的特征值,W 是带有偏差的相对权向量)。这是由判断矩阵不一致性所引起的。

因此,为了避免误差太大,就要衡量主观判断矩阵A 的一致性。 因为:

①当主观判断矩阵A 为一致阵A 时就有:

∑∑∑∑=======n

k n k kk n k n

n k

k

n a 1

1

1

1

= A 为一致阵时有:1=ii a (a[ii]为对角线

上的值,按照一致性矩阵的理解,它应该为1) 此时存在唯一的非

n ==m a x λλ

(由一致阵性质1:Rark(4)=1,A 有唯一非O 最大特征根且n =max λ) ②当主观判断矩阵A 不是一致矩阵时,此时一般有:n ≥max λ (Th2) 此时,应有:

∑∑==+

n

a ii

k h

m ax

max λ

λλ (不大理解)

即:

∑≠-

=-max

max k k

n λ

λ

所以,可以取其平均值作为检验主观判断矩阵的准则,一致性的指标, 即: 1

1

max

max --=

--=?∑≠n n n

I C k k

λ

λ

显然:

(1) 当n =max λ时,有:0=?I C , A 为完全一致性

(2) I C ?值越大,主观判断矩阵A 的完全一致性越差,即:A 偏离A 越远(用特征向量

作为权向量引起的误差越大)

(3) 一般10?≤?I C ,认为主观判断矩阵A 的一致性可以接受,否则应重新进行两两比

较,构造主观判断矩阵。

2.随机一致性检验指标——I R ?

问题:实际操作时发现:主观判断矩阵A 的维数越大,判断的一致性越差,故应放宽对高维矩

阵的一致性要求。于是引入修正值I R ?来校正一致性检验指标:即定义I R ?的修正值表为:

并定义新的一致性检验指标为:I

R I

C R C ??=

? 随机一致性检验指标——I R ?的解释:

为确定A 的不一致程度的容许范围,需要确定衡量A 的一致性指示I C ?的标准。于是Satty 又引入所谓随机一致性指标I R ?,其定义和计算过程为:

① 对固定的n ,随机构造正互反阵A ',其元素)(j i a ij

<'从1~9和1~9

1中随机取值,且满足ij

a '与ji a '的互反性,即:ji

ij a a '='1,且1='ii

a . ② 然后再计算A '的一致性指标I C ?,因此A '是非常不一致的,此时,I C ?值相当大.

③ 如此构造相当多的A ',再用它们的I C ?平均值作为随机一致性指标。

④ Satty 对于不同的1(=n n ~11),用100~500个样本A '计算出上表所列出的随机一致性

指标I R ?作为修正值表。

3. 一致性检验指标的定义——一致性比率R C ?。

由随机性检验指标R C ?可知:

当2 ,1=n 时,0=?I R ,这是因为1, 2阶正互反阵总是一致阵。

对于3≥n 的成对比较阵A ,将它的一致性指标I C ?与同阶(指n 相同)的随机一致性指标I R ?之比称为一致性比率——简称一致性指标, 即有: 一致性检验指标的定义——一致性比率

定义:I R I C R C ??=

?: I

R I

C R C ??=? 当:10?

R I

C R C 时,认为主观判断矩阵A 的不一致程度在容许范围之内,可用其特征向量作为权向量。否则,对主观判断矩阵A 重新进行成对比较,构重新的主观判断矩阵A 。 注:上式10?

R I

C R C 的选取是带有一定主观信度的。

六、标度——比较尺度解:

在构造正互反矩阵时,当比较两个可能是有不同性质的因素i C 和j C 对于上层因素O 的影响时,採用什么样的相对刻度较好,即ij a 的元素的值在(1~9)或(1~9

1)或更多

的数字,Satty 提出用1~9尺度最好,即ij a 取值为1~9或其互反数1~9

1,心理学家也

提出:人们区分信息等级的极限解能力为7±2。可见对n n ?阶矩阵,只需作出2

)

1(-n n 个判断值即可

的尺度中最好,而且比较的结果并不劣于较为复杂的尺度。Satty 曾用的比较尺度为:

① 1~3, 1~5, 1~6,…, 1~11,以及

② )1.0(+d ~)9.0(+d ,其中4 ,3 ,2 ,1=d

③ p 1~P

9,其中 5 ,4 ,3 ,2=P …

等共27种比较尺度,对放在不同距离处的光源亮度进行比较判断,并构造出成对比较矩阵,计算出权向量。同时把计算出来的这些权向量与按照物理学中光强度定律和其他物理知识得到的实际权向量进行对比。结果也发现1~9的比较标度不仅简单,而效果也较好(至少不比其他更复杂的尺度差)

因而用1~9的标度来构造成对比较矩阵的元素较合适。

七、组合权向量的计算——层次总排序的权向量的计算

层次分析法的基本思想:

(1) 计算出下一层每个元素对上一层每个元素的权向量

def :层次总排序,计算同一层次所有元素对最高层相对重要性的排序权值。

当然要先:①构造下一层每个元素对上一次每个元素的成对比较矩阵 ②计算出成对比较矩阵的特征向量(和法,根法,幂法) ③由特征向量求出最大特征根max λ(由和法,根法,幂法求得) ④用最大特征根max λ用方式 1

m a x --=

?n n

I C λ及I

R R

C R C ??=

?对成对比较矩阵进行一致性检,并通过。

(2) 并把下层每个元素对上层每个元素的权向量按列排成以下表格形式:例,假定:上

层A 有m 个元素,m A A A , , ,21 ,且其层次总排序权向量为m a a a , , ,21 ,下层B 有n 个元素n B B B , , ,21 ,则按j B 对 i A 个元素的单排序权向量的列向量为ij b ,即有:

注:①若下层元素k B 与上层元素j A 无关系时,取0=kj b ②总排序权向量各分量的计算公式:),,1(1

n i b

a W ij

m

j j i ==

∑=

(3) 对层次总排序进行一致性检验:从高层到低层逐层进行,如果

如果B 层次某些元素对j A 单的排序的一致性指标为j CI ,相应的平均随机一致性指标为

j RI ,则B 层总排序随机一致性比率为:∑∑===

?m

j j

j

m

j j

j

RI

a CI

a R C 1

1

当10?

八、层次分析法的基本步骤:

(S1)建立层次结构模型

将有关因素按照属性自上而下地分解成若干层次: 同一层各因素从属于上一层因素,或对上层因素有影响,同时又支配下一层的因素或受到下层因素的影响。

最上层为目标层(一般只有一个因素),最下层为方案层或对象层/决策层,中间可以有1个或几个层次,通常为准则层或指标层。

当准则层元素过多(例如多于9个)时,应进一步分解出子准则层。

(S2)构造成对比较矩阵,以层次结构模型的第2层开始,对于从属于(或影响及)上一层每个因素的同一层诸因素,用成对比较法和1~9比较尺度构造成对比较矩阵,直到最下层。

(S3)计算(每个成对比较矩阵的)权向量并作一致性检验

① 对每一个成对比较矩阵计算最大特征根max λ及对应的特征向量(和法、根法、幂法等)

????

? ??=n W W W 1

② 利用一致性指标I C ?,随机一致性指标R C ?和一致性比率作一致性检验??

?

??

??=

I R I C CR ③ 若通过检验(即1.0

?

? ??=n W W 1归一化之后

作为(j B 到j A )的权向量(即单排序权向量) ④ 若1.0

(S4)计算组合权向量并作组合一致性检验——即层次总排序

① 利用单层权向量的权值m j W W W n j , ,11 =????

? ??=构组合权向量表:并计算出特征根,组

合特征向量,一致性

② 若通过一致性检验,则可按照组合权向量????? ??=n W W 1的表示结果进行决策(??

?

?

? ??=n W W 1中i W 中最大者的最优),即:()

{

}T

n i W W W W W ,,:max *1 ∈=

③ 若未能通过检验,则需重新考虑模型或重新构造那些一致性比率,CR 较大的成对比较

矩阵

九、特征根的近似求法(实用算法)

层次分析法的基本思路是计算上层每个元素对下一层次各元素的权向量(即最大特征根

max λ对应的特征向量???

?

? ??=n W W 1)

,以及组合权向量及一致性检验问题。 计算判断矩阵最大特征根和对应阵向量,并不需要追求较高的精确度,这是因为判断矩阵本身有相当的误差范围。而且优先排序的数值也是定性概念的表达,故从应用性来考虑也希望使用较为简单的近似算法。常用的有以下求特征根的近似求法:“和法”、“根法”、“幂法”,具体如下:

1.“和法”求最大特征根和对应特征向量(近似解)

(S1)将矩阵nxm ij a A )(=的每一列向量的归一化得:∑==n i ij

ij ij a a W 1

~

(利用数据验证即为:每个

位置的数除以该列的合计)

(S2)对ij W ~按行求和得:∑==n

j ij i W W 1

~

~

(S3)将i W ~

归一化,即有:∑==

n

i i

i

i W W W 1

~

~,则有特征向量:???

?

? ??=n W W W 1~ (S4)计算与特征向量?

???

? ??=n W W 1对应的最大特征根max λ的近似值:∑==n i i i

W AW n 1max )(1λ

此方法:实际上是将A 的列向量归一化后取平均值作为A 的特征向量。 解释: 当A 为一致矩阵时,它的每一列向量都是特征向量

∴可以在A 的不一致性不严重时,取A 的列向量(归一化后)的平均值作为近似特征向

量是合理的(有依据的)。

2.“根法”求最大特征根特征向量近似值:

步骤与“和法”相同,只是在(S2)时:对归一化后的列向量按行“求和”改为按行“求

积”再取n 次方根,即:n

n

j ij i W W 1

1~~???

? ??=∏=。

即有具体步骤:

(S1)将矩阵min )(ij a A =的每一列向量归一化得:∑==

n

i ij

ij

ij a

a W 1

~

(S2)对归一化以后的列向量各元素: ∑==

n

i ij

ij

ij a

a W 1

~

按行“求和”并开n 次方根得:n

n

j ij i W W 11~~???

? ??=∏=

(S3)再将i W ~归一化得:∑∏∏∑====???

? ?????? ??==n i n n j ij n

n j ij n

i i i i W W W W W 11

1111~~~~ 得到特征向量近似值:??????

? ??=n W W W 21

(S4)计算最大特征根:∑=

i

i

W A n )(1max λ 作为最大特征根的近似值。 注:“根法”是将“和法”中求列向量的算术平均值改为求几何平均值。

3.“幂法”求最大特征根:

(S1)任取n 维归一化初始向量)

0(W

(S2)计算 ,2 ,1 ,0 ,~

)()1(==+k AW W k k

(S3))1(~+k W 归一化,即令:∑=+++=

n

i k i

k k W W W 1

)

1()1()1(~~

(S4)对预先给定的ε,当) , ,2 ,1()()

1(n i W W k i k i

=<-+ε时,)1(+k W 即为所求的特征向

量;否则返回(S2) (S5)计算最大特征根,∑=+=n i k i

k i W W n 1)()1(max

~

以上用幂法求最大特征根max λ对应特征向量的迭代方法,其收敛性由TH1(教材P325)中

的3)W e

A e e

A k T k

k =∞→lim ,其中????

? ??=11 e ,W 是对应max λ的归一化向量σ特征。

(证明:可以将A 化为标准形证明)保证。)

0(W

任意选取,也可以取由“根法”、“和法”得

到的????

??

?

??=n W W W W 21

注:在以上求特征根和特向量的方法中“和法”最简单。

例:在旅游问题中,求目标层到准则层的成对比较矩阵为A 的特征向量和最大特征根:

准则层:

方案层:

?????

?????

?

?

??=1135

131112513131211

7

1

415571233421

1A =???

???

?

?

??113

2

.0333.01122

.0333.0333.05.01143

.025.055712

33

45.01

标准实用

利用“和法”求A 的特征向量???

?

?

??=n W W W 1和特征根max

(S1)将()

nxn

ij

W A =的元素按列归一化得:

()

???????

?

?

?=097.0095

.0176.0098.0085.0097.0095.0118.0098.0085.0032.0048.0059.0070.0064.0484.0476.0411.0489.0510.029.0286.0235.0245.0265.0~nxn

ij W A

333

.1011333.0535.10115.0531732174043.22.02.0143.015.0917.3333.0333.025.0215

4322

=++++==++++==++++==++++==++++=σσσσσ 各列归一化的分母

(S2)将()

nxn W A ij ~

中元素ij W ~按行求和得各行元素之和:∑==n

j ij i W W 1

~~

(S3)再将上述矩阵向量归一化得到特征向量近似值,

?

??????

? ??=????????

??==∑=102.0099.0055.0474.0262.0511.0493.0273.037.2312.1999.41~

1n i i i W W W 特征向量

其中

999.4)511.0493.0273

.037.2312.1(~

5

1

=++++=∑i W (S4)计算与特征向量相对应最大特征根(的近似值)

()

??????

? ??

++++?==∑∑∑∑∑=========51

5414313212111max

511W W a W W a W W a W W a W W ia W A n n

j i i j n j i i j n j i i j n j i i j i j n i i

i

λ ()

W

W A i ~511.0273.037.2312.1~=???????

? ??=

()()()()()()0802

.5401.255

1

373.598.4960.4038.505.551

102.0548.0099.0493.0055.0273.0474.0388.2262.0323.151102.0102.0099.0165.0095.0087.0 099

.0102.0099.011.0095.0087.0055.0034.00495.0055.0068.0066.0 474

.05.0495.0385.0474.0524.0262.0306.0297.022.0237.0263.051102.0102.0099.0055.0474.0262.0 11 3 0.2 333.0099.0102.0099.0055.0474.0262.0 11 2 0.2 337.0 055.0102.0099.0055.0474.0262.0 0.333 0.5 0.1431 25.0474.0102.0099.0055.0474.0262.05 5 7 12262.0102.0099.0055.0474.0262.033 4 0.5 151=?=++++=??? ??++++=???+++++

++++++++++???+++++++++=???????

?????

?

??

?

???????? ??+

????

?

??

? ??+??????????

?

??

?

???

???

????

??+???????? ??+???????? ??=故有最大特征根?????

??

?

??==102.0099.0055.0474.0262.0W , 0802.5max

λ

层次分析法及matlab程序

层次分析法建模 层次分析法(AHP-Analytic Hierachy process)---- 多目标决策方法 70 年代由美国运筹学家T·L·Satty提出的,是一种定性与定量分析相结合的多目标决策分析方法论。吸收利用行为科学的特点,是将决策者的经验判断给予量化,对目标(因素)结构复杂而且缺乏必要的数据情况下,採用此方法较为实用,是一种系统科学中,常用的一种系统分析方法,因而成为系统分析的数学工具之一。 传统的常用的研究自然科学和社会科学的方法有: 机理分析方法:利用经典的数学工具分析观察的因果关系; 统计分析方法:利用大量观测数据寻求统计规律,用随机数学方法描述(自然现象、 社会现象)现象的规律。 基本内容:(1)多目标决策问题举例AHP建模方法 (2)AHP建模方法基本步骤 (3)AHP建模方法基本算法 (3)AHP建模方法理论算法应用的若干问题。 参考书: 1、姜启源,数学模型(第二版,第9章;第三版,第8章),高等教育出版社 2、程理民等,运筹学模型与方法教程,(第10章),清华大学出版社 3、《运筹学》编写组,运筹学(修订版),第11章,第7节,清华大学出版社 一、问题举例: A.大学毕业生就业选择问题 获得大学毕业学位的毕业生,“双向选择”时,用人单位与毕业生都有各自的选择标准和要求。就毕业生来说选择单位的标准和要求是多方面的,例如: ①能发挥自己的才干为国家作出较好贡献(即工作岗位适合发挥专长); ②工作收入较好(待遇好); ③生活环境好(大城市、气候等工作条件等); ④单位名声好(声誉-Reputation); ⑤工作环境好(人际关系和谐等) ⑥发展晋升(promote, promotion)机会多(如新单位或单位发展有后劲)等。 问题:现在有多个用人单位可供他选择,因此,他面临多种选择和决策,问题是他将如何作出决策和选择?——或者说他将用什么方法将可供选择的工作单位排序?

最优化实验报告(单纯形法的matlab程序,lingo程序)

实验一:线性规划单纯形算法 一、实验目的 通过实验熟悉单纯形法的原理,掌握Matlab 循环语句的应用,提高编程的能力和技巧。 二、实验用仪器设备、器材或软件环境 Windows Xp 操作系统 ,Matlab6.5,计算机 三、算法 对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始 基本可行解。设初始基为B,然后执行如下步骤: (1).解B Bx b =,求得1 B x B b -=,0,N B B x f c x ==令计算目标函数值 1(1,2,...,)i m B b i -=i 以b 记的第个分量 (2).计算单纯形乘子w , B wB C =,得到1 B w C B -=,对于非基变量,计算判别数 1i i i B i i z c c B p c σ-=-=-,令 max{}k i i i R z c σ∈=-,R 为非基变量集合 若判别数0k σ≤ ,则得到一个最优基本可行解,运算结束;否则,转到下一步 (3).解k k By p =,得到 1 k k y B p -=;若0k y ≤,即k y 的每个分量均非正数,则停止计算,问题不存在有限最优解,否则,进行步骤(4). (4).确定下标r,使 { } :0 min ,0 t r rk tk tk b b tk y y t y y >=>且r B x 为离基变量。 k x 为进基变量,用k p 替换r B p ,得到新的基矩阵B ,返回步骤(1)。 对于极大化问题,可以给出完全类似的步骤,只是确定进基变量的准则不同。对于极大化问题,应令 min{}k k j j z c z c -=-

四、计算框图 是 否 是 否 开始 初始可行解B 令1,0,B N B B x B b b x f c x -==== 计算单纯形乘子1 B w c B -=,计算判别数,i j j wp c j R σ=-∈(非基变量) 令max{,}k j j R σσ=∈ 0?k σ≤ 得到最优解 解方程k k By p =,得到1k k y B p -=。 0?k y ≤ 不存在有限最优解 确定下标r ,是 { }:0 min ,0 t r rk tk tk b b tk y y t y y >=>且 k x 为进基变量,用 k p 替换r B p ,得到新的基矩阵B

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

层次分析法matlab程序

disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2); p=0.0001;i=2;k=abs(m(2)-m(1)); while k>p i=i+1; x(:,i)=A*y(:,i-1); m(i)=max(x(:,i)); y(:,i)=x(:,i)/m(i); k=abs(m(i)-m(i-1)); end a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(w);disp(t); %以下是一致性检验 CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56

1.58 1.59]; CR=CI/RI(n); if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR); end function AHPInit1(x,y) %层次分析的初始化 %默认只有两层x为准则数,y为方案数 %CToT为准则对目标生成的比较阵 %EigOfCri为准则层的特征向量 %EigOfOpt为选项层的特征向量 EigOfCri=zeros(x,1);%准则层的特征向量 EigOfOpt=zeros(y,x); dim=x;%维度 RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准%生成成对比较阵 for i=1:dim CToT(i,:)=input('请输入数据:'); end CToT %输出 pause, tempmatrix=zeros(x+1);

单纯形法matlab

数 学 软 件 与 实 验 数学与信息科学学院 信息与计算科学

单纯形法的Matlab程序如下:function [xx,fm]=myprgmh(m,n,A,b,c) B0=A(:,1:m); cb=c(:,1:m); xx=1:n; sgm=c-cb*B0^-1*A; h=-1; sta=ones(m,1); for i=m+1:n if sgm(i)>0 h=1; end end while h>0 [msg,mk]=max(sgm); for i=1:m sta(i)=b(i)/A(i,mk); end [mst,mr]=min(sta); zy=A(mr,mk); for i=1:m

if i==mr for j=1:n A(i,j)=A(i,j)/zy; end b(i)=b(i)/zy; end end for i=1:m if i~=mr for j=1:n A(i,j)=A(i,j)-A(i,mk)*A(mr,j); end b(i)=b(i)-A(i,mk)*b(mr); end end B1=A(:,1:m); cb(mr)=c(mk); xx(mr)=mk; sgm=c-cb*B1*A; for i=m+1:n if sgm(i)>0 h=1;

end end end fm=c*xx; 例题: 编写下列求解如下线性规划问题的单纯形法函数min f'x s.t ax<=b(其中b>=0) 函数形式function [x,fval,it,op]=singl(f,a,b) 输出中x为最优解 fval为最优值 it为迭代次数 无最优解op=0 有最优解op=1 编写程序如下: function [x,fval,it,op]=singl(f,a,b) [m,n]=size(a); c=[a eye(m) b;f' zeros(1,m+1)]; fval=0; x=zeros(m+n,1); op=1; it=0; e=zeros(1,m); lie=find(f<0); l=length(lie); while(l>0) for j=1:l d=find(c(:,lie(j)));

层次分析法实现代码(MATLAB)

%% AHP weight calculation %%data input clc clear all A =[1 3 5 7 9 5;1/3 1 3 9 3 3;1/5 1/3 1 3 3 1/3;1/7 1/9 1/3 1 5 1/3;1/9 1/3 1/3 1/5 1 1/3;1/5 1/3 1 3 3 1]; %%Consistency calculation and weight vector calculation [n,n] = size(A); [v,d] = eig(A); r = d(1,1); CI = (r-n)/(n-1); RI = [0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.52 1.54 1.56 1.58 1.59]; CR = CI/RI(n); if CR<0.10 CR_Result = 'pass'; else CR_Result = 'no pass'; end % % Weight vector calculation w = v(:,1)/sum(v(:,1));

w = w'; % % output disp('The judgment matrix weight vector calculation report:'); disp('coincidence indicator:');disp(num2str(CI)); disp('Consistency ratio:');disp(num2str(CR)); disp(' Consistency test results:');disp(CR_Result); disp('eigenvalue:');disp(num2str(r)); disp('weight vector:');disp(num2str(w));

基于Matlab的层次分析法及其运用浅析

基于Matlab的层次分析法及其运用浅析 本文通过使用Matlab软件进行编程,在满足同一层次中各指标对所有的下级指标均产生影响的假定条件下,实现了层次分析法的分析运算。本程序允许用户自由设定指标层次结构内的层次数以及各层次内的指标数,通过程序的循环,用户只需输入判断矩阵的部分数据,程序可依据层次分析法的计算流程进行计算并作出判断。本程序可以方便地处理层次分析法下较大的运算量,解决层次分析法的效率问题,提高计算机辅助决策的时效性。 标签:Matlab层次分析法判断矩阵决策 在当前信息化、全球化的大背景下,传统的手工计算已不能满足人们高效率、高准确度的决策需求。因此计算机辅助决策当仁不让地成为了管理决策的新工具、新方法。基于此,本文在充分发挥计算机强大运算功能的基础上,选用美国MathWorks公司的集成数学建模環境Matlab R2009a作为开发平台,使用M语言进行编程,对计算机辅助决策在层次分析法中的运用进行讨论。试图通过程序实现层次分析法在计算机系统上的运用,为管理决策探索出新的道路。 1 层次分析法的计算流程 根据层次分析法的相关理论,层次分析法的基本思想是将复杂的决策问题进行分解,得到若干个下层指标,再对下层指标进行分解,得到若干个再下层指标,如此建立层次结构模型,然后根据结构模型构造判断矩阵,进行单排序,最后,求出各指标对应的权重系数,进行层次总排序。 1.1 构造层次结构模型在进行层次分析法的分析时,最主要的步骤是建立指标的层次结构模型,根据结构模型构造判断矩阵,只有判断矩阵通过了一致性检验后,方可进行分析和计算。其中,结构模型可以设计成三个层次,最高层为目标层,是决策的目的和要解决的问题,中间层为决策需考虑的因素,是决策的准则,最低层则是决策时的备选方案。一般来讲,准则层中各个指标的下级指标数没有限制,但在本文中设计的程序尚且只能在各指标具有相同数量的下级指标的假定下,完成层次分析法的分析,故本文后文选取的案例也满足这一假定。 1.2 建立判断矩阵判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较给判断矩阵的要素赋值时,常采用九级标度法(即用数字1到9及其倒数表示指标间的相对重要程度),具体标度方法如表1所示。 1.3 检验判断矩阵的一致性由于多阶判断的复杂性,往往使得判断矩阵中某些数值具有前后矛盾的可能性,即各判断矩阵并不能保证完全协调一致。当判断矩阵不能保证具有完全一致性时,相应判断矩阵的特征根也将发生变化,于是就可以用判断矩阵特征根的变化来检验判断的一致性程度。在层次分析法中,令判断矩阵最大的特征值为λmax,阶数为n,则判断矩阵的一致性检验的指标记为:

matlab单纯形法

%求解标准型线性规划:max c*x;s.t. A*x=b;x>=0 %本函数中的A是单纯初始表,包括:最后一行是初始的检验数,最后一列是资源向量b %N是初始的基变量的下标 %输出变量sol是最优解 %输出变量val是最优值,kk是迭代次数 function [sol,val,kk]=ssimplex(A,N) [mA,nA]=size(A); kk=0; %迭代次数 flag=1; while flag kk=kk+1; if A(mA,:)<=0 %已找到最优解 flag=0; sol=zeros(1,nA-1);%给每个变量赋初值0 for i=1:mA-1 sol(N(i))=A(i,nA);%给基变量赋新值(替换0) end %给出最优解 val=-A(mA,nA); else for i=1:nA-1 if A(mA,i)>0&A(1:mA-1,i)<=0 %问题有无界解 disp('have infinite solution!'); flag=0; break; end end if flag %还不是最优表,进行转轴运算 temp=0; for i=1:nA-1 if A(mA,i)>temp temp=A(mA,i); inb=i; % 进基变量的下标 end end %选择最大检验数纵向对应的变量为进基变量 sita=zeros(1,mA-1); for i=1:mA-1 if A(i,inb)>0 sita(i)=A(i,nA)/A(i,inb); end end temp=inf; for i=1:mA-1 if sita(i)>0&sita(i)

高斯-赛德尔迭代法matlab程序

disp('划分为M*M个正方形') M=5 %每行的方格数,改变M可以方便地改变剖分的点数 u=zeros(M+1);%得到一个(M+1)*(M+1)的矩阵 disp('对每个剖分点赋初值,因为迭代次数很高,所以如何赋初值并不重要,故采用对列线性赋值。') disp('对边界内的点赋初值并使用边界条件对边界赋值:') for j=1:M-1 for i=1:M-1 u(i+1,j+1)=100*sin(pi/M*j)/M*(M-i);%对矩阵(即每个刨分点)赋初值 end end for i=1:M+1 u(1,i)=100*sin(pi*(i-1)/M);%使用边界条件对边界赋值 u(1,M+1)=0; end u tic %获取运行时间的起点 disp('迭代次数为N') N=6 %迭代次数,改变N可以方便地改变迭代次数 disp('n为当前迭代次数,u为当前值,结果如下:') for n=1:N for p=2:M i=M+2-p; for j=2:M u(i,j)=0.25*(u(i,j-1)+u(i+1,j)+u(i-1,j)+u(i,j+1));%赛德尔迭代法 end end n %输出n u %输出u end disp('所用的时间:') t=toc %获取算法运行需要的时间 [x,y]=meshgrid(0:1/M:1,0:1/M:1); z=u(1,:); for a=2:M+1 z=[z;u(a,:)];%获取最终迭代的结果,幅值给z,z的值代表该点的点位值 end mesh(x,y,z)%绘制三维视图以便清楚地显示结果 mesh(x,y,z,'FaceColor','white','EdgeColor','black') %绘制三维视图以便清楚地显示结果

Matlab求解层次分析法程序代码【求解步骤+代码】

层次分析法 1)建立层次结构模型: (2)构造判断矩阵 判断矩阵() ij A a =应为正互反矩阵,而且ij a 的判断如下(1~9尺度法): (3)单层排序及一致性检验 1、单层排序 求解判断矩阵A 的最大特征值max λ,再由最大特征值求出对应的特征向量

ω()max A ωλω=,并将ω标准化,即为同一层相对于上一层某一因素的权重,根据此 权重的大小,便可确定该层因素的排序。

2、一致性检验 取一致性指标max 1 n CI n λ-= -,(n 为A 的阶数) 令CR RI = ,若0.1CR <,则认为A 具有一致性。 否则,需要对A 进行调整,直到具有满意的一致性为止。 (4)层次总排序及一致性检验 假定准则层12,,,n C C C 排序完成,其权重分别为12,, ,n a a a ,方案层P 包含m 个方 案:12,, ,m P P P 。其相对于上一层的()1,2, ,j C j n =对方案层P 中的m 个方案进行单层排序,其排序权重记为12,,,j j mj b b b ()1,2, ,j n =,则方案层P 中第i 个方案Pi 的总 排序权重为 1 n j ij j a b =∑,见下表: 从而确定层的排序。 例: 纯文本文件txt3.txt 中的数据格式如下: 1 1 1 4 1 1/ 2 1 1 2 4 1 1/2 1 1/2 1 5 3 1/2 1/ 4 1/4 1/ 5 1 1/3 1/3 1 1 1/3 3 1 1 2 2 2 3 3 1 1 1/4 1/2

4 1 3 2 1/ 3 1 1 1/4 1/5 4 1 1/2 5 2 1 1 3 1/3 1/3 1 1/7 3 7 1 1 1/3 5 3 1 7 1/5 1/7 1 1 1 7 1 1 7 1/7 1/7 1 1 7 9 1/7 1 1 1/9 1 1 matlab程序: >> fid=fopen('txt3.txt','r'); n1=6;n2=3; a=[]; for i=1:n1 tmp=str2num(fgetl(fid)); a=[a;tmp]; %读准则层判断矩阵 end for i=1:n1 str1=char(['b',int2str(i),'=[];']); str2=char(['b',int2str(i),'=[b',int2str(i),';tmp];']); eval(str1); for j=1:n2 tmp=str2num(fgetl(fid)); eval(str2); %读方案层的判断矩阵 end end ri=[0,0,0.58,0.90,1.12,1.24,1.32,1.41,1.45]; %一致性指标[x,y]=eig(a); lamda=max(diag(y)); num=find(diag(y)==lamda); w0=x(:,num)/sum(x(:,num)); cr0=(lamda-n1)/(n1-1)/ri(n1) for i=1:n1 [x,y]=eig(eval(char(['b',int2str(i)]))); lamda=max(diag(y)); num=find(diag(y)==lamda);

单纯形法matlab程序

算法实现与分析 算法1.单纯形法 具体算例: 标准化后: 用单纯形法求解,程序如下: clear clc M=1000000; A=[3,2,-3,1,0;1,-2,1,0,1];%系数矩阵 C=[-3,1,2,M,M,0];%价值矩阵 B=[6;4]; Xt=[4 5]; for i=1:length(C)-1 D=0; for j=1:length(Xt) D=D+A(j,i)*C(Xt(j)); end xi(i)=C(i)-D; end s=[]; for i=1:length(xi) if xi(i)<0 s=[s,i]; end end f=length(s); h=1; while(f) for k=1:length(s) j=1; A x=[]; for i=1:length(Xt) if A(i,s(k))>0 x(j)=i;

j=j+1; end end x if(length(x)+1==1) break; end y=1 x for i=1:length(x) if B(x(i))/A(x(i),s(k))

lu分解法、列主元高斯法、jacobi迭代法、gaussseidel法的原理及matlab程序

一、实验目的及题目 1.1 实验目的: (1)学会用高斯列主元消去法,LU 分解法,Jacobi 迭代法和Gauss-Seidel 迭代法解线性方程组。 (2)学会用Matlab 编写各种方法求解线性方程组的程序。 1.2 实验题目: 1. 用列主元消去法解方程组: 1241234 123412343421233234x x x x x x x x x x x x x x x ++=??+-+=??--+=-??-++-=? 2. 用LU 分解法解方程组,Ax b =其中 4824012242412120620266216A --?? ?- ?= ? ?-??,4422b ?? ? ?= ?- ?-?? 3. 分别用Jacobi 迭代法和Gauss-Seidel 迭代法求解方程组: 123234 1231234102118311210631125x x x x x x x x x x x x x -+=-??-+=-??-+=??-+-+ =? 二、实验原理、程序框图、程序代码等 2.1实验原理 2.1.1高斯列主元消去法的原理 Gauss 消去法的基本思想是一次用前面的方程消去后面的未知数,从而将方程组化为等价形式: 1111221122222n n n n nn n n b x b x b x g b x b x g b x g +++=??++=????= ? 这个过程就是消元,然后再回代就好了。具体过程如下: 对于1,2, ,1k n =-,若() 0,k kk a ≠依次计算

()() (1)()()(1)()()/,,1, ,k k ik ik kk k k k ij ij ik kj k k k i i ik k m a a a a m a b b m b i j k n ++==-=-=+ 然后将其回代得到: ()() ()()()1/()/,1,2,,1 n n n n nn n k k k k k kj j kk j k x b a x b a x a k n n =+?=??=-=--? ? ∑ 以上是高斯消去。 但是高斯消去法在消元的过程中有可能会出现() 0k kk a =的情况,这时消元就无法进行了,即使主元数() 0,k kk a ≠但是很小时,其做除数,也会导致其他元素数量级的严重增长和舍入误差的扩散。因此,为了减少误差,每次消元选取系数矩阵的某列中绝对值最大的元素作为主元素。然后换行使之变到主元位置上,再进行销元计算。即高斯列主元消去法。 2.1.2直接三角分解法(LU 分解)的原理 先将矩阵A 直接分解为A LU =则求解方程组的问题就等价于求解两个三角形方程组。 直接利用矩阵乘法,得到矩阵的三角分解计算公式为: 1111111 11 1,1,2,,/,2,,,,,1,,,2,3, ()/,1,2, ,i i i i k kj kj km mj m k ik ik im mk kk m u a i n l a u i n u a l u j k k n k n l a l u u i k k n k n -=-===?? ==?? =-=+??=??=-=++≠?? ∑∑且 由上面的式子得到矩阵A 的LU 分解后,求解Ux=y 的计算公式为 11 111,2,3,/()/,1,2, ,1 i i i ij j j n n nn n i i ij j ii j i y b y b l y i n x y u x y u x u i n n -==+=??? =-=?? =??? =-=--?? ∑∑ 以上为LU 分解法。

运用Matlab进行线性规划求解(实例)

线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MATLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=beq 。若没有不等式约束,则令A=[ ],b=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub):定义设计x 的下界lb 和上界ub ,使得x 始终在该范围内。若没有等式约束,令Aeq=[ ],beq=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认时大型算法将忽略初值。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options 指定的优化参数进行最小化。 ●[x,fval]=linprog(…):返回解x 处的目标函数值fval 。 ●[x,lambda,exitflag]=linprog(…):返回exitflag 值,描述函数计算的退出条件。 ●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output 。 ●[x,fval,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

单纯形法MATLAB程序

单纯形法(Matlab 程序) %%单纯形法( Matlab 程序) a=input('input the major matrix A '); b=input('input the matrix b '); n=input('input the judgement '); %%为计数器(确定循环次数) g=0; while g<40 %%确定非负 alength=max(size(n)); blength=max(size(b)); m=0; for i=1:alength if n(i)>=0 m=m+1; end end; if m==alength x=b; break end; %%找 K s=min(n); for i=1:alength if n(i)==s k=i; break end; end; %%a[i,k] 的非负性 m=0; for i=1:blength if a(i,k)<0 m=m+1; end; end; if m==blength

disp('x does not exit'); judge=1; break end; %%找 L 确定主元 cc=100000; for i=1:blength if a(i,k)>0 if (b(i)/a(i,k))< cc cc=b(i)/a(i,k); end end end; for i=1:blength if a(i,k)~=0 if (b(i)/a(i,k))==cc l=i; break end end end; %%计算 ,a 标准化 zu=a(l,k); aa=a; for i=1:l-1 for j=1:alength aa(i,j)=a(i,j)- a(l,j)*a(i,k)/a(l,k); end end; for i=l+1:blength for j=1:alength aa(i,j)=a(i,j)- a(l,j)*a(i,k)/a(l,k); end end; for j=1:alength aa(l,j)=a(l,j)/zu; end; %%b勺判别 bb=b; bb(l)=b(l)/zu; for i=1:l-1 bb(i)=b(i)- b(l)*a(i,k)/a(l,k); end; for i=l+1:blength bb(i)=b(i)- b(l)*a(i,k)/a(l,k); end; b=bb; %%确定判别数

层次分析法matlab程序举例

层次分析法程序举例: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); cil=(lamda-6)/5; crl=cil/1.26; w1=v(:,1)/sum(v(:,1)) 挑选合适的工作。经双方恳谈,已有三个单位表示愿意录用某毕业生。该生根据已有信息建立了一个层次结构模型,如下图所示。 程序: A=[1 1/7 1/5 2 4 1/3;7 1 3 5 5 3;5 1/3 1 5 5 3;1/2 1/3 1/5 1 2 1/3;1/4 1/5 1/5 1/2 1 1/5;3 1/3 1/3 3 5 1]; [v,d]=eig(A); eigenvalue=diag(d); lamda=max(eigenvalue); ci=(lamda-6)/5

cr=ci/1.26 w1=v(:,1)/sum(v(:,1)) B1=[1 1/4 1/2;4 1 3;2 1/3 1]; [v,d]=eig(B1); eigenvalue=diag(d); lamda=max(eigenvalue); cil1=(lamda-3)/2 cr1=cil1/0.52 b1w=v(:,1)/sum(v(:,1)) B2=[1 1/4 1/5;4 1 1/2;5 2 1]; [v,d]=eig(B2); eigenvalue=diag(d); lamda=max(eigenvalue); cil2=(lamda-3)/2 cr2=cil2/0.52 b2w=v(:,1)/sum(v(:,1)) B3=[1 1/2 2; 2 1 3;1/2 1/3 1]; [v,d]=eig(B3); eigenvalue=diag(d);

多目标线性规划的若干解法及MATLAB实现

多目标线性规划的若干解法及MATLAB 实现 一.多目标线性规划模型 多目标线性规划有着两个和两个以上的目标函数,且目标函数和约束条件全是线性函 数,其数学模型表示为: 11111221221122221122max n n n n r r r rn n z c x c x c x z c x c x c x z c x c x c x =+++??=+++?? ??=+++? (1) 约束条件为: 1111221121122222112212,,,0 n n n n m m mn n m n a x a x a x b a x a x a x b a x a x a x b x x x +++≤??+++≤?? ??+++≤?≥?? (2) 若(1)式中只有一个1122i i i in n z c x c x c x =+++ ,则该问题为典型的单目标线性规划。我们记:()ij m n A a ?=,()ij r n C c ?=,12(,,,)T m b b b b = ,12(,,,)T n x x x x = , 12(,,,)T r Z Z Z Z = . 则上述多目标线性规划可用矩阵形式表示为: max Z Cx = 约束条件:0 Ax b x ≤?? ≥? (3) 二.MATLAB 优化工具箱常用函数[3] 在MA TLAB 软件中,有几个专门求解最优化问题的函数,如求线性规划问题的linprog 、求有约束非线性函数的fmincon 、求最大最小化问题的fminimax 、求多目标达到问题的fgoalattain 等,它们的调用形式分别为: ①.[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub) f 为目标函数系数,A,b 为不等式约束的系数, Aeq,beq 为等式约束系数, lb,ub 为x 的下 限和上限, fval 求解的x 所对应的值。 算法原理:单纯形法的改进方法投影法 ②.[x,fval ]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub ) fun 为目标函数的M 函数, x0为初值,A,b 为不等式约束的系数, Aeq,beq 为等式约束

matlab 迭代法[精品]

matlab 迭代法[精品] 1. 矩阵 122,211,,,,,,,,,A,111A,222, 11,,,,,,,,221,,112,,,, 证明:求解以为系数矩阵线性方程组的Jacobi迭代式收敛的,而A1 Gauss-Seidel方法是发散的;求解以为系数矩阵线性方程组的A2实验名称Gauss-Seidel是收敛的,而Jacobi方法是发散的. 2. 矩阵 1aa,,,,Aaa,1 ,,,,aa1,, (a) 参数取什么值时,矩阵是正定的. a (b) 取什么值时,求以为系数矩阵线性方程组的Jacobi迭代式收aa 敛的. 1、根据迭代收敛性的充分必要条件来判断Jacobi迭代式与Gauss-Seide 迭代式的收敛性,迭代收敛性仅与方程组系数矩阵有关,与右端无关;而且不依赖于初值的选取。实验目的 2、根据矩阵的判断定理求得矩阵元素a的取值,同时根据矩阵线性方程组的Jacobi迭代式收敛的充分条件(严格对角占优)来求a得取值。 1、(1)检验线性方程组的Jacobi迭代式的收敛性: function jacobi(A) D=zeros(3); for i=1:3 D(i,i)=A(i,i); 实验内容end (算法、程B=D^(-1)*(D-A); 序、步骤和k=max(abs(eig(B))) 方法) if k<1

'该线性方程组的Jacobi迭代式是收敛的' else k>=1 '该线性方程组的Jacobi迭代式是发散的' end (2)检验线性方程组的Gauss-Seide迭代式的收敛性: function Gauss(A) D=zeros(3); L=zeros(3); U=zeros(3); for i=1:3 D(i,i)=A(i,i); end L(2:3,1)=A(2:3,1); L(3,2)=A(3,2); U(1,2:3)=A(1,2:3); U(2,3)=A(2,3); B=-(D+L)^(-1)*U; k=max(abs(eig(B))) if k<1 '该线性方程组的Gauss-Seidel迭代式是收敛的' else k>=1 '该线性方程组的Gauss-Seidel迭代式是发散的' end 2、(1)参数取什么值时,矩阵是正定的.(矩阵的特征值全为正) a >> syms a >> A=[1 a a;a 1 a;a a 1]; >> eig(A) ans = 2*a+1 1-a

实验二:MATLAB编程单纯形法求解

北京联合大学 实验报告 项目名称:运筹学专题实验报告 学院:自动化专业:物流工程 班级: 1201B 学号:2012100358081 姓名:管水城成绩: 2015 年 5 月 6 日

实验二:MATLAB 编程单纯形法求解 一、实验目的: (1)使学生在程序设计方面得到进一步的训练;,掌握Matlab (C 或VB)语言进行程序设计中一些常用方法。 (2)使学生对线性规划的单纯形法有更深的理解. 二、实验用仪器设备、器材或软件环境 计算机, Matlab R2006 三、算法步骤、计算框图、计算程序等 本实验主要编写如下线性规划问题的计算程序: ?? ?≥≥≤0 ,0..min b x b Ax t s cx 其中初始可行基为松弛变量对应的列组成. 对于一般标准线性规划问题: ?? ?≥≥=0 ,0..min b x b Ax t s cx 1.求解上述一般标准线性规划的单纯形算法(修正)步骤如下: 对于一般的标准形式线性规划问题(求极小问题),首先给定一个初始基本可行解。设初始基为B,然后执行如下步骤: (1).解B Bx b =,求得 1 B x B b -=,0,N B B x f c x ==令计算目标函数值 1(1,2,...,)i m B b i -=i 以b 记的第个分量 (2).计算单纯形乘子w, B wB C =,得到1 B w C B -=,对于非基变量,计算判别 数1i i i B i i z c c B p c σ-=-=-,可直接计算 σ =1 B A c c B --令 max{}k i R σσ∈=,R 为非基变量集合 若判别数0k σ≤ ,则得到一个最优基本可行解,运算结束;否则,转到下一 步 (3).解k k By p =,得到 1 k k y B p -=;若0k y ≤,即k y 的每个分量均非正数, 则停止计算,问题不存在有限最优解,否则,进行步骤(4).确定下标r,使 { }:0 min ,0 t r rk tk tk b b tk y y t y y >=>且r B x 为离基变量, ,r k B x p k 为进基变量,用p 替换得到新的基矩阵B,还回步骤(1) ;

相关文档