月T>8D3F:>C53C>DEFB2>3G3?23@@D23?032H@DA2BI6@N+!""’!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!动态规划求解方法的!" />

动态计划求解方法的Matlab实现及应用[]

动态计划求解方法的Matlab实现及应用[]
动态计划求解方法的Matlab实现及应用[]

动态规划求解方法的Matlab实现及应用[1].txt我自横刀向天笑,笑完我就去睡觉。你的手机比话费还便宜。路漫漫其修远兮,不如我们打的吧。第

%卷第

,期信息工程大学学报

S>:+%

<>+,

!""’年

>月

T>8D3F:

>C

53C>DEFB2>3

G3?23@@D23?

032H@DA2BI

6@N+!""’

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!

动态规划求解方法的

!"#$"%实现及应用

于斌,刘姝丽,韩中庚

<信息工程大学信息工程学院,河南郑州

#’"""!)

摘要:文章对动态规划问题的求解方法进行了分析研究,根据问题的特点、难点和关键点做了

针对性的处理,然后用

!"#$"%做了实现尝试,从而实现了“最佳组队”和“最短路线”等问题的

求解。实践证明所采用方法和程序都是有效的。

关键词:动态规划;基本方程;!"#$"%实现;最佳组队

中图分类号:*

!!&+,文献标识码:-文章编号:&%.&

$

"%.,

$

"">’

$

"#

!"#$"%

&’"$(>"#(*+

*,

#-’

./+"0(1

23*43"00(+4

5663*"1-"+7

8#9

566$(1"#(*+

/0

123,450

6789:2,。-<

=7>3?9?@3?

<53AB2B8B@

>C

53C>DEFB2>3

G3?23@@D23?,53C>DEFB2>3 G3?23@@D23?

032H@DA2BI,=7@3?J7>8 #’"""!,K723F)

5%9#3"1#:1I

F3F:IJ23?

F3L

23H@AB2?FB23?

B7@

LI3FE2M

ND>?DFEE23?

FNND>FM7,F3

@CC@MB2H@

L2AN>AF:

7FA

O@@3

L>3@

FMM>DL23?

B>

B7@

ND>O:@E+

P7@3

F3

FBB@ENB

>3

B7@

ND>O:@EA

>C“1@AB

B@FE9C>DE23?”F3L

“67>DB@AB

NFB7”7FA

O@@3

A8MM@AAC8::I

EFL@

OI

QFB:FO+

5B

2A

ND>H@L

B7FB

B7@

E@B7>L

F3L

ND>?DFEE@

FD@

@CC@MB2H@+

:’/

。*379:LI3FE2M

ND>?DFEE23?;OFA2M

@R8FB2>3;QFB:FO;O@AB

B@FE9C>DE23?

ND>O:@E

小规模的动态规划问题成为可能,从而使得动态规

"引言划的理论和方法在实际中的应用范围迅速增加。

目前,在计算机上实现动态规划的一般求解方

动态规划是一类解决多阶段决策问题的数学法并不多见,尤其是用来解决较复杂的具体问题的

方法,在工程技术、科学管理、工农业生产及军事等成果甚少。本文从实际出发,利用数学工具软件

领域都有广泛的应用。在理论上,动态规划是求解QFB:FO的强大功能,对动态规划模型的求解方法做

[&][!]

这类问题全局最优解的一种有效方法,特别是对于了尝试,并结合“最佳组队问题”和最短路问题

实际中的某些非线性规划问题可能是最优解的唯进行了应用检验,实际证明结果是令人满意的。

一方法。然而,动态规划仅仅是解决多阶段决策问

题的一种方法,或者说是考查问题的一种途径,而&动态规划的基本模型

不是一种具体的算法。就目前而言,动态规划没有

统一的标准模型,其解法也没有标准算法,在实际实际中,要构造一个标准的动态规划模型,通

应用中,需要具体问题具体分析。动态规划模型的常需要采用以下几个步骤:

求解问题是影响动态规划理论和方法应用的关键!划分阶段按照问题的时间或空间特征,把所在,而子问题的求解和大量结果的存储、调用更问题分为若干个阶段。这些阶段必须是有序的或

是一个难点所在。然而,随着计算机技术的快速发者是可排序的<即无后向性),否则,应用无效。

展,特别是内存容量和计算速度的增加,使求解较"选择状态将问题发展到各个阶段时所处

收稿日期:!""#

$

"%

$

&%修回日期:!""’

$

"’

$

"(

作者简介:于斌<&>(!

$),男,江苏姜堰人,信息工程大学硕士研究生,主要研究方向为通信工程。

>=信息工程大学学报

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ""

的各种客观情况用不同的状态表示,即称为状态。

状态的选择要满足无后效性和可知性,即状态不仅

依赖于状态的转移规律,还依赖于允许决策集合和

指标函数结构。

!确定决策变量与状态转移方程当过程处

于某一阶段的某个状态时,可以做出不同的决策,

描述决策的变量称为决策变量。在决策过程中,由

一个状态到另一个状态的演变过程称为状态转移。

状态转移就是根据上一阶段的状态和决策来导出

本阶段的状态。

"写出动态规划的基本方程动态规划的基

本方程一般根据实际问题可分为两种形式,逆序形

式和顺序形式。动态规划基本方程的逆序形式为

!"

)!

$"!

%"

<

#"

{&"$"

<

%&

}"

!

’,

.,

&

<

#""#$

<

#"

,)% !"

%&

),

’&,(,

{

边界条件:!’%&

<

#’

%&

)!>或

!<’

#’

)!

&<’

#’

,$’

<&)

其中第

"阶段的状态为#"

,其决策变量$"

表示状

态处于

#"

%&

的决策,<

#"

状态转移方程为

#"

%&

!

("

$"

)"阶段的允许决策集合记为

%"

)&"$"

,<

#"

,<

#"

,)

为指标函数。

当求解时,由边界条件从

"

!

’开始,由后向

前逆推,逐阶段求出最优决策和过程的最优值,直

到最后求出

!<&

#&

)即得到问题的最优解。

类似的,动态规划基本方程的顺序形式为

{ !"<

#"%&

)!"#$

$"!%>

#"%&

{&"<

#"%&

,$"

)%!"’&<

#"

)},"!&,(,.,’’&,’

)<

#&

边界条件:!>!>

<()

其中状态转移方程为

#"

!

(>

"$"

)"阶段的

<

