数学建模-动态规划

数学建模-动态规划
数学建模-动态规划

-56-

第四章动态规划

§1 引言

1.1 动态规划的发展及研究内容

动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20 世纪50 年代初R. E. Bellman 等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957 年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。

动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广

泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。

虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时

间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。

应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是

一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。

例1 最短路线问题

图1 是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A

到G 距离最短(或费用最省)的路线。

图1 最短路线问题

例2 生产计划问题

工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3

(千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。

1.2 决策过程的分类

根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time

-57-

decision process)和连续时间决策过程(continuous-time decision process);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随

机性决策过程(stochastic decision process),其中应用最广的是确定性多阶段决策过程。§2 基本概念、基本方程和计算方法

2.1 动态规划的基本概念和基本方程

一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。

2.1.1 阶段

阶段(step)是对整个过程的自然划分。通常根据时间顺序或空间顺序特征来划分阶

段,以便按阶段的次序解优化问题。阶段变量一般用k = 1,2,L,n表示。在例1 中由A

出发为k = 1,由B (i = 1,2) i 出发为k = 2,依此下去从F (i =1,2) i出发为k = 6,共

n = 6个阶段。在例2 中按照第一、二、三、四季度分为k = 1,2,3,4,共四个阶段。

2.1.2 状态

状态(state)表示每个阶段开始时过程所处的自然状况。它应能描述过程的特征并

且无后效性,即当某阶段的状态变量给定时,这个阶段以后过程的演变与该阶段以前各

阶段的状态无关。通常还要求状态是直接或间接可以观测的。

描述状态的变量称状态变量(state variable)。变量允许取值的范围称允许状态集合

(set of admissible states)。用k x 表示第k 阶段的状态变量,它可以是一个数或一个向量。用k X 表示第k 阶段的允许状态集合。在例1 中2 x 可取1 2 B ,B ,或将i B 定义为

i(i = 1,2),则1 2 x = 或2,而{1,2} 2 X = 。

n 个阶段的决策过程有n +1个状态变量,n+1 x 表示n x 演变的结果。在例1 中7 x 取

G ,或定义为1,即1 7 x = 。

根据过程演变的具体情况,状态变量可以是离散的或连续的。为了计算的方便有时

将连续变量离散化;为了分析的方便有时又将离散变量视为连续的。

状态变量简称为状态。

2.1.3 决策

当一个阶段的状态确定后,可以作出各种选择从而演变到下一阶段的某个状态,这

种选择手段称为决策(decision),在最优控制问题中也称为控制(control)。

描述决策的变量称决策变量(decision variable),变量允许取值的范围称允许决策

集合(set of admissible decisions)。用( ) k k u x 表示第k 阶段处于状态k x 时的决策变量,它是k x 的函数,用( ) k k U x 表示k x 的允许决策集合。在例1中( ) 2 1 u B 可取1 2 C ,C 或3 C ,

可记作(1) 1,2,3 2 u = ,而(1) {1,2,3} 2 U = 。

决策变量简称决策。

2.1.4 策略

决策组成的序列称为策略(policy)。由初始状态1 x 开始的全过程的策略记作

( ) 1 1 p x n ,即

( ) { ( ), ( ), , ( )} 1n 1 1 1 2 2 n n p x = u x u x L u x .

由第k 阶段的状态k x 开始到终止状态的后部子过程的策略记作( ) kn k p x ,即

( ) { ( ), , ( )} kn k k k n n p x = u x L u x ,k = 1,2,L, n ?1.

类似地,由第k 到第j 阶段的子过程的策略记作

-58-

( ) { ( ), , ( )} kj k k k j j p x = u x L u x .

可供选择的策略有一定的范围,称为允许策略集合(set of admissible policies),用( ), ( ), ( ) 1n 1 kn k kj k P x P x P x 表示。

2.1.5. 状态转移方程

在确定性过程中,一旦某阶段的状态和决策为已知,下阶段的状态便完全确定。用

状态转移方程(equation of state transition)表示这种演变规律,写作

( , ), 1,2, , . 1 x T x u k n k = k k k = L + (1)

在例1 中状态转移方程为( ) k 1 k k x = u x + 。

2.1.6. 指标函数和最优值函数

指标函数(objective function)是衡量过程优劣的数量指标,它是定义在全过程和所有

后部子过程上的数量函数,用( , , , , ) k ,n k k k +1 n+1 V x u x L x 表示,k = 1,2,L,n。指标函数应具有可分离性,即k n V , 可表为k k k n x u V 1, , , + 的函数,记为

( , , , , ) ( , , ( , , , )) , +1 +1 +1, +1 +1 +1 = k n k k k n k k k k n k k n V x u x L x ?x u V x u L x

并且函数k

?对于变量k n V +1, 是严格单调的。

过程在第j 阶段的阶段指标取决于状态j x 和决策j u ,用( , ) j j j v x u 表示。指标函

数由v ( j 1,2, ,n) j = L 组成,常见的形式有:

阶段指标之和,即

Σ=

+ + =

n

j k

k n k k k n j j j V (x ,u , x , , x ) v (x ,u ) , 1 L 1 ,

阶段指标之积,即

Π=

+ + =

n

j k

k n k k k n j j j V (x ,u , x , , x ) v (x ,u ) , 1 L 1 ,

阶段指标之极大(或极小),即

( , , , , ) max(min) ( , ) k ,n k k k 1 n 1 k j n j j j V x u x x v x u

+ + ≤≤L = .

这些形式下第k 到第j阶段子过程的指标函数为( , , , ) k , j k k j+1 V x u L x 。

根据状态转移方程指标函数k n V , 还可以表示为状态k x 和策略kn p 的函数,即

( , ) k ,n k kn V x p 。在k x 给定时指标函数k n V , 对kn p 的最优值称为最优值函数(optimal value

function),记为( ) k k f x ,即

( ) opt ( , ) ,

( )

k n k kn

p P x

k k f x V x p

kn∈kn k

= ,

其中opt 可根据具体情况取max 或min 。

2.1.7 最优策略和最优轨线

使指标函数k n V , 达到最优值的策略是从k 开始的后部子过程的最优策略,记作* { * , , *}

kn k n p = u L u 。*

1n p 是全过程的最优策略,简称最优策略(optimal policy)。从初始

状态( * )

1 1 x = x 出发,过程按照*

1n p 和状态转移方程演变所经历的状态序列

{ , , , * }

1

*

2

*

1 n+ x x L x 称最优轨线(optimal trajectory)。

-59-

2.1.8 递归方程

如下方程称为递归方程

??

???

= ? =

=

+ +

+ +

( ) opt { ( , ) ( )}, , ,1

( ) 0 1

1 1

( )

1 1

f x v x u f x k n L

f x

k k k k k

u U x

k k

n n

k k k

(2)

在上述方程中,当?为加法时取( ) 0 1 1 = n+ n+ f x ;当?为乘法时,取( ) 1 1 1 = n+ n+ f x 。动

态规划递归方程是动态规划的最优性原理的基础,即:最优策略的子策略,构成最优子策略。用状态转移方程(1)和递归方程(2)求解动态规划的过程,是由k = n +1逆

推至k = 1,故这种解法称为逆序解法。当然,对某些动态规划问题,也可采用顺序解法。这时,状态转移方程和递归方程分别为:

x T x u k n k k

r

