【数据驱动】基于模糊逻辑DDMS的数据驱动动态系统建模附Matlab代码

基于模糊逻辑DDMS的数据驱动动态系统建模

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

🍊个人信条:格物致知,完整Matlab代码及仿真咨询内容私信。

🔥 内容介绍

在当今数据爆炸的时代,动态系统的建模与分析面临着前所未有的机遇与挑战。从工业生产中的复杂设备运行到自然界的生态变化,从经济市场的波动到生物体内的生理过程,动态系统无处不在。传统的建模方法往往依赖于对系统的先验知识和精确的数学推导,但对于许多复杂的动态系统,其内部机理难以清晰描述,精确的数学模型更是难以建立。此时,数据驱动的动态系统建模方法应运而生,它摆脱了对系统内部机理的过度依赖,直接从海量的观测数据中挖掘系统的动态特性和规律。而模糊逻辑凭借其处理不确定性和模糊信息的强大能力,与数据驱动方法相结合形成的模糊逻辑 DDMS(数据驱动动态系统,Data-Driven Dynamic Systems),为复杂动态系统的建模提供了一种极具潜力的解决方案。

数据驱动动态系统建模与模糊逻辑的融合

数据驱动动态系统建模的核心思想

数据驱动动态系统建模的核心在于 “让数据说话”。它通过采集系统在不同时刻、不同工况下的输入输出数据,利用数据分析和机器学习等方法,构建能够描述系统输入与输出之间动态关系的模型。这种建模方式不需要深入了解系统内部的物理、化学或生物等具体过程,只需关注数据中蕴含的系统动态特征,因此对于那些机理复杂、难以用精确数学公式表达的系统具有显著优势。

例如,在化工生产过程中,反应釜内的温度、压力、物料浓度等参数随时间动态变化,其内部的化学反应机理极为复杂,传统的机理建模难以准确描述。而通过采集这些参数的大量观测数据,采用数据驱动的建模方法,可以构建出能够预测反应釜动态行为的模型,为生产过程的优化控制提供支持。

模糊逻辑的独特优势

模糊逻辑是一种处理不确定性和不精确信息的数学工具,它模仿人类思维中对模糊概念的处理方式,将经典集合论中的 “非此即彼” 扩展为 “亦此亦彼”。在模糊逻辑中,一个元素不再是简单地属于或不属于某个集合,而是通过隶属度函数来表示其属于该集合的程度,隶属度的取值范围在 0 到 1 之间。

这种特性使得模糊逻辑非常适合处理动态系统中普遍存在的不确定性、模糊性和非线性。动态系统的输入输出关系往往不是简单的线性关系,且受到各种噪声和干扰的影响,导致数据中存在大量的不确定性。模糊逻辑能够有效地对这些不确定信息进行建模和处理,通过模糊规则将输入空间映射到输出空间,从而捕捉系统的非线性动态特性。

模糊逻辑 DDMS 的协同作用

模糊逻辑 DDMS 将数据驱动的思想与模糊逻辑的方法相结合,实现了优势互补。一方面,数据驱动方法为模糊逻辑模型提供了丰富的数据源,使得模糊规则和隶属度函数的确定不再依赖于专家的主观经验,而是基于实际观测数据进行学习和优化,提高了模型的客观性和准确性。另一方面,模糊逻辑为数据驱动建模提供了强大的表达工具,能够将复杂的非线性动态关系以直观易懂的模糊规则形式表示出来,增强了模型的可解释性,便于人们理解和应用。

模糊逻辑 DDMS 的基础框架

模糊逻辑系统的基本结构

一个典型的模糊逻辑系统主要由四个部分组成:模糊化、知识库、模糊推理和去模糊化。

  • 模糊化:将输入的精确值转换为模糊集合的隶属度。这一步需要定义合适的隶属度函数,常用的隶属度函数有三角形、梯形、高斯函数等。通过模糊化,将实际系统中模糊的、不确定的输入信息转化为模糊逻辑可以处理的形式。
  • 知识库:包括模糊规则库和隶属度函数库。模糊规则库是由一系列 “如果 - 那么”(if-then)形式的规则组成,这些规则是对系统动态特性的经验总结或从数据中学习得到的。例如,对于一个温度控制系统,可能存在这样的规则:“如果温度偏差较大且偏差变化率较大,那么控制量较大”。隶属度函数库则存储了各个模糊集合的隶属度函数参数。
  • 模糊推理:根据模糊规则库中的规则,结合输入的模糊信息,进行推理并得到模糊输出。常用的模糊推理方法有 Mamdani 推理法和 Sugeno 推理法等。模糊推理的过程是模拟人类决策过程的思维方式,从已知的输入模糊信息中推导出相应的输出模糊结论。
  • 去模糊化:将模糊推理得到的模糊输出转换为精确的输出值。去模糊化是模糊逻辑系统与实际应用之间的桥梁,常用的去模糊化方法有最大隶属度法、重心法、加权平均法等。

