动态规划习题
动态规划习题

动态规划专题分类视图数轴动规题: (1)较复杂的数轴动规 (4)线性动规 (7)区域动规: (14)未知的动规: (20)数轴动规题:题1.2001年普及组第4题--装箱问题【问题描述】有一个箱子容量为V(正整数,0≤V≤20000),同时有n个物品(0<n≤30),每个物品有一个体积(正整数)。
要求从n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
【输入格式】输入文件box.in有若干行。
第一行:一个整数,表示箱子容量V;第二行:一个整数,表示物品个数n;接下来n行,分别表示这n个物品的各自体积。
【输出格式】输出文件box.out只有一行数据,该行只有一个数,表示最小的箱子剩余空间。
【输入样例】2468312797【输出样例】题2.1996年提高组第4题--砝码秤重__数据加强版【问题描述】设有n种砝码,第k种砝码有C k个,每个重量均为W k,求:用这些砝码能秤出的不同重量的个数,但不包括一个砝码也不用的情况。
【输入格式】输入文件weight.in的第一行只有一个数n,表示不同的砝码的种类数.第2行至第n+1行,每行有两个整数.第k+1行的两个数分别表示第k种砝码的个数和重量.【输出格式】输出文件weight.out中只有一行数据:Total=N。
表示用这些砝码能秤出的不同重量数。
【输入样例】22 22 3【输出样例】Total=8【样例说明】重量2,3,4,5,6,7,8,10都能秤得【数据限制】对于100%的数据,砝码的种类n满足:1≤n≤100;对于30%的数据,砝码的总数量C满足:1≤C≤20;对于100%的数据,砝码的总数量C满足:1≤C≤100;对于所有的数据,砝码的总重量W满足:1≤W≤400000;题3.石子归并-szgb.pas【问题描述】有一堆石头质量分别为W1,W2,…,Wn.(Wi≤10000),将石头合并为两堆,使两堆质量的差最小。
【输入】输入文件szgb.in的第一行只有一个整数n(1≤n≤50),表示有n堆石子。
动态规划例题

例1:机器负荷分配问题某公司新购进1000台机床,每台机床都可在高、低两种不同的负荷下进行生产,设在高负荷下生产的产量函数为g(x )=10x (单位:百件),其中x 为投入生产的机床数量,年完好率为a =0.7;在低负荷下生产的产量函数为h(y)=6y (单位:百件),其中y 为投人生产的机床数量,年完好率为b=0.9。
计划连续使用5年,试问每年如何安排机床在高、低负荷下的生产计划,使在五年内生产的产品总产量达到最高。
例2:某企业通过市场调查,估计今后四个时期市场对某种产品的需要量如下表:时期(k) 12 3 4 需要量(d k )2(单位)324假定不论在任何时期,生产每批产品的固定成本费为3(千元),若不生产,则为零;生产单位产品成本费为1(千元);每个时期生产能力所允许的最大生产批量为不超过6个单位,则任何时期生产x 个单位产品的成本费用为:若 0<x ≤6 , 则生产总成本=3十1·x 若 x =0 , 则生产总成本=0又设每个时期末未销售出去的产品,在一个时期内单位产品的库存费用为0.5(千元),同时还假定第1时期开始之初和在第4个时期之末,均无产品库存。
现在我们的问题是;在满足上述给定的条件下,该厂如何安排各个时期的生产与库存,使所花的总成本费用最低?例3:设某企业在第一年初购买一台新设备,该设备在五年内的年运行收益、年运行费用及更换新设备的净费用如下表:(单位:万元)年份(k) 役龄(t) 运行收益()k g t 运行费用()k r t 更新费用()k c t 第一年 0 22 6 18 第二年0 123 216 819 22第三年0122321185710192328第四年01232422191657101520243038第五年01234252320171446914202024303848试为该企业制定一个五年中的设备更新策略,使得企业在五年内总收益达到最大?例4:设有一辆栽重为10吨的卡车,用以装载三种货物,每种货物的单位重量及单件价值如表所示,问各种货物应装多少件,才能既不超过总重量又使总价值最大?货物 1 2 3单位重量 3 4 5单件价值 4 5 6。
动态规划练习题