k k ( , ), 1, , = 1 = L + ,

??

??

?

= ? =

=

+ ?

+

+ +

f x v x u f x k n

f x

k k k k k

u U x

k k

k

r

k k

( ) opt { ( , ) ( )}, 1, ,

( 0 1

1 1

( )

1

0 1

1 1

L

)或

例3 用lingo 求解例1 最短路线问题。

model:

Title Dynamic Programming;

sets:

vertex/A,B1,B2,C1,C2,C3,C4,D1,D2,D3,E1,E2,E3,F1,F2,G/:L;

road(vertex,vertex)/A B1,A B2,B1 C1,B1 C2,B1 c3,B2 C2,B2 C3,B2 C4, C1 D1,C1 D2,C2 D1,C2 D2,C3 D2,C3 D3,C4 D2,C4 D3,

D1 E1,D1 E2,D2 E2,D2 E3,D3 E2,D3 E3,

E1 F1,E1 F2,E2 F1,E2 F2,E3 F1,E3 F2,F1 G,F2 G/:D;

endsets

data:

D=5 3 1 3 6 8 7 6

6 8 3 5 3 3 8 4

2 2 1 2

3 3

3 5 5 2 6 6

4 3;

L=0,,,,,,,,,,,,,,,;

enddata

@for(vertex(i)|i#GT#1:L(i)=@min(road(j,i):L(j)+D(j,i)));

end

纵上所述,如果一个问题能用动态规划方法求解,那么,我们可以按下列步骤,首

先建立起动态规划的数学模型:

(i)将过程划分成恰当的阶段。

(ii)正确选择状态变量k x ,使它既能描述过程的状态,又满足无后效性,同时确

定允许状态集合k X 。

(iii)选择决策变量k u ,确定允许决策集合( ) k k U x 。

(iv)写出状态转移方程。

(v)确定阶段指标( , ) k k k v x u 及指标函数kn V 的形式(阶段指标之和,阶段指标之积,阶段指标之极大或极小等)。

(vi)写出基本方程即最优值函数满足的递归方程,以及端点条件。

§3 逆序解法的计算框图

-60-

以自由终端、固定始端、指标函数取和的形式的逆序解法为例给出计算框图,其它

情况容易在这个基础上修改得到。

一般化的自由终端条件为

1 1, 1, 1 ( ) ( ), 1,2, , + + + + = = n n i n i n f x ?x i L n (3)

其中?为已知。固定始端条件可表示为{ } { *}

1 1 1 X = x = x 。

如果状态k x 和决策k u 是连续变量,用数值方法求解时需按照精度要求进行离散

化。设状态k x 的允许集合为

X x i n i n k n k ki k k = { | = 1,2,L, }, = 1,2,L, , = 1,2,L, .

决策( ) ki ki u x 的允许集合为

U u j n i n k n ki k

j

ki ki = { ( ) | = 1,2,L, }, = 1,2,L, , = 1,2,L, .

状态转移方程和阶段指标应对k x 的每个取值ki x 和ki u 的每个取值( j)

ki u 计算,即

( , ( j) )

k k ki ki T = T x u ,( , ( j) )

k ki ki v = v x u 。最优值函数应对k x 的每个取值ki x 计算。基本方程可以表为

1,2, , , 1,2, , , , ,2,1.

( ) opt ( ),

( ) ( , ) ( ( , )),

( )

( )

1

( ) ( )

j L n i L n k n L

f x f x

f x v x u f T x u

ki k

ki

j

k

j

k ki

j

k k ki ki

j

ki k ki ki

j

k

= = =

=

= + +

(4)

图2 解法框图

-61-

按照(3),(4)逆向计算出( * )

1 1 f x ,为全过程的最优值。记状态ki x 的最优决策为

* ( )

ki ki u x ,由*

1 x 和* ( )

ki ki u x 按照状态转移方程计算出最优状态,记作*

k x 。并得到相应的

最优决策,记作* ( * )

k k u x 。于是最优策略为{ ( ), ( * ), , * ( * )}

2

*

2

*

1

*

1 n n u x u x L u x 。

算法程序的框图如图2 所示。

图的左边部分是函数序列的递推计算,可输出全过程最优值( * )

1 1 f x ,如果需要还

可以输出后部子过程最优值函数序列( ) k ki f x 和最优决策序列* ( )

k ki u x 。计算过程中存

( ) k ki f x 是备计算k ?1 f 之用,在k ?1 f 算完后可用k ?1 f 将k f 替换掉;存* ( )

k ki u x 是备右边

部分读* ( * )

k k u x 之用。

图的右边部分是最优状态和最优决策序列的正向计算,可输出最优策略

{ ( ), ( * ), , * ( * )}

2

*

2

*

1

*

1 n n u x u x L u x 和最优轨线{ , * , , *}

2

*

1 n x x L x 。

§4 动态规划与静态规划的关系

动态规划与静态规划(线性和非线性规划等)研究的对象本质上都是在若干约束条

件下的函数极值问题。两种规划在很多情况下原则上可以相互转换。

动态规划可以看作求决策n u ,u , ,u 1 2 L 使指标函数( , , , ) 1n 1 1 2 n V x u,u L u 达到最优(最大或最小)的极值问题,状态转移方程、端点条件以及允许状态集、允许决策集等是约束条件,原则上可以用非线性规划方法求解。

一些静态规划只要适当引入阶段变量、状态、决策等就可以用动态规划方法求解。

下面用例子说明。

例4 用动态规划解下列非线性规划

Σ=

n

k

k k g u

1

max ( );

s.t. Σ=

= ≥

n

k

k k u a u

1

, 0 .

其中( ) k k g u 为任意的已知函数。

解按变量k u 的序号划分阶段,看作n段决策过程。设状态为1 2 1 , , , n+ x x L x ,取

问题中的变量n u ,u , ,u 1 2 L 为决策。状态转移方程为

, , 1,2, , . 1 1 x a x x u k n = k = k ?k = L +

取( ) k k g u 为阶段指标,最优值函数的基本方程为(注意到0 1 = n+ x )

( ) max [ ( ) ( )] 0 1 1≤≤ + +

= + k k u x k k k k f x g x f x

k k

0 ≤x ≤a, k = n,n ?1,L,2,1 k ;

(0) 0 1 = n+ f .

按照逆序解法求出对应于k x 每个取值的最优决策* ( )

k k u x ,计算至( ) 1 f a 后即可利

用状态转移方程得到最优状态序列{ *}

k x 和最优决策序列{ * ( * )}

k k u x 。

与静态规划相比,动态规划的优越性在于:

(i)能够得到全局最优解。由于约束条件确定的约束集合往往很复杂,即使指标

函数较简单,用非线性规划方法也很难求出全局最优解。而动态规划方法把全过程化为-62-

一系列结构相似的子问题,每个子问题的变量个数大大减少,约束集合也简单得多,易于得到全局最优解。特别是对于约束集合、状态转移和指标函数不能用分析形式给出的优化问题,可以对每个子过程用枚举法求解,而约束条件越多,决策的搜索范围越小,求解也越容易。对于这类问题,动态规划通常是求全局最优解的唯一方法。

(ii)可以得到一族最优解。与非线性规划只能得到全过程的一个最优解不同,动

态规划得到的是全过程及所有后部子过程的各个状态的一族最优解。有些实际问题需要这样的解族,即使不需要,它们在分析最优策略和最优值对于状态的稳定性时也是很有用的。当最优策略由于某些原因不能实现时,这样的解族可以用来寻找次优策略。(iii)能够利用经验提高求解效率。如果实际问题本身就是动态的,由于动态规划

方法反映了过程逐段演变的前后联系和动态特征,在计算中可以利用实际知识和经验提

高求解效率。如在策略迭代法中,实际经验能够帮助选择较好的初始策略,提高收敛速度。

动态规划的主要缺点是:

(i)没有统一的标准模型,也没有构造模型的通用方法,甚至还没有判断一个问

题能否构造动态规划模型的准则。这样就只能对每类问题进行具体分析,构造具体的模型。对于较复杂的问题在选择状态、决策、确定状态转移规律等方面需要丰富的想象力

和灵活的技巧性,这就带来了应用上的局限性。

(ii)用数值方法求解时存在维数灾(curse of dimensionality)。若一维状态变量有m

个取值,那么对于n维问题,状态x k 就有m n个值,对于每个状态值都要计算、存储函

数( ) k k f x ,对于n稍大的实际问题的计算往往是不现实的。目前还没有克服维数灾的

有效的一般方法。

§5 若干典型问题的动态规划模型

5.1 最短路线问题

对于例1 一类最短路线问题(shortest Path Problem),阶段按过程的演变划分,状

态由各段的初始位置确定,决策为从各个状态出发的走向,即有( ) k 1 k k x = u x + ,阶段指标为相邻两段状态间的距离( , ( )) k k k k d x u x ,指标函数为阶段指标之和,最优值函数( ) k k f x 是由k x 出发到终点的最短距离(或最小费用),基本方程为

( ) min[ ( , ( )) ( )], , ,1; ( ) 1 1

f x d x u x f x k n L k k u x k k k k k k

k k

= + = + +

( ) 0. 1 1 = n+ n+ f x

利用这个模型可以算出例l的最短路线为AB C D E F G 1 2 1 2 2 ,相应的最短距离为18。5.2 生产计划问题

对于例2 一类生产计划问题(Production planning problem),阶段按计划时间自然

划分,状态定义为每阶段开始时的储存量k x ,决策为每个阶段的产量k u ,记每个阶段

的需求量(已知量)为k d ,则状态转移方程为

, 0, 1,2, , . 1 x x u d x k n k = k + k ?k k ≥ = L + (5)

设每阶段开工的固定成本费为a ,生产单位数量产品的成本费为b ,每阶段单位数量产品的储存费为c ,阶段指标为阶段的生产成本和储存费之和,即

???

+ >

= +

, 0

( , ) k k

k k k k

a bu u

v x u cx (6)

-63-

指标函数V kn 为v k 之和。最优值函数( ) k k f x 为从第k 段的状态k x 出发到过程终结的最

小费用,满足

( ) min[ ( , ) ( )], , ,1. f x v x u f 1 x 1 k n L k k u U k k k k k

k k

= + = ∈ + +

其中允许决策集合k U 由每阶段的最大生产能力决定。若设过程终结时允许存储量为

n+1 x ,则终端条件是

( 0 ) 0.

1 1 = n+ n+ f x (7)

(5)~(7)构成该问题的动态规划模型。

5.3 资源分配问题

一种或几种资源(包括资金)分配给若干用户,或投资于几家企业,以获得最大的

效益。资源分配问题(resource allocating Problem)可以是多阶段决策过程,也可以是

静态规划问题,都能构造动态规划模型求解。下面举例说明。

例5 机器可以在高、低两种负荷下生产。u台机器在高负荷下的年产量是g(u),

在低负荷下的年产量是h(u) ,高、低负荷下机器的年损耗率分别是1 a 和1 b

(0 1 1 1

多少台机器投入高、低负荷运行,使n年的总产量最大。如果进一步假设g(u) =αu,

h(u) = βu(α>β>0),即高、低负荷下每台机器的年产量分别为α和β,结果将有什么特点。

解年度为阶段变量k = 1,2,L, n。状态k x 为第k 年初完好的机器数,决策k u 为

第k 年投入高负荷运行的台数。当k x 或k u 不是整数时,将小数部分理解为一年中正常工作时间或投入高负荷运行时间的比例。

机器在高、低负荷下的年完好率分别记为a 和b ,则1 a = 1?a ,1 b = 1?b ,有

a

b x ?u + (8)

阶段指标k v 是第k 年的产量,有

( , ) ( ) ( ) k k k k k k v x u = g u + h x ?u (9)

指标函数是阶段指标之和,最优值函数( ) k k f x 满足

0 , , ,2,1.

( ) max [ ( , ) ( )], 0 1 1

x m k n L

f x v x u f x

k

k k u x k k k k k

k k

≤≤ =

= + ≤≤ + + (10)

及自由终端条件

( ) 0, 0 . 1 1 1 f x x m n n n = ≤≤+ + + (11)

当k v 中的g, h用较简单的函数表达式给出时,对于每个k 可以用解析方法求解极

值问题。特别,若g(u) =αu ,h(u) = βu,(10)中的[ ( , ) ( )] k k k k 1 k v x u f x + + 将是k u

的线性函数,最大值点必在区间k k 0 ≤u ≤x 的左端点= 0 k u 或右端点k k u = x 取得,

即每年初将完好的机器全部投入低负荷或高负荷运行。

§6 具体的应用实例

例6 设某工厂有1000 台机器,生产两种产品A、B,若投入x台机器生产A产

-64-

品,则纯收入为5x ,若投入y 台机器生产B种产品,则纯收入为4y,又知:生产A种

产品机器的年折损率为20%,生产B 产品机器的年折损率为10%,问在5 年内如何安

排各年度的生产计划,才能使总收入最高?

解年度为阶段变量k = 1,2,3,4,5。

令k x 表示第k 年初完好机器数,k u 表示第k 年安排生产A 种产品的机器数,则

k k x ?u 为第k 年安排生产B种产品的机器数,且k k 0 ≤u ≤x 。

则第k +1年初完好的机器数

k k k k k k x (1 0.2)u (1 0.1)(x u ) 0.9x 0.1u 1 = ? + ?? = ?+ (12)

令( , ) k k k v x u 表示第k 年的纯收入,( ) k k f x 表示第k 年初往后各年的最大利润之

和。

显然

( ) 0 6 6 f x = (13)

( ) max { ( , ) ( )} 0 1 1 ≤≤ + +

= + k k u x k k k k k f x v x u f x

k k

max {5 4( ) ( )} max { 4 ( )} 0 1 1 0 1 1 ≤≤ + + ≤≤ + +

= + ? + = + + u x k k k k k u x k k k k

u x u f x u x f x

k k k k

(14)

(1)k = 5时,由(13)、(14)式得

( ) max { 4 } 5 5 0 5 5

5 5

f x u x

u x

= +

≤≤

5 5 u + 4x 关于5 u 求导,知其导数大于零,所以5 5 u + 4x 在5 u 等于5 x 处取得最大值,即5 5 u = x 时,5 5 5 f (x ) = 5x 。

(2)k = 4时,由(12)、(14)式得

( ) max { 4 5 } 4 4 0 4 4 5

4 4

f x u x x

u x

= + +

≤≤

max { 4 5(0.9 0.1 )} max {0.5 8.5 } 0 4 4 4 4 0 4 4 4 4 4 4 u x x u u x

u x u x

= + + ? = +

≤≤≤≤

当4 4 u = x 时,4 4 4 f (x ) = 9x

(3)k = 3时,

( ) max { 4 9 } 3 3 0 3 3 4

3 3

f x u x x

u x

= + +

≤≤

max { 4 9(0.9 0.1 )} max {0.1 12.1 } 0 3 3 3 3 0 3 3 3 3 3 3 u x x u u x

u x u x

= + + ? = +

≤≤≤≤

当3 3 u = x 时,3 3 3 f (x ) = 12.2x

(4)k = 2时,

( ) max { 4 12.2 } max { 0.22 14.98 } 2 2 0 2 2 3 0 2 2

2 2 2 2

f x u x x u x

u x u x

= + + = ? +

≤≤≤≤

当0 2 u = 时,2 2 2 f (x ) = 14.98x 。

(5)k = 1时,

( ) max{ 4 14.98 } max{ 0.498 17.482 } 1 1 0 1 1 2 0 1 1

1 1 1 1

f x u x x u x

u x u x

= + + = ? +

≤≤≤≤

当0 1 u = 时,1 1 1 f (x ) = 17.482x 。因为

1000 1 x = (台)

-65-

所以由(12)式,进行回代得

0.9 0.1 900 2 1 1 x = x ?u = (台)

0.9 0.1 810 3 2 2 x = x ?u = (台)

0.9 0.1 648 4 3 3 x = x ?u = (台)

0.9 0.1 518.4 5 4 4 x = x ?u = (台)

注:518.4 5 x = 台中的0.4 台应理解为有一台机器只能使用0.4 年将报废。

例7 求解下面问题

3

2

1 2 max z = u u u

???

≥ =

+ + = >

0 1,2,3

( 0) 1 2 3

u i

u u u c c

i

解:按问题的变量个数划分阶段,把它看作为一个三阶段决策问题。设状态变量

为1 2 3 4 x , x , x , x ,并记x = c 1 ;取问题中的变量1 2 3 u ,u ,u 为决策变量;各阶段指标函数

按乘积方式结合。令最优值函数( ) k k f x 表示第k 阶段的初始状态为k x ,从k 阶段到3 阶段所得到的最大值。

设3 3 x = u ,3 2 2 x + u = x ,x + u = x = c 2 1 1

则有

3 3 u = x ,2 2 0 ≤u ≤x ,1 1 0 ≤u ≤x

用逆推解法,从后向前依次有

3 3 3 3 ( ) max{ }

3 3

f x u x

u x

= =

=

及最优解3

*

3 u = x

( ) max { ( )} max { ( )} max ( , ) 2 2 0 2 2 2

2

3 3 0 2

2

2 2 0 2

2 2 2 2 2 2

f x u f x u x u h u x

≤u ≤x ≤u ≤x ≤u ≤x

= = ? =

由2 3 2 0

2 2 2

2

2 = u x ?u =

du

dh

,得2 2 3

u = 2 x 和0 2 u = (舍去)又2 2 2

2

2

2

2x 6u

du

d h = ?,而2 0 2

3

2

2

2

2

2

2 2

= ?<

=

x

du

d h

u x

,故2 2 3

u = 2 x 为极大值点。

所以3

2 2 2 27

f (x ) = 4 x 及最优解2

*

2 3

u = 2 x 。

( ) }

27

( ) max{ ( )} max{ 4 3

1 1 0 1

2 2 0 1 1 1

1 1 1 1

f x u f x u x u

u x u x

= = ?

≤≤≤≤

同样利用微分法易知4

1 1 1 64

f (x ) = 1 x ,最优解1

*

1 4

u = 1 x 。

由于1 x 已知,因而按计算的顺序反推算,可得各阶段的最优决策和最优值。即u c

4

* 1

1 = ,4

1 1 64

f (x ) = 1 c

x x u c c c

4

3

4

* 1

2 1 1 = ? = ? =

-66-

所以

u x c

2

1

3

2

2

*

2 = = ,3

2 2 16

f (x ) = 1 c

x x u c c c

4

1

2

1

4

* 3

3 2 2 = ? = ? =

所以

u c

4

* 1

3 = ,f x c

( ) 1 3 3 =

因此得到最优解为:u c

4

* 1

1 = ,u c

2

* 1

2 = ,u c

4

* 1

3 = ;

最大值为:4

1 64

max z = f (c) = 1 c 。

习题四

1. 用Matlab 编程求例6 的解。

2. 有四个工人,要指派他们分别完成4 项工作,每人做各项工作所消耗的时间如

表1 所示。

表1

工作

工人A B C D

甲15 18 21 24

乙19 23 22 18

丙26 17 16 19

丁19 21 23 17

问指派哪个人去完成哪项工作,可使总的消耗时间为最小?试对此问题用动态规划

方法求解。

3. 为保证某一设备的正常运转,需备有三种不同的零件1 2 3 E , E , E 。若增加备用零件的数量,可提高设备正常运转的可靠性,但增加了费用,而投资额仅为8000 元。已知备用零件数与它的可靠性和费用的关系如表2 所示。

表2

增加的可靠性设备的费用(千元)

备件数

1 E

2 E

3 E 1 E 2 E 3 E

1

2

3

0.3

0.4

0.5

0.2

0.5

0.9

0.2

0.7

1

2

3

3

5

6

2

3

4

现要求在既不超出投资额的限制,又能尽量提高设备运转的可靠性的条件下,问

各种零件的备件数量应是多少为好?

4. 某工厂购进100 台机器,准备生产I、II 两种产品,若生产产品I,每台机器每

年可收入45 万元,损坏率为65%;若生产产品II,每台机器每年收入为35 万元,损

坏率为35%,估计三年后将有新型机器出现,旧的机器将全部淘汰。试问每年应如何

-67-

安排生产,使在三年内收入最多?

5.3 名商人各带1 名随从乘船渡河,一只小船只能容纳2 人,由他们自己划行。

随从们密约,在河的任一岸,一旦随从人数比商人多,就杀商人。此密约被商人知道,如何乘船渡河的大权掌握在商人们手中,商人们怎样安排每次乘船方案,才能安全渡河呢?

6.某一印刷厂有六项加工任务,对印刷车间和装订车间所需时间(单位:天)如

表3 所示,试求最优的加工顺序和总加工天数。

表3

任务

车间1 2 3 4 5 6

印刷车间

装订车间

3

8

10

12

5

9

2

6

9

5

11

2__

动态规划算法原理与的应用

动态规划算法原理及其应用研究 系别:x x x 姓名:x x x 指导教员: x x x 2012年5月20日

摘要:动态规划是解决最优化问题的基本方法,本文介绍了动态规划的基本思想和基本步骤,并通过几个实例的分析,研究了利用动态规划设计算法的具体途径。关键词:动态规划多阶段决策 1.引言 规划问题的最终目的就是确定各决策变量的取值,以使目标函数达到极大或极小。在线性规划和非线性规划中,决策变量都是以集合的形式被一次性处理的;然而,有时我们也会面对决策变量需分期、分批处理的多阶段决策问题。所谓多阶段决策问题是指这样一类活动过程:它可以分解为若干个互相联系的阶段,在每一阶段分别对应着一组可供选取的决策集合;即构成过程的每个阶段都需要进行一次决策的决策问题。将各个阶段的决策综合起来构成一个决策序列,称为一个策略。显然,由于各个阶段选取的决策不同,对应整个过程可以有一系列不同的策略。当过程采取某个具体策略时,相应可以得到一个确定的效果,采取不同的策略,就会得到不同的效果。多阶段的决策问题,就是要在所有可能采取的策略中选取一个最优的策略,以便得到最佳的效果。动态规划是一种求解多阶段决策问题的系统技术,可以说它横跨整个规划领域(线性规划和非线性规划)。在多阶段决策问题中,有些问题对阶段的划分具有明显的时序性,动态规划的“动态”二字也由此而得名。动态规划的主要创始人是美国数学家贝尔曼(Bellman)。20世纪40年代末50年代初,当时在兰德公司(Rand Corporation)从事研究工作的贝尔曼首先提出了动态规划的概念。1957年贝尔曼发表了数篇研究论文,并出版了他的第一部著作《动态规划》。该著作成为了当时唯一的进一步研究和应用动态规划的理论源泉。在贝尔曼及其助手们致力于发展和推广这一技术的同时,其他一些学者也对动态规划的发展做出了重大的贡献,其中最值得一提的是爱尔思(Aris)和梅特顿(Mitten)。爱尔思先后于1961年和1964年出版了两部关于动态规划的著作,并于1964年同尼母霍思尔(Nemhauser)、威尔德(Wild)一道创建了处理分枝、循环性多阶段决策系统的一般性理论。梅特顿提出了许多对动态规划后来发展有着重要意义的基础性观点,并且对明晰动态规划路径的数

数学建模算法动态规划

第四章动态规划 §1 引言 1.1 动态规划的发展及研究内容 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初R. E. Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。 例1 最短路线问题 下面是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A 到G距离最短(或费用最省)的路线。 例2 生产计划问题 工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。 1.2 决策过程的分类 根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time decision process)和连续时间决策过程(continuous-time decision process);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随

南京邮电大学算法设计实验报告——动态规划法

实验报告 (2009/2010学年第一学期) 课程名称算法分析与设计A 实验名称动态规划法 实验时间2009 年11 月20 日指导单位计算机学院软件工程系 指导教师张怡婷 学生姓名丁力琪班级学号B07030907 学院(系) 计算机学院专业软件工程

实验报告 实验名称动态规划法指导教师张怡婷实验类型验证实验学时2×2实验时间2009-11-20一、实验目的和任务 目的:加深对动态规划法的算法原理及实现过程的理解,学习用动态规划法解决实际应用中的最长公共子序列问题。 任务:用动态规划法实现求两序列的最长公共子序列,其比较结果可用于基因比较、文章比较等多个领域。 要求:掌握动态规划法的思想,及动态规划法在实际中的应用;分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的最长公共子序列。 二、实验环境(实验设备) 硬件:计算机 软件:Visual C++

三、实验原理及内容(包括操作过程、结果分析等) 1、最长公共子序列(LCS)问题是:给定两个字符序列X={x1,x2,……,x m}和Y={y1,y2,……,y n},要求找出X和Y的一个最长公共子序列。 例如:X={a,b,c,b,d,a,b},Y={b,d,c,a,b,a}。它们的最长公共子序列LSC={b,c,d,a}。 通过“穷举法”列出所有X的所有子序列,检查其是否为Y的子序列并记录最长公共子序列并记录最长公共子序列的长度这种方法,求解时间为指数级别的,因此不可取。 2、分析LCS问题特征可知,如果Z={z1,z2,……,z k}为它们的最长公共子序列,则它们一定具有以下性质: (1)若x m=y n,则z k=x m=y n,且Z k-1是X m-1和Y n-1的最长公共子序列; (2)若x m≠y n且x m≠z k,则Z是X m-1和Y的最长公共子序列; (3)若x m≠y n且z k≠y n,则Z是X和Y的最长公共子序列。 这样就将求X和Y的最长公共子序列问题,分解为求解较小规模的问题: 若x m=y m,则进一步分解为求解两个(前缀)子字符序列X m-1和Y n-1的最长公共子序列问题; 如果x m≠y n,则原问题转化为求解两个子问题,即找出X m-1和Y的最长公共子序列与找出X 和Y n-1的最长公共子序列,取两者中较长者作为X和Y的最长公共子序列。 由此可见,两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序列,具有最优子结构性质。 3、令c[i][j]保存字符序列X i={x1,x2,……,x i}和Y j={y1,y2,……,y j}的最长公共子序列的长度,由上述分析可得如下递推式: 0 i=0或j=0 c[i][j]= c[i-1][j-1]+1 i,j>0且x i=y j max{c[i][j-1],c[i-1][j]} i,j>0且x i≠y j 由此可见,最长公共子序列的求解具有重叠子问题性质,如果采用递归算法实现,会得到一个指数时间算法,因此需要采用动态规划法自底向上求解,并保存子问题的解,这样可以避免重复计算子问题,在多项式时间内完成计算。 4、为了能由最优解值进一步得到最优解(即最长公共子序列),还需要一个二维数组s[][],数组中的元素s[i][j]记录c[i][j]的值是由三个子问题c[i-1][j-1]+1,c[i][j-1]和c[i-1][j]中的哪一个计算得到,从而可以得到最优解的当前解分量(即最长公共子序列中的当前字符),最终构造出最长公共子序列自身。

数学建模-动态规划

-56- 第四章动态规划 §1 引言 1.1 动态规划的发展及研究内容 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20 世纪50 年代初R. E. Bellman 等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957 年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广 泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时 间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是 一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。 例1 最短路线问题 图1 是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A 到G 距离最短(或费用最省)的路线。 图1 最短路线问题 例2 生产计划问题 工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3 (千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。 1.2 决策过程的分类 根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time -57- decision process)和连续时间决策过程(continuous-time decision process);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随 机性决策过程(stochastic decision process),其中应用最广的是确定性多阶段决策过程。§2 基本概念、基本方程和计算方法 2.1 动态规划的基本概念和基本方程 一个多阶段决策过程最优化问题的动态规划模型通常包含以下要素。 2.1.1 阶段

算法设计动态规划(编辑距离)

《算法设计与分析》课程报告 课题名称:动态规划——编辑距离问题 课题负责人名(学号): 同组成员名单(角色):无 指导教师:左劼 评阅成绩: 评阅意见: 提交报告时间:2010年 6 月 23 日

动态规划——编辑距离问题 计算机科学与技术专业 学生指导老师左劼 [摘要]动态规划的基本思想与分治法类似,也是将待求解的问题分解成若干份的子问题,先分别解决好子问题,然后从子问题中得到最终解。但动态规划中的子问题往往不是相互独立的,而是彼此之间有影响,因为有些子问题可能要重复计算多次,所以利用动态规划使这些子问题只计算一次。将字符串A变换为字符串所用的最少字符操作数称为字符串A到B的编辑距离。 关键词:动态规划矩阵字符串操作数编辑距离

一、问题描述 1、基本概念:设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。字符串操作包括: (1) 删除一个字符; (2) 插入一个字符; (3) 将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A 到B的编辑距离,记为d(A,B)。 2、算法设计:设计一个有效算法,对于给定的任意两个字符串A 和B,计算其编辑距离d(A,B)。 3、数据输入:输入数据由文件名为input.txt的文本文件提供。文件的第1行为字符串A,第二行为字符串B。 4、结果输出:将编辑距离d(A,B)输出到文件ouput.txt的第一行。 输入文件示例输出文件示例 input.txt output.txt fxpimu 5 xwrs 二、分析 对于本问题,大体思路为:把求解编辑距离分为字符串A从0个字符逐渐增加到全部字符分别想要变为字符串B该如何变化以及变化的最短距离。 具体来说,首先选用数组a1存储字符串A(设长度为n),a2存储字符串B(设长度为m),d矩阵来进行具体的运算;这里有两个特殊情况比较简单可以单独考虑,即A的长度为0而B不为0还有A不为0B为0,这两种情况最后的编辑距离分别为m和n;讨论一般情况,d矩阵为d[n][m],假定我们从d[0][0]开始一直进行以下操作到了d[i][j]的位置,其中删除操作肯定是A比B长,同理,插入字符操作一定是A比B短,更改字符操作说明一样长,我们所要做的是对d[i][j-1]

10427-数学建模-动态规划的原理及应用

动态规划的原理及应用 动态规划是运筹学的一个分支,是求解多阶段决策过程的最优化数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类问题的新方法——动态规划。 动态规划主要用于以时间划分阶段的动态过程优化问题,但一些与时间无关的静态规划如线性规划或非线性规划,人为引进时间因素后,把它们看成多阶段过程,也可用动态规划求解。 1.动态规划的基本理论 一.动态规划的术语 在研究现实的系统时,我们必须将系统具体的术语抽象为数学统一的术语。在此先简要介绍动态规划中的常用术语。 级:我们把系统顺序地向前发展划分为若干个阶段,称这些阶段为“级”。在离散动态规划中,“级”顺序的用自然整数编号,即1,2,…,n. 状态(λ):用来描述、刻画级的特征。状态可以是单变量,也可以时向量。在此,我们假设研究的状态具有“无记忆性”,即当前与未来的收益仅决定于当前的状态,并不依赖于过去的状态和决策的历史。 状态空间(Λ):由全部系统可能存在的状态变量所组成。

决策:在每一级,当状态给定后,往往可以做出不同的决定,从而确定下一级的状态,这种决定称为决策。描述决策的变量称为决策变量。对每个状态λ∈Λ,有一非空集X(λ)称为λ的决策集。决策变量x(λ)∈X(λ)。 变换:若过程在状态λ,选择决策x(λ),可确定一个状态集T(λ,x(λ)),过程将从λ移动到其中某个状态.T(λ,x(λ))称为变换函数,它确定过程从一个状态到另一个状态的演变。T(λ,x(λ))可分为两种类型,即确定型和不确定型。确定型的T(λ,x(λ))只含有一个元。不确定型指我们不能确切知道决策的结果,但作为某已知概率分布支配的变换结果,在每级状态和决策是确定的。这时,集函数T(λ,x(λ))将包含多个元素。当T(λ,x(λ))=0 时,过程终止。 策略:顺序排列的决策集,记为v。所有可能的策略集构成策略空间Γ。 收益:评价给定策略的目标函数r(λ,v),它依赖于状态和策略。总收益是集收益s(λ,v)的某个组合(通常为集收益之和)。若T(λ,x(λ))=0,则r(λ1,v1)= s(λ1,v1);若T(λ,x(λ))= λ2,则r(λ1,v)= s(λ1,v1)+ r(λ1,v2)。 二.序贯决策过程 动态规划的寻优过程可以有正序、逆序两种方式。当初始状态给定时,用逆序方式比较好,当终止状态给定时,用正序方式较好。 采用分级的序贯决策方法,把一个含有n个变量的问题转化为求解n个单变量问题。为了应用最优化原理,必须满足分级条件,即目标函数可分性和状态可分性。 目标函数可分性:

数学建模线性规划

线性规划 1.简介: 线性规划是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支,它是辅助人们进行科学管理的一种数学方法.在经济管理、交通运输、工农业生产等经济活动中,提高经济效果是人们不可缺少的要求,而提高经济效果一般通过两种途径:一是技术方面的改进,例如改善生产工艺,使用新设备和新型原材料.二是生产组织与计划的改进,即合理安排人力物力资源. 线性规划所研究的是:在一定条件下,合理安排人力物力等资源,使经济效果达到最好.规划问题。一般地,求线性目标函数在线性约束条件下的最大值或最小值的问题,统称为线性线性约束条件的解叫做可行解,由所有可行解组成的集合叫做可行域。 (x)都是线性函数,则该模型称为在优化模型中,如果目标函数f(x)和约束条件中的g i 线性规划。 2.线性规划的3个基本要素 (1)决策变量 (2)目标函数f(x) (x)≤0称为约束条件) (3)约束条件(g i 3.建立线性规划的模型 (1)找出待定的未知变量(决策变量),并用袋鼠符号表示他们。 (2)找出问题中所有的限制或者约束,写出未知变量的线性方程或线性不等式。

(3)找到模型的目标或判据,写成决策变量的线性函数,以便求出其最大值或最小值。以下题为例,来了解一下如何将线性规划用与实际的解题与生活中。 生产计划问题 某工厂生产甲乙两种产品,每单位产品消耗和获得的利润如表 试拟订生产计划,使该厂获得利润最大 解答:根据解题的三个基本步骤 (1)找出未知变量,用符号表示: 设甲乙两种产品的生产量分别为x 1与x 2 吨,利润为z万元。 (2)确定约束条件: 在这道题目当中约束条件都分别为:钢材,电力,工作日以及生产量不能为负的限制 钢材:9x 1+5 x 2 ≤360, 电力:4x 1+5 x 2 ≤200, 工作日:3x 1+10 x 2 ≤300, x 1≥0 ,x 2 ≥0, (3)确定目标函数: Z=7x 1+12 x 2

数学建模-线性规划

-1- 第一章线性规划 §1 线性规划 在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947 年G. B. Dantzig 提出 求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性 规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。 1.1 线性规划的实例与定义 例1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为4000 元与3000 元。 生产甲机床需用A、B机器加工,加工时间分别为每台2 小时和1 小时;生产乙机床 需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时 数分别为A 机器10 小时、B 机器8 小时和C 机器7 小时,问该厂应生产甲、乙机床各几台,才能使总利润最大? 上述问题的数学模型:设该厂生产1 x 台甲机床和2 x 乙机床时总利润最大,则1 2 x , x 应满足 (目标函数)1 2 max z = 4x + 3x (1) s.t.(约束条件) ?? ? ?? ? ? ≥ ≤ + ≤ + ≤ , 0 7 8 2 10 1 2 2 1 2 1 2 x x x x x x x (2) 这里变量1 2 x , x 称之为决策变量,(1)式被称为问题的目标函数,(2)中的几个不等式是问题的约束条件,记为s.t.(即subject to)。由于上面的目标函数及约束条件均为线性

数学建模8-动态规划和目标规划

数学建模8-动态规划和目标规划 一、动态规划 1.动态规划是求解决策过程最优化的数学方法,主要用于求解以时间划分阶段的动态过程的 优化问题。但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 2.基本概念、基本方程: (1)阶段 (2)状态 (3)决策 (4)策略 (5)状态转移方程: (6)指标函数和最优值函数: (7)最优策略和最优轨线 (8)递归方程: 3.计算方法和逆序解法(此处较为抽象,理解较为困难,建议结合例子去看)

4.动态规划与静态规划的关系:一些静态规划只需要引入阶段变量、状态、决策等就可以用动态规划方法求解(详见书中例4) 5.若干典型问题的动态规划模型: (1)最短路线问题: (2)生产计划问题:状态定义为每阶段开始时的储存量x k,决策为每个阶段的产量,记每个阶段的需求量(已知量)为d k,则状态转移方程为 (3)资源分配问题:详见例5

状态转移方程: 最优值函数: 自有终端条件: (4)具体应用实例:详见例6、例7。 二、目标规划 1.实际问题中,衡量方案优劣要考虑多个目标,有主要的,有主要的,也有次要的;有最大值的,也有最小值的;有定量的,也有定性的;有相互补充的,也有相互对立的,这时可用目标规划解决。其求解思路有加权系数法、优先等级法、有效解法等。 2.基本概念: (1)正负偏差变量: (2)绝对(刚性)约束和目标约束 ,次位赋(3)优先因子(优先等级)与权系数:凡要求第一位达到的目标赋予优先因子P 1……以此类推。 予P 2 (4)目标规划的目标函数: (5)一般数学模型:

数学建模(工厂资源规划问题)

工厂资源规划问题 冉光明 29 信息与计算科学 指导老师:赵姣珍

目录 摘要 (1) 关键词 (1) 问题的提出 (2) 问题重述与分析 (3) 符号说明 (4) 模型假设 (4) 模型建立与求解 (5) 模型检验 (9) 模型推广 (10) 参考文献 (11) 附录 (12)

摘要:本问题是个优化问题。问题首先选择合适的决策变量即各种产品数,然后通过决策变量来表达约束条件和目标函数,再利用或编写程序,求得最优产品品种计划;最后通过优化模型对问题作以解释,得出当技术服务消耗33小时、劳动力消耗67小时、不消耗行政管理时,得到的是最优品种规划。 问题一回答:当技术服务消耗33小时、劳动力消耗67小时、不消耗行政管理时, 产品不值得生产。用运算分析,当产品的利润增加至25 3 时,若使产品品种计划最优, 此时需要消耗技术服务29h,劳动力消耗46h,行政管理消耗25h。 问题二回答:利用得到当技术服务增加1h时,利润增加2.5元;劳动力增加1h,利润增加1元;行政管理的增减不会影响利润。 问题三回答:增加的决策变量,调整目标函数。当技术服务消耗33h,劳动力消耗17h,不消耗行政管理,新增量50h时,管理部门采取这样的决策得到最优的产品品种规划。 问题四回答:增加新的约束条件,此时当技术服务消耗32h,劳动力消耗58h,行政管理消耗10h时,得到最优产品品种规划。 本文对模型的求解给出在线性约束条件下的获利最多的产品品种规划。 关键词:线性规划;优化模型;最优品种规划

问题的提出 某工厂制造三种产品,生产这三种产品需要三种资源:技术服务、劳动力和行政管理。下表列出了三种单位产品对每种资源的需要量: 现有100h的技术服务、600h劳动力和300h的行政管理时间可使用,求最优产品品种规划。且回答下列问题: ⑴若产品值得生产的话,它的利润是多少?假使将产品的利润增加至25/3元,求获利最多的产品品种规划。 ⑵确定全部资源的影子价格。 ⑶制造部门提出建议,要生产一种新产品,该种产品需要技术服务1h、劳动力4h 和行政管理4h。销售部门预测这种产品售出时有8元的单位利润。管理部门应有怎样的决策? ⑷假定该工厂至少生产10件产品,试确定最优产品品种规划。

动态规划算法的应用

动态规划算法的应用 一、实验目的 1.掌握动态规划算法的基本思想,包括最优子结构性质和基于表格的最优值计算方法。 2.熟练掌握分阶段的和递推的最优子结构分析方法。 3.学会利用动态规划算法解决实际问题。 二、实验内容 题目一:数塔问题 给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。 输入样例(数塔): 9 15 10 6 8 2 18 9 5 19 7 10 4 16 输出样例(最大路径和): 59 三、实验步骤 (1)需求分析 通过动态规划法解决数塔问题。从顶部出发,在每一节点可以选择向下或者向右走,一直走到底层,以找出一条数值最大的路径。 (2)概要设计 本次实验程序主要用到二维数组,以及通过动态规划法进行比较每个数的大小。主要运用两个for循环语句实现动态规划。

(3)详细设计 第一步,输入给定的二维数组并打印出相应的数组: int array[5][5]={{9}, /* */{12,15}, /* */{10,6,8}, /* */{2,18,9,5}, /* */{19,7,10,4,6}}; int i,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) cout<0;j--) { for(i=0;i<=4;i++) { if(array[j][i]>array[j][i+1]) array[j-1][i]=array[j][i]+array[j-1][i]; else array[j-1][i]=array[j][i+1]+array[j-1][i]; } } 第三步,输出最大路径的值。 cout<

