【Simulink】极值搜索控制 Extremum Seeking Control(无模型控制)

news2024/11/15 13:34:39

1.什么是极值搜索控制?

首先明确一下,对于y=f(x),f(a)是函数f(x)的极大值或极小值,则a为函数f(x)的极值点,极大值点与极小值点统称为极值点。

极值搜索,顾名思义,就是找到极小值点或者极大值点,过程就是不断地调整控制系统参数,使得性能指标达到最优,找到极值点。

在这里插入图片描述

Matlab官方有个15分钟左右的视频,一步步地解释了极值搜索控制的原理,并且做了仿真实验,我觉得讲得挺清晰的,非常适合入门
👉 What is Extremum Seeking Control | Learning-Based Control

The Extremum Seeking Control block tunes controller parameters to maximize an objective function. Extremum seeking controllers are model-free adaptive controllers that are useful for adapting to unknown system dynamics and unknown mappings from control parameters to an objective function. When seeking multiple parameters, the Extremum Seeking Control block uses a separate tuning loop for each parameter.
The Extremum Seeking Control block searches for optimal control parameters by modulating (perturbing) the parameters with sinusoidal signals and demodulating the resulting perturbed objective function.

通俗解释:

通俗地讲,极值搜索控制的输入其实是控制性能指标,也就是原来系统的输出,我们求解的就是系统输出达到极值时对应的极值点。对于寻找极大值的系统,如果输入和输出同时增加,表明系统正朝着极值的方向前进,则继续加大输入,反之则减小输入;对于寻找极小值的系统,如果输入和输出同时增加,表明系统正朝着极值的反方向前进,则减小输入,反之则增大输入。简而言之,寻找极大值和极小值的系统略有不同,而输入和输出的同时变化,可以用相乘然后取积分衡量。

极值搜索的优缺点

极值搜索是一种基于非模型(无模型/数据驱动)的实时优化方法,适用于解决动态问题,特别是当人们对一个系统的认识相当有限的时候。例如在实际控制系统中,由于控制系统参数的不确定性和实时变化的特点,使得参考量与输出量之间的函数关系很难被知晓。但只要特性曲线具有先增后减或者先减后增特点(即存在峰值),极值搜索控制算法就可以根据系统特性曲线的上述形状特性来到达峰值点,并使其自适应影响系统的因素变化,提高控制策略的鲁棒性。

极值搜索不仅可以应用在单变量寻优,还能应用在多变量上面。

缺点:局部最优;需要调节的参数比较多。

在这里插入图片描述

极值搜索结构:

在这里插入图片描述

整体结构不算复杂,θ是系统输入,y是系统输出,输出后面依次接的是解调环节、参数更新环节和调制环节,解调环节是和一个正弦扰动量相乘,参数更新环节主要是比例-积分,调制环节是和一个正弦扰动量相加。

在这里插入图片描述

图源:Matlab 的 Extremum Seeking Control 文档

The extremum seeking algorithm uses the following stages to tune a parameter value.

  1. Modulation — Perturb the value of the parameter being optimized using a low-amplitude sinusoidal signal.
  2. System Response — The system being optimized reacts to the parameter perturbations. This reaction causes a corresponding change in the objective function value.
  3. Demodulation — Multiply the objective function signal by a sinusoid with the same frequency as the modulation signal. This stage includes an optional high-pass filter to remove bias from the objective function signal.
  4. Parameter Update — Update the parameter value by integrating the demodulated signal. The parameter value corresponds to the state of the integrator. This stage includes an optional low-pass filter to remove high-frequency noise from the demodulated signal.

在这里插入图片描述

图源:加州大学圣地亚哥分校的Miroslav Krstic的报告《Extremum Seeking Feedback Tools for Real-TimeOptimization》

2.Simulink中的极值搜索控制

示例1:函数极大值搜索

函数表达式: y = − 5 u 2 + 50 u + 25 y = -5u^2+50u+25 y=5u2+50u+25
Simulink模型:
在这里插入图片描述

运行效果:
在这里插入图片描述

示例2:函数极小值搜索

