当前位置: 首页 > news >正文

两端约束的最优控制问题及其数值解法

问题的基本形式

n n n维系统状态房产 x ˙ ( t ) = f [ x ( t ) , u ( t ) , t ] \dot{x}(t)=f[x(t),u(t),t] x˙(t)=f[x(t),u(t),t],控制向量 u ( t ) ∈ Ω u(t)\in\Omega u(t)Ω是分段连续函数, Ω ∈ R m \Omega\in R^m ΩRm是有界闭集,满足约束 g [ x ( t ) , u ( t ) , t ] ≥ 0 g[x(t),u(t),t]\ge 0 g[x(t),u(t),t]0,终端时刻固定为 t f t_f tf。目标是使状态从初态 x ( t 0 ) = x 0 x(t_0)=x_0 x(t0)=x0转移到终态 x ( t f ) x(t_f) x(tf),其中 G [ x ( t f ) , t f ] = 0 G[x(t_f),t_f]=0 G[x(tf),tf]=0,且使得性能指标 J [ u ( t ) ] = Φ [ x ( t f ) , t f ] + ∫ t 0 t f L [ x ( t ) , u ( t ) , t ] d t J[u(t)]=\Phi[x(t_f),t_f]+\int_{t_0}^{t_f}L[x(t),u(t),t]dt J[u(t)]=Φ[x(tf),tf]+t0tfL[x(t),u(t),t]dt达到最小。

基本解法

