动态规划习题
动态规划习题
动态规划专题分类视图数轴动规题: (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.POJ 1160Post OfficeTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 17936 Accepted: 9655DescriptionThere is a straight highway with villages alongside the highway. The highway is represented as an integer axis, and the position of each village is identified with a single integer coordinate. There are no two villages in the same position. The distance between two positions is the absolute value of the difference of their integer coordinates.Post offices will be built in some, but not necessarily all of the villages. A village and the post office in it have the same position. For building the post offices, their positions should be chosen so that the total sum of all distances between each village and its nearest post office is minimum.You are to write a program which, given the positions of the villages and the number of post offices, computes the leastpossible sum of all distances between each village and its nearest post office.IntputYour program is to read from standard input. The first line contains two integers: the first is the number of villages V, 1 <= V <= 300, and the second is the number of post offices P, 1 <= P <= 30, P <= V. The second line contains V integers in increasing order. These V integers are the positions of the villages. For each position X it holds that 1 <= X <= 10000. outputThe first line contains one integer S, which is the sum of all distances between each village and its nearest post office. Sample input10 51 2 3 6 7 9 11 22 44 50Sample output9题目大意:用数轴描述一条高速公路,有V个村庄,每一个村庄坐落在数轴的某个点上,需要选择P个村庄在其中建立邮局,要求每个村庄到最近邮局的距离和最小。
运筹学动态规划习题
一、某工厂购进100台机器,准备生产A、B 两种产品。如生产产品A,每台机器每年可 收入45万元,损坏率为65%;若生产产品B, 每台机器每年可收入35万元,损坏率为 35%;估计三年后有新机器出现,旧的机 器将全部淘汰。试问每年应然后安排生产, 使在三年内收入最多?
答案: 第一年将100台机器全部生产产品B,第二年 将余下的机器生产产品B,第三年把所有的 机器生产产品A。三年的总收入为7676.25 万元。
二、某厂有100台机床,能够加工两种零件, 要安排4个月的任务,根据以往经验,用这 些机床加工第一种零件,一个月后损坏率 为1/3;加工第二种零件时,一个月后损坏 率为1/10。又已知机床加工第一种零件时一 个月的受益为10万元,机床加工第二种零 件时一个月的受益为7万元。现安排4个月 的任务,使总收益为最大。
பைடு நூலகம்
• 答案: • 设每个月为一个阶段,共4个阶段。每个阶 段可投入生产的机床数为状态变量SK,加 工第一种零件的机床数为决策变量UK,加 工第二种零件的机床数为SK-UK,阶段指标 函数为DK=7SK+3UK,SK+1=9/10SK-7/30UK。 用逆序的递推方法求解:前两月全部加工 第二种零件,后两月全部加工第一种零件。 其最大收益为2680
• 首先建立动态规划的模型 • 划分成3个阶段,每个阶段决策一个项目 的投资额,每个阶段决策的投资时可以使 用的资金作为状态变量,利润为阶段的指 标函数。 • 利用基本递推方程从第3阶段开始求解 • 给企业的投资额为 95万元 在城市购买房 地产的投资额为 105万元 • 最大利润为 681万元
三、某公司有资金200万元,打算全部参与三 个方面的投资。(1)参与一个企业投资, 当投资额为X1(万元)时,可得利润为 J1=4X1-2(万元);(2)参与一个电视片 制作,当投资额为X2(万元)时,可得利 润为J2=1/16X2-1/5X2-2(万元);(3)在 城市购买房地产,当投资额为X3(万元) 时,可得利润为J3=3X3-10(万元)。又知 投资额的上限为X1≤95万元;X2≤50万元。 用动态规划法决策使总利润最大?
动态规划题库
输入输出样例:
bridge.in bridge.out 100 5 10 40 25 50 20 70 10 12 50 9 70 49 30 38 25 27 50 19 70 75.0
动态规划题库
0. 最大子串和 〖题目描述〗 在一个一维数组里找出连续的几个数,使数的总和最大。
1. 最短路(Shortest path) 〖题目描述〗 从 A 地到 E 地可以经过不同的路径,不同的路有不同的发费,问如何走可以得到耗费最少的 路径?
2. 最小中间和数 〖题目描述〗 给定一个正整数序列 a1,a2,a3,……,an 不改变序列中每个在序列中的位置,把它们相加, 并括号记每次加法所得的和,称为中间和。问如何加括号可以使所有的中间和相加为最少。
Ship.in 30 4 7 22 4 26 10 3 15 12 98 17 17 42 00
Ship.out 4
6.过桥问题 〖题目描述〗
GDOI 工作组遇到了一个运输货物的问题。现在有 N 辆车要按顺序通过一个单向的小桥,
-2-
由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。另外,由于小桥建造的时间 已经很久,所以小桥只能承受有限的重量,记为 Max(吨)。所以,车辆在过桥的时候必须要 有管理员控制,将这 N 辆车按初始顺序分组,每次让一个组过桥,并且只有在一个组中所有 的车辆全部过桥以后才让下一组车辆上桥。现在,每辆车的重量和最在速度是已知的,而每 组车的过桥时间由该组中速度最慢的那辆车决定。 现在请你编一个程序,将这 N 辆车分组,使得全部车辆通过小桥的时间最短。
动态规划例题
1、生产库存问题例 某厂在年末估计,下年4个季度市场对该厂某产品的需求量均为d k =3 (k =1,2,3,4),该厂每季度生产此产品的能力为b k =5 (k =1,2,3,4,)。
每季度生产这种产品的固定成本为F=13(不生产时为0),每一产品的单位变动成本为C=2。
本季度产品如不能售出,则需发生库存费用g =1/件,仓库能贮存产品的最大数量E k =4。
试问如何安排4个季度的生产,以保证在满足市场需求的前提下,使生产和库存总量用最小?解:首先分析一下这类问题。
设x k —第k 季度的计划生产量,s k —第k 季度初的库存,⎩⎨⎧=>=0,00,1k k k x x y ,可以得到数学模型:⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧==≥≤≤⨯≤-+=+++=+∑4,3,2,110,0,45)43(3..213min1411k or y s x s x y x x s s t s s x y k k k k k kk k k k k k k k 。
显然,这个问题是一个混合整数规划。
但由于这类问题可以按时间先后顺序分成四个阶段,故可用动态规划方法求解。
(1) 将每个季度看作一个阶段,就有一个四阶段的决策问题。
(2)S k --第k 季度初的仓库库存量,在问题中,s 1=s 5=0, 30=≤≤E s k ,k =2,3,4。
(3) x k --第k 季度的生产函数。
(4)(5) ),(k k k x s W =第k 季度的生产贮存量(上个阶段的未出售的量放在当阶段计算库 存费) ⎩⎨⎧>-+++=-=0)(0)(k k k k k k k k k x d x s g Cx F x d s g W(6)f k (s k )=第k 季度初库存量为s k 的条件下,为保证市场需求,从第三者k 季度至年末生产和贮存这种产品的最小费用。
(7)kk k k k k k k k s d E x s d E d x s s -+≤≤-⇒≤-+=≤+10 (1)又 k k b x ≤≤0 (2)s k +1=s k +x k -d k ,k =4,3,2,1又 NN N N N N N N k k k k k k k k d x s s d x s s d x s s d x s s -+=-+=-+=-+=+---+++++111111121 加得kk Nk i i N k i i N ki Nki i i k N x s d x d x s s ≥-=⇒=-+=∑∑∑∑====+01 (3)由(1),(2),(3)得知∑=--+≤≤-Nki k i k k k k k k s d s d E b x s d ),,min(),0max(于是有{}5,4,3,2)(11=s D下面依次从第4阶段开始进行计算。
经典的动态规划入门练习题
动态规划入门练习题1.石子合并在一个圆形操场的四周摆放着N堆石子(N<= 100),现要将石子有次序地合并成一堆.规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.编一程序,由文件读入堆栈数N及每堆栈的石子数(<=20).(1)选择一种合并石子的方案,使用权得做N-1次合并,得分的总和最小;(2)选择一种合并石子的方案,使用权得做N-1次合并,得分的总和最大;输入数据:第一行为石子堆数N;第二行为每堆的石子数,每两个数之间用一个空格分隔.输出数据:从第一至第N行为得分最小的合并方案.第N+1行是空行.从第N+2行到第2N+1行是得分最大合并方案.每种合并方案用N行表示,其中第i行(1<=i<=N)表示第i次合并前各堆的石子数(依顺时针次序输出,哪一堆先输出均可).要求将待合并的两堆石子数以相应的负数表示.输入输出范例:输入:44 5 9 4输出:-459-4-8-59-13-9224-5-944-14-4-4-1822最小代价子母树设有一排数,共n个,例如:22 14 7 13 26 15 11.任意2个相邻的数可以进行归并,归并的代价为该两个数的和,经过不断的归并,最后归为一堆,而全部归并代价的和称为总代价,给出一种归并算法,使总代价为最小.输入、输出数据格式与“石子合并”相同。
输入样例:412 5 16 4输出样例:-12-516417-16-4-17-20372.背包问题设有n种物品,每种物品有一个重量及一个价值。
但每种物品的数量是无限的,同时有一个背包,最大载重量为XK,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于XK,而价值的和为最大。
输入数据:第一行两个数:物品总数N,背包载重量XK;两个数用空格分隔;第二行N个数,为N种物品重量;两个数用空格分隔;第三行N个数,为N种物品价值; 两个数用空格分隔;输出数据:第一行总价值;以下N行,每行两个数,分别为选取物品的编号及数量;输入样例:4 102 3 4 71 3 5 9输出样例:122 14 13.商店购物某商店中每种商品都有一个价格。
动态规划习题集全
动态规划专题训练护卫队【问题描述】护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥。
因为街道是一条单行道,所以任何车辆都不能超车。
桥能承受一个给定的最大承载量。
为了控制桥上的交通,桥两边各站一个指挥员。
护卫车队被分成几个组,每组中的车辆都能同时通过该桥。
当一组车队到达了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。
每辆车的重量是已知的。
任何一组车队的重量之和不能超过桥的最大承重量。
被分在同一组的每一辆车都以其最快的速度通过该桥。
一组车队通过该桥的时间是用该车队中速度最慢的车通过该桥所需的时间来表示的。
问题要求计算出全部护卫车队通过该桥所需的最短时间值。
【输入格式】输入文件中的第一行包含三个正整数(用空格隔开),第一个整数表示该桥所能承受的最大载重量(用吨表示),第二个整数表示该桥的长度(用千米表示),第三个整数表示该护卫队中车辆的总数(n<1000)。
接下来的几行中,每行包含两个正整数W和S(用空格隔开),W表示该车的重量(用吨表示),S表示该车过桥能达到的最快速度(用千米/小时表示)。
车子的重量和速度是按车子排队等候时的顺序给出的。
【输出格式】输出文件中应该是一个实数,四舍五入精确到小数点后1位,表示整个护卫车队通过该桥所需的最短时间(用分钟表示)。
【输入输出样例】输入:100 5 1040 2550 2050 2070 1012 509 7049 3038 2527 5019 70输入:75.0DOLLARS【问题描述】在以后的若干天里戴维将学习美元与德国马克的汇率。
编写程序帮助戴维何时应买或卖马克或美元,使他从100美元开始,最后能获得最高可能的价值。
【输入格式】输入文件中的第一行是一个自然数N(1<=N<=100),表示戴维学习汇率的天数。
接下来的N行中每行是一个自然数A(1<=A<=1000)。
第i+1行的A表示预先知道的第i+1天的平均汇率,在这一天中,戴维既能用100美元买A马克也能用A马克购买100美元。
动态规划算法题(5题)
动态规划算法题(5题)1、题⽬描述(⽹易)有 n 个学⽣站成⼀排,每个学⽣有⼀个能⼒值,⽜⽜想从这 n 个学⽣中按照顺序选取 k 名学⽣,要求相邻两个学⽣的位置编号的差不超过d,使得这 k 个学⽣的能⼒值的乘积最⼤,你能返回最⼤的乘积吗?输⼊描述:每个输⼊包含 1 个测试⽤例。
每个测试数据的第⼀⾏包含⼀个整数 n (1 <= n <= 50),表⽰学⽣的个数,接下来的⼀⾏,包含 n 个整数,按顺序表⽰每个学⽣的能⼒值 ai(-50 <= ai <= 50)。
接下来的⼀⾏包含两个整数,k 和 d (1 <= k <= 10, 1 <= d <= 50)。
输出描述:输出⼀⾏表⽰最⼤的乘积。
试题分析:本题要使⽤动态规划来解,动态规划的特点:1.求解的是最优化问题;2.可以分解为最优⼦结构本题可以先求解在第i个学⽣的位置下,j(j<K)个学⽣的能⼒值的最⼤值,得到所有学⽣位置下j个学⽣的能⼒值的最⼤值;在j个学⽣的情况下,得到j+1个学⽣的最⼤值,样例输出: 10 8 7 2 -7 9 5 4 10 -7 1 3 3输出: 630如上,第⼀步先计算k=2的情况:7:在d=3的情况下,最⼤最⼩值都为562:在d=3的情况下,最⼤值为16,最⼩值为14-7:在d=3的情况下,最⼤值为-14,最⼩值为-56......得到第⼀趟的结果k=3的情况下(这⾥以第⼀趟的结果为基础,只有这样就不需要考虑第⼀趟中d=3的限制):2:在d=3的情况下,最⼤最⼩值都为112(56*2)-7:在d=3的情况下,最⼤值为-98(14*-7)最⼩值为-392(56*-7)9:在d=3的情况下,最⼤值为504(56*9)最⼩值为-504(-56*9)......得到第⼆趟的结果返回最⼤值就是最后的结果#-*- coding:utf-8 -*-n=input()array=[int(i) for i in raw_input().split()]k,d=[int(i) for i in raw_input().split()]# n=36array_max=array_min=array#轮询k-1趟即可for i in range(0,k-1):_max=[-float('inf')]*n#将最⼤值的数组赋值⽆穷⼩_min=[float('inf')]*n#将最⼩值的数组赋值⽆穷⼤for j in range(i+1,n):if j<=d+i:#下⾯对应的min、max都是考虑到array[j]为负值的情况下temp_max = max(max(ii*array[j] for ii in array_max[i:j]),max(ii*array[j] for ii in array_min[i:j]))temp_min = min(min(ii*array[j] for ii in array_max[i:j]),min(ii*array[j] for ii in array_min[i:j]))else:temp_max = max(max(ii*array[j] for ii in array_max[j-d:j]),max(ii*array[j] for ii in array_min[j-d:j]))temp_min = min(min(ii*array[j] for ii in array_max[j-d:j]),min(ii*array[j] for ii in array_min[j-d:j]))_max[j]=temp_max_min[j]=temp_minarray_max=_maxarray_min=_minprint array_maxprint array_minprint max(array_max)2、题⽬描述(腾讯):腾讯⼤厦有39层,你⼿⾥有两颗⼀抹⼀眼的玻璃珠。
动态规划例题
1.某企业生产某种产品,每月月初按定货单发货,生产得产品随时入库,由于空间限制,仓库最多能够贮存产品90000件。
在上半年(1至6月)其生产成本(万元/千件)和产6个月的生产量使既能满足各月的订单需求同时生产成本最低?参考解答:(1) 首先建模描述为动态规划问题●阶段k:月份,k=1,2, (7)●状态变量x k:第k个月初(发货以前)的库存量;●决策变量d k:第k个月的生产量;●状态转移方程:x k+1=x k-R k+d k;●决策允许集合:D k(x k)={d k| d k≥0, R k+1≤x k+1≤90千件}={d k | d k≥0, R k+1≤x k-R k+d k≤ 90千件};●阶段指标:v k(x k,d k)=C k d k;●终端条件:f7(x7)=0, x7=40;(2) 计算过程:对于k = 6因为x7 =40,x6 - r6 + d6 = x7 = 40因此d6 = x7+r6-x6 = 40 +44 - x6 = 84 - x6是唯一的决策,于是递推方程为:f6(x6) = min { c6d6+f7(x7) }d6=84 - x6=2.5 d6=2.5 (84 - x6)=210 – 2.5x6注意:由于d6 =84 - x6 ≥ 0,故x6 ≤ 84;对于k = 5:d5∈D5(x5) ={d5| d5≥0, 111-x5≤d5≤(84+67)151 - x5} (x5 ≤ 90)f5(x5) = min { c5d5 + f6(x6) }= min { 2.0d5+210 – 2.5 x6 }= min { 2.0d5+210 – 2.5 (x5-67+d5) }= min { -0.5d5 - 2.5 x5 + 377.5 } d5*= 151 - x5= -0.5(151 - x5) – 2.5 x5+377.5= 302 -2.0x5对于k=4:d4∈D4(x4) = {d4| d4≥0, 99 - x4≤d4 ≤122 - x4 }f4(x4) = min { c4d4+f5(x5) }= min { 2.7d4 + 302 - 2.0x5 }= min { 2.7d4 + 302 -2.0(x4-32+d4)}= min { 0.7d4 – 2.0x4 + 366 } d4= 99 - x4 (x4 ≤ 90)= 435.3 - 2.7x4对于k=3:d3∈D3(x3) = {d3| d3≥0, 82-x3≤d3≤140 - x3 }f3(x3) = min {c3d3+f4(x4)}= min {2.3d3+435.3 – 2.7 (x3-50+d3)}= min { -0.4d3 – 2.7x3 + 570.3 } d3*=140 - x3= 514.3 - 2.3 x3对于k=2:d2∈D2(x2) = {d2| d2≥0,113 - x2≤d2≤153 - x2}f2(x2) = min { c2d2 + f3(x3) }= min {2.8d2+514.3 - 2.3 (x2-63+d2)}= min { 0.5d2 – 2.3x2 + 659.2 } d2* = 113-x2= 715.7 – 2.8x2对于k=1:d1∈D1(x1) = {d1|d1≥0,98 - x1≤d1≤125 - x1} = { d1| 58 ≤d1 ≤ 85 } f1(x1) = min {c1d1+f2(x2)}= min { 2.1d1+715.7 – 2.8 (x1-35+d1)}= min {-0.7d1 – 2.8x1+813.7} d1 = 85,x1=40= 642.2(3) 最优解:x1 = 40, d1 = 85, x2 = 90, d2 = 23, x3 = 50, d3 = 90;x4 = 90, d4 = 9, x5 = 67, d5 = 84, x6 = 84, d6 = 02.有一种设备最长使用3年时间,现考虑它在3年的更新问题,在每年年初要作出决策是继续使用还是更新。
动态规划作业完整
动态规划作业1、1、设某工厂自国外进口一部精密机器,由机器制造厂至出口港有三个港口可供选择,而进口港又有三个可供选择,进口后可经由两个城市到达目的地,其间的运输成本如图中所标的数字,试求运费最低的路线?把A看作终点,该问题可分为4个阶段。
f k(S k)表示从第K阶段点S k到终点A的最短距离。
f4(B1)=20,f4(B2)=40,f4(B3)=30f3(C1)=min[d3(C1,B1)+ f4(B1), d3(C1,B2)+ f4(B2), d3(C1,B3)+ f4(B3) ]=70,U3(C1)= B2 或B3f3(C2)=40 ,U3(C2)= B3f3(C3)=80 ,U3(C3)= B1或B2 或B3f2(D1)=80 ,U2(D1)= C1f2(D2)=70 ,U2(D2)= C2f1(E)=110 ,U1(E)= D1或D2所以可以得到以下最短路线,E→D1→C1→B2 / B3→AE→D2→C2→B3→A2、习题4-2解:1)将问题按地区分为三个阶段,三个地区的编号分别为1、2、3;2)设Sk表示为分配给第k个地区到第n个地区的销售点数,Xk表示为分配给第k个地区的销售点数,S k+1=S k-X kPk(Xk)表示为Xk个销售点分到第k个地区所得的利润值fk(Sk)表示为Sk个销售点分配给第k个地区到第n个地区的最大利润值3)递推关系式:fk(Sk)=max[ Pk(Xk)+ f k+1(S k-X k) ] k=3,2,1f4(S4)=04)从最后一个阶段开始向前逆推计算第三阶段:设将S3个销售点(S3=0,1,2,3,4)全部分配给第三个地区时,最大利润值为:f3(S3)=max[P3(X3)] 其中X3=S3=0,1,2,3,4表1第二阶段:设将S2个销售点(S2=0,1,2,3,4)分配给乙丙两个地区时,对每一个S2值,都有一种最优分配方案,使得最大盈利值为:f2(S2)=max[ P2(X2)+ f3(S2-X2) ]其中,X2=0,1,2,3,4表2第一阶段:设将S1个销售点(S1=4)分配给三个地区时,则最大利润值为:f1(S1)=max[ P1(X1)+ f2(4-X1) ]其中,X1=0,1,2,3,4表3然后按计算表格的顺序反推,可知最优分配方案有两个:最大总利润为531)由X1*=2,X2*=1,X3*=1。
动态规划训练题目
动态规划题目【引例1、上楼梯】一个含有n阶的楼梯,一次可以走1阶或2阶,从底走到顶一共有几种走法?n<=90。
【引例2、数字三角形】a1有一个数字三角形,编程求从最顶层到最底层的一条路所经过位置上数字之和的最大值。
每一步只能向左下或右下方向走。
下图数据的路应为7->3->8->7->5,和为30。
输入:文件输入(从键盘读入文件名),文件格式:第一行:R(1<=R<=10000),数字三角形共有R行;以下R行:依次表示数字三角形中每行中的数字。
每个数都是非负的,且<=100.输出:一个正整数,路径上数字之和的最大值。
输入样例:573 88 1 02 7 4 44 5 2 6 5输出样例:30【引例3、求最大连续子序列的和。
】a2输入:第一行:n(N<500)第二行:n个整数(-3000,3000)。
输出:最大连续子序列的和。
样例:输入:7-6 4 -1 3 2 -3 2输出:81、最长递增序列b1设有整数序列b1,b2,b3,…,bm,若存在i1<i2<i3<…<in,且bi1<bi2<bi3<…<bin,则称b1,b2,b3,…,bm 中有长度为n的递增序列bi1,bi2,bi3,…,bin。
求序列b1,b2,b3,…,bm中最大递增序列长度(n)。
输入:m(<1000),整数序列输出:最大长度n样例:输入:7-6 4 -1 3 8 -3 2输出:42、背包问题b2设有n种物品,每种物品有一个重量及一个价值。
同时有一个背包,最大载重量为W,今从n种物品中选取若干件,使其重量的和小于等于W,而价值的和为最大。
输入数据:第一行两个数:物品总数N(<100),背包载重量W(<100);两个数用空格分隔;第二行N个数,为N种物品重量Wi;两个数用空格分隔;第三行N个数,为N种物品价值Vi; 两个数用空格分隔;输出数据:第一行总价值;输入样例:4 103 4 5 77 15 20 25输出样例:353、迷宫寻宝b3一个n行m列的迷宫(1<=n,m<=50),入口在左上角,规定只能向下或向右走。
动态规划练习题(含答案)
动态规划练习题USACO 2.2 Subset Sums题目如下:对于从1到N的连续整集合合,能划分成两个子集合,且保证每个集合的数字和是相等的。
举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的:and {1,2}这是唯一一种分发(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分发的子集合各数字和是相等的:{1,6,7} and {2,3,4,5} {注1+6+7=2+3+4+5}{2,5,7} and {1,3,4,6}{3,4,7} and {1,2,5,6}{1,2,4,7} and {3,5,6}给出N,你的程序应该输出划分方案总数,如果不存在这样的划分方案,则输出0。
程序不能预存结果直接输出。
PROGRAM NAME: subsetINPUT FORMAT输入文件只有一行,且只有一个整数NSAMPLE INPUT (file subset.in)7OUTPUT FORMAT输出划分方案总数,如果不存在则输出0。
SAMPLE OUTPUT (file subset.out)4参考程序如下:#include <fstream>using namespace std;const unsigned int MAX_SUM = 1024;int n;unsigned long long int dyn[MAX_SUM];ifstream fin ("subset.in");ofstream fout ("subset.out");int main() {fin >> n;fin.close();int s = n*(n+1);if (s % 4) {fout << 0 << endl;fout.close ();return ;}s /= 4;int i, j;dyn [0] = 1;for (i = 1; i <= n; i++)for (j = s; j >= i; j--)dyn[j] += dyn[j-i];fout << (dyn[s]/2) << endl;fout.close();return 0;}USACO 2.3 Longest Prefix题目如下:在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。
动态规划习题
习题6-1. 考虑下面的网络图,箭头上的数字代表相连两个节点之间的距离。
(1)用动态规划找出从节点1到节点10的最短路。
(2)从节点4到节点10的最短路呢?6-2. 从北京到上海的包机的剩余装载能力为2000kg ,某一运输公司现有4种货物需要从北京运输到上海。
每种货物的单位、单位重量和单位运输费用如下表所示。
(1)用动态规划找出包机应该运输的每种货物的单位数。
(2)假设包机同意装载另一批货物,剩余装载能力降为1800kg ,计算结果会怎样变化?6-3. 假定有一个3阶段的过程,每一阶段的产量是需要做出决策的函数。
使用数学符号,问题表述如下:Max ()()()332211d r d r d r ++ s.t.1000321≤++d d d 每个阶段的决策变量和相应的返回值如下所示:6-4. 某制造公司为一家汽车工厂提供发动机的部件,以下是3个月的生产计划的数据。
量是10单位,并且生产批量是10的倍数(例如,10,20或者30单位)。
6-5. 某物流公司雇佣了8名新员工,现决定如何把他们分配到4项作业上。
公司给出了以下每项作业分配不同的作业人员的估计利润表。
(1) 用动态规划决定每项作业应该分配的新员工数目。
(2) 如果公司只雇佣了6名新员工,应该把这些员工分配给哪些作业?6-6. 一个锯木厂采购了一批20ft 长的原木,想要把这些原木切成更短的原木,然后把切后的小原木卖给制造公司。
制造公司已经订购了一批4种尺寸的原木:l 1=3ft ,l 2=7ft ,l 3=11ft ,l 4=16ft 。
锯木厂现在有2000个长度为20ft 的原木的库存,并希望有选择地裁截原木以最大化利润。
假定锯木厂的订单是无限的,唯一的问题就是确定把现有原木裁成的类型以最大化利润。
原木的利润如下表所示:任何裁截类型的长度限制如下:201173321≤++d d d 其中,i d 是长度为i l 的类型的裁截数目,4,3,2,1=i .(1)为这个问题建立动态规划模型,并使用模型解决问题。
- 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 ,从而使问题得到解决。