例1 求解下列整数规划的最优解:()123123max 45634510..01,2,3,j j Z x x x x x x s t x j x =++++⎧⎪⎨=⎪⎩≤≥为整数.解 (1)建立动态规划模型:阶段变量:将给每一个变量j x 赋值看成一个阶段,划分为3个阶段,且阶段变量k=1,2,3. 设状态变量k s 表示从第k 阶段到第3阶段约束右端最大值,则10.j s = 设决策变量k x 表示第k 阶段赋给变量k x 的值(1,2,3)k =. 状态转移方程:2113223,4.s s x s s x =-=-阶段指标:111122223333(,)4,(,)5,(,)6.u s x x u s x x u s x x === 基本方程;()(){}()3113,2,1044()max ,()0.s k k k k k k k k k k x a f s u s x f s f s ++⎡⎤=⎢⎥⎢⎥⎣⎦⎧=+⎪⎨⎪=⎩≤≤ 其中1233,4, 5.a a a === (1) 用逆序法求解: 当3k =时,()(){}{}33333443330055max 6max 6,ssx x f s x f s x ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦=+=≤≤≤而{}[]30,1,2,3,4,5,6,7,8,9,10.s x ∈表示不超过x 的最大整数。
因此,当30,1,2,3,4s =时,30x =;当35,67,89s =时,3x 可取0或1;当310s =时,3x 可取0,1,2,由此确定()33.f s 现将有关数据列入表4.1中表4.1中.当时,有()(){}(){}22222332322220044max 5max 54,ssx x f s xf s xf s x ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦=+=+-≤≤≤≤而{}20,1,2,3,4,5,6,7,8,9,10s ∈。
所以当20,1,2,3s =时,20x =;当24,5,6,7s =时,201x =或;当28,9,10s =时20,1,2x =。
由此确定()22f s 。
现将有关数据列入表4.2中.当时,有()(){}(){}11111221211110033max 4max 43,ssx x f s x f s x f s x ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦=+=+-≤≤≤≤而110,s =故1x 只能取0,1,2,3,由此确定()11f s 。
现将有关数据列入表4.3中。
表 4.3 11222()13.4 4.21,x s s x *==*=1时,f 取得最大值又由查表得及33330, 4.10.2,1,0,max 13.s x x x Z ***======3再由表查得因此,最优解为 x 最优解例5 用动态规划方法解下列非线性规划问题⎩⎨⎧=≥≤++⋅⋅=3,2,1 0 max 3213221i x c x x x x x x z i 解: 解决这一类静态规划问题,需要人为地赋予时间概念,从而将该问题转化为多阶段决策过程。
按问题的变量个数划分阶段,把它看作一个三阶段决策问题,k =1,2,3 设状态变量为s 1,s 2,s 3,s 4并记s 1≤c 取问题中的变量x 1,x 2,x 3为决策变量 状态转移方程为: s 3=x 3 s 3+x 2=s 2 s 2+x 1=s 1≤c 允许决策集合为: x 3=s 30≤x 2≤s 20≤x 1≤s 1各阶段指标函数为:v 1(x 1)=x 1v 2(x 2)=x 22v 3(x 3)=x 3,各指标函数以乘积方式结合,最优指标函数f k (s k )表示从第k 阶段初始状态s k 出发到第3阶段所得到的最大值,则动态规划基本方程为:⎪⎩⎪⎨⎧==⋅=++∈1)(1,,2,3 )]()([max )(4411)(s f k s f x v s f k k k k s D x k k k k k 用逆序解法由后向前依次求解: k =3时,334433)(33)(max )]()([max )(33333s x s f x v s f s x s D x ==⋅==∈x 3*=s 3k =2时,)]([max )(max )]()([max )(2222032203322)(222222222x s x s x s f x v s f s x s x s D x -⋅=⋅=⋅=≤≤≤≤∈令h 2(s 2,x 2)=x 22(s 2-x 2) 用经典解析法求极值点:032222222=-=x s x dx dh解得:2232s x =x 2=0(舍)22222262x s dx h d -=02322222222<-==s s x dx h d 所以2232s x =是极大值点。
32222222274)32()32()(s s s s s f =-=2*232s x =k =1时,])(274[max )274(max )]()([max )(3111032102211)(111111111x s x s x s f x v s f s x s x s D x -⋅=⋅=⋅=≤≤≤≤∈令3111111)(274),(x s x x s h -⋅= 0)1()(2712)(274211131111=--+-=x s x x s dx dh 解得:1141s x =x 1=s 1(舍))2)((2724)(2724)(2712)1()(271211111112112112112s x x s x s x x s x s dx h d --=-+----=02794121112112<-==s s x dx h d 所以1141s x =是极大值点。
41311111641)41(27441)(s s s s s f =-⋅=1*141s x =由于s 1未知,所以对s 1再求极值,)641(max )(max 41011011s s f cs cs ≤≤≤≤= 显然s 1=c 时,f 1(s 1)取得最大值411641)(c s f =反向追踪得各阶段最优决策及最优值:s 1=cc s x 41411*1==411641)(c s f =c x s s 43*112=-= c s x 21322*2==33222161274)(c s s f ==c x s s 41*223=-= c s x 413*3==c s s f 41)(333==所以最优解为:4**3*2*1641,41,21,41c z c x c x c x ==== 例6 用动态规划方法解下列非线性规划问题⎩⎨⎧=≥≤++⋅⋅=3,2,1 06 max 32133221j x x x x x x x z j 解: 按变量个数将原问题分为三个阶段,阶段变量k =1,2,3;选择x k 为决策变量;状态变量s k 表示第k 阶段至第3阶段决策变量之和;取小区间长度Δ=1,小区间数目m =6/1=6,状态变量s k 的取值点为:⎩⎨⎧=≥=626,5,4,3,2,1,01s k s k 状态转移方程:s k +1=s k -x k ;允许决策集合:D k (s k )={x k |0≤x k ≤s k } k =1,2,3 x k ,s k 均在分割点上取值;阶段指标函数分别为:g 1(x 1)=x 12g 2(x 2)=x 2g 3(x 3)=x 33,最优指标函数f k (s k )表示从第k 阶段状态s k 出发到第3阶段所得到的最大值,动态规划的基本方程为:⎪⎩⎪⎨⎧==⋅=++≤≤1)(1,2,3 )]()([max )(44110s f k s f x g s f k k k k s x k k kk k =3时,333333)(max )(33s x s f s x === s 3及x 3取值点较多,计算结果以表格形式给出,见表6.1-6.3所示。
表6.1 计算结果1121123= s 2-x 2*=4-1=3,查表6.1得:x 3*=3,所以最优解为:x 1*=2,x 2*=1,x 3*=3,f 1(s 1)=108。
上面讨论的问题仅有一个约束条件。
对具有多个约束条件的问题,同样可以用动态规划方法求解,但这时是一个多维动态规划问题,解法上比较繁琐一些。
例7 某公司打算在3个不同的地区设置4个销售点,根据市场部门估计,在不同地区设置不同数量的销售点每月可得到的利润如表6.4所示。
试问在各地区如何设置销售点可使每月总利润最大。
表6.4 利润值将问题分为3个阶段,k =1,2,3;决策变量x k 表示分配给第k 个地区的销售点数;状态变量为s k 表示分配给第k 个至第3个地区的销售点总数; 状态转移方程:s k +1=s k -x k ,其中s 1=4; 允许决策集合:D k (s k )={x k |0≤x k ≤s k }阶段指标函数:g k (x k )表示x k 个销售点分配给第k 个地区所获得的利润; 最优指标函数f k (s k )表示将数量为s k 的销售点分配给第k 个至第3个地区所得到的最大利润,动态规划基本方程为:⎪⎩⎪⎨⎧==-+=+≤≤0)(1,2,3 )]()([max )(4410s f k x s f x g s f k k k k k s x k k kk数值计算如表所示。
表6.5 k=3时计算结果1231售点,第2个地区设置1个销售点,第3个地区设置1个销售点,每月可获利润47。
例9(生产—库存问题)某工厂要对一种产品制定今后四个时期的生产计划,据估计在今后四个时期内,市场对该产品的需求量分别为2,3,2,4单位,假设每批产品固定成本为3千元,若不生产为0,每单位产品成本为1千元,每个时期最大生产能力不超过6个单位,每期期末未出售产品,每单位需付存贮费0.5千元,假定第1期初和第4期末库存量均为0,问该厂如何安排生产与库存,可在满足市场需求的前提下总成本最小。
解: 以每个时期作为一个阶段,该问题分为4个阶段,k=1,2,3,4;决策变量x k表示第k阶段生产的产品数;状态变量s k 表示第k 阶段初的库存量;以d k 表示第k 阶段的需求,则状态转移方程:s k +1=s k +x k -d k ;k =4,3,2,1 由于期初及期末库存为0,所以s 1=0,s 5=0;允许决策集合D k (s k )的确定:当s k ≥d k 时,x k 可以为0,当s k <d k 时,至少应生产d k -s k ,故x k 的下限为max (0,d k -s k )每期最大生产能力为6,x k 最大不超过6,由于期末库存为0,x k 还应小于本期至4期需求之和减去本期的库存量,k kj j s d -∑=4,所以x k 的上限为min (k kj j s d -∑=4,6),故有:D k (s k )={x k | max (0,d k -s k )≤x k ≤min (k kj j s d -∑=4,6)}阶段指标函数r k (s k ,x k )表示第k 期的生产费用与存贮费用之和:⎩⎨⎧=++==6,5,4,3,2,1 5.0305.0),(k k k k k k k k x s x x s x s r 最优指标函数f k (s k )表示第k 期库存为s k 到第4期末的生产与存贮最低费用,动态规划基本方程为:⎪⎩⎪⎨⎧==+=++∈0)(1,2,3,4 )](),([min )(5511)(s f k s f x s r s f k k k k k s D x k k k k k 先求出各状态允许状态集合及允许决策集合,如表6.8所示。