构造Hamilton函数 H [ x ( t ) , u ( t ) , λ ( t ) , t ] = L [ x ( t ) , u ( t ) , t ] + λ ( t ) T f [ x ( t ) , u ( t ) , t ] H[x(t),u(t),\lambda(t),t]=L[x(t),u(t),t]+\lambda(t)^Tf[x(t),u(t),t] H[x(t),u(t),λ(t),t]=L[x(t),u(t),t]+λ(t)Tf[x(t),u(t),t] 。设 u ∗ ( t ) u^*(t) u(t)为最优控制, x ∗ ( t ) x^*(t) x(t)是最优轨线,则存在与 u = u ∗ ( t ) u=u^*(t) u=u(t) x = x ∗ ( t ) x=x^*(t) x=x(t)对应的最优伴随向量 λ = λ ∗ ( t ) \lambda=\lambda^*(t) λ=λ(t),使得: { x ˙ = ∂ H ∂ λ λ ˙ = − ∂ H ∂ x \begin{cases} \dot{x}=\frac{\partial H}{\partial \lambda} \\ \dot{\lambda}=-\frac{\partial H}{\partial x}\\ \end{cases} {x˙=λHλ˙=xH
其中, u ∗ = arg ⁡ min ⁡ u ∈ Ω H [ x ∗ ( t ) , u ( t ) , λ ∗ ( t ) ] u^*=\arg\min_{u\in \Omega}H[x^*(t),u(t),\lambda^*(t)] u=argminuΩH[x(t),u(t),λ(t)]

上述方程同时还满足边界条件 x ( t 0 ) = x 0 , G [ x ( t f ) , t f ] = 0 x(t_0)=x_0,G[x(t_f),t_f]=0 x(t0)=x0,G[x(tf),tf]=0

横截条件 λ ( t f ) = ∂ Φ ( t f ) ∂ x + [ ∂ G ( t f ) ∂ x ] T v \lambda(t_f)=\frac{\partial \Phi(t_f)}{\partial x}+[\frac{\partial G(t_f)}{\partial x}]^Tv λ(tf)=xΦ(tf)+[xG(tf)]Tv

数值解法

直接法

在考虑控制量约束 g [ x ( t ) , u ( t ) , t ] ≥ 0 g[x(t),u(t),t]\ge 0 g[x(t),u(t),t]0和终端约束 G [ x ( t f ) , t f ] = 0 G[x(t_f),t_f]=0 G[x(tf),tf]=0存在的条件下,需要对原来的性能指标 J [ u ( t ) ] J[u(t)] J[u(t)]加罚函数项得到 J ˉ [ u ( t ) ] \bar{J}[u(t)] Jˉ[u(t)]
J ˉ [ u ( t ) ] = J [ u ( t ) ] + μ ∑ i = 1 r G i [ x ( t f ) , t f ] 2 + η ∫ t 0 t f ∑ i = 1 l min ⁡ ( g i , 0 ) 2 d t \bar{J}[u(t)]=J[u(t)]+\mu\sum_{i=1}^rG_i[x(t_f),t_f]^2+\eta\int_{t_0}^{t_f}\sum_{i=1}^l\min(g_i,0)^2dt Jˉ[u(t)]=J[u(t)]+μi=1rGi[x(tf),tf]2+ηt0tfi=1lmin(gi,0)2dt
直接法多采用梯度法及其变型进行求解,具体的计算步骤如下:

Step1. 根据经验选定初始控制 u 0 ( t ) u^0(t) u0(t),允许误差 ε > 0 \varepsilon>0 ε>0

Step2. 将 u 0 ( t ) u^0(t) u0(t)代入状态方程并求解得到 x 0 ( t ) x^0(t) x0(t)

Step3. 计算 J ˉ [ u 0 ( t ) ] \bar{J}[u^0(t)] Jˉ[u0(t)],并根据协态方程从 t f t_f tf t 0 t_0 t0反向积分计算 λ 0 ( t ) \lambda^0(t) λ0(t)

Step4. 计算 u 0 u^0 u0处的梯度 ∇ J ˉ [ u 0 ( t ) ] = ∂ H [ x 0 ( t ) , u 0 ( t ) , λ 0 ( t ) , t ] ∂ u \nabla \bar{J}[u^0(t)]=\frac{\partial H[x^0(t),u^0(t),\lambda^0(t),t]}{\partial u} Jˉ[u0(t)]=uH[x0(t),u0(t),λ0(t),t]

Step5. 确定搜索步长 α 0 = arg ⁡ min ⁡ α > 0 J ˉ [ u 0 − α ∇ J ˉ [ u 0 ( t ) ] ] \alpha^0=\arg\min_{\alpha >0} \bar{J}[u^0-\alpha\nabla \bar{J}[u^0(t)]] α0=argminα>0Jˉ[u0αJˉ[u0(t)]]

Step6. 修正控制向量 u 1 ( t ) = u 0 ( t ) − α 0 ∇ J ˉ [ u 0 ( t ) ] u^1(t)=u^0(t)-\alpha^0\nabla \bar{J}[u^0(t)] u1(t)=u0(t)α0Jˉ[u0(t)]

Step7. 若满足终止条件 ∣ ∣ ∇ J ˉ [ u 0 ( t ) ] ∣ ∣ ≤ ε ||\nabla \bar{J}[u^0(t)]||\leq \varepsilon ∣∣∇Jˉ[u0(t)]∣∣ε,则结束循环;否则,令 u 0 = u 1 u^0=u^1 u0=u1回到Step2.

Step2Step3往往是比较难计算的。

另外,若 u ( t ) u(t) u(t)满足上下界限约束,则在Step6中需要对 u ( t ) u(t) u(t)进行限幅。而针对横截条件中的 v v v可以采用 2 μ G 2\mu G 2μG估算:
λ i ( t f ) = ∂ Φ ( t f ) ∂ x i + ∑ j = 1 r 2 μ G j [ x ( t f ) , t f ] ∂ G j ( t f ) ∂ x i \lambda_i(t_f)=\frac{\partial \Phi(t_f)}{\partial x_i}+\sum_{j=1}^r2\mu G_j[x(t_f),t_f]\frac{\partial G_j(t_f)}{\partial x_i} λi(tf)=xiΦ(tf)+j=1r2μGj[x(tf),tf]xiGj(tf)

间接法

直接法中修正后的控制向量 u u u不一定满足约束 g ≥ 0 g\geq 0 g0,而是通过施加罚函数,限幅等手段进行迭代。而间接法则是尽量充分保证 u u u能满足约束 g ≥ 0 g\geq 0 g0,这里给出间接法中的拟线性化方法实现逼近。该方法的核心是首先求出 u ( x , λ , t ) u(x,\lambda,t) u(x,λ,t)带入正则方程,引入增广状态 Y ( t ) = [ x ( t ) , λ ( t ) ] T , Y ( t ) ∈ R 2 n Y(t)=[x(t),\lambda(t)]^T,Y(t)\in R^{2n} Y(t)=[x(t),λ(t)]T,Y(t)R2n,将正则方程转化为 Y ˙ = g ( Y , t ) \dot{Y}=g(Y,t) Y˙=g(Y,t),再将该方程进一步线性化得到:
Y ˙ K + 1 = ( ∂ g ∂ Y ) K Y K + 1 + [ g ( Y K , t ) − ( ∂ g ∂ Y ) K Y K ] \dot{Y}^{K+1}=(\frac{\partial g}{\partial Y})_KY^{K+1}+[g(Y^K,t)-(\frac{\partial g}{\partial Y})_KY^{K}] Y˙K+1=(Yg)KYK+1+[g(YK,t)(Yg)KYK]
其中, Y K Y^K YK代表第 K K K步迭代的解。若对于给定的 ε > 0 \varepsilon>0 ε>0,当 ∣ ∣ Y k + 1 ( t ) − Y k ( t ) ∣ ∣ ≤ ε ||Y^{k+1}(t)-Y^k(t)||\leq \varepsilon ∣∣Yk+1(t)Yk(t)∣∣ε时停止计算。

相关文章:

两端约束的最优控制问题及其数值解法

问题的基本形式 设 n n n维系统状态房产 x ˙ ( t ) f [ x ( t ) , u ( t ) , t ] \dot{x}(t)f[x(t),u(t),t] x˙(t)f[x(t),u(t),t],控制向量 u ( t ) ∈ Ω u(t)\in\Omega u(t)∈Ω是分段连续函数, Ω ∈ R m \Omega\in R^m Ω∈Rm是有界闭集&#xf…...

电磁仿真--基本操作-CST-(6)-导线周围磁场

目录 1. 简介 2. 过程 2.1 新建工程 2.2 选择求解器 2.3 设置单位 2.4 设置频率 2.5 绘制导线 2.6 Background 2.7 边界条件 2.8 设置激励源 2.9 查看结果 3. 其他设置 3.1 网格类型 3.2 集总网络元件 3.3 阻抗和导纳矩阵 3.4 自适应网格细化 3.4 提升计算效率…...

用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn

写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回(栈帧弹出线程栈)相关的指令xReturn 。 1:正文 因为invokexxx指令和普通的指令不同,会创建一个新的栈帧,并压倒操作数栈中,所以我…...

自定义枚举类型检查

/*** 工单状态,使用字典:order_item_state*/ CheckEnum(nullAble true, enumType OrderItemStateEnum.class) private String workState; 注解类 package com.gdyunst.core.tool.validation;import javax.validation.Constraint; import javax.valid…...

探索四川财谷通抖音小店:安全与信赖的购物新体验

在数字经济蓬勃发展的今天,抖音平台凭借其庞大的用户基础和强大的内容生态,逐渐成为了电商领域的一股不可忽视的力量。其中,四川财谷通抖音小店作为这一浪潮中的佼佼者,不仅以其丰富的商品种类和独特的品牌魅力吸引了众多消费者的…...

systemd-manage系统服务图形化管理工具使用教程

1. systemd-manage介绍 systemd-manage是一个开源的基于systemd服务管理的图形化工具,使用qt图形库进行开发,可以提供服务管理,用户会话,配置文件修改,日志查询,性能分析,进程管理等功能。图形…...

移除元素(LeetCode)

题目 给你一个数组 和一个值 ,你需要 原地 移除所有数值等于 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解…...

代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯

贴一下动态规划的步骤(5步),就像是之前递归一样,需要每次落实到位。 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 ​​​​​509. 斐波那契 注意到n的范…...

windows docker容器部署前端项目

一、介绍 Docker 是一个开源的平台,旨在简化应用程序的开发、部署和运行。它通过使用容器(containers)来实现这一点。容器是一种轻量级、可移植的虚拟化方式,可以在不同的环境中一致地运行软件。 Docker 的主要作用和优点包括&a…...

科普文:微服务之全文检索ElasticSearch 集群的搭建

一、集群有什么用 1.1 群集的含义与产生 群集(或称为集群)是由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。互联网应用中&#xf…...

QtObject是干什么的?

QtObject 是 Qt Quick 中的一个基类,用于创建非视觉对象。这意味着 QtObject 不渲染任何视觉内容,它主要用于定义数据和逻辑,而不是用户界面元素。你可以把 QtObject 看作是 QML 中的一个基础组件,用于创建和管理不需要显示的对象…...

锐捷RCNA | 远程登录与路由技术

锐捷RCNA | 远程登录与路由技术 一、远程登录配置1. Telnet远程登录介绍2. 案例1--设置远程登录密码实现远程登录3. 案例2--定义不同用户账户实现远程用户权限隔离4. SSH远程登录介绍5. 案例--通过SSH功能远程管理设备 二、路由技术1. 直连路由的数据通信2. 间接路由的数据通信…...

实现Vue-tiny-diff算法

前言 前面我们实现了基本的数据更新到视图渲染的逻辑,但是这种方式(innerHTML)是极其低效的, 因此,我们相应引入 dom 和 diff 算法, 数据到视图的过程变为: state -> vdom -> dom vNode 层 所谓 vNode, 就是一个表示 dom 结构的轻量对象 {tag, props, children; }为…...

正则表达式测试工具

前言 正则表达式测试工具可供您输入正则表达式和测试文本,立即查看匹配结果. 下面是离线的HTML文件,同样可以提供相同的服务. 目录 使用说明 HTML代码 正则表达式的编写经验和方法 总结 使用说明 1.先将HTML代码存储成.html为后缀的文件; 2.然后用浏览器打开这个…...

Github 2024-08-02 开源项目日报 Top9

根据Github Trendings的统计,今日(2024-08-02统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Go项目1C项目1Rust项目1Shell项目1Dockerfile项目1TypeScript项目1Dart项目1Docker-OSX: 在Docker容器中运行Mac OS X 创建周期:152…...

重生之我 学习【数据结构之顺序表(SeqList)】

⭐⭐⭐ 新老博友们,感谢各位的阅读观看 期末考试&假期调整暂时的停更了两个多月 没有写博客为大家分享优质内容 还容各位博友多多的理解 美丽的八月重生之我归来 继续为大家分享内容 你我共同加油 一起努力 ⭐⭐⭐ 数据结构将以顺序表、链表、栈区、队列、二叉树…...

前端day4-表单标签

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>day4-表单</title> </head> <body&g…...

vue3-print-nb 表格打印分页,第一页有空白的情况出现解决方法(两种:一种原生,一种基于element表格)

第一种&#xff1a;基于element表格分页 <template><!-- element分组打印 --><div class"hello"><button v-print"printContent">打印</button><div id"printDiv"><p>工资统计表</p><p>…...

搜维尔科技:借助 Xsens中的远程人体录制功能,可以在任何位置以无限量同时捕捉无限数量演员的身体动作

借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作 搜维尔科技&#xff1a;借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作...

2024/08 近期关于AI的阅读和理解[笔记]

#Cohere 就像商业能力很强的云数仓公司 Snowflake 一样&#xff0c;Cohere 也采用了按需付费模式而不是按月或按年付费&#xff0c;而且它的付费模式很精细。Cohere 按照模型的不同能力&#xff0c;包括文本生成&#xff0c;文本总结&#xff0c;重新排名&#xff0c;文本分类…...

[特殊字符] 第88课:目标和

想系统提升编程能力、查看更完整的学习路线&#xff0c;欢迎访问 AI Compass&#xff1a;https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容&#xff0c;适合想高效进阶的你。 &#x1f4d6; 第88课:目标和 模块:动态规划 | 难度:…...

资源捕获与媒体解析:猫抓插件效率革命全指南

资源捕获与媒体解析&#xff1a;猫抓插件效率革命全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代&#xff0c;我们每天…...

龙芯k - 走马观碑组MPU驱动移植孟

先回顾&#xff1a;三次握手&#xff08;建立连接&#xff09;核心流程&#xff08;实际版&#xff09; 为了让挥手流程衔接更顺畅&#xff0c;咱们先快速回顾三次握手的实际核心&#xff0c;避免上下文脱节&#xff1a; 第一步&#xff08;客户端→服务器&#xff09;&#xf…...

绵阳高新区小学晚托自习

在绵阳石桥铺&#xff0c;孩子在家写作业拖拉磨蹭、坐不住&#xff0c;手机干扰不断等问题让家长们头疼不已。而分小全AI智能学习体验中心旗下的分小全智习室&#xff0c;正是解决这些问题的专业之选。督学老师资质分小全智习室的督学老师均具备师范类或教育学专业背景&#xf…...

数据团队该醒醒了:AI智能体不是你的下一个仪表盘闹

7.1 初识三维模型 7.1.1 三维模型的数据载体 随着计算机图形技术的发展&#xff0c;我们或多或少都会见过或者听说过三维模型。笔者始终记得小时候第一次在电视上看到三维动画《变形金刚&#xff1a;超能勇士》的震撼感受&#xff1b;而现在我们已经可以在手机上玩三维游戏《王…...

Rack会话管理终极指南:从Cookie到Redis的完整实现

Rack会话管理终极指南&#xff1a;从Cookie到Redis的完整实现 【免费下载链接】rack A modular Ruby web server interface. 项目地址: https://gitcode.com/gh_mirrors/ra/rack Rack作为Ruby Web开发的核心接口&#xff0c;提供了强大而灵活的会话管理机制。本文将带您…...

南京道尔斯特机架式PDU重新定义工业级安全电源管理新范式

在数字化基建加速迭代、工业互联网深度渗透的现在&#xff0c;电力分配作为工业数字底座的关键枢纽&#xff0c;其安全性、可靠性与智能化水平​行业痛点凸显&#xff1a;传统电源方案难以适配工业高负载场景刚需​当前&#xff0c;随着GPU服务器、工业PLC、精密医疗设备等大功…...

ReadCat:重新定义数字阅读体验的现代开源阅读器

ReadCat&#xff1a;重新定义数字阅读体验的现代开源阅读器 【免费下载链接】read-cat 一款免费、开源、简洁、纯净、无广告的小说阅读器 项目地址: https://gitcode.com/gh_mirrors/re/read-cat 在信息过载的时代&#xff0c;我们需要的不仅是阅读工具&#xff0c;更是…...

深度解析TFTP与FTP:核心区别、工作原理与应用场景

深度解析TFTP与FTP&#xff1a;核心区别、工作原理与应用场景摘要一、基础定义1.1 FTP 协议1.2 TFTP 协议二、TFTP 和 FTP 核心区别&#xff08;表格对比&#xff09;三、工作原理简要说明FTP 原理TFTP 原理四、TFTP 应用场景&#xff08;最典型&#xff09;1. **网络设备配置备…...

打印机驱动怎么下载?靠谱渠道推荐,轻松解决安装难题

在日常家用、办公打印场景中&#xff0c;打印机驱动失效、安装失败、设备无法识别是最常见的问题。绝大多数用户的核心困扰&#xff0c;就是不清楚打印机驱动怎么下载&#xff0c;盲目在网络上搜索后&#xff0c;要么下载到不兼容的驱动&#xff0c;要么碰到捆绑软件、恶意程序…...