基于遗传优化模糊控制器的水箱水位控制系统simulink建模与仿真

news/2024/12/25 23:05:20/文章来源:https://www.cnblogs.com/hardware/p/18631616

1.课题概述

       基于遗传优化模糊控制器的水箱水位控制系统simulink建模与仿真。对比模糊控制器和基于遗传优化的模糊控制器。

 

2.系统仿真结果

遗传算法迭代过程:

 

 

 

遗传优化模糊控制和模糊控制的控制器输出对比:

 

 

 

3.核心程序与模型

版本:MATLAB2022a

 

matlab部分:

Areas = [];
% FIS = addvar(FIS,'input','Cost',[0.5 1.5]);
Areas = [Areas,[0.4;0.6]];
Areas = [Areas,[1.2;1.8]];%FIS = addmf(FIS,'input',1,'Cheap','trimf', [0 0.5 0.75]);
Areas = [Areas,[0.4;0.6]];
Areas = [Areas,[0.6;0.9]];%FIS = addmf(FIS,'input',1,'Expensive','trimf',[1.25 1.5 2]);
Areas = [Areas,[1.2;1.3]];
Areas = [Areas,[1.4;1.6]];
Areas = [Areas,[1.8;2.2]];%FIS = addmf(FIS,'input',1,'Medium','trapmf',[0.5 0.75 1.25 1.5]);
Areas = [Areas,[0.4;0.6]];
Areas = [Areas,[0.6;0.9]];
Areas = [Areas,[1.2;1.3]];
Areas = [Areas,[1.4;1.6]];%FIS = addvar(FIS,'input','Water level prev',[5 20]);
Areas = [Areas,[4;6]];
Areas = [Areas,[15;25]];
....................................................................FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];gen   = 0;
Js    = 0.5*rand(NIND,1);
Objv  = (Js+eps);
gen   = 0; while gen < MAXGENPe0 = 0.99;pe1 = 0.01; FitnV=ranking(Objv);    Selch=select('sus',Chrom,FitnV);    Selch=recombin('xovsp', Selch,Pe0);   Selch=mut( Selch,pe1);   phen1=bs2rv(Selch,FieldD);   for jj=1:1:NIND[gen,jj]X           = phen1(jj,:);%计算对应的目标值[FIS2]      = func_obj(X);sim("GA_opt")% Simulink模型"tops"。load y2.mat
dat = ans.Data;
len = length(dat);E           = std(dat(len/2:len,2));
JJ(jj,1)     = E;end Objvsel=(JJ);    [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   gen=gen+1; Error2(gen) = mean(JJ);
end 
Error2=smooth(Error2,4);
figure
plot(Error2,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');[V,I] = min(JJ);
X     = phen1(I,:);.............................................................................
% 将规则列表添加到FIS中。
FIS2 = addrule(FIS, ruleList);sim("GA_opt2")save y3GA.mat Error2 X
54

  

 

simulink部分:

 

4.系统原理简介

       基于遗传优化模糊控制器的水箱水位控制系统是一种将模糊控制与遗传算法相结合的智能控制策略,旨在实现水箱水位的精确控制。模糊控制利用模糊逻辑处理不精确或不确定的信息,而遗传算法则作为一种全局优化技术,用于自动调整模糊控制器的参数,提高控制性能。

 

4.1 模糊控制器原理

      模糊控制基于模糊集合理论,用于处理具有语言描述而非精确数值的控制问题。对于水箱水位控制系统,模糊控制器的主要组成部分包括:

 

输入变量:水箱当前水位(Error, e)和水位变化率(Change of Error, ce)。

输出变量:阀门开度控制信号(Control, u)。

 

 

 

4.2 遗传算法原理

       遗传算法(Genetic Algorithm, GA)是一种模拟自然选择和遗传机制的优化算法,用于搜索模糊控制器的最优参数集,如模糊规则的隶属度函数参数、权重因子等。

 

编码

首先,将模糊控制器的参数编码成染色体,例如使用二进制编码或实数编码。

 

选择(Selection)

基于适应度函数选择个体进行繁殖,适应度函数衡量个体(即一组参数)控制性能的好坏。

 

交叉(Crossover)

随机选取两个父代染色体,按一定概率交换部分基因片段,生成子代。

 

变异(Mutation)

以小概率改变染色体上的某些基因值,增加种群多样性。

 

重复

经过选择、交叉、变异等操作,生成新一代种群,直到满足停止条件(如最大迭代次数或达到预定的适应度阈值)。

 

4.3 遗传优化模糊控制器的工作流程

初始化:随机生成初始模糊控制器参数集,用于优化模糊控制器的隶属函数的参数,构成初始种群。

评估:应用这些参数至模糊控制器模型,通过仿真评估其控制水箱水位的效果,计算适应度值。

遗传操作:基于适应度值,进行选择、交叉、变异操作,生成新一代种群。

优化迭代:重复步骤2和3,直至达到预设的迭代次数或满足收敛条件。

结果应用:选择适应度最高的个体对应的参数,作为最终的模糊控制器参数设置,实现水箱水位的优化控制。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于EO平衡优化器算法的目标函数最优值求解matlab仿真

1.程序功能描述 基于EO平衡优化器算法的目标函数最优值求解matlab仿真。提供九个测试函数,分别对九个测试函数仿真输出最优解以及对应的优化收敛曲线。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行3.核心程序while j2<Niters% 主循环进行迭代% 时间衰减参数计…

蓝桥杯 第 24 场 强者挑战赛 题解上(1-3题)

原题链接 https://www.lanqiao.cn/oj-contest/senior-24/ 标记名字【算法赛】一条横幅,在1/N,2/N, 3/N(N-1)/N的地方标记一次,若之前标记过这则不用再标记,求f(N)=此时新标记的个数。上思路读懂题后,重点在于确定该题的思考方向,也就是,新标记的点分子和分母有什么特点…

python通过内存映射在父子进程间共享数据

代码:import mmap import osmm = mmap.mmap(-1, 13) mm.write(b"pid:") mm.write(str(os.getpid()).encode(utf-8))pid = os.fork()if pid == 0: #子进程,这个fork和php的很像mm.seek(0)print(mm.readline().decode(utf-8))print(id:%s % os.getpid())mm.close() …

wordpress如何使用SMTP发送邮件?

安装之后进行简单的设置,即可实现使用第三方邮箱账户发送邮件的目的。 SMTP邮件发送设置 文章来自 www.koheng.com如何使用SMTP发送邮件?

jenkins集成自定义shell脚本

在jenkins工作空间中动态生成shell脚本shell语法cat > h5build.sh <<EOFcurrent=\`date "+%Y-%m-%d %H:%M:%S"\`timeStamp=\`date -d "\$current" +%s\` currentTimeStamp=\$((timeStamp*1000+\`date "+%N"\`/1000000))echo \`cat ve…

python多进程,使用pipe进行进程间的通讯

import multiprocessing import time python多进程 pipe在多进程中,进程间的通信是一个常见的需求。管道(Pipe)提供了一种简单有效的进程间通信方式, 允许数据在进程间传递。通过使用管道,我们可以让一个进程发送数据,另一个进程接收。以下是一个使用管道在两个进程之间传…

Jenkins 无法搜索插件, 错误信息ERROR: Signature verification failed in update site

Jenkins 无法搜索插件, 错误信息ERROR: Signature verification failed in update site 参考文档 https://blog.csdn.net/weixin_43537484/article/details/120370719 /etc/sysconfig/jenkins

CentOS 7.9升级内核到4.18.0

参考:https://docs.shanhe.com/v6.1/compute/vm/best-practices/linux/kernel_upgrade/ 需求:内核版本3.10.0 ==> 4.18.0 操作步骤 1、查看当前内核版本 uname -runame -acat /etc/redhat-releaserpm -qa | grep kernel # 查看系统中全部的内核2、升级内核 a、更新yu…

wordpress固定链接设置

通过上面的测试发现,切换不同链接结构,同一张网页但是网址却发生了改变。 为什么要改变网址的结构? 主要原因,是为了搜索引擎优化。搜索引擎不喜欢带有问号的网址,也不喜欢层级特别深的网址。所以,WordPress允许你去设置网址的结构,让网址更符合搜索引擎的要求(官方说法…

【安全工具】蚁剑二开:添加自定义编码/解码器

以下文章来源于Spade sec ,作者0xsdeo 前言 我大概已经写了两三个月关于JS逆向的文章,正好前两天抽空研究了一下关于蚁剑如何添加编码/解码器,所以年底这几天就分享一些关于安全的内容,应该也是我放假前的最后两篇文章。 注:本人目前没有看过任何关于蚁剑二开文章,以下内…

【项目推荐】搭建自己的个人主页

你是否想过将自己的简历做成一个单页面的网站?在这个网站上可以自定义你想展示的内容,不只求职信息,求偶信息也可以!试试下面的代码吧。 本文首发于微信公众号 呼哧好大枫,原作者与本文作者系同一人。项目地址:http://hlt.cab/ 代码开源地址:中文:https://gitee.com/kk…

vue3 vite使用postcss-px-to-viewport 实现页面自适应

三、如何在 Vue3 中使用 postcss-px-to-viewport? 首先,我们需要安装相关的插件: npm install postcss-px-to-viewport -D 在vite.config.js文件中进行配置 import vue from @vitejs/plugin-vue // vite.config.ts import { defineConfig } from vite import AutoImport fro…