最小乘车费用 (bus)【问题描述】而任意一辆汽车从不行驶超过1 0公里。
某人想乘车到达n公里远的地方,假设他可以任意次换车,请你帮他找到一种乘车方案,使得总费用最小。
注意:1 0公里的费用比1公里小的情况是允许的。
【输入文件】共两行:第一行为1 0个不超过200的整数,依次表示行驶1~1 0公里的费用,相邻两数间用一个空格隔开:第二行为某人想要乘车的公里数(不超过20000的整数)。
【输出文件】仅一行,包含一个整数,表示到达n公里所需要的最小费用。
【样例输入】12 21 31 40 49 58 69 79 90 10115【样例输出】147船 (ships)【问题描述】PALMIA国家被一条河流分成南北两岸,南北两岸上各有N个村庄。
北岸的每一个村庄有一个唯一的朋友在南岸,且他们的朋友村庄彼此不同。
每一对朋友村庄想要一条船来连接他们,他们向政府提出申请以获得批准。
由于河面上常常有雾,政府决定禁止船只航线相交(如果相交,则很可能导致碰船)。
你的任务是编写一个程序,帮助政府官员决定批准哪些船只航线,使得不相交的航线数目最大。
【输入文件】ships.in输入文件由几组数据组成。
每组数据的第一行有2个整数X,Y,中间有一个空格隔开,X代表PALMIA河的长度(10<=X<=6000),Y代表河的宽度(10<=Y<=100)。
第二行包含整数N,表示分别坐落在南北两岸上的村庄的数目(1<=N<=5000)。
在接下来的N行中,每一行有两个非负整数C,D,由一个空格隔开,分别表示这一对朋友村庄沿河岸与PALMIA 河最西边界的距离(C代表北岸的村庄,D代表南岸的村庄),不存在同岸又同位置的村庄。
最后一组数据的下面仅有一行,是两个0,也被一空格隔开。
【输出文件】ships.out对输入文件的每一组数据,输出文件应在连续的行中表示出最大可能满足上述条件的航线的数目。
【输入样例】30 4722 42 610 315 129 817 174 20 0【输出样例】4DOLLARS (dollars)【问题描述】在以后的若干天里戴维将学习美元与德国马克的汇率。
动态规划例题

例1:机器负荷分配问题某公司新购进1000台机床,每台机床都可在高、低两种不同的负荷下进行生产,设在高负荷下生产的产量函数为g(x )=10x (单位:百件),其中x 为投入生产的机床数量,年完好率为a =0.7;在低负荷下生产的产量函数为h(y)=6y (单位:百件),其中y 为投人生产的机床数量,年完好率为b=0.9。
计划连续使用5年,试问每年如何安排机床在高、低负荷下的生产计划,使在五年内生产的产品总产量达到最高。
例2:某企业通过市场调查,估计今后四个时期市场对某种产品的需要量如下表:时期(k) 12 3 4 需要量(d k )2(单位)324假定不论在任何时期,生产每批产品的固定成本费为3(千元),若不生产,则为零;生产单位产品成本费为1(千元);每个时期生产能力所允许的最大生产批量为不超过6个单位,则任何时期生产x 个单位产品的成本费用为:若 0<x ≤6 , 则生产总成本=3十1·x 若 x =0 , 则生产总成本=0又设每个时期末未销售出去的产品,在一个时期内单位产品的库存费用为0.5(千元),同时还假定第1时期开始之初和在第4个时期之末,均无产品库存。
现在我们的问题是;在满足上述给定的条件下,该厂如何安排各个时期的生产与库存,使所花的总成本费用最低?例3:设某企业在第一年初购买一台新设备,该设备在五年内的年运行收益、年运行费用及更换新设备的净费用如下表:(单位:万元)年份(k) 役龄(t) 运行收益()k g t 运行费用()k r t 更新费用()k c t 第一年 0 22 6 18 第二年0 123 216 819 22第三年0122321185710192328第四年01232422191657101520243038第五年01234252320171446914202024303848试为该企业制定一个五年中的设备更新策略,使得企业在五年内总收益达到最大?例4:设有一辆栽重为10吨的卡车,用以装载三种货物,每种货物的单位重量及单件价值如表所示,问各种货物应装多少件,才能既不超过总重量又使总价值最大?货物 1 2 3单位重量 3 4 5单件价值 4 5 6。
动态规划入门

