建立动态规划数学模型的步骤

§ 3 建立动态规划数学模型的步骤    

    “最优化原理”是动态规划的核心,所有动态规划问题的递推关系都是根据这个原理建立起来的,并且根据递推关系依次计算,最终可求得动态规划问题的解。

一般来说,利用动态规划求解实际问题需先建立问题的动态模型,具体步骤如下:

⒈将问题按时间或空间次序划分成若干阶段。有些问题不具有时空次序,也可以人为地引进时空次序,划分阶段。

⒉正确选择状态变量。这一步是形成动态模型的关键,状态变量是动态规划模型中最重要的参数。一般来说,状态变量应具有以下三个特性:

    ⑴要能够用来描述决策过程的演变特征。
    ⑵要满足无后效性。即如果某阶段状态已给定后,则以后过程的进展不受以前各状态的影响,也就是说,过去的历史只通过当前的状态去影响未来的发展。
    ⑶递推性。即由k阶段的状态变量及决策变量uk可以计算出k+1阶段的状态变量

⒊确定决策变量及允许决策变量集合Dk()。

⒋根据状态变量之间的递推关系,写出状态转移方程:
=T( ( ))

⒌建立指标函数。一般用()描写阶段效应,)表示k—n阶段的最优子策略函数。 

⒍建立动态规划基本方程:
 

以上是建立动态规划模型的过程,这个过程是正确求解动态规划的基础。

    在动态规划基本方程中, (), =T()都是已知函数,最优子策略)与
)之间是递推关系,要求出)及(),需要先求出),这就决定了应用动态规划基本方程求最优策略总是逆着阶段的顺序进行的。由后向前逐步计算,最终可以算出全过程的最优策略函数值及最优策略。 

    另一方面,由于k+1阶段的状态=T()是由前面的状态和决策所形成的,在计算
)时还不能具体确定的值,所以,这就要求必须就k+1阶段的各个可能状态计算
),因此动态规划方法不但能求出整个问题的最优策略和最优目标值,而且还能求出决策过程中所有可能状态的最优策略及最优目标值。
    下面就按上述步骤求解例2。
例2(带回收的资源分配问题)某厂新购某种机床125台。据估计,这种设备5年后将被其它设备所代替。此机床如在高负荷状态下工作,年损坏率为1/2,年利润为10万元;如在低负荷状态下工作,年损坏率为1/5,年利润为6万元。问应如何安排这些机床的生产负荷,才能使5年内获得的利润最大?
    解:以年为阶段,k=1,2,3,4,5, 取k年初完好的机床数为状态变量, 以k年初投入高负荷运行的机床数为决策变量,则低负荷运行机床数是-,于是状态转移方程为:

以利润为目标函数,则k年利润为:

)为k年至5年末最大总利润,则动态规划基本方程为:
以上是建立动态模型的过程,下面具体求解。

注意动态规划基本方程为:
    
     
     
     
至此已算得最大总利润2790万元,再按与计算过程相反的顺序推回去,可得最优计划如下表所示:

    
转载自:http://dec3.jlu.edu.cn/webcourse/t000048/yun/ch5_03.htm

动态规划是一种解决优化问题的有效算法策略,它通常用于求解涉及子问题重叠的问题,例如最短路径、最长公共子序列等。动态规划模型的建立一般包含以下几个步骤: 1. **定义状态**:确定问题的基本单元,并定义一个状态变量来表示每个子问题的结果。 2. **划分阶段**:将问题分解成互斥和非递减的子问题。阶段通常对应于问题的时间步骤或空间位置。 3. **定义状态转移方程**:找到从一个状态转移到另一个状态的函数关系。这通常是通过当前状态依赖于前一阶段或更早阶段的状态计算得出的。 4. **初始化边界条件**:给出初始状态的值,通常是最简单的情况,以便开始递推过程。 5. **构建表格或数组**:按照顺序或自底向上的方式填充状态表,存储每个阶段的结果。 6. **解决方案**:最终的状态往往就是我们所求解的问题的答案。如果是最大值问题,结果通常位于最后一个阶段;如果是最小值问题,结果则在第一个阶段。 7. **剪枝优化(可选)**:对于某些情况,可能存在无用的工作重复,可以通过记忆化搜索或回溯算法避免。 动态规划求解的一个通用模板可以总结为以下伪代码: ```python def dp_solution(dp_table, base_case, transition_function): # 初始化边界条件 dp_table[base_case] = initial_value # 状态转移 for i in range(1, len(dp_table)): dp_table[i] = transition_function(dp_table, i) return dp_table[-1] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值