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

用鲸鱼优化算法(WOA)整定PID参数:Matlab与Simulink实战

鲸鱼优化算法WOA整定 PID 参数m 文件加 simulink仿真仿真程序给出适应度优化曲线参数优化曲线以及优化对比波形适用 matlab 2021b 及以上版本在自动控制领域PID控制器因其结构简单、稳定性好、工作可靠、调整方便等优点被广泛应用。然而如何精准地整定PID参数让控制器达到最优性能一直是研究的热点。今天咱们就聊聊用鲸鱼优化算法WOA来整定PID参数并且结合Matlab和Simulink完成仿真全过程。鲸鱼优化算法WOA简介鲸鱼优化算法是一种模拟座头鲸捕食行为的元启发式优化算法。座头鲸在捕食时会采用一种独特的“气泡网”策略算法就基于这个过程进行建模。鲸鱼优化算法WOA整定 PID 参数m 文件加 simulink仿真仿真程序给出适应度优化曲线参数优化曲线以及优化对比波形适用 matlab 2021b 及以上版本在WOA中搜索代理也就是潜在的解模拟鲸鱼的位置。算法的主要步骤包括包围猎物、气泡网攻击和搜索猎物。用代码简单示意一下包围猎物这个步骤Matlab代码% 包围猎物 a 2 - iter * (2 / Max_iter); % a 随迭代次数线性减少 r rand(); % 随机数 l randn(); % 随机数 p rand(); % 随机数 if p 0.5 if abs(A) 1 % 更新鲸鱼位置向猎物靠近 D abs(C * Xp - X(i, :)); X(i, :) Xp - A * D; else % 随机选择一个位置 rand_leader_index floor(rand() * SearchAgents_no) 1; X_rand X(rand_leader_index, :); D abs(C * X_rand - X(i, :)); X(i, :) X_rand - A * D; end end这里a随着迭代次数iter的增加而线性减小r、l、p都是随机数通过这些随机数和a的值来决定鲸鱼下一步是靠近当前最优解猎物位置Xp还是随机选择一个位置移动以此来探索解空间。PID参数整定与WOA结合我们的目标是利用WOA找到最优的PID参数Kp、Ki、Kd使得系统性能达到最佳。在Matlab中我们可以这样定义适应度函数来评估一组PID参数的好坏function fitness fitnessFunction(pid_params) Kp pid_params(1); Ki pid_params(2); Kd pid_params(3); % 创建PID控制器 pid pid(Kp, Ki, Kd); % 这里假设已经定义了系统模型sys % 用feedback函数构建闭环系统 sys_cl feedback(pid * sys, 1); % 进行阶跃响应仿真 [y, t] step(sys_cl); % 计算适应度这里以积分时间绝对误差ITAE为例 fitness sum(t.* abs(1 - y)); end这个适应度函数接受一组PID参数构建一个PID控制器并与系统模型组成闭环系统然后对闭环系统进行阶跃响应仿真最后根据积分时间绝对误差ITAE计算这组参数的适应度值ITAE值越小说明这组PID参数越好。Matlab m文件实现WOA整定PID参数下面是完整的用WOA整定PID参数的Matlab m文件代码框架% WOA整定PID参数主程序 clc; clear all; close all; % 定义系统模型这里假设一个简单的二阶系统 num [1]; den [1 1 0]; sys tf(num, den); % WOA参数设置 Max_iter 100; % 最大迭代次数 SearchAgents_no 30; % 鲸鱼数量 dim 3; % PID参数维度Kp, Ki, Kd lb [0 0 0]; % 下限 ub [100 100 100]; % 上限 % 初始化鲸鱼位置 X initialPosition(SearchAgents_no, dim, lb, ub); % 计算初始适应度 fitness zeros(SearchAgents_no, 1); for i 1:SearchAgents_no fitness(i) fitnessFunction(X(i, :)); end [best_fitness, best_index] min(fitness); Xp X(best_index, :); % 初始最优解 % WOA主循环 for iter 1:Max_iter % 更新a, A, C a 2 - iter * (2 / Max_iter); for i 1:SearchAgents_no r rand(); l randn(); p rand(); if p 0.5 if abs(A) 1 D abs(C * Xp - X(i, :)); X(i, :) Xp - A * D; else rand_leader_index floor(rand() * SearchAgents_no) 1; X_rand X(rand_leader_index, :); D abs(C * X_rand - X(i, :)); X(i, :) X_rand - A * D; end else % 气泡网攻击模式 D abs(Xp - X(i, :)); X(i, :) Xp cos(2 * pi * l) * D * exp(l); end % 边界检查 X(i, :) boundaryCheck(X(i, :), lb, ub); % 计算新的适应度 fitness(i) fitnessFunction(X(i, :)); if fitness(i) best_fitness best_fitness fitness(i); Xp X(i, :); end end % 记录每代最优适应度 best_fitness_record(iter) best_fitness; end这个代码首先定义了系统模型设置了WOA算法的参数初始化鲸鱼位置并计算初始适应度。然后在主循环中按照WOA的步骤更新鲸鱼位置进行边界检查并重新计算适应度记录每代的最优适应度。Simulink仿真在Matlab 2021b及以上版本中我们可以将优化得到的PID参数应用到Simulink模型中进行仿真。搭建一个简单的Simulink模型包含一个输入信号比如阶跃信号一个PID控制器模块以及系统模型模块。将Matlab中优化得到的Kp、Ki、Kd参数填入PID控制器模块。仿真结果展示适应度优化曲线通过记录每代的最优适应度我们可以绘制适应度优化曲线。在Matlab中用以下代码就可以绘制figure; plot(1:Max_iter, best_fitness_record); xlabel(迭代次数); ylabel(最优适应度); title(适应度优化曲线);这条曲线展示了随着迭代次数增加WOA算法找到的最优适应度值的变化情况直观地反映了算法的收敛过程。参数优化曲线为了观察Kp、Ki、Kd在迭代过程中的变化我们可以记录每次迭代中最优解对应的PID参数值并绘制曲线。% 假设记录了每次迭代的最优PID参数 Kp_record zeros(Max_iter, 1); Ki_record zeros(Max_iter, 1); Kd_record zeros(Max_iter, 1); for iter 1:Max_iter Kp_record(iter) Xp(1); Ki_record(iter) Xp(2); Kd_record(iter) Xp(3); end figure; subplot(3,1,1); plot(1:Max_iter, Kp_record); xlabel(迭代次数); ylabel(Kp); title(Kp优化曲线); subplot(3,1,2); plot(1:Max_iter, Ki_record); xlabel(迭代次数); ylabel(Ki); title(Ki优化曲线); subplot(3,1,3); plot(1:Max_iter, Kd_record); xlabel(迭代次数); ylabel(Kd); title(Kd优化曲线);这些曲线展示了每个PID参数是如何在WOA迭代过程中逐渐优化到最优值的。优化对比波形在Simulink仿真中我们可以将优化前和优化后的系统输出波形进行对比。通过示波器模块记录不同PID参数下系统的阶跃响应波形就能直观地看到WOA优化PID参数后系统性能的提升比如超调量减小、调节时间缩短等。通过以上步骤我们利用鲸鱼优化算法WOA完成了PID参数的整定并通过Matlab和Simulink进行了仿真验证展示了算法优化过程和系统性能提升的效果。希望这篇文章能给在自动控制领域探索的小伙伴们一些启发。