#"

%&

,,

允许决策集合为

%<>#"

%&

)指标函数为

&"

,<

#"

%&

$"

)。当求解时,由边界条件从

"

!&开始,由前向

后顺推,逐阶段求出最优决策和过程的最优值,直到最后求出

!<’

#’

)即得到问题的最优解。

"

(基本方程求解的

*+$,+-实现

动态规划没有统一的标准模型,对于基本方程

<&)和<()的求解也没有统一的标准算法。但是,我们分析用动态规划解决问题的思想方法,会发现一个共同的明显特征,这就是将所研究的问题分为关联着的多个阶段后,每个阶段都有若干个对应的子问题,求解问题的关键就是按阶段次序求解大量子问题的最优解。而且对于每一个子问题的求解结

果都必须完整贮存下来,上一阶段子问题的结果将对下一阶段产生一定的影响,即对全局最优决策也

产生影响。如何处理好所有各阶段的大量子问题

的求解及结果的贮存和调用等,这是编程求解动态规划问题的难点所在,也是必须要解决的问题。(*

&

*+$,+-实现方法综述

在这里仅就动态规划基本方程的逆序形式进

行讨论,顺序形式也类似。对于各个阶段的子问题的求解方法基本都是相同的,在当前阶段的所有子问题求得最优决策以后,通过状态转移方程可以确定出下一阶段的状态和允许状态集合,从而可以在决策集合上来寻求这个新阶段的最优决策。从第

’个阶段出发,直到第一个阶段为止,即可得到全过程的最优决策。因此,在具体实现的过程中,针对每一个状态编写一个相对通用的函数,然后在主程序中循环调用该函数,以实现任意状态下的最优决策。问题的主体程序框图如图

&所示。

&主程序框图

(*

(具体程序实现

按照如上的程序框图,编写相关程序,主要由

.个子程序构成:

#主函数

/012$3"1[#+3,453]!

+,-’<6,7)

输入状态向量

6和相关指标矩阵

7,返回最优策略

和相应指标值;用全局变量

8,88,888,分别记录指

标值、状态地址和相应决策。

$状态计算子函数

!.’/0-1’

//<1,66,9+,)计

算相应状态下的最优决策,并存储;1为目前阶段数,66为前一阶段某个状态的最优决策,9+,为相应指标值。

!辅助计算子函数

!.’/0-1’[6:。,<]!

2>32<6,

$"$,1,6:。)确定变量

88;在某个阶段,对该阶段所

+期于斌等:动态规划求解方法的

9/#:/。实现及应用

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%

有状态进行预排列,并在

!!中记录状态的相对位

置;"表示本次是第几次调用,#$#表示排列的数目;

在主函数中调用。

!查找子函数

!"#$%&’#[%]&

(>*$<’’)根据

辅助计算子函数在

!!中记录的位置,在某个阶段

中查找相应状态的地址;’’为待查寻的状态;在子

函数

(中调用。

"指标计算子函数

!"#$%&’#[>]&

**<参数)

计算所确定决策的指标值。

(

+

+计算结果的存储方法

在实际计算过程中,对于中间的阶段性结果必

须要进行存储,也是为后续计算的基础,这是求解

动态规划问题的主要特征体现,而与存储相关的问

题也是动态规划编程实现的难点之一。在具体操

作中,将每个阶段的最优值的计算结果都要保存下来,在计算结束后就可以得到一族最优决策,通过比较各策略的优劣,从而可以得到问题的全局最优决策。同时,因为存储量很大,在计算过程中要注意内存变量的替换,以节省内存空间。具体做法可有两种:一是将所有决策结果综合比较后得到最优解,然后直接一次性存储;二是对每一次的计算结果都与上次存储的结果进行比较,再择优存储。由于在许多实际问题中,各阶段的状态往往是通过状态转移关系确定的,是不可预知的,所以,该状态下的所有决策也就不能提前预知。因此,只能采用第二种方法实现。方法如下:

#将需要存储的数据置为全局变量,每个阶段

对应一个数组,每个状态对应该数组中的一个元素,并赋初值为零;

$当得到某个允许决策时,确定其对应的状

态,寻找相应的存储空间;

%计算该决策的指标函数值,并与原来的存储

结果比较,然后择优存储。

值得说明的是,在一些复杂的问题中,在允许

状态集合中寻求相应的状态和对应的决策是一个

难点。如果对于某个阶段的允许状态集合的元素

<即状态)很多,如何快速找到相应的状态及存储空间?一般不能采用循环搜索的方法,因为它的耗时是不可忍受的。这在实际计算中是非常重要的,应该具体问题采取具体的方法。另外,计算结果的存储必须包括指标值的存储和决策变量的存储,因

此,还需要定义一个用于存储最优决策全局变量,

而且两个全局变量的读、写也必须是同步的。

+求解方法的实践与应用

++

,最佳组队问题[,]

在文献[,]“确定最佳组队问

中的第

+个问题:

题,即要求给出

,-名队员组成

.个队的组队方案,

使整体竞赛水平最高,并给出每个队的竞赛水平”。

文献[,]建立了最佳组队的动态规划模型,其

模型的基本方程以逆序形式给出,即

<)&

%/!{0<

,)0

!<

)},,

&2,3,+,(,

!,-,,-,1,,

0,-,

1,,

,(.> !

/,

{

!<)&

0.

<

2,

-)队的技术水平指标)

.-.&4+

42.+(3.<3,

其中决策变量为

1,

&<

.,4,5)

,

,即任取

+名队员

<

.,4,5)所组成的一个组队方案;状态变量为

-,

即从第 ,个到第

2个组队的组队方案所包含的队(,> 员,-,&{6,7,8,.,9};状态转移方程为-,

0,

&

-,

1

1,

;允许决策集合为

/,

&{<

.,4,5);.,4,5!

,<

.,

5)

:}(,

3,;

-,0,4,

"#<

,

&,,

+,

2)指标函数为

0<

-,1)表示决策

1<一个组队)关于状态

-的

,,,,,

技术水平指标;最优值函数

!<

-)表示在状态

,,,

下确定的

,个组队的技术水平指标之和

<,$

,$2)

的最大值。

该问题是一个较为复杂的动态规划模型,其状态数目较多,每个阶段的决策由

+个变量构成,而

且各阶段的状态不可预知。决策过程分为

2个阶

段,即分步给出

2个队的组队方案,在除了一个最