函数表达式: y = u 2 + 2 ∗ u + 1 y = u^2+2*u+1 y=u2+2u+1
Simulink模型:
在这里插入图片描述

运行效果:
在这里插入图片描述

上面两个示例都是用了非常简单的元素,没有加低通高通滤波,收敛效果还是比较好的。

可以看到,在寻找极大值时,比例系数为正数,寻找极小值时,比例系数为负数。比例系数的绝对值越大,收敛越快。

模块

Matlab 2021b后有现成的模块 Extremum Seeking Control
文档:Extremum Seeking Control

配置好参数后,效果和自己用元件搭建之后的是一样的!

参数说明:

  1. Forcing frequency: Specify the frequency of the modulation and demodulation signals in radians per second. For a given parameter tuning loop, specify a forcing frequency that is lower than the frequencies of important system dynamics and higher than the high-pass and low-pass filter cutoff frequencies.
  2. theta — Perturbed parameters: Apply these perturbed parameters (θ) to your control system. The block uses the resulting perturbation of the objective function J to compute parameter updates.
  3. theta_hat — Estimated parameters: Use this output port to obtain the estimated parameter values (ˆθ) before they are perturbed by the modulation signal.
  4. Demodulation amplitude and Modulation amplitude: For most applications, specify Modulation amplitude ≪ Demodulation amplitude.

3.参考:

[数据驱动控制]通过三个案例搞懂极值搜索控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】什么是 Java 虚拟机 (JVM)

本文仅供学习参考! 相关教程(文章)地址: https://zhuanlan.zhihu.com/p/34426768 https://github.com/doocs/jvm Java 虚拟机 (JVM) 是 Java 编程语言的关键组件,为跨大多数主要硬件、操作系统和软件架构执行 Java 代码提供了一个独立于平台的…

在Windows上编译和调试CoreCLR

生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7 Visual studio 2015 确保C 工具已经被安装,默认是不安装的,所以要选择自定义模式,VS 2015 精简版不支持。 CMake 下载 CMake for windows,并把Cmak…

LeetCode刷题 | 518. 零钱兑换 II、377. 组合总和 Ⅳ、

518. 零钱兑换 II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 …

Python学习——集合

一、集合的定义 集合也是Python语言所提供的内置数据结构,集合与列表、字典一样都属于可变类型的序列,集合是没有value的字典,所以集合也是无序的。 二、集合的创建 方式一:使用大括号进行创建 #使用大括号创建结合 s{1,3,5,7,9}…

STM32H743 SOEM EtherCAT基于STM32H743芯片和SOEM的EtherCAT主站源码

一个基于STM32H743芯片和SOEM协议栈的EtherCAT主站源码。该源码提供了配套的CUBE工程,使用的是SOEM协议栈的1.3.1版本。此外,还可以使用NUCLEO-H743ZI开发板进行配套开发。该系统支持DC同步,并且可以与多种驱动器型号配合使用,包括…

VC++添加一般类

VC6新建一个单文档工程; 然后从菜单中选择 插入类;弹出下图对话框;选择类的类型为 Generic Class; 输入类名; 确定之后,会生成一个.h文件,一个.cpp文件;包含基本的构造和析构函数&…

Day07

目录 1、使用JsonIgnoreProperties 2、前端日期字符串转换LocalDateTime异常 1、使用JsonIgnoreProperties 在做项目时把前端的JSON对象转为dto对象时,出现了异常 Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse er…

go-cqhttp签名服务sign-server的本地搭建

新版go-cqhttp新增签名服务器签名服务器相关问题 Issue #2242 Mrs4s/go-cqhttp GitHubhttps://github.com/Mrs4s/go-cqhttp/issues/2242 其在win10系统下本地化搭建的方式为: 1.解压缩qq安装包提取lib里面的libfekit.so、libQSec.so文件并存放至一个文件夹&…

【Vue3】CustomImport 导入文件组件

1. 效果图 2. 组件完整代码 <template><div class"custom-import-warpper"><el-dialog v-model"dialogVisible" :title"dialogTitle" width"600px" :close-on-click-modal"false"><el-form label-wid…

SAP从入门到放弃系列之报废率-主数据维护-Scrap