相关文章:

用鲸鱼优化算法(WOA)整定PID参数:Matlab与Simulink实战

鲸鱼优化算法(WOA)整定 PID 参数,m 文件加 simulink仿真,仿真程序给出适应度优化曲线,参数优化曲线以及优化对比波形,适用 matlab 2021b 及以上版本在自动控制领域,PID控制器因其结构简单、稳定…...

Cursor 高级技巧:@符号、Chat 模式与多文件编辑

前言 经过前两天的学习,你已经掌握了 Cursor 的基本用法,能用 CmdK 做单文件修改,用 Tab 自动补全代码。但 Cursor 真正强大的地方,在于它构建了一套以 AI 为中心的上下文感知系统——让 AI 不再是"盲写",而…...

Phi-4-mini-reasoning部署案例:科研团队构建内部逻辑验证辅助工具链

Phi-4-mini-reasoning部署案例:科研团队构建内部逻辑验证辅助工具链 1. 项目背景与模型介绍 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型,特别适合处理数学题、逻辑题、多步分析和简洁结论输出等场景。与通用聊天模型不同,它…...

ncmdump:解决网易云音乐NCM格式限制的轻量级转换方案

ncmdump:解决网易云音乐NCM格式限制的轻量级转换方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 一、音乐自由的阻碍:NCM格式的隐形枷锁 🎵 你是否经历过这样的场景:精心收藏的网…...

