基于大爆炸优化算法的PID控制器参数寻优matlab仿真

news2024/11/24 6:36:41

目录

1.课题概述

2.系统仿真结果

3.核心程序与模型

4.系统原理简介

5.完整工程文件


1.课题概述

基于大爆炸优化算法的PID控制器参数寻优matlab仿真。对比优化前后的PID控制输出。

2.系统仿真结果

3.核心程序与模型

版本:MATLAB2022a

..............................................................................
steps=range0;
it=1;
while steps>=range2
    % 输出迭代信息
    it
    % 生成新种群
    for i=1:Npop
        x(:, i)=Goodpid+2*(rand(dim, 1)-0.5).*steps;
        % 确保新个体在有效搜索范围内
        ind=find(x(:, i)<vmin);
        x(ind, i)=vmin(ind);
        ind=find(x(:, i)>vmax);
        x(ind, i)=vmax(ind);
    end
    % 计算新种群适应度
    fhd   = str2func(Fobj);
    fvals = feval(fhd, x);
     % 更新最优个体与最优性能指标
    if min(fvals)<fmin
       fmin    = min(fvals);
       ind     = find(fvals==min(fvals));
       ind     = min(ind);
       Goodpid = x(:, ind);
    end
    
    steps  = steps-steps*range3;
    Nrange = norm(steps);
    it=it+1;

    kps(it)=Goodpid(1);
    kis(it)=Goodpid(2);
    kds(it)=Goodpid(3);

end


figure;
plot(kps)
hold on
plot(kis)
hold on
plot(kds)
grid on
legend('kp','ki','kd');

% 输出并保存最优PID参数
disp('优化后');
Kp=Goodpid(1)
Ki=Goodpid(2)
Kd=Goodpid(3)
disp('优化前');
Kp0=kps(2)
Ki0=kis(2)
Kd0=kds(2)



save PID.mat Kp Ki Kd Kp0 Ki0 Kd0
51

4.系统原理简介

       大爆炸优化算法(Big Bang-Big Crunch,BB-BC)是一种受宇宙大爆炸理论启发而提出的全局优化方法。它模仿了宇宙从奇点出发经历快速膨胀(Big Bang)、收缩(Big Crunch)以及再次膨胀等过程,在搜索空间中进行迭代以期找到全局最优解。这种方法特别适用于PID控制器参数的寻优问题,通过寻优使得PID控制器性能指标(如ITAE、ISE、ISSE等)达到最优。

       在PID控制器中,其输出u(t)由比例P、积分I和微分D三个部分组成:

       u(t) = K_P * e(t) + K_I * ∫e(t)dt + K_D * de(t)/dt

       其中,K_P、K_I和K_D分别代表比例增益、积分时间常数和微分时间常数,e(t)是误差信号,即设定值与实际值之差。

        大爆炸优化算法可以在全局范围内有效地寻优PID控制器参数,从而提高控制系统的动态性能和稳定性。

5.完整工程文件

v

v

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

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

相关文章

文件API及其操作

这里介绍两类文件操作、三个文件类。包括文件系统操作&#xff08;File类&#xff09;、文件内容操作&#xff08;操作字节流、操作字符流&#xff09; 1.文件类File 1.1.认识File类 &#xff08;1&#xff09;什么是File类呢&#xff1f;其实就是可以操作文件的一个类。通过…

Hdfs小文件治理策略以及治理经验

小文件是 Hadoop 集群运维中的常见挑战&#xff0c;尤其对于大规模运行的集群来说可谓至关重要。如果处理不好&#xff0c;可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要&#xff0c;说HDFS 存储小文件…

LeetCode 139 —— 单词拆分

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 定义 d p [ i ] dp[i] dp[i] 表示 s [ 0 , i ] s[0, i] s[0,i] 是否可以被字典中出现的单词拼接&#xff0c;那么状态转移方程为&#xff1a; d p [ i ] t r u e &#xff0c;如果存在任意 j ∈ [ 0 , i − 1…

无人机+飞行汽车:低空经济新引擎,有望爆发式增长

无人机和飞行汽车作为低空经济的新引擎&#xff0c;正在引领一场全新的交通革命。随着技术的不断进步和政策的支持&#xff0c;低空经济有望成为未来经济发展的重要领域&#xff0c;实现爆发式增长。 首先&#xff0c;无人机和飞行汽车具有独特的优势和应用场景。无人机可以在…

数据结构与算法-单向环形链表与约瑟夫问题

1.简介 单向环形链表&#xff0c;闭合的形成一个环。 单向环形链表的一个应用场景是约瑟夫问题。 约瑟夫问题为&#xff1a;设编号为1&#xff0c;2&#xff0c;…&#xff0c;n的n个人围坐一圈&#xff0c;约定编号为k(1<k<n)的人从1开始报数&#xff0c;数到m的那个人…

可完成两个变量数值的交换的两种方式【swap函数定义及调用的两种方式】

