AI与控制(二)从优化到最优控制,从动态规划到强化学习--1

这篇具有很好参考价值的文章主要介绍了AI与控制(二)从优化到最优控制,从动态规划到强化学习--1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 优化问题,尤其静态优化问题,在控制系统设计中随处可见,例如基于燃油经济性和驾驶体验的多目标优化的汽车发动机 MAP 标定,基于性能指标优化的飞行器结构设计参数优化,以实验数据与模型输出匹配为目标的电池 RC 等效电路模型标定等等,他们都是通过构建目标函数(某个值的性能最大,或者某两个值之间的差距最小),然后调用优化算法实现设计变量寻优。

当设计变量变成一个函数,而这个函数对系统指标的影响又在时间先后上取决于一个动力学约束,这时候我们可能依然可以通过离散的方式将问题变成静态优化问题,当然这类问题也可以通过最优控制理论来实现,利用庞特里亚金极小值原理,动态规划来求解。例如混动车辆的 ECMS 算法,输出电池和发动机的能量分配序列满足电池 SOC 平衡的基础上油耗最低。

随着 AI 的引入,即使我们对于系统或模型一无所知,我们又可以通过试错的方式来获得一个长期奖励较优的控制器,用于处理序列决策问题,例如自动驾驶车辆或智能机器人的控制器控制序列,也就是强化学习的思路。本文接下来通过MATLAB示例来简单介绍这些概念的思想。

优化问题

对于一个普通的静态优化问题,可以描述为求解最优变量 x 使得 f(x) 最小[1],

hamiltonian最优控制,算法,机器学习,人工智能

同时满足约束条件:

hamiltonian最优控制,算法,机器学习,人工智能

其中 x 是 n 维的设计变量向量,f(x) 是目标函数(通常是标量),和 m 维的函数向量 G(x),用于计算 x 处的等式和非等式约束。例如,求解这个示例:

目标函数

hamiltonian最优控制,算法,机器学习,人工智能

约束

hamiltonian最优控制,算法,机器学习,人工智能

这个示例是典型的包含非线性约束的平滑问题,为了迭代高效,可以在目标函数和约束函数计算时中同时给出梯度。

function [f,gf] = onehump(x)

% ONEHUMP Helper function for Tutorial for the Optimization Toolbox demo

%   Copyright 2008-2009 The MathWorks, Inc.

r = x(1)^2 + x(2)^2;

s = exp(-r);

f = x(1)*s+r/20;

gf = [(1-2*x(1)^2)*s+x(1)/10;

       -2*x(1)*x(2)*s+x(2)/10];

end

function [c,ceq,gc,gceq] = tiltellipse(x)

% TILTELLIPSE Helper function for Tutorial for the Optimization Toolbox demo

%   Copyright 2008-2009 The MathWorks, Inc.

c = x(1)*x(2)/2 + (x(1)+2)^2 + (x(2)-2)^2/2 - 2;

ceq = [];

gc = [x(2)/2+2*(x(1)+2);

       x(1)/2+x(2)-2];

gceq = [];

end

构建完目标函数和约束函数,这样就可以调用 fmincon 求解器求解这个非线性平滑约束的优化问题,

options = optimoptions(options,...

'SpecifyObjectiveGradient',true,...

 'SpecifyConstraintGradient',true);

[x,fval,exitflag,output] = fmincon(@onehump,x0,[],[],[],[],[],[], ...

                                   @tiltellipse,options);

xold = x

xold = 2x1

      - 0.9727

        0.4686

于是得到约束条件下的最优解(红色的点):

hamiltonian最优控制,算法,机器学习,人工智能

这类有约束的问题中,我们的优化变量是数值向量,我们可以通过 MATLAB 内置的求解器来求解极值点(算法参考[2]),也可以使用符号数学工具箱,利用函数的极值条件, 手动构建 Lagrange multiplier(将等式约束问题转换为无约束问题)或者KKT条件进行求解,例如,针对 Lagrange multiplier 方法,在 g(x)=0 的等式约束条件下求解 f(x) 最小,可以先构造 Lagrangian 函数:

hamiltonian最优控制,算法,机器学习,人工智能

需要满足极值条件:

hamiltonian最优控制,算法,机器学习,人工智能

我们可以用这种方法求解优化问题(1-1)(因为有不等式约束,下面的脚本添加了 s1 项变成等式约束,读者也可以尝试使用 KKT 条件进行含不等式约束问题的求解),可以得到和数值求解相同的结果。

syms x y s1 lambda

f = x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20;

g = x.*y/2+(x+2).^2+(y-2).^2/2-2+s1^2==0;

L = f + lambda*lhs(g);

dL_dx = diff(L,x)==0;

dL_dy = diff(L,y)==0;

% derivative of L with respect to lambda