告别直播回放获取难题!用douyin-downloader实现高效内容管理的3个创新方法

告别直播回放获取难题!用douyin-downloader实现高效内容管理的3个创新方法 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and bro…...

XILINX DDR3 VIVADO(二)时钟配置与调试技巧

1. DDR3时钟配置基础概念 在Xilinx Vivado中使用DDR3 IP核时,时钟配置是最关键也是最容易出错的环节。我刚开始接触DDR3设计时,经常被各种时钟信号搞得晕头转向。后来才发现,只要理解清楚三个核心时钟信号,问题就解决了一大半。 首…...

Pixel Language Portal 软件测试实战:根据需求自动生成测试用例与脚本

Pixel Language Portal 软件测试实战:根据需求自动生成测试用例与脚本 1. 引言:测试自动化的新范式 在敏捷开发大行其道的今天,测试工程师们常常面临这样的困境:需求变更频繁,测试用例维护成本高;手工编写…...

从梁模型到软体手指:Abaqus仿真进阶,如何为超弹性材料模型设置Ogden参数?

从梁模型到软体手指:Abaqus仿真进阶,如何为超弹性材料模型设置Ogden参数? 在工程仿真领域,线性分析往往只是起点。当面对像软体机器人手指这样的柔性结构时,传统梁模型已无法准确描述其大变形行为。硅胶等超弹性材料的…...

RT-Thread线程管理实战技巧与常见问题解析

1. RT-Thread线程管理实战指南在嵌入式系统开发中,线程管理是RTOS(实时操作系统)最核心的功能之一。作为一名长期使用RT-Thread的开发者,我发现很多初学者在掌握了线程理论后,在实际应用中仍然会遇到各种问题。本文将深…...

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南)

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南) 在CAE仿真分析领域,网格划分质量直接影响计算结果的精度和效率。对于薄壳类塑料零件,采用结构化网格不仅能提升计算收敛性,还能显著减少单元数…...

从单核到16核:用程序员思维图解CPU参数(附性能测试代码)

从单核到16核:用程序员思维图解CPU参数(附性能测试代码) 在开发高性能应用时,CPU的选择往往直接决定了程序的执行效率。但面对琳琅满目的参数——主频、核心数、线程数、缓存大小、架构代际——开发者该如何做出明智决策&#xff…...

3个技巧:如何用开源工具彻底解决Beyond Compare授权难题

3个技巧:如何用开源工具彻底解决Beyond Compare授权难题 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当Beyond Compare 5的30天评估期结束后,用户常常会遇到"评估…...

3步解决ComfyUI-Florence2视觉语言模型加载失败:实战配置指南

3步解决ComfyUI-Florence2视觉语言模型加载失败:实战配置指南 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 当您在ComfyUI中部署Microsoft Florence2视觉语言模型…...

别再死记公式!一个Buck电路实例带你吃透‘小信号建模’到底在干什么

从Buck电路实战理解小信号建模:为什么工程师需要这个"数学翻译器"? 第一次接触小信号建模时,我和大多数电力电子初学者一样困惑——明明电路已经能用状态方程描述,为什么还要大费周章地推导那些看似复杂的传递函数&…...

3大维度解析开源下载工具:如何让网盘效率提升80%

3大维度解析开源下载工具:如何让网盘效率提升80% 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …...

PhotoMaker行业应用报告:广告、影视与游戏领域的案例分析

PhotoMaker行业应用报告:广告、影视与游戏领域的案例分析 【免费下载链接】PhotoMaker 项目地址: https://ai.gitcode.com/hf_mirrors/TencentARC/PhotoMaker PhotoMaker是一款通过堆叠ID嵌入技术实现逼真人物照片定制的AI工具,能够帮助创作者快…...

手把手教你用V4L2框架开发USB摄像头驱动(附UVC协议解析)