既然传值调用无法完成两个变量数值的交换&#xff0c;那么可完成该任务的正确方式有以下两种&#xff1a; 方式一&#xff1a;传址调用 //方式一&#xff1a;传址调用 #include <stdio.h>void swap(int* p1, int* p2);int main() {int a 5;int b 9;int* pointer_1 &…

【iOS】pthread、NSThread

文章目录 前言一、pthread 使用方法pthread 其他相关方法 二、 NSThread创建、启动线程线程相关用法线程状态控制方法NSThread 线程安全和线程同步场景 线程的状态转换 前言 五一这两天准备将GCD相关的知识完&#xff0c;同时NSOperation与NSThread、pthread也是相关知识&…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间&#xff1a;将最新声明的参数移动到最上…

MySQL-集群1

一、为什么要用mysql集群&#xff1f;&#xff1a; mysql单体架构在企业中很少用&#xff0c;原因&#xff1a;①会形成单点故障&#xff0c;没有高可用的效果&#xff1b;②mysql本身是一个I/O能力比较差&#xff0c;并发能力比较差的应用服务&#xff0c;在较高规模的网络I/…

C#知识|将选中的账号信息展示到控制台(小示例)

哈喽,你好啊,我是雷工! 上篇学习了控件事件的统一关联, 本篇通过实例练习继续学习事件统一处理中Tag数据获取、对象的封装及泛型集合List的综合运用。 01 实现功能 在上篇的基础上实现,点击选中喜欢的账号,选中按钮底色变为蓝色,当选择完毕,点击保存选择时,将选中的…

Java InputStream实战指南:轻松读取、操作文件流

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Themis新篇章:老牌衍生品协议登陆Blast L2,探索全新经济模型

本文将深入分析 Themis 的最新经济模型&#xff0c;探讨其核心概念和机制、优势与创新之处、风险与挑战。 一、引言 随着区块链技术的不断发展&#xff0c;DeFi 衍生品项目逐渐成为市场的焦点。而用户体验的革新&#xff0c;进一步的金融创新&#xff0c;去中心化治理方案的优…

Sharding Capital: 为什么投资全链流动性基础设施 Entangle ?

写在前面&#xff1a;Entangle 项目的名称取自于量子纠缠(Quantum entanglement)&#xff0c;体现了项目对于构建连接、关联和互通的愿景。就像量子纠缠将不同的粒子联系在一起&#xff0c;Entangle 旨在通过其跨链流动性和合成衍生品的解决方案将不同的区块链网络连接在一起&a…

Redis高并发可用-主从复制,集群

Redis高并发可用 1 复制 默认情况下&#xff0c;Redis都是主节点。每个从节点只能有一个主节点&#xff0c;而主节点可以同时具有多个从节点。复制的数据流是单向的&#xff0c;只能由主节点复制到从节点。 1.1 复制的拓扑结构 一主一从&#xff1a; 主一从结构是最简单的…

Go 语言(三)【面向对象编程】

1、OOP 首先&#xff0c;Go 语言并不是面向对象的语言&#xff0c;只是可以通过一些方法来模拟面向对象。 1.1、封装 Go 语言是通过结构体&#xff08;struct&#xff09;来实现封装的。 1.2、继承 继承主要由下面这三种方式实现&#xff1a; 1.2.1、嵌套匿名字段 //Add…

ue引擎游戏开发笔记(28)——实现第三人称越肩视角

1.需求分析 实现一个第三人称越肩视角 2.操作实现 1.思路&#xff1a;建立一个弹簧臂和摄像机&#xff0c;调整两者位置达到越肩效果。 2.直接在蓝图操作&#xff1a;添加摄像机和弹簧臂&#xff1a; 3.对弹簧臂勾选使用pawn控制旋转&#xff0c;并适当调整摄像机和弹簧臂位置…

QT:输入类控件的使用

LineEdit 录入个人信息 #include "widget.h" #include "ui_widget.h" #include <QDebug> #include <QString>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 初始化输入框ui->lineEdit…

电脑崩溃了,之前备份的GHO文件怎么恢复到新硬盘?

前言 之前咱们说到用WinPE系统给电脑做一个GHO镜像备份&#xff0c;这个备份可以用于硬盘完全崩溃换盘的情况下使用。 那么这个GHO镜像文件怎么用呢&#xff1f; 咱们今天详细来讲讲&#xff01; 如果你的电脑系统硬盘崩溃了或者是坏掉了&#xff0c;那么就需要使用之前备份…

Git的基本操作和使用

git分支指令 列出所有本地分支 git branchmaster是绿的 前面有个 表示当前分支是master* 列出所有远程分支 git branch -r列出所有本地分支和远程分支 git branch -a新建一个分支&#xff0c;但依然停留在当前分支 git branch [branch-name]新建一个分支&#xff0c;并切…

Redis__三大日志

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__三大日志 ⏱️ 创作时间&#xff1a;2024年04月30日 ———————————————— 对于MySQL来说, 有…