数据驱动下的模糊逻辑 DDMS 框架构建

在数据驱动的背景下,模糊逻辑 DDMS 的框架构建主要包括以下几个关键步骤:

  1. 数据采集与预处理:首先需要采集动态系统的输入输出数据,这些数据应能充分反映系统在不同工况下的动态行为。采集到的数据可能包含噪声、缺失值等问题,需要进行预处理,如数据清洗、去噪、归一化等,以提高数据质量,为后续的模型学习奠定良好基础。
  1. 模糊规则的自动生成:传统的模糊逻辑系统中,模糊规则主要依靠专家经验制定,主观性较强。而在模糊逻辑 DDMS 中,模糊规则通过对预处理后的数据进行分析和挖掘自动生成。常用的方法有聚类分析、决策树、遗传算法等。例如,通过聚类算法可以将输入输出数据划分成不同的类别,每个类别对应一条模糊规则的前提和结论。
  1. 隶属度函数的优化:隶属度函数的形状和参数直接影响模糊逻辑系统的性能。在数据驱动的框架下,利用采集到的数据对隶属度函数的参数进行优化,使得模糊逻辑系统能够更好地拟合实际系统的输入输出关系。常用的优化方法有最小二乘法、梯度下降法、粒子群优化算法等。
  1. 模型验证与更新:构建好的模糊逻辑 DDMS 模型需要通过验证数据进行评估,检验模型的泛化能力和预测精度。如果模型性能不满足要求,需要重新调整模糊规则或隶属度函数参数。此外,由于动态系统具有时变性,随着时间的推移,系统的特性可能会发生变化,因此需要定期采集新的数据,对模型进行更新和优化,以保证模型的适应性。

基于模糊逻辑 DDMS 的动态系统建模步骤

步骤一:数据采集与预处理

数据是数据驱动建模的基础,高质量的数据是构建准确模型的前提。在数据采集阶段,需要根据动态系统的特点和建模目标,确定需要采集的输入变量和输出变量,并选择合适的传感器和采集设备,确保数据的准确性和完整性。采集的时间间隔和持续时间应根据系统的动态特性来确定,以捕捉系统的瞬态响应和稳态特性。

数据预处理是提高数据质量的关键环节。主要包括以下几个方面:

  • 数据清洗:去除数据中的异常值、缺失值和重复值。异常值可能是由于传感器故障或外界干扰引起的,可以通过统计分析方法(如 3σ 准则)识别并处理;对于缺失值,可以采用插值法(如线性插值、多项式插值)或基于机器学习的方法进行填充。
  • 数据去噪:实际采集的数据往往包含噪声,这些噪声会影响模型的学习效果。可以采用滤波方法(如卡尔曼滤波、小波滤波)对数据进行去噪处理,保留数据中的有用信息。
  • 数据归一化:将不同量级和单位的输入输出数据转换到相同的取值范围(如 [0,1] 或 [-1,1]),以消除量纲的影响,提高模型的收敛速度和稳定性。

步骤二:模糊模型结构辨识

模糊模型结构辨识的目的是确定模糊逻辑系统的输入变量、输出变量、模糊规则的数量和结构。在数据驱动的框架下,可以通过对预处理后的数据进行分析来实现。

  • 输入输出变量选择:根据系统的先验知识和建模目标,初步确定可能的输入变量和输出变量。然后通过相关性分析、互信息分析等方法,从候选变量中筛选出与输出变量相关性较强的输入变量,减少输入维度,提高模型的简洁性和泛化能力。
  • 模糊规则数量确定:模糊规则的数量过多会导致模型复杂度过高,容易出现过拟合现象;数量过少则无法准确描述系统的动态特性。可以通过聚类算法(如模糊 C 均值聚类)对输入输出数据进行聚类分析,根据聚类结果确定模糊规则的数量。每个聚类中心对应一条模糊规则的前提和结论。

步骤三:模糊参数学习与优化