输入数据 输入的第一行是序列的长度N (1 <= N <= 1000)。第二行给出
序列中的N个整数,这些整数的取值范围都在0到10000。 输出要求
最长上升子序列的长度。 输入样例 7 1735948 输出样例 4
解题思路
1.找子问题
“求序列的前n个元素的最长上升子序列的长度”是个 子问题,但这样分解子问题,不具有“无后效性”
数字三角形的记忆递归型动归程序:
#include <iostream> #include <algorithm> using namespace std;
#define MAX 101
int D[MAX][MAX];
int n;
int maxSum[MAX][MAX];
int MaxSum(int i, int j){ if( maxSum[i][j] != -1 ) return maxSum[i][j]; if(i==n) maxSum[i][j] = D[i][j]; else { int x = MaxSum(i+1,j); int y = MaxSum(i+1,j+1); maxSum[i][j] = max(x,y)+ D[i][j]; } return maxSum[i][j];
数字三角形的状态转移方程:
能用动规解决的问题的特点
1) 问题具有最优子结构性质。如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结 构性质。
2) 无后效性。当前的若干个状态值一旦确定,则此后过程 的演变就只和这若干个状态的值有关,和之前是采取哪 种手段或经过哪条路径演变到当前的这若干个状态,没 有关系。
动态规划 练习题

