动态计划求解方法的Matlab实现及应用[] 下载本文

内容发布更新时间 : 2024/5/8 15:09:09星期一 下面是文章的全部内容请认真阅读。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%

有状态进行预排列,并在 !!中记录状态的相对位

置;\表示本次是第几次调用,#$#表示排列的数目;

在主函数中调用。

!查找子函数 !\’#[%]& (>*$<’’)根据

辅助计算子函数在

!!中记录的位置,在某个阶段

中查找相应状态的地址;’’为待查寻的状态;在子

函数

(中调用。

\指标计算子函数 !\’#[>]& **<参数)

计算所确定决策的指标值。 ( +

+计算结果的存储方法

在实际计算过程中,对于中间的阶段性结果必

须要进行存储,也是为后续计算的基础,这是求解

动态规划问题的主要特征体现,而与存储相关的问

题也是动态规划编程实现的难点之一。在具体操

11 / 24

作中,将每个阶段的最优值的计算结果都要保存下

来,在计算结束后就可以得到一族最优决策,通过

比较各策略的优劣,从而可以得到问题的全局最优

决策。同时,因为存储量很大,在计算过程中要注

意内存变量的替换,以节省内存空间。具体做法可

有两种:一是将所有决策结果综合比较后得到最优

解,然后直接一次性存储;二是对每一次的计算结

果都与上次存储的结果进行比较,再择优存储。由

于在许多实际问题中,各阶段的状态往往是通过状

态转移关系确定的,是不可预知的,所以,该状态下

的所有决策也就不能提前预知。因此,只能采用第

二种方法实现。方法如下:

#将需要存储的数据置为全局变量,每个阶段

对应一个数组,每个状态对应该数组中的一个元

素,并赋初值为零;

$当得到某个允许决策时,确定其对应的状

态,寻找相应的存储空间;

%计算该决策的指标函数值,并与原来的存储

结果比较,然后择优存储。

值得说明的是,在一些复杂的问题中,在允许 状态集合中寻求相应的状态和对应的决策是一个 难点。如果对于某个阶段的允许状态集合的元素

12 / 24

<即状态)很多,如何快速找到相应的状态及存储空 间?一般不能采用循环搜索的方法,因为它的耗时 是不可忍受的。这在实际计算中是非常重要的,应 该具体问题采取具体的方法。另外,计算结果的存 储必须包括指标值的存储和决策变量的存储,因

此,还需要定义一个用于存储最优决策全局变量,

而且两个全局变量的读、写也必须是同步的。

+求解方法的实践与应用 ++

,最佳组队问题[,]

在文献[,]“确定最佳组队问

中的第 +个问题:

题,即要求给出 ,-名队员组成 .个队的组队方案,

使整体竞赛水平最高,并给出每个队的竞赛水平”。

文献[,]建立了最佳组队的动态规划模型,其 模型的基本方程以逆序形式给出,即

<)& %/!{0< ,)0 !<

)},,

&2,3,+,(,

!,-,,-,1,, 0,-, 1,,

,(.> ! /,

13 / 24

{

!<)& 0. < 2,

-)队的技术水平指标)

.-.&4+

42.+(3.<3, 其中决策变量为 1, &<

.,4,5) ,

,即任取 +名队员 <

.,4,5)所组成的一个组队方案;状态变量为 -,

即从第 ,个到第

2个组队的组队方案所包含的队(,> 员,-,&{6,7,8,.,9};状态转移方程为 -, 0, & -, 1 1,

;允许决策集合为 /, &{<

.,4,5);.,4,5! ,< ., 5) :}(, 3,;

-,0,4, \,

14 / 24

&,, +,

2)指标函数为 0<

-,1)表示决策

1<一个组队)关于状态 -的

,,,,,

技术水平指标;最优值函数 !<

-)表示在状态 ,,,

下确定的

,个组队的技术水平指标之和 <,$ ,$2)

的最大值。

该问题是一个较为复杂的动态规划模型,其状 态数目较多,每个阶段的决策由 +个变量构成,而

且各阶段的状态不可预知。决策过程分为 2个阶

段,即分步给出

2个队的组队方案,在除了一个最

[,]

佳组队的 +名队员<

2,3,-)外的 ,2名队员中组 成

2个队,每一阶段确定一个队。第一阶段有 5+

15 / 24