模糊参数主要包括隶属度函数参数和模糊规则的结论参数。在模型结构确定后,需要利用采集到的数据对这些参数进行学习和优化,以使模糊逻辑 DDMS 模型能够准确地拟合系统的输入输出关系。

  • 隶属度函数参数优化:对于选定的隶属度函数(如高斯函数),其参数(如均值和标准差)需要通过学习确定。可以采用最小二乘法,以模型输出与实际输出的误差平方和为目标函数,求解最优的隶属度函数参数。也可以采用智能优化算法(如遗传算法、粒子群优化算法),通过全局搜索找到更优的参数组合。
  • 模糊规则结论参数优化:模糊规则的结论参数可以是常数或线性函数的系数(对于 Sugeno 型模糊逻辑系统)。同样可以采用最小二乘法或智能优化算法对这些参数进行优化,使得模糊推理得到的输出与实际输出之间的误差最小。

步骤四:模型验证与评估

模型验证与评估是检验模糊逻辑 DDMS 模型性能的重要环节。将数据集分为训练集和验证集,其中训练集用于模型的参数学习,验证集用于评估模型的泛化能力。常用的评估指标包括均方根误差(RMSE)、平均绝对误差(MAE)、决定系数(R²)等。

如果模型在验证集上的表现不佳,需要返回前面的步骤,重新进行模型结构辨识或参数优化。例如,可能需要增加模糊规则的数量、调整隶属度函数的类型或优化参数学习算法等。只有当模型在验证集上达到满意的性能指标时,才能认为模型构建成功。

⛳️ 运行结果

📣 部分代码

clear all;

close all;

clc

%%prapare the input/output training

load P5train5inp.mat

x1= veri(:,3); % first input for training

x2= veri (:,2); % second input for training

x3= veri (:,1); % third input fpr training

x=[x1 x2 x3]; % inputs for training

y= veri (:,4); %output for training

%% prapare the input output for testing

load P5test5inp.mat

x1t= veri(:,3); %first input for testing

x2t=veri(:,2); %second input for testing

x3t= veri(:,1); %thrd input for testing

xt= [x1t x2t x3t]; %inputs for testing

ytf(x2(n), [0.6 -2])*gaussmf(x3(n), [0.6 2]); %A3 B1 C2

    w21=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.6 -2])*gaussmf(x3(n), [0.8 0]); %A3 B1 C3

    w22=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.6 2])*gaussmf(x3(n), [0.6 -2]);%A3 B2 C1

    w23=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.6 2])*gaussmf(x3(n), [0.6 2]); %A3 B2 C2

    w24=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.6 2])*gaussmf(x3(n), [0.8 0]);%A3 B2 C3

    w25=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.8 0])*gaussmf(x3(n), [0.6 -2]); %A3 B3 C1

    w26=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.8 0])*gaussmf(x3(n), [0.6 2]); %A3 B3 C2

    w27=gaussmf(x1(n), [0.8 0])*gaussmf(x2(n), [0.8 0])*gaussmf(x3(n), [0.8 0]); %A3 B3 C3

   %finding normalized firing strength (activity degree) of each rule

    gamma1(n)= w1/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma2(n)= w2/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma3(n)= w3/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma4(n)= w4/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma5(n)= w5/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma6(n)= w6/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma7(n)= w7/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma8(n)= w8/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma9(n)= w9/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma10(n)= w10/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma11(n)= w11/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma12(n)= w12/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma13(n)= w13/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma14(n)= w14/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma15(n)= w15/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma16(n)= w16/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma17(n)= w17/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma18(n)= w18/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma19(n)= w19/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma20(n)= w20/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma21(n)= w21/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma12(n)= w22/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma23(n)= w23/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma24(n)= w24/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma15(n)= w25/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma26(n)= w26/(w1+w2+w3+w4+w5+w6+w7+w8);

    gamma27(n)= w27/(w1+w2+w3+w4+w5+w6+w7+w8);

 end

Gama1= diag(gamma1); 

Gama2= diag(gamma2); 

Gama3= diag(gamma3); 

Gama4= diag(gamma4); 

Gama5= diag(gamma5); 

Gama6= diag(gamma6); 

Gama7= diag(gamma7); 

Gama8= diag(gamma8);

Gama9= diag(gamma1); 

Gama10= diag(gamma2); 

Gama11= diag(gamma3); 

Gama12= diag(gamma4); 

Gama13= diag(gamma5); 

Gama14= diag(gamma6); 

Gama15= diag(gamma7); 

Gama16= diag(gamma8);

Gama17= diag(gamma1); 

Gama18= diag(gamma2); 

Gama19= diag(gamma3); 

Gama20= diag(gamma4); 

Gama21= diag(gamma5); 

