(本文适合入门理解思想,后期多刷题)算法
动态规划是运筹学的一个分支,是求解多阶段决策过程最优化问题的数学方法,在经济管理、工程技术、工农业生产及军事部门中都有着普遍的应用,而且得到了显著的效果。函数
学习动态规划,咱们首先要了解多阶段决策问题。学习
多阶段决策问题例子:优化
最短路径问题spa
背包问题
3d
生产决策问题:企业在生产过程当中,因为需求是随时间变化的,所以企业为了得到整年的最佳生产效益,就要在整个生产过程当中逐月或逐季度地根据库存和需求决定生产计划。blog
机器负荷分配问题:某种机器能够在高低两种不一样的负荷下进行生产。要求制定一个五年计划,在每一年开始时,决定如何从新分配无缺的机器在两种不一样的负荷下生产的数量,使在五年内产品的总产量达到最高。get
航天飞机飞行控制问题:因为航天飞机的运动的环境是不断变化的,所以就要根据航天飞机飞行在不一样环境中的状况,不断地决定航天飞机的飞行方向和速度(状态),使之能最省燃料和完成飞行任务(如软着陆)。数学
多阶段决策过程的特色:产品
根据过程的特性能够将过程按空间、时间等标志分为若干个互相联系又互相区别的阶段。
在每个阶段都须要作出决策,从而使整个过程达到最好的效果。
各个阶段决策的选取不是任意肯定的,它依赖于当前面临的状态,又影响之后的发展。
当各个阶段的决策肯定后,就组成了一个决策序列,于是也就决定了整个过程的一条活动路线,这样的一个先后关联具备链状结构的多阶段过程就称为多阶段决策问题。
针对多阶段决策过程的最优化问题,美国数学家Bellman等人在20世纪50年代初提出了著名的最优化原理,把多阶段决策问题转化为一系列单阶段最优化问题,从而逐个求解,创立了解决这类过程优化问题的新方法:动态规划。
对最佳路径(最佳决策过程)所通过的各个阶段,其中每一个阶段始点到全过程终点的路径,一定是该阶段始点到全过程终点的一切可能路径中的最佳路径(最优决策),这就是Bellman提出的著名的最优化原理。即 一个最优策略的子策略必然也是最优的。
A地到 E 地要铺设一条煤气管道,其中需通过三级中间站,两点之间的连线上的数字表示距离。
如图所示,问应该选择什么路线,使总距离最短?
解:整个计算过程分为四个阶段,从最后一个阶段开始。
第四阶段:有两条路。 ①D1E=5,②D2E=2。②最优。
第三阶段:有六条路。
通过C1点——①C1D1+5=8,②C1D2+2=11。 ①最优。
通过C2点——①C2D1+5=11,②C2D2+2=7。 ②最优。
通过C3点——①C3D1+5=13,②C3D2+2=12。 ②最优。
第二阶段:有九条路。
通过B1点——①B1C1+8=20,②B1C2+7=21,③B1C3+12=22。 ①最优。
通过B2点——①B2C1+8=14,②B2C2+7=17,③B2C3+12=16。 ①最优。
通过B3点——①B3C1+8=21,②B3C2+7=19,③B3C3+12=23。 ②最优。
第一阶段:有三条路。①2+20=22,②5+14=19,③1+19=20。 ②最优。
故最短路径为:A→B2→C1→D1→E,最短距离为19。
动态规划是用来解决多阶段决策过程最优化的一种数量方法。其特色在于,它能够把一个n 维决策问题变换为几个一维最优化问题,从而一个一个地去解决。
需指出:动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种算法。必须对具体问题进行具体分析,运用动态规划的原理和方法,创建相应的模型,而后再用动态规划方法去求解。
动态决策问题的特色:
系统所处的状态和时刻是进行决策的重要因素;
即在系统发展的不一样时刻(或阶段)根据系统所处的状态,不断地作出决策;
找到不一样时刻的最优决策以及整个过程的最优策略。
动态规划方法的关键:在于正确地写出基本的递推关系式和恰当的边界条件(简称基本方程)。
要作到这一点,就必须将问题的过程分红几个相互系的阶段,恰当的选取状态变量和决策变量及定义最优值函数,从而把一个大问题转化成一组同类型的子问题,而后逐个求解。
即从边界条件开始,逐段递推寻优,在每个子问题的求解中,均利用了它前面的子问题的最优化结果,依次进行,最后一个子问题所得的最优解,就是整个问题的最优解。
在多阶段决策过程当中,动态规划方法是既把当前一段和将来一段分开,又把当前效益和将来效益结合起来考虑的一种最优化方法。所以,每段决策的选取是从全局来考虑的,与该段的最优选择答案通常是不一样的。
在求整个问题的最优策略时,因为初始状态是已知的,而每段的决策都是该段状态的函数,故最优策略所通过的各段状态即可逐段变换获得,从而肯定了最优路线。
最优化原理:做为整个过程的最优策略具备这样的性质:不管过去的状态和决策如何,相对于前面的决策所造成的状态而言,余下的决策序列必然构成最优子策略。也就是说,一个最优策略的子策略也是最优的。
动态规划求解的多阶段问题的特色:
现有数量为a(万元)的资金,计划分配给n 个工厂,用于扩大再生产。假设:xi 为分配给第i 个工厂的资金数量(万元);gi(xi)为第i 个工厂获得资金后提供的利润值(万元)。
问题:如何肯定各工厂的资金数,使得总的利润为最大。
据此,有下式:
用fk(x) 表示 以数量为 x 的资金分配给前k 个工厂,所获得的最大利润值。用动态规划求解,就是求 fn(a) 的问题。
因此,根据的动态规划的最优化原理,就有:
若是a 是以万元为资金分配单位,则式中的y 只取非负整数0,1,2,…,x。上式可变为:
实际问题:设国家拨给60万元投资,供四个工厂扩建使用,每一个工厂扩建后的利润与投资额的大小有关,投资后的利润函数以下表所示。
按顺序解法计算:
第一阶段:求 f1(x)。
第二阶段:求 f2(x)。(需考虑第1、第二个工厂如何进行投资分配,以取得最大的总利润)
根据公式,对应的最优策略:
第三阶段:求 f3(x)。(需考虑第1、第二及第三个工厂如何进行投资分配,以取得最大的总利润)
第四阶段:同理求 f4(60)。即问题的最优策略。
最优策略即(20,0,30,10),最大利润为160万元。
有一个徒步旅行者,其可携带物品重量的限度为a 公斤,设有n 种物品可供他选择装入包中。已知每种物品的重量及使用价值(做用),问此人应如何选择携带的物品(各几件),使所起做用(使用价值)最大?
这就是背包问题。相似的还有工厂里的下料问题、运输中的货物装载问题、人造卫星内的物品装载问题等。
设 xj 为第 j 种物品的装件数(非负整数)则问题的数学模型以下:
用动态规划方法求解,令fk(y) = 总重量不超过 y 公斤,包中只装有前k 种物品时的最大使用价值。
其中y ≥0, k =1,2, …, n 。因此问题就是求 fn(a)。
其递推关系式:
当 k=1 时,
例题:求下面背包问题的最优解。
解:a=5,问题是求 f3(5)
先从x3入手:
接下来要计算 f2(5) 和 f2(0) 。开始涉及x2。
最后算 f1(5)、f1(3)、f1(1)、f1(0) 。
因而,f2(5)=max{8,5+8,10} = 13。(x1=1,x2=1)
f2(0)=0。
因此,f3(5)=max{0+13,12+0}=13。(x1=1,x2=1,x3=0)
即优解为 X=(1 . 1 . 0),最优值为 Z = 13
总结:解动态规划的通常方法:从终点逐段向始点方向寻找最小(大)的方法。