[,]

佳组队的

+名队员<

2,3,-)外的

,2名队员中组

2个队,每一阶段确定一个队。第一阶段有

5+

,2

个状态,5+

个子决策;第二阶段有

5.

个状态,5.

,2,2,2

子决策;第

+阶段有

56

个状态,56

个子决策;第

3

,2,2

阶段有

5,(个状态,5,(个子决策;第

2阶段有

,个状

,2,2

态,,个决策<即最优策略)。

参考

(7

(,编写相关程序,运行可以得最佳的决策方案,即最佳的组队方案为,< 。,2,<),<

/,

=,>)<

7,

?)<

@,

B)<

6,

D),其整体竞

,8,,A,,C,

赛水平指标为

47+(3,。

由此结果可以看出,求解结果<即组队方案)优

于文献[,]中的结果,从而也说明了文献[,]的解是

局部最优解,并非全局最优解。

+7(最短路线问题[(]

对于最短路线问题[(]也是一类非常有代表性

的问题,即对于给定的网络,从

6点到

3点寻求一

条最短的路线。其问题可以归结为

.个阶段的动

态规划决策问题,即基本方程的逆序形式为:

>.信息工程大学学报

+--(年

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$

{!"<

#"

)!"#$

$"!%"

<#"

{&"<

#"

,$"<

#"

))%!"%&<

#"%&

)},"!’,(,>,*,+,&

!<#)!-,或!’<

#’

)!&’<

#’

,’)

,,

编写程序,求解可以得到最短路线为

(

"

>&

"

*

+

"%&

"

++

"

,+

"

’,其最短距离为

&.。此结果与

直接计算的最优结果完全一致,充分说明该求解方法的有效性。

>结果的分析与说明

根据前面的分析和实际应用结果,可以充分地

证明,我们采用的求解动态规划问题的方法和

/012

304实现程序是有效可行的,由此可以求得问题的

全局最优解。特别是在变量的使用和存贮处理上,所采用的方法使得利用现有计算机资源求解一般

性的动态规划问题成为可能。但值得注意的是:在很多情况下,在确定某阶段状态时,首先要获取前一阶段的决策,因此,需将每个阶段的最优子决策和指标值记录并保存。当每个阶段都有多个状态时,则须计算该状态下的所有可能决策。为了快速寻找并调用相应计算结果,有必要对各阶段的所有状态进行唯一、简单的标识,并记录其存储地址。

根据目前的计算机技术水平,这种方法也不是

对任何动态规划问题都能解决,当问题的阶段数和

各阶段的状态数很大时,从理论上是可行的,但实际是无法做到的。这里我们可以做一个初步的估算,譬如:就最佳组队问题,其时间和空间复杂度都是

-<

./),按照