深入解析V4L2框架下的USB摄像头驱动开发与UVC协议实战 在嵌入式Linux开发领域,视频采集设备的驱动开发一直是工程师们需要掌握的核心技能之一。随着物联网和边缘计算的快速发展,USB摄像头在各种智能设备中的应用越来越广泛,从工业检测到智能家…...

AI Infra 架构全景介绍

AI Infra 架构全景 一、什么是 AI Infra AI Infra(AI 基础设施)是支撑大模型从开发到落地全过程的软件栈。它解决的核心问题是:如何让模型在有限的硬件资源上跑得更快、更大、更稳。 从抽象的视角看,整个 AI Infra 可以划分为三个…...

AI黑科技展示:CYBER-VISION零号协议实时视频分割效果

AI黑科技展示:CYBER-VISION零号协议实时视频分割效果 1. 未来已来:当AI视觉遇见赛博朋克 想象一下这样的场景:一位视障人士戴上智能眼镜,眼前的世界突然变得清晰可辨——人行道上的盲道被高亮标注,前方的障碍物用醒目…...

Phi-4-mini-reasoning开源镜像实操:无需conda/pip,开箱即用推理环境

Phi-4-mini-reasoning开源镜像实操:无需conda/pip,开箱即用推理环境 1. 模型简介 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员,它经过专门微…...

番茄小说下载器:如何轻松搭建你的个人离线图书馆?

番茄小说下载器:如何轻松搭建你的个人离线图书馆? 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为网络不稳定无法畅读小说而烦恼吗?番…...

PyTorch 2.8镜像实际案例:电商场景中AI生成商品短视频的端到端实现

PyTorch 2.8镜像实际案例:电商场景中AI生成商品短视频的端到端实现 1. 电商短视频生成的技术挑战 在电商运营中,商品短视频已经成为提升转化率的关键因素。传统视频制作面临三个主要痛点: 人力成本高:专业视频制作团队单条视频…...

Windows Cleaner完全指南:如何快速解决C盘爆红和系统卡顿问题

Windows Cleaner完全指南:如何快速解决C盘爆红和系统卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设…...

4个维度掌控企业驱动管理:DriverStore Explorer从诊断到优化的全流程方案

4个维度掌控企业驱动管理:DriverStore Explorer从诊断到优化的全流程方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 一、问题诊断:企业环境中的驱动管理痛点…...

告别手动刷课!智慧树网课助手让你的学习效率提升50%

告别手动刷课!智慧树网课助手让你的学习效率提升50% 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 你是否厌倦了在智慧树平台上频繁点击"下一集"…...

如何快速打造高效办公界面:Office功能区的终极定制指南

如何快速打造高效办公界面:Office功能区的终极定制指南 【免费下载链接】office-custom-ui-editor 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor Office Custom UI Editor 是一款由微软官方开源的强大工具,让您无需编写…...

XGantt:Vue3项目管理的终极可视化解决方案

XGantt:Vue3项目管理的终极可视化解决方案 【免费下载链接】gantt A powerful and flexible Gantt chart component library for developers, written in native JS Canvas. Supports TypeScript. 中文文档 项目地址: https://gitcode.com/gh_mirrors/gantt/gant…...

亚马逊AMC数据驱动时代,选对ERP才能玩转精准投放

随着亚马逊广告生态的持续升级,AMC(Amazon Marketing Cloud)作为高阶数据分析工具,正成为头部卖家精细化运营的“标配”。AMC能够整合品牌在亚马逊站内外多渠道的广告与消费者行为数据,但其核心价值在于数据的打通与应…...

千问3.5-2B多场景落地:教育答题辅助、医疗报告图解、工业设备图识别实战分享

千问3.5-2B多场景落地:教育答题辅助、医疗报告图解、工业设备图识别实战分享 1. 引言:视觉语言模型的新应用 在数字化浪潮中,视觉语言模型正悄然改变着多个行业的运作方式。千问3.5-2B作为Qwen系列的小型视觉语言模型,凭借其图片…...

Wan2.2-I2V-A14B私有部署实战教程:RTX 4090D一键生成1080P视频

Wan2.2-I2V-A14B私有部署实战教程:RTX 4090D一键生成1080P视频 1. 开篇:为什么选择私有部署 当你需要频繁生成高质量视频内容时,公有云服务往往面临三个痛点:生成排队时间长、隐私数据风险、调用成本高。Wan2.2-I2V-A14B私有部署…...