动态规划中控制和预测部分的区别是

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划中控制和预测部分的区别是相关的知识,希望对你有一定的参考价值。

自适应动态规划(Adaptive/Approximate Dynamic Programming,ADP),又叫近似动态规划,是人工智能和控制领域发展而交汇形成的新兴学科。ADP方法主要包括三种基本类型:启发式动态规划(Heuristic Dynamic Programming,HDP),双启发式动态规划(Dual Heuristic Programming,DHP)和全局双启发式动态规划(Globalized Dual heuristic Programming,GDHP)。这三种类型都包含三个模块,如果每个模块都用神经网络来代替,这样我们也称这三个模块为三个网络,即评价网络(Critic Network)、模型网络(Model Network)和执行网络(Action Network)。如果我们省略了模型网络,使得执行网络直接与评价网络相连接,这样的结构称为它们的动作依赖(Action-Dependent)形式,即ADHDP,ADDHP,ADGDHP。 ADP一般包括三个部分:动态系统(dynamic system)、评价执行函数(critic performance index function) 环节、执行/控制(action/control)环节,每个环节均可由神经网络来代替。其中动态系统(或称为被控对象)对应于建立的模型,执行/控制环节用来近似最优控制策略,评价执行函数环节是基于Bellman最优性原理进行参数更新,评价网络和执行网络的组合成了一个智能体。执行/控制作用于动态系统, 评价执行函数由动态系统产生奖励或是惩罚作用来影响。执行/控制环节输出控制动作,评价执行函数的输出是基于贝尔曼最优性原理的代价函数值,即以输出代价函数值最小为目标调整执行/控制环节使其输出动作近似最优。动态预测是一种透过运动矢量来描述一张2D图片是如何转换成另外一张2D图片的程序。在视频处理时,图片指的就是邻近的画格。这些运动矢量可以想成是3D空间(2D+时域)投影到2D的结果。对一张图片而言,可以给每一个像素创建一个独特的运动矢量,也可以将邻近的像素聚集成一个区块,并只计算每一个区块的运动矢量。运动矢量的数学模型可以是单纯的平移也可以含括例如3D空间的的转动和缩放等几何运动方式来更妥当地模拟真实摄影机的动态。动态预测和光流法常常被互相混用。它同时也与图像配准和立体匹配有关。事实上上述几种词汇都是在找寻两张图片或视频画格间相对应的点。两图片或画格间相对应的点“通常”是该场景中的同一个点。然而,在作动态预测之前,我们必须定义相似性的比较标准。也就是说,我们需要一个尺度来测量两个点之间的相似程度。在相关领域的研究中,被定义了各种比较标准,像是SAD、MSE,随不同应用和优化需要常常会使用不同的比较标准。 参考技术A 自适应动态规划(Adaptive/Approximate Dynamic Programming,ADP),又叫近似动态规划,是人工智能和控制领域发展而交汇形成的新兴学科。ADP方法主要包括三种基本类型:启发式动态规划(Heuristic Dynamic Programming,HDP),双启发式动态规划(Dual Heuristic Programming,DHP)和全局双启发式动态规划(Globalized Dual heuristic Programming,GDHP)。这三种类型都包含三个模块,如果每个模块都用神经网络来代替,这样我们也称这三个模块为三个网络,即评价网络(Critic Network)、模型网络(Model Network)和执行网络(Action Network)。如果我们省略了模型网络,使得执行网络直接与评价网络相连接,这样的结构称为它们的动作依赖(Action-Dependent)形式,即ADHDP,ADDHP,ADGDHP。 ADP一般包括三个部分:动态系统(dynamic system)、评价执行函数(critic performance index function) 环节、执行/控制(action/control)环节,每个环节均可由神经网络来代替。其中动态系统(或称为被控对象)对应于建立的模型,执行/控制环节用来近似最优控制策略,评价执行函数环节是基于Bellman最优性原理进行参数更新,评价网络和执行网络的组合成了一个智能体。执行/控制作用于动态系统, 评价执行函数由动态系统产生奖励或是惩罚作用来影响。执行/控制环节输出控制动作,评价执行函数的输出是基于贝尔曼最优性原理的代价函数值,即以输出代价函数值最小为目标调整执行/控制环节使其输出动作近似最优。动态预测是一种透过运动矢量来描述一张2D图片是如何转换成另外一张2D图片的程序。在视频处理时,图片指的就是邻近的画格。这些运动矢量可以想成是3D空间(2D+时域)投影到2D的结果。对一张图片而言,可以给每一个像素创建一个独特的运动矢量,也可以将邻近的像素聚集成一个区块,并只计算每一个区块的运动矢量。运动矢量的数学模型可以是单纯的平移也可以含括例如3D空间的的转动和缩放等几何运动方式来更妥当地模拟真实摄影机的动态。
动态预测和光流法常常被互相混用。它同时也与图像配准和立体匹配有关。事实上上述几种词汇都是在找寻两张图片或视频画格间相对应的点。两图片或画格间相对应的点“通常”是该场景中的同一个点。然而,在作动态预测之前,我们必须定义相似性的比较标准。也就是说,我们需要一个尺度来测量两个点之间的相似程度。在相关领域的研究中,被定义了各种比较标准,像是SAD、MSE,随不同应用和优化需要常常会使用不同的比较标准。
参考技术B 动态规划是解决离散优化问题的算法。模型预测控制一般需要迭代求解离散优化问题。强化学习包含太广了,不好说,你觉得像的部分应该是说的时序差分。强化学习包括策略优化,甚至最优控制都能被包含进去。但是这些什么强化学习最优控制模型预测控制,本质上都是在直接或者间接的求解HJB或者bellman方程导出的Raccati方程。 参考技术C 动态规划是一种解决最优化、搜索和计数问题的通用技术,这些问题都可以被分解为多个子问题。要应用动态规划,问题就必须具备以下两个属性:

