1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJWcmp9v
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
模糊控制的基本概念是由美国加州大学查德教授首先提出来的,模糊控制是以模糊语言变量、模糊集合论和模糊逻辑推理为基础的一种新型控制理论。模糊控制算法是一种非线性智能控制,它很适合于工业生产过程和大系统控制过程,并且其可以和神经网络、预测控制、遗传算法和混沌理论等新学科相结合。
4.部分源码
..............................................................
w1 = zeros(MAXGEN,1);
w2 = zeros(MAXGEN,1);
w3 = zeros(MAXGEN,1);
w4 = zeros(MAXGEN,1);
w5 = zeros(MAXGEN,1);
w6 = zeros(MAXGEN,1);
w7 = zeros(MAXGEN,1);
w8 = zeros(MAXGEN,1);
w9 = zeros(MAXGEN,1);
Error = zeros(MAXGEN-2,1);
fitness = zeros(MAXGEN-2,1);
gen = 0;
for jj=1:1:NIND
%初始化参数,这个和parameter参数相同
w1_NIND(jj) = 0.8;
w2_NIND(jj) = 0.01;
w3_NIND(jj) = 100;
w4_NIND(jj) = 65;
w5_NIND(jj) = 80;
w6_NIND(jj) = 100;
w7_NIND(jj) = 10;
w8_NIND(jj) = 0.75;
w9_NIND(jj) = 0.05;
%计算对应的目标值
parameter;
sim('mains1.mdl');
tmps = object.signals.values;
%计算最大超调值
[V,I] = max(tmps);
tmps2 = mean(tmps(length(tmps)/2:length(tmps)));
%计算超调量
CTL = (V-tmps2)/tmps2;
%计算收敛速度
SLX = I/10000;
J(jj,1) = (CTL);
end
Objv = J;
gen = 0;
Error = [];
Error2 = [];
LEN = 32;
while gen < MAXGEN;
gen
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,0.95);
Selch=mut( Selch,0.05);
phen1=bs2rv(Selch,FieldD);
for jj=1:1:NIND
if gen == 1
%初始化参数,这个和parameter参数相同
w1_NIND(jj) = 2;
w2_NIND(jj) = 0.01;
w3_NIND(jj) = 100;
w4_NIND(jj) = 65;
w5_NIND(jj) = 80;
w6_NIND(jj) = 100;
w7_NIND(jj) = 10;
w8_NIND(jj) = 0.75;
w9_NIND(jj) = 0.05;
else
w1_NIND(jj) = phen1(jj,1);
w2_NIND(jj) = phen1(jj,2);
w3_NIND(jj) = phen1(jj,3);
w4_NIND(jj) = phen1(jj,4);
w5_NIND(jj) = phen1(jj,5);
w6_NIND(jj) = phen1(jj,6);
w7_NIND(jj) = phen1(jj,7);
w8_NIND(jj) = phen1(jj,8);
w9_NIND(jj) = phen1(jj,9);
end
%计算对应的目标值
parameter;
sim('mains1.mdl');
tmps = object.signals.values;
%计算最大超调值
[V,I] = max(tmps);
tmps2 = mean(tmps(length(tmps)/2:length(tmps)));
%计算超调量
CTL = (V-tmps2)/tmps2;
%计算收敛速度
SLX = I/10000;
JJ(jj,1) = (CTL);
end
Objvsel = JJ;
[Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);
gen = gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
w1(gen) = mean(w1_NIND);
w2(gen) = mean(w2_NIND);
w3(gen) = mean(w3_NIND);
w4(gen) = mean(w4_NIND);
w5(gen) = mean(w5_NIND);
w6(gen) = mean(w6_NIND);
w7(gen) = mean(w7_NIND);
w8(gen) = mean(w8_NIND);
w9(gen) = mean(w9_NIND);
Error = [Error,mean(JJ)];
if gen <= LEN
Error2 = [Error2,mean(Error(1:gen))];
else
Error2 = [Error2,mean(Error(gen-LEN+1:gen))];
end
end
w1_best = w1(end)
w2_best = w2(end)
w3_best = w3(end)
w4_best = w4(end)
w5_best = w5(end)
w6_best = w6(end)
w7_best = w7(end)
w8_best = w8(end)
w9_best = w9(end)
figure;
plot(Error2,'b-s');
xlabel('迭代次数');
ylabel('目标优化');
save R.mat w1_best w2_best w3_best w4_best w5_best w6_best w7_best w8_best w9_best Error2
08_030_m