内容发布更新时间 : 2025/1/11 20:19:06星期一 下面是文章的全部内容请认真阅读。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%
有状态进行预排列,并在 !!中记录状态的相对位
置;\表示本次是第几次调用,#$#表示排列的数目;
在主函数中调用。
!查找子函数 !\’#[%]& (>*$<’’)根据
辅助计算子函数在
!!中记录的位置,在某个阶段
中查找相应状态的地址;’’为待查寻的状态;在子
函数
(中调用。
\指标计算子函数 !\’#[>]& **<参数)
计算所确定决策的指标值。 ( +
+计算结果的存储方法
在实际计算过程中,对于中间的阶段性结果必
须要进行存储,也是为后续计算的基础,这是求解
动态规划问题的主要特征体现,而与存储相关的问
题也是动态规划编程实现的难点之一。在具体操
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