&(个人的情况来计算,每个状态至

少需要

.-56178才能完成其指标值和最优策略的存

储,那么,不难得到解决不同规模的问题需消耗的资源见表

&。

&不同分组人数需消耗资源

分组人数

&(

&.

+&

+>

+,

状态数

&-9

&--9

,--9

(:>/

(-/

所需内存

.--95

./5

(’/5

>*+/5

>。5

计算时间

&-"#$

&--"#$

,--"#$

&--<

&---<

可见,人数多于

+><包括

+>)时问题的求解几

乎是不可能的了。

参考文献:

[&]韩中庚

:最佳组队方案及模型[=]:数学的实践与认识,&>>,,+,<+):&**

?

&>-:

[+]编写组

:运筹学<修订版)[/]:北京:清华大学出版社,&>>>:

[*]张志涌

:精通

/@AB@5

’:(版[/]:北京:北京航空航天

大学出版社,+--*:

##############################################

<上接第

>>页)

&论文指标得分

C&

C+

C*

C>

C(

C’

D&

.:

-.

:+

’:>

’:*

.:

>

>:(

D+

,:

+

>

:-,:>

(:.

>:

+

动态规划-图论

§1动态规划模型 如图所示,给定一个线路网络,两点之间连线上的数字表示 两点间距离,试求一条从A到E的路线,使总距离为最短。Mattlab求解: 首先利用Excel建立两个工作表edge和n分别存储图的上三 角阵和顶点数量。其中edge= 99999 5 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 3 7 99999 99999 99999 99999 99999 99999 99999 99999 6 3 99999 99999 99999 99999 99999 99999 99999 99999 99999 6 99999 99999 99999 99999 99999 99999 99999 99999 3 8 99999 99999 99999 99999 99999 99999 99999 99999 1 99999 99999 99999 99999 99999 99999 99999 99999 99999 3 99999 99999 99999 99999 99999 99999 99999 99999 7 99999 99999 99999 99999 99999 99999 99999 99999 99999 n=9,然后在Matlab调入以上数据。同时将自编的动态规划 软件“dynamic.m”调入当前目录之中,在Matlab命令窗口

输入dynamic,回车后则在窗口显示出路径Path 和距离distance §2 最小生成树 例1 某工厂要架设局域网联通工厂各个部门。已知工厂有7个部门,各个部门间铺设网线的距离如上图所示,计算出铺设网线的最短距离。 Matlab 的算法: 首先,将上图的邻接矩阵存储为G ,顶点数存储为N ;即:G= 99999 50 60 99999 99999 99999 99999 50 99999 99999 65 40 99999 99999 60 99999 99999 52 99999 99999 45 99999 65 52 99999 50 30 42 99999 40 99999 50 99999 70 99999 99999 99999 99999 30 70 99999 99999 99999 99999 45 42 99999 99999 99999 2 5 3 1 4 7 6 50 60 45 65 52 40 50 70 30 42

《应用计算方法教程》matlab作业二

6-1 试验目的计算特征值,实现算法 试验容:随机产生一个10阶整数矩阵,各数均在-5和5之间。 (1) 用MATLAB 函数“eig ”求矩阵全部特征值。 (2) 用幂法求A 的主特征值及对应的特征向量。 (3) 用基本QR 算法求全部特征值(可用MATLAB 函数“qr ”实现矩阵的QR 分解)。 原理 幂法:设矩阵A 的特征值为12n ||>||||λλλ≥???≥并设A 有完全的特征向量系12,,,n χχχ???(它们线性无关),则对任意一个非零向量0n V R ∈所构造的向量序列1k k V AV -=有11()lim ()k j k k j V V λ→∞ -=, 其中()k j V 表示向量的第j 个分量。 为避免逐次迭代向量k V 不为零的分量变得很大(1||1λ>时)或很小(1||1λ<时),将每一步的k V 按其模最大的元素进行归一化。具体过程如下: 选择初始向量0V ,令1max(),,,1k k k k k k k V m V U V AU k m +===≥,当k 充分大时1111,max()max() k k U V χλχ+≈ ≈。 QR 法求全部特征值: 111 11222 111 ,1,2,3,k k k k k A A Q R R Q A Q R k R Q A Q R +++==????==??=???? ??????==?? 由于此题的矩阵是10阶的,上述算法计算时间过长,考虑采用改进算法——移位加速。迭 代格式如下: 1 k k k k k k k k A q I Q R A R Q q I +-=?? =+? 计算k A 右下角的二阶矩阵() () 1,1 1,() (),1 ,k k n n n n k k n n n n a a a a ----?? ? ??? 的特征值()()1,k k n n λλ-,当()()1,k k n n λλ-为实数时,选k q 为()()1,k k n n λλ-中最接近(),k n n a 的。 程序

0.618法的matlab实现

实验报告 实验题目: 0.618法的MATLAB实现学生姓名: 学号: 实验时间: 2013-5-13

一.实验名称: 0.618法求解单峰函数极小点 二.实验目的及要求: 1. 了解并熟悉0.618法的方法原理, 以及它的MATLAB 实现. 2. 运用0.618法解单峰函数的极小点. 三.实验内容: 1. 0.618法方法原理: 定理: 设f 是区间],[b a 上的单峰函数, ] ,[ ,)2()1(b a x x ∈, 且)2()1(x x <. 如果)()()2()1(x f x f >, 则对每一个],[)1(x a x ∈, 有)()()2(x f x f >; 如果)()()2()1(x f x f ≤, 则对每一个] ,[) 2(b x x ∈, 有)()()1(x f x f ≥. 根据上述定理, 只需选择两个试探点, 就可将包含极小点的区间缩短. 事实上, 必有 如果)()()2()1(x f x f >, 则],[)1(b x x ∈; 如果)()() 2()1(x f x f ≤, 则][)2(x a x ,∈. 0.618 法的基本思想是, 根据上述定理, 通过取试探点使包含极小点的区间(不确定区间)不断缩短, 当区间长度小到一定程度时, 区间上各点的函数值均接近极小值, 因此任意一点都可作为极小点的近似. 0.618 法计算试探点的公式: ). (618.0),(382.0k k k k k k k k a b a a b a -+=-+=μλ 2. 0.618法的算法步骤: ①置初始区间],[11b a 及精度要求0>L , 计算试探点1λ和1μ, 计算函数值)(1λf 和)(1μf . 计算公式是 ).(618.0 ),(382.011111111a b a a b a -+=-+=μλ 令1=k . ②若L a b k k <-, 则停止计算. 否则, 当)()(k k f f μλ>时, 转步骤③; 当)()(k k f f μλ≤时, 转步骤④. ③置k k a λ=+1, k k b b =+1, k k μλ=+1,)(618.01111++++-+=k k k k a b a μ, 计算函数值)(1+k f μ, 转步骤⑤.

计算方法_全主元消去法_matlab程序

%求四阶线性方程组的MA TLAB程序 clear Ab=[0.001 2 1 5 1; 3 - 4 0.1 -2 2; 2 -1 2 0.01 3; 1.1 6 2.3 9 4];%增广矩阵 num=[1 2 3 4];%未知量x的对应序号 for i=1:3 A=abs(Ab(i:4,i:4));%系数矩阵取绝对值 [r,c]=find(A==max(A(:))); r=r+i-1;%最大值对应行号 c=c+i-1;%最大值对应列号 q=Ab(r,:),Ab(r,:)=Ab(i,:),Ab(i,:)=q;%行变换 w=Ab(:,c),Ab(:,c)=Ab(:,i),Ab(:,i)=w;%列变换 n=num(i),num(i)=num(c),num(c)=n;%列变换引起未知量x次序变化for j=i:3 Ab(j+1,:)=-Ab(j+1,i)*Ab(i,:)/Ab(i,i)+Ab(j+1,:);%消去过程 end end %最后得到系数矩阵为上三角矩阵 %回代算法求解上三角形方程组 x(4)=Ab(4,5)/Ab(4,4); x(3)=(Ab(3,5)-Ab(3,4)*x(4))/Ab(3,3); x(2)=(Ab(2,5)-Ab(2,3)*x(3)-Ab(2,4)*x(4))/Ab(2,2); x(1)=(Ab(1,5)-Ab(1,2)*x(2)-Ab(1,3)*x(3)-Ab(1,4)*x(4))/Ab(1,1); for s=1:4 fprintf('未知量x%g =%g\n',num(s),x(s)) end %验证如下 %A=[0.001 2 1 5 1; 3 -4 0.1 -2 2;2 -1 2 0.01 3; 1.1 6 2.3 9 4]; %b=[1 2 3 4]'; %x=A\b; %x1= 1.0308 %x2= 0.3144 %x3= 0.6267 %x4= -0.0513

动态计划求解方法的Matlab实现及应用[]

动态规划求解方法的Matlab实现及应用[1].txt我自横刀向天笑,笑完我就去睡觉。你的手机比话费还便宜。路漫漫其修远兮,不如我们打的吧。第 %卷第 ,期信息工程大学学报 S>:+% <>+, !""’年 >月 T>8D3F: >C 53C>DEFB2>3 G3?23@@D23? 032H@DA2BI 6@N+!""’ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! 动态规划求解方法的 !"#$"%实现及应用 于斌,刘姝丽,韩中庚 <信息工程大学信息工程学院,河南郑州 #’"""!) 摘要:文章对动态规划问题的求解方法进行了分析研究,根据问题的特点、难点和关键点做了 针对性的处理,然后用 !"#$"%做了实现尝试,从而实现了“最佳组队”和“最短路线”等问题的 求解。实践证明所采用方法和程序都是有效的。 关键词:动态规划;基本方程;!"#$"%实现;最佳组队 中图分类号:* !!&+,文献标识码:-文章编号:&%.& $ "%.,

$ "# !"#$"% &’"$(>"#(*+ *, #-’ ./+"0(1 23*43"00(+4 5663*"1-"+7 8#9 566$(1"#(*+ /0 123,450 6789:2,。-< =7>3?9?@3? <53AB2B8B@ >C 53C>DEFB2>3 G3?23@@D23?,53C>DEFB2>3 G3?23@@D23? 032H@DA2BI,=7@3?J7>8 #’"""!,K723F) 5%9#3"1#:1I F3F:IJ23? F3L 23H@AB2?FB23? B7@ LI3FE2M ND>?DFEE23? FNND>FM7,F3 @CC@MB2H@ L2AN>AF: 7FA O@@3 L>3@

动态规划 销售人员分配问题(matlab编程)

数学规划课程设计 题目:销售人员费配问题 姓名: 学号: 成绩: 2011年6月

销售人员费配问题 摘要:动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法,本论文通过对动态规划的基本概念和基本思路,并利用Matlab对动态规划中的销售人员分配问题进行了分析,然后利用Matlab语言进行了程序设计和计算,是复杂问题简单化,避免了繁琐的计算,从而使问题能跟方便地得到解决。 关键词:动态规划销售人员分配问题Matlab语言

一、问题重述 某企业甲、乙、丙三个销售市场,其市场的利润与销售人员的分配有关,现有6个销售人员, 二、问题分析 首先我们对设备的分配规定一个顺序,即先考虑分配给甲市场,其次乙市场,最后丙市场,但分配时必须保证企业的总收益最大。 将问题按分配过程分为三个阶段,根据动态规划逆序算法,可设: 1、阶段数k=1,2,3(即甲、乙、丙三个市场的编号分别为1,2,3); 2、状态变量x k 表示分配给第k 个市场至第3个市场的人员数(即第k 阶段初尚未分配的人员数); 3、决策变量u k 表示分配给第k 市场的人员数; 4、状态转移方程:x k+1=x k -u k ; 5、g k (u k )表示u k 个销售人员分配到第k 个市场所得的收益值,它由下表可查得; 6、f k (x k )表示将x k 个销售人员分配到第k 个市场所得到的最大收益值,因而可得出递推方程: f k (x k )= 6 ,...,1,0max =k u [ g k (u k )+ f k+1(x k -u k )],k=1,2,3 f 4(x 4)=0 三、问题求解 1)k=3时,市场丙的分配方案和总收益. 最大收益:f 3(x 3)=6 ,...,1,0max 3=u [g 3(x 3)]

最优化方法的Matlab实现(公式(完整版))

第九章最优化方法的MatIab实现 在生活和工作中,人们对于同一个问题往往会提出多个解决方案,并通过各方面的论证从中提取最佳方案。最优化方法就是专门研究如何从多个方案中科学合理地提取出最佳方案的科学。由于优化问题无所不在,目前最优化方法的应用和研究已经深入到了生产和科研的各个领域,如土木工程、机械工程、化学工程、运输调度、生产控制、经济规划、经济管理等,并取得了显著的经济效益和社会效益。 用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容: 1)建立数学模型即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。 2)数学求解数学模型建好以后,选择合理的最优化方法进行求解。 最优化方法的发展很快,现在已经包含有多个分支,如线性规划、整数规划、非线性规划、动态规划、多目标规划等。 9.1 概述 利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。 具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。 9.1.1优化工具箱中的函数 优化工具箱中的函数包括下面几类: 1 ?最小化函数

2.方程求解函数 3.最小—乘(曲线拟合)函数

4?实用函数 5 ?大型方法的演示函数 6.中型方法的演示函数 9.1.3参数设置 利用OPtimSet函数,可以创建和编辑参数结构;利用OPtimget函数,可以获得o PtiOns优化参数。 ? OPtimget 函数 功能:获得OPtiOns优化参数。 语法:

王能超 计算方法——算法设计及MATLAB实现课后代码

第一章插值方法 1.1Lagrange插值 1.2逐步插值 1.3分段三次Hermite插值 1.4分段三次样条插值 第二章数值积分 2.1 Simpson公式 2.2 变步长梯形法 2.3 Romberg加速算法 2.4 三点Gauss公式 第三章常微分方程德差分方法 3.1 改进的Euler方法 3.2 四阶Runge-Kutta方法 3.3 二阶Adams预报校正系统 3.4 改进的四阶Adams预报校正系统 第四章方程求根 4.1 二分法 4.2 开方法 4.3 Newton下山法 4.4 快速弦截法 第五章线性方程组的迭代法 5.1 Jacobi迭代 5.2 Gauss-Seidel迭代 5.3 超松弛迭代 5.4 对称超松弛迭代 第六章线性方程组的直接法 6.1 追赶法 6.2 Cholesky方法 6.3 矩阵分解方法 6.4 Gauss列主元消去法

第一章插值方法 1.1Lagrange插值 计算Lagrange插值多项式在x=x0处的值. MATLAB文件:(文件名:Lagrange_eval.m)function [y0,N]= Lagrange_eval(X,Y,x0) %X,Y是已知插值点坐标 %x0是插值点 %y0是Lagrange插值多项式在x0处的值 %N是Lagrange插值函数的权系数 m=length(X); N=zeros(m,1); y0=0; for i=1:m N(i)=1; for j=1:m if j~=i; N(i)=N(i)*(x0-X(j))/(X(i)-X(j)); end end y0=y0+Y(i)*N(i); end 用法》X=[…];Y=[…]; 》x0= ; 》[y0,N]= Lagrange_eval(X,Y,x0) 1.2逐步插值 计算逐步插值多项式在x=x0处的值. MATLAB文件:(文件名:Neville_eval.m)function y0=Neville_eval(X,Y,x0) %X,Y是已知插值点坐标 %x0是插值点 %y0是Neville逐步插值多项式在x0处的值 m=length(X); P=zeros(m,1); P1=zeros(m,1); P=Y; for i=1:m P1=P; k=1; for j=i+1:m k=k+1;

基于Matlab的动态规划程序实现

动态规划方法的Matlab 实现与应用 动态规划(Dynamic Programming)是求解决策过程最优化的有效数学方法,它是根据“最优决策的任何截断仍是最优的”这最优性原理,通过将多阶段决策过程转化为一系列单段决策问题,然后从最后一段状态开始逆向递推到初始状态为止的一套最优化求解方法。 1.动态规划基本组成 (1) 阶段 整个问题的解决可分为若干个阶段依次进行,描述阶段的变量称为阶段变量,记为k (2) 状态 状态表示每个阶段开始所处的自然状况或客观条件,它描述了研究问题过程的状况。各阶段状态通常用状态变量描述,用k x 表示第k 阶段状态变量,n 个阶段决策过程有n+ 1个状态。 (3) 决策 从一确定的状态作出各种选择从而演变到下一阶段某一状态,这种选择手段称为决策。描述决策的变量称为决策变量,决策变量限制的取值范围称为允许决策集合。用()k k u x 表示第k 阶段处于状态k x 时的决策变量,它是k x 的函数。用()k k D x Dk(xk)表示k x 的允许决策的集合。 (4) 策略 每个阶段的决策按顺序组成的集合称为策略。由第k 阶段的状态k x 开始到终止状态的后部子过程的策略记为{}11(),(),,()k k k k n n u x u x u x ++ 。可供选择的策略的范围称为允许策略集合,允许策略集合中达到最优效果的策略称为最优策略。从初始状态* 11()x x =出发,过程按照最优策略和状态转移方程演变所经历的状态序列{ } **** 121,,,,n n x x x x + 称为最优轨线。 (5) 状态转移方程 如果第k 个阶段状态变量为k x ,作出的决策为k u ,那么第k+ 1阶段的状态变量1k x +也被完全确定。用状态转移方程表示这种演变规律,记为1(,)k k k x T x u +=。 (6) 指标函数 指标函数是系统执行某一策略所产生结果的数量表示,是衡量策略优劣的数量指标,它定义在全过程和所有后部子过程上,用()k k f x 表示。过程在某阶段j 的阶段指标函数是衡量该阶段决策优劣数量指标,取决于状态j x 和决策j u ,用(,)j j j v x u 表示。 2.动态规划基本方程 (){} 11()min ,,(),()k k k k k k k k k k f x g v x u f x u D x ++=∈???? Matlab 实现 (dynprog.m 文件) function [p_opt,fval]=dynprog (x,DecisFun,SubObjFun,TransFun,ObjFun) % x 是状态变量,一列代表一个阶段的所有状态; % M-函数DecisFun(k,x) 由阶段k 的状态变量x 求出相应的允许决策变量; % M-函数SubObjFun(k,x,u) 是阶段指标函数, % M-函数ObjFun(v,f) 是第k 阶段至最后阶段的总指标函数 % M-函数TransFun(k,x,u) 是状态转移函数, 其中x 是阶段k 的某状态变量, u 是相应的决策变量; %输出 p_opt 由4列构成,p_opt=[序号组;最优策略组;最优轨线组;指标函数值组]; %输出 fval 是一个列向量,各元素分别表示p_opt 各最优策略组对应始端状态x 的最优函数值。

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

[设计]罚函数法MATLAB程序

[设计]罚函数法MATLAB程序 一、进退法、0.618法、Powell法、罚函数法的Matlab程序设计罚函数法(通用) function y=ff(x,k) y=-17.86*0.42*x(1)/(0.8+0.42*x(1))*(1-exp(- 2*(0.8+0.42*x(1))/3))*exp(-1.6)*x(2)-22. 99*x(1)/(0.8+x(1))*(1-exp(-2*(0.8+x(1))/3))*x(3)+k*(x(2)- (1.22*10^2*(9517.8*exp(-1 .6-2*0.42*x(1)/3)*x(2)+19035.6*exp(- 2*x(1)/3)*x(3)))/(1.22*10^2+9517.8*exp(-1.6-2 *0.42*x(1)/3)*x(2)+19035.6*exp(-2*x(1)/3)*x(3)))^2+k*(x(3)-exp(-0.8-2*x(1)/3)*x(3) -exp(-2.4-2*0.42*x(1)/3)*x(2))^2; % 主函数,参数包括未知数的个数n,惩罚因子q,惩罚因子增长系数k,初值x0,以及允许的误差r function G=FHS(x0,q,k,n,r,h,a) l=1; while (l) x=powell(x0,n,q,r(1),h,a); %调用powell函数 g(1)=ff1(x),g(2)=ff2(x) . . . g(p)=ffp(x); %调用不等式约束函数,将其值 %存入数组g h(1)=hh1(x),h(2)=hh2(x) . . . h(t)=hht(x); %调用等式约束函数,将其值%存入数组h for i=1:p

matlab用于计算方法的源程序

1、Newdon迭代法求解非线性方程 function [x k t]=NewdonToEquation(f,df,x0,eps) %牛顿迭代法解线性方程 %[x k t]=NewdonToEquation(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:原函数,定义为内联函数 ?:函数的倒数,定义为内联函数 %x0:初始值 %eps:误差限 % %应用举例: %f=inline('x^3+4*x^2-10'); ?=inline('3*x^2+8*x'); %x=NewdonToEquation(f,df,1,0.5e-6) %[x k]=NewdonToEquation(f,df,1,0.5e-6) %[x k t]=NewdonToEquation(f,df,1,0.5e-6) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquation(f,df,1) if nargin==3 eps="0".5e-6; end tic; k=0; while 1 x="x0-f"(x0)./df(x0); k="k"+1; if abs(x-x0) < eps || k >30 break; end x0=x; end t=toc; if k >= 30 disp('迭代次数太多。'); x="0"; t="0"; end

2、Newdon迭代法求解非线性方程组 function y="NewdonF"(x) %牛顿迭代法解非线性方程组的测试函数 %定义是必须定义为列向量 y(1,1)=x(1).^2-10*x(1)+x(2).^2+8; y(2,1)=x(1).*x(2).^2+x(1)-10*x(2)+8; return; function y="NewdonDF"(x) %牛顿迭代法解非线性方程组的测试函数的导数 y(1,1)=2*x(1)-10; y(1,2)=2*x(2); y(2,1)=x(2).^+1; y(2,2)=2*x(1).*x(2)-10; return; 以上两个函数仅供下面程序的测试 function [x k t]=NewdonToEquations(f,df,x0,eps) %牛顿迭代法解非线性方程组 %[x k t]=NewdonToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组(事先定义) ?:方程组的导数(事先定义) %x0:初始值 %eps:误差限 % %说明:由于虚参f和df的类型都是函数,使用前需要事先在当前目录下采用函数M文件定义% 另外在使用此函数求解非线性方程组时,需要在函数名前加符号“@”,如下所示 % %应用举例: %x0=[0,0];eps=0.5e-6; %x=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)

动态规划_销售人员分配问题(matlab编程)

一、问题重述 某企业甲、乙、丙三个销售市场,其市场的利润与销售人员的分配有关,现有6个销售人员,分配到各市场所获利润如下表示,试问应如何分配销售人员才能使总利润最大? 二、问题分析 首先我们对设备的分配规定一个顺序,即先考虑分配给甲市场,其次乙市场,最后丙市场,但分配时必须保证企业的总收益最大。 将问题按分配过程分为三个阶段,根据动态规划逆序算法,可设: 1、阶段数k=1,2,3(即甲、乙、丙三个市场的编号分别为1,2,3); 2、状态变量x k 表示分配给第k 个市场至第3个市场的人员数(即第k 阶段初尚未分配的人员数); 3、决策变量u k 表示分配给第k 市场的人员数; 4、状态转移方程:x k+1=x k -u k ; 5、g k (u k )表示u k 个销售人员分配到第k 个市场所得的收益值,它由下表可查得; 6、f k (x k )表示将x k 个销售人员分配到第k 个市场所得到的最大收益值,因而可得出递推方程: f k (x k )= 6 ,...,1,0max =k u [ g k (u k )+ f k+1(x k -u k )],k=1,2,3 f 4(x 4)=0 三、问题求解 1)k=3时,市场丙的分配方案和总收益. 最大收益:f 3(x 3)=6 ,...,1,0max 3=u [g 3(x 3)]

最大收益:f 2(x 2)=2 max u [g 2(u 2)+ f 3(x 3)]= 2 max u [g 2(u 2)+ f 3(x 2- u 2 )] 最大收益:f 1(x 1)=1 max u [g 1(u 1)+ f 2(x 1- u 1)]= max[g 1(u 1)+ f 2(4- u 1)] 为此,我们可以用Matlab 语言编程使问题能跟方便地得到解决,其算法设计如下图:

龙格库塔方法matlab实现

龙格库塔方法matlab实现~ function ff=rk(yy,x0,y0,h,a,b)%yy为y的导函数,x0,y0,为初值,h为步长,a,b为区间 c=(b-a)/h+1;i1=1; %c为迭代步数;i1为迭代步数累加值 y=y0;z=zeros(c,6); %z生成c行,5列的零矩阵存放结果; %每行存放c次迭代结果,每列分别存放k1~k4及y的结果 for x=a:h:b if i1<=c k1=feval(yy,x,y); k2=feval(yy,x+h/2,y+(h*k1)/2); k3=feval(yy,x+h/2,y+(h*k2)/2); k4=feval(yy,x+h,y+h*k3); y=y+(h/6)*(k1+2*k2+2*k3+k4); z(i1,1)=x;z(i1,2)=k1;z(i1,3)=k2;z(i1,4)=k3;z(i1,5)=k4;z(i1,6)=y; i1=i1+1; end end fprintf(‘结果矩阵,第一列为x(n),第二列~第五列为k1~k4,第六列为y(n+1)的结果') z %在命令框输入下列语句 %yy=inline('x+y'); %>> rk(yy,0,1,0.2,0,1) %将得到结果 %结果矩阵,第一列为x(n),第二列~第五列为k1~k4第六列为y(n+1)的结果 %z = % 0 1.0000 1.2000 1.2200 1.4440 1.2428 % 0.2000 1.4428 1.6871 1.7115 1.9851 1.5836 % 0.4000 1.9836 2.2820 2.3118 2.6460 2.0442 % 0.6000 2.6442 3.0086 3.0451 3.4532 2.6510 % 0.8000 3.4510 3.8961 3.9407 4.4392 3.4365 % 1.0000 4.4365 4.9802 5.0345 5.6434 4.4401

0计算方法及MATLAB实现简明讲义课件PPS8-1欧拉龙格法

第8章 常微分方程初值问题数值解法 8.1 引言 8.2 欧拉方法 8.3 龙格-库塔方法 8.4 单步法的收敛性与稳定性 8.5 线性多步法

8.1 引 言 考虑一阶常微分方程的初值问题 00(,),[,],(). y f x y x a b y x y '=∈=(1.1) (1.2) 如果存在实数 ,使得 121212(,)(,).,R f x y f x y L y y y y -≤-?∈(1.3) 则称 关于 满足李普希茨(Lipschitz )条件, 称为 的李普希茨常数(简称Lips.常数). 0>L f y L f (参阅教材386页)

计算方法及MATLAB 实现 所谓数值解法,就是寻求解 在一系列离散节点 )(x y <<<<<+121n n x x x x 上的近似值 . ,,,,,121+n n y y y y 相邻两个节点的间距 称为步长. n n n x x h -=+1 如不特别说明,总是假定 为定数, ),2,1( ==i h h i 这时节点为 . ) ,2,1,0(0 =+=i nh x x n 初值问题(1.1),(1.2)的数值解法的基本特点是采取 “步进式”. 即求解过程顺着节点排列的次序一步一步地向前推进. 00(,),[,], (). y f x y x a b y x y '=∈=

描述这类算法,只要给出用已知信息 ,,,21--n n n y y y 计算 的递推公式. 1+n y 一类是计算 时只用到前一点的值 ,称为单步法. 1+n y n y 另一类是用到 前面 点的值 , 1+n y k 11,,,+--k n n n y y y 称为 步法. k 其次,要研究公式的局部截断误差和阶,数值解 与 精确解 的误差估计及收敛性,还有递推公式的计算 稳定性等问题. n y )(n x y 首先对方程 离散化,建立求数值解的递推 公式. ),(y x f y ='

(完整版)纵横向拉开档次法的MATLAB实现

简介:本文档为《纵横向拉开档次法的MATLAB实现》,可适用于工程科技领域,主题内容包含globalxystdszxystdxy定义全局变量loadshuju原始数据xystd=zscore(shuju)数据无量纲处理xystdrow,符等。 global xystdsz xystd x y %定义全局变量 load shuju %原始数据 xystd= zscore (shuju); %数据无量纲处理 [xystdrow,xystdcol]=size(xystd); %----------区域知识创造能力评价---------- for tt=1:xystdcol xystdsz{tt}(:,:)=xystd{tt}(:,1:10); %提取区域知识创造能力指标无量纲值 end [xystdszrow,xystdszcol]=size(xystdsz); [xyrow,xycol]=size(xystdsz{1}); w0=zeros(1,xycol); for i=1:xycol w0(1,i)=1/xycol; % 优化初始值 end Aeq=[]; beq=[]; lb=zeros(1,xycol);ub=ones(1,xycol); %zeros生成零矩阵;ones生成全1阵。 options =optimset('largescale','off'); %优化函数,largescale大规模算法 [w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options ); %优化求权重;fmincon用来求解非线性多元函数最小值。 wqz1=w./sum(w); %权重归一化 for tt=1:xystdszcol z{tt}(:,1)=xystd{tt}(:,1:10)*wqz1'; % 求评价值 pxacz(:,tt)=px(z{tt}(:,1)) ; % 对评价值排序 end clear w0 w lb ub faval ; clear global xystdsz; %--------区域知识流动能力评价------------ for tt=1:xystdszcol xystdsz{tt}(:,:)=xystd{tt}(:,11:16); %提取区域知识流动能力指标无量纲值 end global xystdsz; [xystdszrow,xystdszcol]=size(xystdsz); [xyrow,xycol]=size(xystdsz{1}); w0=zeros(1,xycol); for i=1:xycol w0(1,i)=1/xycol; % 优化w初始值 end Aeq=[]; beq=[]; lb=zeros(1,xycol);ub=ones(1,xycol); options =optimset('largescale','off'); [w,faval]=fmincon(@YHQU,w0,[],[],Aeq,beq,lb,ub,@fun,options );

用MATLAB实现结构可靠度计算.

用MATLAB实现结构可靠度计算 口徐华…朝泽刚‘u刘勇‘21 。 (【l】中国地质大学(武汉工程学院湖北?武汉430074; 12】河海大学土木工程学院江苏?南京210098 摘要:Matlab提供了各种矩阵的运算和操作,其中包含结构可靠度计算中常用的各种数值计算方法工具箱,本文从基本原理和相关算例分析两方面,阐述利用Matlab,编制了计算结构可靠度Matlab程.序,使得Matlab-语言在可靠度计算中得到应用。 关键词:结构可靠度Matlab软件最优化法 中图分类号:TP39文献标识码:A文章编号:1007-3973(200902-095-Ol 1结构可靠度的计算方法 当川概率描述结构的可靠性时,计算结构可靠度就是计算结构在规定时问内、规定条件F结构能够完成预定功能的概率。 从简单到复杂或精确稃度的不同,先后提出的可靠度计算方法有一次二阶矩方法、二次二阶矩方法、蒙特卡洛方法以及其他方法。一次■阶矩方法又分为。I-心点法和验算点法,其中验算点法足H前可靠度分析最常川的方法。 2最优化方法计算可靠度指标数学模型 由结构111n个任意分布的独立随机变量一,x:…以表示的结构极限状态方程为:Z=g(■.托…t=0,采用R-F将非正念变量当罱正态化,得到等效正态分布的均值o:和标准差虹及可靠度指标B,由可靠度指标B的几何意义知。o;辟

开始时验算点未知,把6看成极限状态曲面上点P(■,爿:---37,的函数,通过优化求解,找到B最小值。求解可靠皮指标aJ以归结为以下约束优化模型: rain睁喜t华,2 s.,.Z=g(工i,x2’,…,工:=0 如极限状态方栉巾某个变最(X。可用其他变量表示,则上述模型jfIJ‘转化为无约束优化模型: 。。B!:手f生丛r+阻:坚:坠:盐尘}二剐 t∞oY?’【叫,J 3用MATLAB实现结构可靠度计算 3.1Matlab简介 Matlab是++种功能强、效率高、便.丁.进行科学和工程计算的交互式软件包,汇集了人量数学、统计、科学和工程所需的函数,MATI.AB具有编程简甲直观、用户界mf友善、开放性强等特点。将MATLAB用于蒙特卡罗法的一个显著优点是它拥有功能强大的随机数发生器指令。 3.2算例 3.2.I例:已知非线形极限状态方程z=g(t r'H=567f r-0.5H2=0’f、r服从正态分布。IIf=0.6,o r=0.0786;la|_ 2.18,o r_0.0654;H服从对数正态分布。u H= 3218,O。 =0.984。f、r、H相互独立,求可靠度指标B及验算点(,,r’,H‘。 解:先将H当量正念化:h=ln H服从正态分布,且 ,‘-““了:等专虿’=,。49?口二-、『五ir面_。。3

波前法及matlab实现

有限元二维热传导波前法MATLAB程序 ?二维热传导有限元 ?使用高斯消去法解线性方程组的二维热传导有限元程序 ?波前法的基本概念与算法 ?使用波前法解线性方程组的二维热传导有限元程序 ?消元过程 ?波前法与高斯消去法的效率之比较 ?小结:波前法的过去、现在和未来 波前法是求解线性方程组的一种方法,广泛用于有限元程序。它最初由英国人(?)B.M. Irons于1970在“国际工程计算方法杂志”上发表。30多年来,波前法有了不少变种。本文所用算法,采于法国人Pascal JOLY所著《Mise en Oeuvre de la Méthode des Eléments Finis》。这本书是我1993年在比利时一家书店买的,书中有一节"波前法",六页纸,解释了基本概念和算法,但没有程序,也没有细节讨论。我曾花了两个半天的时间,在网上寻找波前法程序,或更详细的资料,没有找到(需要花钱才能看的文献不算)。倒是看到不少中国人,也在寻找。 一些人说,波前法程序太难懂了。 通过自己编写程序,我同意这些人的说法,确实难。我还真很少编如此耗费脑力的程序。完工之后,我曾对朋友老王说,有了算法,编程序还这么难,当初想出 算法的人,真是了不起。 现将我对波前法的理解和编程体会解说如下,供感兴趣的网友参考,也为填补网 络上波前法空白。 二维热传导有限元 波前法和有限元密不可分。因而,在编写波前法程序之前,必须有个有限元程序。为了简化问题,最好是能解算一个节点上只有一个自由度的问题的有限元程序,而且要尽可能地简单。我手边现有的有限元程序都不符合这个要求。就决定先开发一个解算二维热传导问题的MATLAB有限元程序。 二维热传导问题的微分方程是 其中T 是温度,Kx 和Ky 分别是x 和y 方向上的热传导系数,q 是热源。 对于这样的比较经典的二阶微分方程,如何导出有限元表达式? 这个问题,是有限元的首要问题! 我相信,许许多多学过有限元的人,甚至每天都在用有限元的人,并不真的十分 明了。

相关文档
最新文档