Gama22= diag(gamma6); 

Gama23= diag(gamma7); 

Gama24= diag(gamma8);

Gama25= diag(gamma6); 

Gama26= diag(gamma7); 

Gama27= diag(gamma8);

%%optimal least-squares solution

%Xussu=[Gama1*Xe Gama2*Xe Gama3*Xe Gama4*Xe  Gama5*Xe Gama6*Xe Gama7*Xe ];

%teta1 = inv(Xussu'*Xussu)*Xussu'*y; %its results are NaNbecaouse of zero determinant

%%weighted least-squares approach appliedper rule

te

              p20= teta(1,20)*x1(i)+teta(2,20)*x2(i)+teta(3,20)*x3(i)+ teta(4,20);

              p21= teta(1,21)*x1(i)+teta(2,21)*x2(i)+teta(3,21)*x3(i)+ teta(4,21);

              p22= teta(1,22)*x1(i)+teta(2,22)*x2(i)+teta(3,22)*x3(i)+ teta(4,22);

              p23= teta(1,23)*x1(i)+teta(2,23)*x2(i)+teta(3,23)*x3(i)+ teta(4,23);

              p24= teta(1,24)*x1(i)+teta(2,24)*x2(i)+teta(3,24)*x3(i)+ teta(4,24);

              p25= teta(1,25)*x1(i)+teta(2,25)*x2(i)+teta(3,25)*x3(i)+ teta(4,25);

              p26= teta(1,26)*x1(i)+teta(2,26)*x2(i)+teta(3,26)*x3(i)+ teta(4,26);

              p27= teta(1,27)*x1(i)+teta(2,27)*x2(i)+teta(3,27)*x3(i)+ teta(4,27);

    w1=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 -2]);%A1 B1 C1

    w2=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 2]); %A1 B1 C2

    w3=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.8 0]); %A1 B1 C3

    w4=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 -2]); %A1 B2 C1

    w5=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 2]); %A1 B2 C2

    w6=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.8 0]); %A1 B2 C3

    w7=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 -2]);%A1 B3 C1

    w8=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 2]); %A1 B3 C2

    w9=gaussmf(x1(i), [0.5 -1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.8 0]);%A1 B3 C3

    w10=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 -2]); %A2 B1 C1

    w11=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 2]); %A2 B1 C2

    w12=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.8 0]); %A2 B1 C3

    w13=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 -2]); %A2 B2 C1

    w14=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 2]); %A2 B2 C2

    w15=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.8 0]);%A2 B2 C3

    w16=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 -2]); %A2 B3 C1

    w17=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 2]);%A2 B3 C2

    w18=gaussmf(x1(i), [0.5 1.5])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.8 0]); %A2 B3 C3

    w19=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 -2]); %A3 B1 C1

    w20=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.6 2]); %A3 B1 C2

    w21=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 -2])*gaussmf(x3(i), [0.8 0]); %A3 B1 C3

    w22=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 -2]);%A3 B2 C1

    w23=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.6 2]); %A3 B2 C2

    w24=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.6 2])*gaussmf(x3(i), [0.8 0]);%A3 B2 C3

    w25=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 -2]); %A3 B3 C1

    w26=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.6 2]); %A3 B3 C2

    w27=gaussmf(x1(i), [0.8 0])*gaussmf(x2(i), [0.8 0])*gaussmf(x3(i), [0.8 0]); %A3 B3 C3

       train_result(i)=(w1*p1+w2*p2+w3*p3+w4*p4+w5*p5+w6*p6+w7*p7+w8*p8+w9*p9...

                        +w10*p10+w11*p11+w12*p12+w13*p13+w14*p14+w15*p15+w16*p16+w17*p17+w18*p18...

                        +w19*p19+w20*p20+w21*p21+w22*p22+w23*p23+w24*p24+w25*p25+w26*p26+w27*p27)/...

                        (w1+w2+w3+w4+w5+w6+w7+w8+w9+w10+w11+w12+w13+w14+w15+w16+w17+w18+w19+w20+w21+w22+w23+w24+w25+w26+w27);

    end

    figure(3);

    plot(train_result,'g.'),

    title('training performance of fuzzy system');

    hold on

    plot(y,'k'); hold off

    xlabel('k'), ylabel('y(k)'); legend('obtained', 'desired')

