动态规划基础概念

这篇具有很好参考价值的文章主要介绍了动态规划基础概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

动态规划是将一个问题划分为多个子步骤(或称之为阶段stage)。

其中有几个关键量:

  1. 阶段k。动态规划第一步就是如何划分阶段。
  2. 状态变量xk。描述系统当前阶段的状态。状态变量可以理解为用于决策的已知条件。
  3. 决策变量uk。决策者在当前阶段做出的决策。 不同决策会组成一个完整的决策链,被称为策略。
  4. 状态转移方程。从当前状态变量xk,做出决策以后,会得到下一状态变量x_k+1。 xk与x_k+1之间的关系就是状态转移方程。它就是个递推关系式。

动态规划的基本概念,# 算法与数据结构,动态规划,算法

动态规划的基本概念,# 算法与数据结构,动态规划,算法

动态规划的基本概念,# 算法与数据结构,动态规划,算法
动态规划的基本概念,# 算法与数据结构,动态规划,算法
动态规划的基本概念,# 算法与数据结构,动态规划,算法
动态规划的基本概念,# 算法与数据结构,动态规划,算法
动态规划的基本概念,# 算法与数据结构,动态规划,算法
动态规划的基本概念,# 算法与数据结构,动态规划,算法

例子

动态规划的基本概念,# 算法与数据结构,动态规划,算法
首先划分阶段:这个问题的阶段划分比较简单,显然每个月就是一个阶段。k表示第k月。

其次设定状态变量xk:设xk为第k个月初的库存量。状态变量是用来描述做决策的时候系统的状态的。这里最能描述系统当前状态的一个指标就是库存量。它会随着决策而变化。

然后设定决策量uk:问题是如何安排每个月的生产与库存。所以我们能够控制的就是生产量。因此决策变量uk为每个月的生产量。

最后是状态转移方程。即xk与x k+1之间的递推关系。

下个月的库存是这个月库存减去这个月需求,再加上这个月的生产量。我们设这个月需求为Nk,Nk是已知条件,如表中所示。

x k + 1 = x k − N k + u k x_{k+1} = x_k - N_k + u_k xk+1=xkNk+uk

显然,状态变量xk和决策变量都受题目中的条件的制约。

  1. 第1个月初和第4月末都要没有库存。

    x 1 = 0 x 5 = 0 x_1=0\\ x_5=0 x1=0x5=0

  2. 最大生产能力不超过6。显然也不会是负数。
    0 ≤ u k ≤ 6 0\le u_k \le 6 0uk6

  3. 必须要让这个月满足需求。也就是说,这个月初库存加本月生产量,必须要大于需求量。
    x k + u k ≥ N k x_k + u_k \ge N_k xk+ukNk

我们想要把第三个式子解耦。因为它里面有两个未知量xk和uk。我们希望分别得到xk和uk的限制条件。于是结合条件1和条件2。

先确定xk的取值范围:
要保证x1=x5=0,必须同时考虑每月的需求量。
每个月初最少库存多少呢?0
每个月初最多库存多少呢?一个是每个月都按照最大生产能力来生产。当然要减去每月需求消耗。另外一个是未来总需求量,因为要保证最终库存为0。

0 ≤ x k ≤ m i n ( 6 ( k − 1 ) − Σ i = 1 k − 1 N i , Σ i = k 4 N i ) 0 \le x_k \le min ( 6(k-1) - \Sigma_{i=1}^{k-1}N_i, \Sigma_{i=k}^{4}N_i ) 0xkmin(6(k1)Σi=1k1Ni,Σi=k4Ni)文章来源地址https://www.toymoban.com/news/detail-535360.html

到了这里,关于动态规划基础概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构与算法】一、数据结构的基本概念

    抽象数据类型(ADT)定义举例:Circle的定义 如何处理杂乱无章且多样化的数据: 数据元素 :数据中的个体被称为数据元素。 数据对象 :性质相同的数据元素组成的集合。 数据结构 :数据元素加上数据元素之间的关系,就形成了数据结构。 逻辑结构 :数据结构的逻辑模型。

    2023年04月17日
    浏览(85)
  • python算法与数据结构---动态规划

    记不住过去的人,注定要重蹈覆辙。 对于一个模型为n的问题,将其分解为k个规模较小的子问题(阶段),按顺序求解子问题,前一子问题的解,为后一子问题提供有用的信息。在求解任一子问题时,通过决策求得局部最优解,依次解决各子问题。最后通过简单的判断,得到

    2024年02月20日
    浏览(40)
  • 数据结构与算法之贪心&动态规划

            一:思考         1.某天早上公司领导找你解决一个问题,明天公司有N个同等级的会议需要使用同一个会议室,现在给你这个N个会议的开始和结束 时间,你怎么样安排才能使会议室最大利用?即安排最多场次的会议?电影的话 那肯定是最多加票价最高的,入场

    2024年02月09日
    浏览(39)
  • 数据结构与算法 | 动态规划算法(Dynamic Programming)

    上一篇文末已经提到了记忆化搜索是动态规划(Dynamic Programming)的一种形式,是一种自顶向下(Top-Down)的思考方式,通常采用递归的编码形式;既然动态规划有自顶向下(Top-Down)的递归形式,自然想到对应的另外一种思考方式 自底向上( Bottom-Up ) ,也就是本篇要写的内

    2024年02月05日
    浏览(35)
  • 【全面突击数据结构与算法001】绪论篇,数据结构的基本概念

    👑 作 者 主 页 :👉CSDN丨博客园 🏆 学 习 交 流 :👉在下周周ovoの社区 💎全 面 突 击 数 据 结 构 与 算 法 系 列 专 栏: 👉 数据结构与算法专栏 PS:本篇文章主要综合了【王道数据结构与算法】与我的个人笔记与理解,如果文章有任何错误欢迎各位大佬的指出 快期末考

    2024年02月07日
    浏览(36)
  • Java数据结构与算法----动态规划(背包篇)

    1.1.算法思路 0/1背包是动态规划、背包问题中最经典的问题啦!它主要的问题是: 给定n种物品、这n种物品的重量分别是,价值分别是 ,而你有一个容量为C的背包,请问如何求出所能拿的最大价值呢? 对于动态规划,我们先需要找到一条推导公式,然后确定边界: 我们设

    2024年02月07日
    浏览(42)
  • 数据结构与算法:动态规划(Dynamic Programming)详解

    动态规划(Dynamic Programming,简称DP) 是一种在数学、管理科学、计算机科学、经济学和生物信息学等领域中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划经常被用于求解优化问题。 动态规划的核心思想是将复杂问题分解为更小的子问

    2024年04月25日
    浏览(40)
  • 1绪论_1.1数据结构的基本概念+1.2算法和算法评价

    数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。 数据 由 数据对象 和 数据关系 组成(应试)⚡ 数据元素 数据元素是数据的 基本单位 ,通常作为一个整体进行考虑

    2024年02月07日
    浏览(29)
  • 【C语言】数据结构的基本概念与评价算法的指标

    1.1 基本概念和术语 1.1.1 数据 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料 1.1.2 数据元素 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,一个数据元素

    2024年02月09日
    浏览(27)
  • 【数据结构与算法】Kadane‘s算法(动态规划、最大子数组和)

    Kadane\\\'s 算法是一种用于解决最大子数组和问题的动态规划算法。这类问题的目标是在给定整数数组中找到一个连续的子数组,使其元素之和最大(数组含有负数)。 算法的核心思想是通过迭代数组的每个元素,维护两个变量来跟踪局部最优解和全局最优解。 以下是Kadane’s算

    2024年03月22日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包