数学建模常用的十种解题方法

数学建模常用的十种解题方法 摘要 当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上,用数学的符号和语言,把它表述为数学式子,也就是数学模型,然后用通过计算得到的模型结果来解释实际问题,并接受实际的检验。这个建立数学模型的全过程就称为数学建模。数学建模的十种常用方法有蒙特卡罗算法;数据拟合、参数估计、插值等数据处理算法;解决线性规划、整数规划、多元规划、二次规划等规划类问题的数学规划算法;图论算法;动态规划、回溯搜索、分治算法、分支定界等计算机算法;最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法;网格算法和穷举法;一些连续离散化方法;数值分析算法;图象处理算法。 关键词:数学建模;蒙特卡罗算法;数据处理算法;数学规划算法;图论算法 一、蒙特卡罗算法 蒙特卡罗算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法。在工程、通讯、金融等技术问题中, 实验数据很难获取, 或实验数据的获取需耗费很多的人力、物力, 对此, 用计算机随机模拟就是最简单、经济、实用的方法; 此外, 对一些复杂的计算问题, 如非线性议程组求解、最优化、积分微分方程及一些偏微分方程的解⑿, 蒙特卡罗方法也是非常有效的。 一般情况下, 蒙特卜罗算法在二重积分中用均匀随机数计算积分比较简单, 但精度不太理想。通过方差分析, 论证了利用有利随机数, 可以使积分计算的精度达到最优。本文给出算例, 并用MA TA LA B 实现。 1蒙特卡罗计算重积分的最简算法-------均匀随机数法 二重积分的蒙特卡罗方法(均匀随机数) 实际计算中常常要遇到如()dxdy y x f D ??,的二重积分, 也常常发现许多时候被积函数的原函数很难求出, 或者原函数根本就不是初等函数, 对于这样的重积分, 可以设计一种蒙特卡罗的方法计算。 定理 1 )1( 设式()y x f ,区域 D 上的有界函数, 用均匀随机数计算()??D dxdy y x f ,的方法: (l) 取一个包含D 的矩形区域Ω,a ≦x ≦b, c ≦y ≦d , 其面积A =(b 一a) (d 一c) ; ()j i y x ,,i=1,…,n 在Ω上的均匀分布随机数列,不妨设()j i y x ,, j=1,…k 为落在D 中的k 个随机数, 则n 充分大时, 有

动态规划算法实验报告

实验标题 1、矩阵连乘 2、最长公共子序列 3、最大子段和 4、凸多边形最优三角剖分 5、流水作业调度 6、0-1背包问题 7、最优二叉搜索树 实验目的掌握动态规划法的基本思想和算法设计的基本步骤。 实验内容与源码1、矩阵连乘 #include #include using namespace std; const int size=4; //ra,ca和rb,cb分别表示矩阵A和B的行数和列数 void matriMultiply(int a[][4],int b[][4],int c[][4],int ra ,int ca,int rb ,int cb ) { if(ca!=rb) cerr<<"矩阵不可乘"; for(int i=0;i

数学建模在计算机专业的应用

应用一图论算法 图论在计算机处理问题中占有重要地位,现实中的很多问题最终都可以转化成图论问题,或者要借助图结构来存储和处理。但是怎么把一图存入计算机就要涉及到数学建模的知识。 比如下面一图: 如果要求出从节点v1到节点v5的所有路径,就可以借助计算机来很轻松的解决。但前提条件是,必须要把图以一种计算机可以理解的形式存进去,即要把它抽象为数学问题。 在此,我们需要定义一些关于图的概念,以便更好的描述问题。 边与顶点的关系有如下几种典型情况: 简单图:无自回环,无重边的图。

无向图:边没有指向, 1212 e. i i i i i ψ()={v,v}=v v此时称边e i与顶点12 i i v,v关联,称 顶点 1 i v与顶点 2 i v邻接。 有向图:边有指向, 1212 e. i i i i i ψ u u u u u r ()=(v,v)=v v 下面是具体涉及到图如何存储的问题: 1.图G(V,E)的关联矩阵x R=(r) ij n m ,若G(V,E)为无向图, 1 2 i j ij i j j i j j v e r v e e v e e ? ? =? ? ? 与不关联 与关联,为非自回环 与关联,为自回环 若G(V,E)为有向图, 1 2 i j ij i j i j v e r v e v e ? ? =? ? ? 与不关联 是的起点 是的终点 因此该图可以用关联矩阵表示出来,如下所示 1100000 1010100 0101001 0011010 0000111 R ?? ? ? ? = ? ? ? ?? 这样,我们就可以以矩阵的形式将图存入计算机

动态规划讲解大全含例题及答案

动态规划讲解大全 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 动态规划程序设计是对解最优化问题的一种途径、一种方法,而不是一种特殊算法。不象前面所述的那些搜索或数值计算那样,具有一个标准的数学表达式和明确清晰的解题方法。动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。因此读者在学习时,除了要对基本概念和方法正确理解外,必须具体问题具体分析处理,以丰富的想象力去建立模型,用创造性的技巧去求解。我们也可以通过对若干有代表性的问题的动态规划算法进行分析、讨论,逐渐学会并掌握这一设计方法。 基本模型 多阶段决策过程的最优化问题。 在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。当然,各个阶段决策的选取不是任意确定的,它依赖于当前面临的状态,又影响以后的发展,当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线,如图所示:(看词条图) 这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题就称为多阶段决策问题。 记忆化搜索 给你一个数字三角形, 形式如下: 1 2 3 4 5 6 7 8 9 10 找出从第一层到最后一层的一条路,使得所经过的权值之和最小或者最大. 无论对与新手还是老手,这都是再熟悉不过的题了,很容易地,我们写出状态转移方程:f(i, j)=a[i, j] + min{f(i+1, j),f(i+1, j + 1)} 对于动态规划算法解决这个问题,我们根据状态转移方程和状态转移方向,比较容易地写出动态规划的循环表示方法。但是,当状态和转移非常复杂的时候,也许写出循环式的动态规划就不是那么简单了。 解决方法:

数学建模-(动态规划)

1.某公司打算向它的三个营业区增设6个销售店,每个营业区至少增设1个。各营业区每年增加的利润与增设的销售店个数有关,具体关系如表1所示。试规划各营业区应增设销售店的个数,以使公司总利润增加额最大。 : 个销售店,C 区增设1个销售店.最大利润为490万元。 贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。 2.某公司拟将500万元的资本投入所属的甲、乙、丙三个工厂进行技术改造,各工厂获得投资后年利润将有相应的增长,增长额如表所示。试确定500万元资 解:将问题按工厂分为三个阶段3,2,1=k ,设状态变量k (3,2,1=k )代表从第k 个工厂到第3个工厂的投资额,决策变量k x 代表第k 个工厂的投资额。于是有状态转移率k k k x S S -=+1、允许决策集合}0|{)(k k k k k S x x S D ≤≤=和递推关系式: )}()({max )(10k k k k k S x k k x S f x g S f k k -+=+≤≤ )1,2,3(=k

0)(44=S f 当3=k 时: )}({max }0)({max )(330330333333x g x g S f S x S x ≤≤≤≤=+= 于是有表2-1,表中*3x 表示第三个阶段的最优决策。 当2=k 时: )}()({max )(2232202222x S f x g S f S x -+=≤≤ 于是有表7-3。 当1=k 时: )}()({max )(1121101111x S f x g S f S x -+=≤≤ 于是有表2-3。 然后按计算表格的顺序反推算,可知最优分配方案有两个:(1)甲工厂投资200万元,乙工厂投资200万元,丙工厂投资100万元;(2)甲工厂没有投资,乙工厂投资200万元,丙工厂投资300万元。按最优分配方案分配投资(资源),年利润将增长210万元。

数学建模之规划问答

一、线性规划 1.简介 1.1适用情况 用现有资源来安排生产,以取得最大经济效益的问题。如: (1)资源的合理利用 (2)投资的风险与利用问题 (3)合理下料问题 (4)合理配料问题 (5)运 输 问 题 (6)作物布局问题 (7)多周期生产平滑模型 (8)公交车调度安排 1.2建立线性规划的条件 (1)要求解问题的目标函数能用数值指标来反映,且为线性函数; (2)要求达到的目标是在一定条件下实现的,这些约束可用线性等式或不等式描述。 1.3线性规划模型的构成 决策变量、目标函数、约束条件。 2、一般线性规划问题 数学标准形式: 目标函数: 1 max == ∑ n j j j z c x 约束条件:1 ,1,2,...,,..0,1,2,...,.=?==???≥=?∑n ij j i j j a x b i m s t x j n matlab 标准形式:

min , ,.,.?≤?? ?=??≤≤? T s t Aeq beq lb ub f x A x b x x 3、可以转化为线性规划的问题 例:求解下列数学规划问题 1234123412341234min ||2||3||4||,2,..31,123. 2=+++? ?--+≤-?-+-≤-???--+≤-? z x x x x x x x x s t x x x x x x x x 解:作変量変换1||||,,1,2,3,4,22 +-= ==i i i i i x x x x u v i 并把新变量重新排序成一维变量[]1414,,,,,??==???? L L T u y u u v v v ,则可把模型转化为线性规划模型 []min , ,,..0.???-≤???????≥? T c y u A A b s t v y 其中:[]1,2,3,4,1,2,3,4;=T c 12,1,;2??=---??? ?T b 111111131 - - ?? ??= - -???? -1 -1 3??A 。 利用matlab 计算得最优解:12342,0,=-===x x x x 最优值z=2。 程序如下: 略

数学建模中常见的十大模型

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 转载▼ 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MA TLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MA TLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 2.1 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。 2.2 数据拟合、参数估计、插值等算法 数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的

相关文档
最新文档