人工智能学习——模糊控制

这篇具有很好参考价值的文章主要介绍了人工智能学习——模糊控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

模糊控制


前言

鉴于个人学习方向并不在此,所以此文章仅作为个人学习笔记使用,主要介绍理论以及学习过程,仅供参考!


一、模糊控制是什么?与神经网络的区别?

为什么要有模糊控制、为什么要用神经网络、为什么还要将两者结合,还有那么多不同的结合方法等等问题的关键。两个理解模糊神经网络的重要前提:

(1)模糊控制的基本思想是利用计算机来实现人的控制经验[;
(2)人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型;

在历史的发展中,人类始终以自己为中心来建立世界的模型。数学的哲学本质也可以理解为人们对客观世界建立的主观模型,数学和哲学这两个东西是真的好,因为这是从另一种角度去阅读自然。模糊控制的诞生始于对客观世界复杂性和不确定性,当人们尝试探索一些物理过程内部的精确机理时,会发现有很多问题,“当一个系统复杂性增大时,人们能使它精确化的能力会降低,当达到一定阈值时,复杂性与精确性相互排斥”。这就意味着人无法完全掌握一些十分复杂的系统,实际上在实际应用中,也并不需要掌握,因为那些生产线上的工人不知道系统内部机理,他们控制系统的效果依然很好。这就是模糊控制,利用人的经验而不是系统内部原理来实现复杂系统控制。“人”或者“人脑”才是这个自然最完美的控制器,因此模拟人脑的过程就是人们为了实现完美控制的重要途经。


二、模糊控制原理

模糊控制是一种最简单的人脑模拟器

1.模糊化

import numpy as np
import pandas as pd

人在处理外部信息的时候,并没有量化数据这个概念,而是根据自己的经验来判断。比如,你现在的位置与帝都的距离。你可能觉得很远,因为你在魔都。但是如果你自己在河北、天津,你就觉得不是很远。而你在5环,你依旧觉得你依然离帝都很远。这个“很远”,“不是很远”其实就是模糊化,因为人的“传感器”不能给你一个完全精确的距离,但你也不必关心,你关心的是这个距离你打车大概花多少钱,比如便宜、还行、贵,也是模糊化的概念。这里其实输入就是距离这个模糊概念,输出就是花的钱这个模糊化后的概念。这些概念人是可以理解的,但是电脑可不行,要想实现自动化的控制,就需要把这些概念通过一些转换,映射到电脑里面去做计算。隶属度函数、模糊集合、模糊运算…其实这些总结为一句话就是如果把这些东西放到电脑里该怎么计算

官方定义:
(1)论域:由被考虑对象的所有元素的全体组成的基本集合,对应“全集”这个概念;
(2)模糊子集:设论域 E ,E 到闭区间 [0,1] 的任一映射 ,它确定了 E 的一个模糊子集,简称模糊集。

有了模糊子集的定义后就可以进入正题了 —— 隶属度函数。隶属度函数是模糊控制中的最重要的概念之一,它是由清晰输入到模糊输入的转变,是精确值到模糊语言的转化,也是模糊控制的第一步但是隶属度函数的设计上有很多要求,比如要符合客观规律,不能是主观臆想,还要能反映出客观模糊现象的具体特征。实际上,模糊隶属度函数的确定取决于设计控制系统的人,灵活性很大。灵活性大是好事,但也是坏事。隶属度函数的确定已经可以初窥人们对控制器的追求。灵活性通常意味着人们可以自己随便设定隶属度函数,而实际的应用中,很明显不是所有人都能设计初适应性特别好、精度特别高的隶属度函数。所以大家就都用那些设计好的隶属度函数,可以理解为专家设计的

模糊隶属度函数的确定方法:

(1)模糊统计法
(2)二元对比排序法
(3)专家经验法

前面说灵活性,其实为了控制系统的性能着想,就要优化设计过程中的每一步,专家经验给定的就是比较准确的隶属度函数。总之不知道的时候就听专家的吧。其实,采用专家经验也是很多文献中采用的优化办法。

(4)演绎推理法
(5)角模糊集法
(6)神经网络法

神经网络也可以理解为是一种专家经验,通过试验数据或理论数据对一个网络进行训练,节省了训练“专家”的时间,并且降低了主观臆测的风险,因为神经网络是完全凭借数据说话的。你会发现在很多场合中,尤其是奥运会的评分项目中,人们都倾向于将评分尽量打的客观,避免“黑哨”,所以才有这个领域的专家,那么一旦神经网络模型完美模拟了人,那这些专家可真要喝西北风了。

(7)遗传算法
(8)归纳推理
(9)借助常见模糊分布函数 (最常用)

这里就不用说了,三角型、高斯型隶属度函数。

模糊化得到的结果通常可以表示成语言变量,但是在计算机中则表现为一个具体的数值—隶属度。接下来就需要对这些隶属度做进一步处理——设计规则


2.模糊规则

模糊规则的设计实际上也十分灵活,取决于你的被控系统特性。比如要控制一个点的温度为50℃恒温。当它为40℃的时候你觉得可能是“偏低”,而我觉得“很低”,专家觉得“这样就行”,在误差范围内。那么结果就是你的行动是“稍微加热一下”,我的行动就是“全力加热”,专家直接“睡大觉”去了。这些行动其实就是规则,规则通常表现为查找表的形式,就是你让计算机去按照你设定的规则表去行动,如下表所示:
模糊控制,matlab,人工智能,神经网络,学习
模糊控制最常采用的输入是实际输出与期望输出的误差(error)和误差变化率(error rate)两个量。这里需要做以下说明:

假设模糊控制全部采用误差与误差变化率的7 * 7规则表作为控制规则,那么当系统为单输入单输出(SISO)情况下,有7 * 7 * 1 * 1个规则,其中这个1为单输入,第二个1为单输出。当系统为1输入2输出的情况下,可以推理,每个输出应对应一个规则表,则两个输出有7 * 7 * 1 * 2个规则。这里输入为1的原因是评价系统的参数为单一参数,即如果你控制一个系统的温度,那么就根据这个温度的误差和误差变化率来设计对应的输出条件。则对于多输入的情况下 7 * 7 * N * M个规则,我上一篇写了模糊控制静态特性中提到了模糊规则的设计,这对人工设计来说,工作量实在太大。这里我们就只说SISO系统的模糊控制。


3.模糊推理

模糊推理是模糊规则运算的过程。对于一个模糊系统或者一个模糊过程,人们通常只能近似地进行推理,以得出一个近似的结果,这种推理方式也叫做似然推理。不过在模糊控制系统中已经发展出了一些比较固定的推理方法。

(1)Zadeh 推理

Zadeh 几乎发展出来了一套系统化的模糊控制理论,当然也包括模糊推理的理论化过程。

蕴含算子:
模糊控制,matlab,人工智能,神经网络,学习
写成下面这个样子更容易理解:
模糊控制,matlab,人工智能,神经网络,学习
如果你不知道该如何理解“算子”两个字,没多大问题。学过传递函数得概念的话,你可以把算子理解为一个广义的传递函数,就是有个输入来的东西,通过与这个算子做运算,就可以得到你要的输出。其实本质上就是把一个映射单独拿了出来,就叫算子了。

(2)Mamdani 推理

Mandani推理简单粗暴,而且有效
模糊控制,matlab,人工智能,神经网络,学习
可以看到,在MATLAB的工具箱中,默认的就是他:

模糊控制,matlab,人工智能,神经网络,学习
另外推理算法还有Baldwin、T’sukamato、Yager等推理算法。“通常把基于不精确的、不绝对可靠的或不完全的信息基础上的推理称为不确定性推理。同时,又把针对模糊系统的不确定性推理方法称为模糊推理方法。” 理解一下就是,在模糊系统中,基于不精确、不绝对可靠或信息不完全的推理就是模糊推理,也就是说,模糊推理本身上是无法做到完全准确的。注意啦,这是重点,这意味着我们可以把推理过程做到尽可能准确,那么用什么方法?—— 优化、神经网络…用你自己的办法


4.解模糊化

解模糊化的主要目的就是将模糊控制系统得到的模糊输出值映射到真实的世界中,而不再以模糊语言的形式来表示。最直观的理解如:求“很大”这个模糊语言的数值是多少。解模糊化也叫“去模糊化”、“清晰化”等。

解模糊化最常用的几种方法:
(1)最大隶属度法

直接选择模糊输出中隶属度函数值最大的那个元素。
优点:主要信息突出,计算简单;
缺点:次要信息易丢失,方法粗糙,只适用于要求不高的模糊控制系统设计;

(2)中位数法(重心法、质心法、面积中心法)

目前最流行、合理的解模糊化方法。该方法将模糊控制系统中的中位数作为控制量。
优点:相比最大隶属度法,重心法包含了模糊子集中的所有信息;
缺点:计算复杂,尤其是在隶属度函数的论域为连续时,需要求解积分方程。

(3)加权平均法

适用于输出隶属度函数的模糊集是对称的。
相比重心法,计算相对简单。

(4)平均最大隶属度法

与最大隶属度法类似,但这里的最大隶属度值可以不是一个,而是多个。

(5)求和中心法

与加权平均法相似,但这里求和的是各个隶属度函数的面积,而加权平均的是隶属度函数值。
优点:计算速度很快。

(6)最大面积中心法

如果输出模糊集至少有两个凸的子区域,则最大面积凸子区域的重心作为输出的解模糊化值。

(7)首尾最大值法


三、模糊控制算法实例解析(含代码)

首先来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处模糊控制,matlab,人工智能,神经网络,学习
按照日常操作经验,有以下规则:
1、 若当前水位高于目标水位,则向外排水,差值越大,排水越快;
2、 若当前水位低于目标水位,则向内注水,差值越大,注水越快;
3、 若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。

1、选择观测量和控制量

将偏差e划分为5个模糊集,负大(NB)、负小(NS)、零(ZO)、正小(PS)、正大(PB),e为负表示当前水位低于目标水位,e为正表示当前水位高于目标水位。设定e的取值范围为[-3,3],隶属度函数如下。
下面来设计一个模糊控制器
模糊控制,matlab,人工智能,神经网络,学习

%水位模糊控制算法
clear all;
close all;
 
a = newfis('fuzzy tank');
 
a = addvar(a,'input','e',[-3,3]);
a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
a = addmf(a,'input',1,'PB','smf',[1,3]);
 
a = addvar(a,'output','u',[-4,4]);
a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
a = addmf(a,'output',1,'PB','smf',[2,4]);
 
%建立模糊规则
rulelist=[1 1 1 1;
         2 2 1 1;
         3 3 1 1;
         4 4 1 1;
         5 5 1 1];
a = addrule(a,rulelist);
 
%设置反模糊化算法
a1 = setfis(a,'DefuzzMethod','mom');
writefis(a1,'tank');
a2 = readfis('tank');
 
figure(1);
plotfis(a2);
figure(2);
plotmf(a,'input',1);
figure(3);
plotmf(a,'output',1);
 
 
showrule(a);
ruleview('tank');
 
for i=1:1:7
   e(i)=i-4;
   Ulist(i)=evalfis([e(i)],a2);
end
Ulist = round(Ulist);  %对决策结果四舍五入取整
 
disp('------------------------------------------------------');
disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
disp('------------------------------------------------------');
fprintf('| a  |');
fprintf(' %d  |',e);
fprintf('\n');
fprintf('| u  |');
fprintf(' %d  |',Ulist);
fprintf('\n');

参考

链接1
链接2文章来源地址https://www.toymoban.com/news/detail-802130.html

到了这里,关于人工智能学习——模糊控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能|机器学习——循环神经网络的简洁实现

    循环神经网络的简洁实现 如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 定义模型 高级API提供了循环神经网络的实现。 我们构造一个具有256个隐藏单元的单隐藏层的循环神经网络层 rnn_layer 。 事实上,我们

    2024年02月04日
    浏览(60)
  • AI学术交流——“人工智能”和“神经网络学习”

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.人工智能 1.“人工智能之父” 2.达特茅斯会议(人工智能起源) 3.人工智能重要节点 二.神经网络 1.什么是神经网络

    2024年02月09日
    浏览(57)
  • 鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法

    鱼类识别系统。使用Python作为主要编程语言开发,通过收集常见的30种鱼类(‘墨鱼’, ‘多宝鱼’, ‘带鱼’, ‘石斑鱼’, ‘秋刀鱼’, ‘章鱼’, ‘红鱼’, ‘罗非鱼’, ‘胖头鱼’, ‘草鱼’, ‘银鱼’, ‘青鱼’, ‘马头鱼’, ‘鱿鱼’, ‘鲇鱼’, ‘鲈鱼’, ‘鲍鱼’, ‘鲑

    2024年02月02日
    浏览(92)
  • 人工智能学习与实训笔记(一):零基础理解神经网络

    人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、什么是神经网络模型 二、机器学习的类型 2.1 监督学习 2.2 无监督学习 2.3 半监督学习 2.4 强化学习 三、网络模型结构基础 3.1 单层网络 ​编辑 3.2 多层网络 3.3 非线性多层网络  四、 神经网络解决回

    2024年02月20日
    浏览(41)
  • 【人工智能与机器学习】基于卷积神经网络CNN的猫狗识别

    很巧,笔者在几月前的计算机设计大赛作品设计中也采用了猫狗识别,目前已推国赛评选中 但当时所使用的方法与本次作业要求不太一致,又重新做了一遍,下文将以本次作业要求为主,介绍CNN卷积神经网络实现猫狗识别 猫狗识别和狗品种识别是计算机视觉领域中一个重要

    2024年02月13日
    浏览(48)
  • 人工智能学习与实训笔记(三):神经网络之目标检测问题

    人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 目录 三、目标检测问题 3.1 目标检测基础概念 3.1.1 边界框(bounding box) 3.1.2 锚框(Anchor box) 3.1.3 交并比 3.2 单阶段目标检测模型YOLOv3 3.2.1 YOLOv3模型设计思想 3.2.2 YOLOv3模型训练过程 3.2.3 如何建立输出特征图与预

    2024年02月20日
    浏览(57)
  • 人工智能学习与实训笔记(二):神经网络之图像分类问题

    人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 目录 二、图像分类问题 2.1 尝试使用全连接神经网络 2.2 引入卷积神经网络  2.3 分类函数Softmax 2.4 交叉熵损失函数 2.5 学习率优化算法 2.6 图像预处理算法 2.6.1 随机改变亮暗、对比度和颜色等 2.6.2 随机填充 2.6.

    2024年02月20日
    浏览(46)
  • 精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型

    精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型。 机器学习 人工智能的核心,是使计算机具有智能的根本途径。机器学习专注于算法,允许机器学习而不需要编程,

    2024年01月25日
    浏览(71)
  • 人工智能学习与实训笔记(四):神经网络之NLP基础—词向量

    人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 四、自然语言处理 4.1 词向量 (Word Embedding) 4.1.1 词向量的生成过程 4.1.2 word2vec介绍 4.1.3 word2vec:skip-gram算法的实现 4.2 句向量 - 情感分析 4.2.1 LSTM (Long Short-Term Memory)介绍 4.2.2 基于飞桨实现的情感分析模型

    2024年02月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包