23.(11分)请用动态规划逆序求解法求解下列问题:求出下图中从A到E的最短路线及长度。
在图中标出每个点到终点的最短距离。
24. (11分)一个旅行者从A点出发,经过B、C、D等处,到达E。
各地间距离如图中所示。
问该旅行者应选择哪一条路线,使从A到E的总路程最短?(可直接在图上标号,最后给定答案)
24.一个旅行者从A点出发,经过B、C、D等处,到达E。
各地间距离如图中所示。
问该旅行者应选择哪一条路线,使从A到E的总路程最短?(可直接在图上标号,最后给定答案)(11分)
解:此为动态规划之“最短路问题”,可用逆向追踪“图上标号法”解决如下:
最佳策略为:A →B 2→C 1→D 1→E 或A →B 3→C 1→D 1→E 此时从A 到E 的总路程的最短距离都是11
23. 请用动态规划逆序求解法求解下列问题:
各点标号依次为:A:8, B1:7,B2:6, B3:8, C1:5, C2:4,D1:3,D2:1,D3:5.
25. 某厂生产C B A ,,三种产品,其所需劳动力、材料等有关数据见下表。
要求:建立模型,并用单纯形法计算,确定获利最大的产品生产计划。
解:(1)设C B A ,,
各生产321,,x x x 件。
有
32143min x x x z ++=
st.⎪⎩⎪
⎨⎧=≥≤++≤++)3,2,1(,03054345
536321321j x x x x x x x j
(4分)
获利最大的生产计划是C B A ,,各生产5件、0件、3件,最大利润为273453=⨯+⨯=z 元。
(15分)。
运筹学 动态规划-作业及答案

1
第五章 动态规划作业题及答案
1.用动态规划法求解求最短路径
从起点A 到终点E 之间各点的距离如图所示。
求A 到E 的最短路径。
B A
C B
D B C D E
C 21
23
12
31
2
5
11214
10610
41312113
96
5810
5
2
2.用动态规划法求解资源分配问题
有资金4万元,投资A 、B 、C 三个项目,每个项目的投资效益与投入该项目的资金有关。
三个项目A 、B 、C 的投资效益(万吨)和投入资金(万元)的关系见下表:
用动态规划法求解对三个项目的最优投资分配,使总投资效益最大。
3.用动态规划法求解生产库存问题
一个工厂生产某种产品,1~7月份生产成本和产品需求量的变化情况如下表:
为了调节生产生产和需求,工厂设有一个产品仓库,库容量H=9。
已知期初库存量为2,要求期末(七月低)库存量为0。
每个月生产的产品在月末入库,月初根据当月需求发货。
求七个月的生产量,能满足各月的需求,并使生产成本最低。
4.用动态规划法求解背包问题
第i 种每件价值c 1=65,c 2=85,c 3=40元; 第i 种物品每件重量为:w 1=2,w 2=3,w 3=1公斤;现有一只可装载重量为5公斤的背包,求各种物品应各取多少件放入背包,使背包中物品的价值最高。
动态规划习题课

练习1:某厂生产三种产品,多种产品重量与利 润旳关系如表所示。现将此三种产品运往市场出售, 运送能力总重量不超出 6 吨,问怎样安排运送,使 总利润最大?
种类
123
重量(吨/公斤)
234
单件利润(元) 80 130 180
最优方案:X1 =(0.2.0)X2 =(1.0.1) Z=260
例4 投资问题
w2(5,3)+f3(2) w2(5,2)+f3(3) =max
12+8 10+11
=21
w2(5,1)+f3(4)
5+15
当k=1时,有s1=5 D1(s1)={0,1,2,3,4}
w1(5,4)+f2(1)
12+4
w1(5,3)+f2(2)
10+9
f1(5)=max w1(5,2)+f2(3) =max 6+14 =21
可提高成绩 aij , (i, j 1,2,3,4) 。用动态规划方法求使其 成绩提高最多的复习天数安排计划。要求写出问题的 阶段变量,状态变量,决策变量,阶段指标函数,基 本方程(递推公式)。
max
0x3x整3 数 a53
12 x3 f2 (5 5 x3 )
=max
0
x3
5 5
12 x3 f2 (5 5 x3 )
x3整数
=max x3=0,1
12 x3
f2(5 5x3 )
=max0 f2 (5),
12 f2 (0)
( x3 0)
( x3 1)
f2(5)
w1(5,1)+f2(4)
3+18
w1(5,0)+f2(5)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章动态规划规划问题的最终目的就是确定各决策变量的取值,以使目标函数达到极大或极小。
在线性规划和非线性规划中,决策变量都是以集合的形式被一次性处理的;然而,有时我们也会面对决策变量需分期、分批处理的多阶段决策问题。
所谓多阶段决策问题是指这样一类活动过程:它可以分解为若干个互相联系的阶段,在每一阶段分别对应着一组可供选取的决策集合;即构成过程的每个阶段都需要进行一次决策的决策问题。
将各个阶段的决策综合起来构成一个决策序列,称为一个策略。
显然,由于各个阶段选取的决策不同,对应整个过程可以有一系列不同的策略。
当过程采取某个具体策略时,相应可以得到一个确定的效果,采取不同的策略,就会得到不同的效果。
多阶段的决策问题,就是要在所有可能采取的策略中选取一个最优的策略,以便得到最佳的效果。
动态规划(dynamic programming)同前面介绍过的各种优化方法不同,它不是一种算法,而是考察问题的一种途径。
动态规划是一种求解多阶段决策问题的系统技术,可以说它横跨整个规划领域(线性规划和非线性规划)。
当然,由于动态规划不是一种特定的算法,因而它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,动态规划必须对具体问题进行具体的分析处理。
在多阶段决策问题中,有些问题对阶段的划分具有明显的时序性,动态规划的“动态”二字也由此而得名。
动态规划的主要创始人是美国数学家贝尔曼(Bellman)。
20世纪40年代末50年代初,当时在兰德公司(Rand Corporation)从事研究工作的贝尔曼首先提出了动态规划的概念。
1957年贝尔曼发表了数篇研究论文,并出版了他的第一部著作《动态规划》。
该著作成为了当时唯一的进一步研究和应用动态规划的理论源泉。
1961年贝尔曼出版了他的第二部著作,并于1962年同杜瑞佛思(Dreyfus)合作出版了第三部著作。
在贝尔曼及其助手们致力于发展和推广这一技术的同时,其他一些学者也对动态规划的发展做出了重大的贡献,其中最值得一提的是爱尔思(Aris)和梅特顿(Mitten)。
爱尔思先后于1961年和1964年出版了两部关于动态规划的著作,并于1964年同尼母霍思尔(Nemhauser)、威尔德(Wild)一道创建了处理分枝、循环性多阶段决策系统的一般性理论。
梅特顿提出了许多对动态规划后来发展有着重要意义的基础性观点,并且对明晰动态规划路径的数学性质做出了巨大的贡献。
动态规划在工程技术、经济管理等社会各个领域都有着广泛的应用,并且获得了显著的效果。
在经济管理方面,动态规划可以用来解决最优路径问题、资源分配问题、生产调度问题、库存管理问题、排序问题、设备更新问题以及生产过程最优控制问题等,是经济管理中一种重要的决策技术。
许多规划问题用动态规划的方法来处理,常比线性规划或非线性规划更有效。
特别是对于离散的问题,由于解析数学无法发挥作用,动态规划便成为了一种非常有用的工具。
动态规划可以按照决策过程的演变是否确定分为确定性动态规划和随机性动态规划;也可以按照决策变量的取值是否连续分为连续性动态规划和离散性动态规划。
本教材主要介绍动态规划的基本概念、理论和方法,并通过典型的案例说明这些理论和方法的应用。
§7.1 动态规划的基本理论1.1多阶段决策过程的数学描述有这样一类活动过程,其整个过程可分为若干相互联系的阶段,每一阶段都要作出相应的决策,以使整个过程达到最佳的活动效果。
任何一个阶段(stage,即决策点)都是由输入(input)、决策(decision)、状态转移律(transformation function)和输出(output)构成的,如图7-1(a)所示。
其中输入和输出也称为状态(state),输入称为输入状态,输出称为输出状态。
图7-1由于每一阶段都有一个决策,所以每一阶段都应存在一个衡量决策效益大小的指标函数,这一指标函数称为阶段指标函数,用g n 表示。
显然g n 是状态变量S n 和决策变量d n 的函数,即g n = r (S n ,d n ),如图7-1(b )所示。
显然,输出是输入和决策的函数,即:),(1n n n d S f S =+ (7-1)式(7-1)即为状态转移律。
在由N 个阶段构成的过程里,前一个阶段的输出即为后一个阶段的输入。
1.2 动态规划的基本概念动态规划的数学描述离不开它的一些基本概念与符号,因此有必要在介绍多阶段决策过程的数学描述的基础上,系统地介绍动态规划的一些基本概念。
1. 阶段(stage )阶段是过程中需要做出决策的决策点。
描述阶段的变量称为阶段变量,常用k 来表示。
阶段的划分一般是根据时间和空间的自然特征来进行的,但要便于将问题的过程转化为多阶段决策的过程。
对于具有N 个阶段的决策过程,其阶段变量k =1,2,…,N 。
2. 状态(state )状态表示每个阶段开始所处的自然状况或客观条件,它描述了研究问题过程的状况。
状态既反映前面各阶段系列决策的结局,又是本阶段决策的一个出发点和依据;它是各阶段信息的传递点和结合点。
各阶段的状态通常用状态变量S k 来加以描述。
作为状态应具有这样的性质:如果某阶段状态给定后,则该阶段以后过程的发展不受此阶段以前各阶段状态的影响。
换句话说,过程的历史只能通过当前的状态来影响未来,当前的状态是以往历史的一个总结。
这个性质称为无后效性(the future is independent of the past )或健忘性(the process is forgetful )。
3. 决策(decision )决策是指决策者在所面临的若干个方案中做出的选择。
决策变量d k 表示第k 阶段的决策。
决策变量d k 的取值会受到状态S k 的某种限制,用D k (S k )表示第k 阶段状态为S k 时决策变量允许的取值范围,称为允许决策集合,因而有d k (S k )D k (S k )。
4. 状态转移律(transformation function )状态转移律是确定由一个状态到另一状态演变过程的方程,这种演变的对应关系记为S k+1 = T k (S k , d k )。
输 出输 入 决 策阶 段状态转移 (a )S n+1S nd nStage ng n = r (S n ,d n ) (b )5. 策略(policy )与子策略(sub-policy )由所有阶段决策所组成的一个决策序列称为一个策略,具有N 个阶段的动态规划问题的策略可表示为:)}(,),(),({2211N N S d S d S d从某一阶段开始到过程终点为止的一个决策子序列,称为过程子策略或子策略。
从第k 个阶段起的一个子策略可表示为:)}(,),(),({11N N k k k k S d S d S d ++6. 指标函数指标函数有阶段指标函数和过程指标函数之分。
阶段指标函数是对应某一阶段决策的效率度量,用g k = r (S k ,d k )来表示;过程指标函数是用来衡量所实现过程优劣的数量指标,是定义在全过程(策略)或后续子过程(子策略)上的一个数量函数,从第k 个阶段起的一个子策略所对应的过程指标函数常用G k,N 来表示,即:),,,,,,(11,N N k k k k N k d S d S d S R G ++=构成动态规划的过程指标函数,应具有可分性并满足递推关系;即:N k k N k G g G ,1,+⊕=这里的⊕表示某种运算,最常见的运算关系有如下二种:(1) 过程指标函数是其所包含的各阶段指标函数的“和”,即:∑==Nkj j N k g G ,于是N k k N k G g G ,1,++=(2) 过程指标函数是其所包含的各阶段指标函数的“积”,即:∏==Nkj j N k g G ,于是N k k N k G g G ,1,+⨯=7. 最优指标函数从第k 个阶段起的最优子策略所对应的过程指标函数称为最优指标函数,可以用式(7-2)加以表示:}{)(1~N k k d k k g g g opt S f Nk ⊕⊕⊕=+ (7-2)其中“opt ”是最优化“optimization ”的缩写,可根据题意取最大“max ”或最小“min ”。
在不同的问题中,指标函数的含义可能是不同的,它可能是距离、利润、成本、产量或资源量等。
1.3 动态规划的数学模型动态规划的数学模型除包括式(7-2)外,还包括阶段的划分、各阶段的状态变量和决策变量的选取、允许决策集合和状态转移律的确定等。
如何获得最优指标函数呢?一个N 阶段的决策过程,具有如下一些特性: (1) 刚好有N 个决策点;(2) 对阶段k 而言,除了其所处的状态k S 和所选择的决策k d 外,再没有任何其它因素影响决策的最优性了;(3) 阶段k 仅影响阶段1+k 的决策,这一影响是通过1+k S 来实现的;(4) 贝尔曼(Bellman )最优化原理:在最优策略的任意一阶段上,无论过去的状态和决策如何,对过去决策所形成的当前状态而言,余下的诸决策必须构成最优子策略。
根据贝尔曼(Bellman )最优化原理,可以将式(7-2)表示为递推最优指标函数关系式(7-3)或式(7-4):)}({}{)(111~++++=⊕⊕⊕=k k k d N k k d k k S f g opt g g g opt S f kNk (7-3))}({}{)(111~+++⨯=⊕⊕⊕=k k k d N k k d k k S f g opt g g g opt S f kNk (7-4)利用式(7-3)和式(7-4)可表示出最后一个阶段(第N 个阶段,即k=N )的最优指标函数:)}({)(11+++=N N N d N N S f g opt S f N(7-5))}({)(11++⨯=N N N d N N S f g opt S f N(7-6)其中)(11++N N S f 称为边界条件。
一般情况下,第N 阶段的输出状态1+N S 已经不再影响本过程的策略,即式(7-5)中的边界条件0)(11=++N N S f ,式(7-6)中的边界条件1)(11=++N N S f ;但当问题第N 阶段的输出状态1+N S 对本过程的策略产生某种影响时,边界条件)(11++N N S f 就要根据问题的具体情况取适当的值,这一情况将在后续例题中加以反映。
已知边界条件)(11++N N S f ,利用式(7-3)或式(7-4)即可求得最后一个阶段的最优指标函数)(N N S f ;有了)(N N S f ,继续利用式(7-3)或式(7-4)即可求得最后两个阶段的最优指标函数)(11--N N S f ;有了)(11--N N S f ,进一步又可以求得最后三个阶段的最优指标函数)(22--N N S f ;反复递推下去,最终即可求得全过程N 个阶段的最优指标函数)(11S f ,从而使问题得到解决。