dL_dlambda = diff(L,lambda) == 0;

dL_ds1=diff(L,s1) == 0;

% build the system of equations

system = [dL_dx; dL_dy; dL_dlambda;dL_ds1];

% solve the system of equations

[x_val, y_val, lambda_val, s1_val] = ...

solve(system, [x y lambda s1], 'Real', true);

% show results in a vector of data type double

results_numeric = double([x_val; y_val]) 

results_numeric = 2x1

      - 0.9727

        0.4686

变分法求泛函极值

现在如果我们的待优化变量不是数值向量,而是一个函数,例如这样一个最简变分问题,J(x) 是一个泛函,它是函数 x(t) 的函数,我们希望求解最优的函数 x*(t), 使得性能指标 J(x) 取得极小值。

hamiltonian最优控制,算法,机器学习,人工智能

其中 t1, t2 是常数,x(t) 是连续二阶可微函数, L(t,x(t),Ẋ(t)) 对其所有变量连续二阶可微。这个问题就是一个求解泛函极值的问题。类比于静态优化求解 f(x) 极值条件时,通过给 x 一个扰动 x+△x 来计算一阶导数 ▽f/▽x 让其等于零从而获得极值条件,利用相似的思路,对于自变量 x(t) 是函数的情况我们此处取任意一个可微扰动函数 η(t) 在边界 t1 和 t2 处的值为零,如果 x(t) 是极值点,有 J(x(t))≤J(x(t)+ε*η(t)) ,其中 ε*η(t) 就叫函数 x(t) 的变分,记为 δx(t),变分引起的泛函 J(x) 的变化即泛函增量:△J(x,δx)=J(x(t)+δx(t))-J(x(t)), 类比于函数增量的泰勒展开 △y=△xT▽y(x)+o(||△x||) 的函数增量可以写成 “变分” △x 的线性函数与高阶无穷小加和的形式,泛函增量 △J(x,δx) 也可以写成变分 δx 的线性泛函 δJ(x(t),δx) 与高阶无穷小加和的形式 △J(x,δx)=δJ(x(t),δx)+o(||δx||) 。J(x(t)+ε*η(t)) 可以看作 ε 的函数,记 ψ(ε)=J(x(t)+ε*η(t)), ψ(0)=J(x(t))[4] 于是有:

hamiltonian最优控制,算法,机器学习,人工智能

其中

hamiltonian最优控制,算法,机器学习,人工智能

是泛函 J(x) 对函数 x(t) 的泛函微分[3]。如果泛函  J(x) 取得极值,则有 δJ(x,δx)=0,通过展开推导以及 η(t) 的任意性,可以得到极值的必要条件:欧拉-拉格朗日方程,即

hamiltonian最优控制,算法,机器学习,人工智能

我们使用一个示例演示利用 MATLAB 求解泛函微分,从而求得极值函数。质量为 m 的质量块与弹簧常数为 k 的弹簧相连,求它的欧拉-拉格朗日方程。定义系统的动能 T,势能V,和拉格朗日量 L。拉格朗日量是动能和势能之差。

syms m k x(t)

T = 1/2*m*diff(x,t)^2;

V = 1/2*k*x^2;

L = T - V

L(t) = 

hamiltonian最优控制,算法,机器学习,人工智能

在拉格朗日力学中,系统的作用泛函等于拉格朗日函数随时间的积分,

hamiltonian最优控制,算法,机器学习,人工智能

欧拉-拉格朗日方程描述了 S[x(t)] 是平稳的系统的运动。所以求被积函数L的泛函导数并令其等于0。

eqn = functionalDerivative(L,x) == 0

eqn(t) =

hamiltonian最优控制,算法,机器学习,人工智能

eqn 是描述质量-弹簧振荡的微分方程。用dsolve求解eqn。假设质量m和弹簧常数k为正。设振荡幅度的初始条件为 x(0)=10; 初始速度为0

assume(m,'positive')

assume(k,'positive')

Dx(t) = diff(x(t),t);

xSol = dsolve(eqn,[x(0) == 10, Dx(0) == 0])

xSol =  

hamiltonian最优控制,算法,机器学习,人工智能

当然,相较于最简变分问题(2-1),实际中,我们要求解的系统通常是有约束的,例如,系统有一个动力学方程:

hamiltonian最优控制,算法,机器学习,人工智能

利用 Lagrange multiplier 方法,可以构造增广泛函

hamiltonian最优控制,算法,机器学习,人工智能

从而可以继续利用 Euler–Lagrange 方程得到含动力学约束问题取得性能极值的必要条件。

庞特里亚金极小值原理 (PMP)

基于变分法,前苏联科学家庞特里亚金证明了解决更一般最优控制问题的必要条件[4]。

最优控制问题:

对于一个动态系统,状态变量 x∈ℝn, 控制变量 u∈u, 已知系统的动力学方程

hamiltonian最优控制,算法,机器学习,人工智能

终端时刻自由或固定,终端状态自由或固定。现在需要求解最优控制函数(轨迹)u:[t0,tf]→u,使得性能指标泛函 J 取得极小值。其中 J 定义为:

hamiltonian最优控制,算法,机器学习,人工智能

其中为终端时刻性能指标,L 为瞬时指标。

PMP 证明了性能指标取得全局极小值的必要条件,系统的动力学约束方程可以通过引入时变 Lagrange multiplier 向量 λ(t),也叫协态变量, 构造生成定义在 t∈[t0,tf] 上的 Hamiltonian 函数:

hamiltonian最优控制,算法,机器学习,人工智能

极值条件:

最优控制 u*(t), 最优状态轨迹x*(t) 以及对应的协态轨迹 λ*(t),对于任意的容许控制 u(t)∈u,在任意时刻 t∈[t0,tf], 都满足

hamiltonian最优控制,算法,机器学习,人工智能

协态方程:

hamiltonian最优控制,算法,机器学习,人工智能

边界条件:

hamiltonian最优控制,算法,机器学习,人工智能

我们参考 FileExchange 资源[5]示例演示利用 PMP 求解二阶系统的终端时刻自由的问题。资源[5]引用了一个二阶系统的最优控制问题的求解。

hamiltonian最优控制,算法,机器学习,人工智能

定义性能指标

hamiltonian最优控制,算法,机器学习,人工智能

给定初始条件和终端条件

hamiltonian最优控制,算法,机器学习,人工智能

我们尝试使用 PMP 原理进行求解。

极值条件

首先构建 Hamiltonian 函数和求解极值条件得到 u(t) 的表达。

syms x1(t) x2(t) p1(t) p2(t) u tf t

% 定义动力学约束方程右侧

DFx1 = x2;

DFx2 = u;

% 计算 Hamiltonian 函数,并根据极值条件获得 u(t) 的表达

H = 0.5*u^2+p1*DFx1 + p2*DFx2;

sol_u = solve(diff(H,u)==0,u);

% 将最优 u(t) 的表达带入 DFx2

DFx2 = subs(DFx2,u,sol_u);

状态方程和协态方程

这里直接可以套用 PMP 的协态方程

% 构建 PMP 的状态方程

deqn1 = diff(x1,t)==DFx1;

deqn2 = diff(x2,t)==DFx2;

% 构建 PMP 的协态方程

deqn3 = -diff(p1,t)==diff(H,x1);

deqn4 = -diff(p2,t)==diff(H,x2);

边界条件

除了状态约束,我们通过 PMP 的边界条件可以知道,对于自由终端状态问题,还需满足

hamiltonian最优控制,算法,机器学习,人工智能

本问题因为 h≡0,而且仅是 x2(tf) 自由,因此有边界条件

hamiltonian最优控制,算法,机器学习,人工智能

% 边界条件

cond1 = x1(0)==1;

cond2 = x2(0)==2;

cond3 = x1(tf)==3;

cond4 = p2(tf)==0;

% 通过边界条件,求得状态/协态和自由时间 tf 的表达

sol = dsolve([deqn1 deqn2 deqn3 deqn4],[cond1 cond2 cond3 cond4]);

% 利用上述求得的最优表达和边界约束条件 H(x(tf),u(tf),λ(tf),tf)=0 计算得到 tf

H_new = subs(H,u,sol_u);

sol_tf = solve(subs(H_new,[p1 p2 x2 t],[sol.p1 sol.p2 sol.x2 tf])==0);

% 其中有一个解是 u=0, 我们去掉这个。

sol_tf = sol_tf(2)

x1 = subs(sol.x1,'tf',sol_tf)

x2 = subs(sol.x2,'tf',sol_tf)

p1 = subs(sol.p1,'tf',sol_tf)

p2 = subs(sol.p2,'tf',sol_tf)

u = subs(sol_u) 

hamiltonian最优控制,算法,机器学习,人工智能

除了使用符号计算进行解析求解,还可以参考资源[5]将问题作为二点边值问题(two point boundary value problem),从而使用 bvp4c[6] 进行数值求解。文中介绍了自由时间和自由终端状态问题的处理方法。

   免费分享一些我整理的人工智能学习资料给大家,整理了很久,非常全面。包括一些人工智能基础入门视频+AI常用框架实战视频、图像识别、OpenCV、NLP、YOLO、机器学习、pytorch、计算机视觉、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文等。

下面是部分截图,加我免费领取

目录

hamiltonian最优控制,算法,机器学习,人工智能

一、人工智能免费视频课程和项目

hamiltonian最优控制,算法,机器学习,人工智能