teta(1,17)*x1t(i)+teta(2,17)*x2t(i)+teta(3,17)*x3t(i)+ teta(4,17);

              p18= teta(1,18)*x1t(i)+teta(2,18)*x2t(i)+teta(3,18)*x3t(i)+ teta(4,18);

              p19= teta(1,19)*x1t(i)+teta(2,19)*x2t(i)+teta(3,19)*x3t(i)+ teta(4,19);

              p20= teta(1,20)*x1t(i)+teta(2,20)*x2t(i)+teta(3,20)*x3t(i)+ teta(4,20);

              p21= teta(1,21)*x1t(i)+teta(2,21)*x2t(i)+teta(3,21)*x3t(i)+ teta(4,21);

              p22= teta(1,22)*x1t(i)+teta(2,22)*x2t(i)+teta(3,22)*x3t(i)+ teta(4,22);

              p23= teta(1,23)*x1t(i)+teta(2,23)*x2t(i)+teta(3,23)*x3t(i)+ teta(4,23);

              p24= teta(1,24)*x1t(i)+teta(2,24)*x2t(i)+teta(3,24)*x3t(i)+ teta(4,24);

              p25= teta(1,25)*x1t(i)+teta(2,25)*x2t(i)+teta(3,25)*x3t(i)+ teta(4,25);

              p26= teta(1,26)*x1t(i)+teta(2,26)*x2t(i)+teta(3,26)*x3t(i)+ teta(4,26);

              p27= teta(1,27)*x1t(i)+teta(2,27)*x2t(i)+teta(3,27)*x3t(i)+ teta(4,27);

   w1=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 -2]);%A1 B1 C1

    w2=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 2]); %A1 B1 C2

    w3=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.8 0]); %A1 B1 C3

    w4=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 -2]); %A1 B2 C1

    w5=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 2]); %A1 B2 C2

    w6=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.8 0]); %A1 B2 C3

    w7=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 -2]);%A1 B3 C1

    w8=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 2]); %A1 B3 C2

    w9=gaussmf(x1t(i), [0.5 -1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.8 0]);%A1 B3 C3

    w10=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 -2]); %A2 B1 C1

    w11=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 2]); %A2 B1 C2

    w12=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.8 0]); %A2 B1 C3

    w13=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 -2]); %A2 B2 C1

    w14=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 2]); %A2 B2 C2

    w15=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.8 0]);%A2 B2 C3

    w16=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 -2]); %A2 B3 C1

    w17=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 2]);%A2 B3 C2

    w18=gaussmf(x1t(i), [0.5 1.5])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.8 0]); %A2 B3 C3

    w19=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 -2]); %A3 B1 C1

    w20=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.6 2]); %A3 B1 C2

    w21=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 -2])*gaussmf(x3t(i), [0.8 0]); %A3 B1 C3

    w22=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 -2]);%A3 B2 C1

    w23=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.6 2]); %A3 B2 C2

    w24=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.6 2])*gaussmf(x3t(i), [0.8 0]);%A3 B2 C3

    w25=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 -2]); %A3 B3 C1

    w26=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.6 2]); %A3 B3 C2

    w27=gaussmf(x1t(i), [0.8 0])*gaussmf(x2t(i), [0.8 0])*gaussmf(x3t(i), [0.8 0]); %A3 B3 C3

       test_result(i)=(w1*p1+ w2*p2+w3*p3+w4*p4+w5*p5+w6*p6+w7*p7+w8*p8+w9*p9+w10*p10+w11*p11+w12*p12+ w13*p13+w14*p14+w15*p15+w16*p16+w17*p17+w18*p18*w19*p19+w20*p20+w21*p21+w22*p22+w23*p23+w24*p24+w25*p25+w26*p26+w27*p27)/(w1+w2+w3+w4+w5+w6+w7+w8+w9+w10+w11+w12+w13+w14+w15+w16+w17+w18+w19+w20+w21+w22+w23+w24+w25+w26+w27);

    end

    figure(4);

    plot(test_result,'r-.'),

    title('testing performance of fuzzy system');

    hold on

    plot(yt,'k'); hold off

    xlabel('k'), ylabel('y(k)'); legend('obtained', 'desired')

%% END of PERFORMANCE FOR TESTING DATA with founded rule parameter

🔗 参考文献

🎈 部分理论引用网络文献,若有侵权联系博主删除

 👇 关注我领取海量matlab电子书和数学建模资料 

🏆团队擅长辅导定制多种科研领域MATLAB仿真,助力科研梦:

🌟 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌟 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌟图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌟 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌟 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌟 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌟 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌟电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统(BMS)SOC/SOH估算(粒子滤波/卡尔曼滤波)、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进(扰动观察法/电导增量法)
🌟 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌟 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌟 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

👇

5 往期回顾扫扫下方二维码

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值