最优子结构(Optimal substructure)
重叠子问题(Overlapping subproblems)
(1)最优子结构

如果大小为n的问题的最优解可以由大小小于n的问题的同一实例的最优解推导出,则该问题具有最优子结构。

例如,如果从巴黎到莫斯科的最短路径会经过柏林,那么可以由巴黎到柏林的最短路径和柏林到莫斯科的最短路径组成。

如果一个问题可以通过组合非重叠子问题的最优解来解决,这种策略被称为分治法。这就是归并排序和快速排序不属于动态规划问题的原因。
参考技术D 预测控制等先进控制解决的只是在给定的设定值下装置的平稳操作问题,会求取一个有限步长的优化问题。然而工业过程实时优化处于预测控制的上层,说简单点是为了求出最优设定值。

动态规划-最长公共子序列

有关概念:

  最长公共子序列(LCS,Longest Common Subsequence),两个或者两个以上的所有共同子序列最长的一个(好像和没解释没什么区别)

思路:

  对于两个序列a,b

  f[i][j]表示a序列中1..i的部分和b序列中1...j的部分的LCS

  那么易得,对于f[i][j]:

  (1)如果a[i]!=b[j],则从f[i-1][j]和f[i][j-1]中挑选较大的作为前驱,继承其值;

  (2)否则,则使f[i-1][j-1]作为其前驱,继承其值并++;

  最后输出f[lena][lenb]即可……

  当然,可以在更新f[i][j]的时候附带更新数组记录其前驱的位置,以便最后输出

  (我TM都讲些什么东西)

  给出数组代码,如果是字符串的话,适当改动即可

 1 #include<cstdio>
 2 #define MAXN
 3 int lena,lenb,a[MAXN],b[MAXN],ans1,ans2[MAXN];
 4 struct node
 5 {
 6     int x,nextx,nexty;
 7 }f[MAXN][MAXN];
 8 int main()
 9 {
10     scanf("%d",&lena);
11     for(int i=1;i<=lena;++i)scanf("%d",&a[i]);
12     scanf("%d",&lenb);
13     for(int i=1;i<=lenb;++i)scanf("%d",&b[i]);
14     for(int i=1;i<=lena;++i)
15         for(int j=1;j<=lenb;++j)
16         {
17             if(a[i]==b[j])f[i][j]=(node){f[i-1][j-1].x+1,i-1,j-1};
18             else
19             {
20                 if(f[i-1][j].x>f[i][j-1].x)f[i][j]=(node){f[i-1][j].x,i-1,j};
21                 else f[i][j]=(node){f[i][j-1].x,i,j-1};
22             }
23         }
24     printf("%d\n",f[lena][lenb].x);
25     int x=lena,y=lenb;
26     while(x&&y)
27     {
28         node temp=f[x][y];
29         x=temp.nextx;y=temp.nexty;
30         if(f[x][y].x==temp.x-1)ans2[++ans1]=a[x+1];
31     }
32     for(int i=ans1;i>=1;--i)printf("%d ",ans2[i]);
33     return 0;
34 }

 

以上是关于动态规划中控制和预测部分的区别是的主要内容,如果未能解决你的问题,请参考以下文章

学科发展报告自适应动态规划

递归与动态规划

强化学习(David Silver)3:动态规划

控制与人生: 上篇-规划篇 动态规划

动态规划-最长公共子序列

动态规划基础-----01背包(总结)