二、人工智能必读书籍

hamiltonian最优控制,算法,机器学习,人工智能

三、人工智能论文合集

hamiltonian最优控制,算法,机器学习,人工智能

四、机器学习+计算机视觉基础算法教程

hamiltonian最优控制,算法,机器学习,人工智能

最后,我想说的是,自学人工智能并不是一件难事。只要我们有一个正确的学习方法和学习态度,并且坚持不懈地学习下去,就一定能够掌握这个领域的知识和技术。让我们一起抓住机遇,迎接未来!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以点击链接领取 

二维码详情文章来源地址https://www.toymoban.com/news/detail-785828.html

到了这里,关于AI与控制(二)从优化到最优控制,从动态规划到强化学习--1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 基于动态规划的强化学习算法

    学习「强化学习」(基于这本教材,强烈推荐)时的一些总结,在此记录一下。 在马尔可夫决策过程 环境模型已知 (也就是状态转移函数P、奖励函数r已知)的情况下,我们可以通过 「动态规划」 求得马尔可夫决策过程的最优策略 (pi^*) 。 对于做过算法题目的同学而言,

    2024年03月09日
    浏览(34)
  • 基于动态规划的强化学习方法

    quad quad quad 动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如 背包问题 和 最短路径规划 。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保

    2023年04月08日
    浏览(62)
  • 【机器学习】强化学习(二)基于动态规划的算法

    值函数可以分为状态价值函数和动作价值函数,分别适用于哪些强化学习问题 二、基于动态规划的算法 2.1 策略迭代算法 示例: 代码 首先定义了一些参数,如奖励、折扣因子、最大误差等,然后初始化了一个网格世界的环境,包括状态、动作、价值函数和策略。接着,它定

    2024年01月21日
    浏览(33)
  • OM | 强化学习 + 约束规划求解组合优化问题

    组合优化在航空航天、交通规划以及经济学等众多学科领域中有广泛应用,其目标是在有限集中寻找最优解。然而状态空间过大的问题让目前组合优化变得棘手。在过去的几年中,使用深度强化学习(deep reinforcement learning,DRL)解决组合优化问题受到广泛关注。然而,现有的

    2024年02月10日
    浏览(38)
  • 强化学习的数学基础:从动态规划到深度学习

    强化学习(Reinforcement Learning, RL)是一种人工智能技术,它旨在让智能体(agent)在环境(environment)中学习如何做出最佳决策,以最大化累积奖励(cumulative reward)。强化学习的核心思想是通过在环境中与智能体与环境的交互来学习,而不是通过传统的监督学习(supervised le

    2024年02月01日
    浏览(36)
  • 深入理解强化学习——马尔可夫决策过程:动态规划方法

    分类目录:《深入理解强化学习》总目录 动态规划(Dynamic Programming,DP)适合解决满足最优子结构(Optimal Substructure)和重叠子问题(Overlapping Subproblem)两个性质的问题。最优子结构意味着,问题可以拆分成一个个的小问题,通过解决这些小问题,我们能够组合小问题的答案

    2024年02月03日
    浏览(34)
  • 强化学习中的动态规划与蒙特卡罗方法

    强化学习(Reinforcement Learning,RL)是一种机器学习方法,它通过与环境的互动来学习如何做出最佳决策。强化学习的目标是找到一种策略,使得在长期内累积最大化奖励。强化学习的一个关键特点是它需要在环境中探索和利用,以找到最佳的行为策略。 动态规划(Dynamic Programmi

    2024年02月19日
    浏览(27)
  • 深入理解强化学习——马尔可夫决策过程:马尔可夫奖励过程-[计算马尔可夫奖励过程价值的动态规划方法]

    分类目录:《深入理解强化学习》总目录 文章《深入理解强化学习——马尔可夫决策过程:马尔可夫奖励过程-[计算马尔可夫奖励过程价值的蒙特卡洛方法]》介绍了计算马尔可夫奖励过程价值的蒙特卡洛方法,同时我们也可以用动态规划的方法,一直迭代贝尔曼方程,直到价

    2024年02月05日
    浏览(31)
  • 强化学习从基础到进阶-案例与实践[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

    【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项目实现、学术应用项目实现 专栏详细介绍 :【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等、趣味项

    2024年02月15日
    浏览(112)
  • 强化学习从基础到进阶-常见问题和面试必知必答[2]:马尔科夫决策、贝尔曼方程、动态规划、策略价值迭代

    马尔可夫性质(Markov property,MP) :如果某一个过程未来的状态与过去的状态无关,只由现在的状态决定,那么其具有马尔可夫性质。换句话说,一个状态的下一个状态只取决于它的当前状态,而与它当前状态之前的状态都没有关系。 马尔可夫链(Markov chain) : 概率论和数

    2024年03月26日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包