文章目录 一、前言二、场景概述&#xff1a;三、报废的类型&#xff1a;3.1、装配报废3.2、组件报废3.3、工序报废-料废3.4、工序报废-工废 四、数据维护&#xff1a;4.1、装配报废&#xff08;Assembly scrap&#xff09;4.2、组件报废(Component scrap)4.3、工序报废-料废(Op…

windows环境使用cmake配置pcl

安装环境 cmake版本&#xff1a;cmake-3.26.3-windows-x86_64 pcl版本&#xff1a;PCL 1.13.1 vs版本&#xff1a;vs2022 配置流程 cmake编译准备&#xff1a;新建两个文件夹source和cmake_bin。source用于存放.cpp文件和CMakeLists.txt 文件&#xff1b;cmake_bin存放配置生…

【NLP】理解LSTM的内在逻辑

一、说明 在学习RNN的时候,多少有些东西可以作为实例进行原理性实践;而进入LSTM时代,短小的能说明原理的案例实验并不多,相反,对此的参考文献却海啸般地到来,让人来不及消化;本文是万篇论文之一,因其叙述的独特性,被我选入介绍给大家。 二、从循环神经网络说起 人类并…

LeetCode刷题 | 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c; 且 x < y。那么粉碎的可能结…

死信是什么,如何运用RabbitMQ的死信机制?

系列文章目录 手把手教你&#xff0c;本地RabbitMQ服务搭建&#xff08;windows&#xff09; 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 推或拉&#xff1f; RabbitMQ 消费模式该如何选择 死信是什么&#xff0c;如何运用Rabbit…

使用影刀RPA合并excel数据

合并不同sheet&#xff1a; 先获取不同sheet中的表头&#xff0c;合并所有表头并去重存作列表&#xff0c;新建excel在第一行插入该表头数据,作合并数据存放使用循环方法&#xff0c;依次获取每个sheet的数据&#xff0c;用if判断表头是否在1的列表中&#xff0c;在的话则将整…

618技术揭秘:探究竞速榜页面核心前端技术 | 京东云技术团队

前言 H5页面作为移动端Web应用的重要形式之一&#xff0c;已经成为了现代Web开发的热门话题。在H5页面的开发过程中&#xff0c;前端技术的应用至关重要。本文将探究京东竞速榜H5页面的核心前端技术&#xff0c;包括动画、样式配置化、皮肤切换、海报技术、调试技巧等方面&…

easyX库图像处理相关函数

0.图像处理相关函数与类型概览 您好&#xff0c;这里是limou3434&#xff0c;本次我将给您带来的是easyX的图像处理相关接口。 如果您感兴趣也可以看看我的其他内容。 函数或数据类型描述IMAGE保存图像的对象。loadimage读取图片文件。putimage在当前绘图设备上绘制指定图像…

10--Gradle进阶 - Gradle任务的执行

10--Gradle进阶 - Gradle任务的执行 前言 在前面的篇章中&#xff0c;我们尝试执行了 gradle 的 task&#xff0c;但是不清楚有哪些语法&#xff0c;下面来介绍一下。 任务执行 任务执行语法&#xff1a;gradle [taskName...] [--option-name...]。 分类解释常见的任务&#xf…

沉浸式三维虚拟展厅交互体验科技感十足

随着科技的不断发展进步&#xff0c;展厅的表现形式也变得多样化&#xff0c;紧跟时代发展步伐&#xff0c;迭代创新。 3D虚拟展厅具有四大优势 一、降低成本&#xff0c;提高效率 3D“VR线上展厅”将艺术优势资源转到线上搭建的艺术线上展平台&#xff0c;相对传统艺术展来说有…

ModaHub魔搭社区:详解向量数据库Milvus的Mishards:集群分片中间件(二)

目录 元数据 服务发现 元数据 元数据记录了底层数据的组织结构信息。在分布式系统中&#xff0c;Milvus 写节点是元数据唯一的生产者&#xff0c;而 Mishards 节点、Milvus 写节点和读节点都是元数据的消费者。目前版本的 Milvus 只支持 MySQL 和 SQLite 作为元数据的存储后…