| 查看: 1939 | 回复: 3 | |||||
ep081106金虫 (正式写手)
|
[求助]
模糊控制m文件运行出错已有1人参与
|
|
Error using parsrule (line 182) Output MF index is too high Error in readfis (line 231) out=parsrule(out,txtRuleList,'indexed'); Error in PSO1127 (line 244) PSOfis1126=readfis('PSOfis1126.fis'); %导入工作空间 上面是错误代码。第一次运行可以的,第二次使用粒子群算法优化了第一次的模糊参数和规则就不成功了。下面是我模糊控制m文件代码: %------初始格式化 clear all; %清除所有变量 clc; %清屏 format long; %将数据显示为长整形科学计数 %初始化模糊控制隶属度函数及规则 A1=[1 2 3 4 5 1 2 3 4 5 0.5 1 2 3.5 6]; R1=[6 6 5 4 3 2 1 1 1 1 1 6 6 6 5 4 3 1 1 1 1 1 6 6 6 6 5 4 3 2 2 1 1 6 6 6 6 5 4 4 3 3 2 2 7 6 6 6 5 4 4 4 3 3 3 7 7 6 6 5 4 4 4 4 3 3 7 7 6 6 5 4 4 4 4 4 4 7 7 7 6 5 4 4 4 4 4 4 8 7 7 6 6 5 5 5 5 4 4 9 8 7 7 6 6 6 5 5 5 5 10 9 8 7 7 6 6 6 5 5 5 ]; R2=R1'; %行转列 R3=R2( ; %每一列堆叠R=R3'; %列转化成行向量 A=[A1,R]; %mfuzzy1116.fis %------给定初始条条件------------------ N=5; %?初始化群体个数 D=136; %初始化群体维数 T=50; %初始化群体最大迭代次数 c1=2; %学习因子1 c2=2; %学习因子2 w=0.4; %惯性权重1 eps=10^(-6); %设置精度(在已知最小值的时候用)-- %--------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); %位置,50 v=zeros(N,D); for i=1:N for j=1:10 x(i,j)=round((-5+10*rand())*100)/100; v(i,j)=round((-5+10*rand())*100)/100; end for j=11:15 x(i,j)=round((-6+12*rand())*100)/100; v(i,j)=round((-6+12*rand())*100)/100; end for j=16:136 x(i,j)=round(1+10*rand()); %随机初始化位置 v(i,j)=round(1+10*rand()); %随机初始化速度 end end x(1, =A; %初始化粒子群pbest=400*ones(N,1); %个体最优 pg=400*ones(1,D); %Pg为全局最优 gbest=400; %全局最优 p=x; %a=newfis('PSOfis1126'); %与mfuzzy1116是一致的 %-----进入主循环,按照公式依次迭代直到满足精度或者迭代次数--- for t=1:5 i=1; k=x(i, ';X(1:15)=round(k(1:15)*100)/100; X(16:136)=round(k(16:136)); a=newfis('PSOfis1126'); a=addvar(a,'input','Treq',[-5,5]); a=addmf(a,'input',1,'NBB','trimf',[-5,-X(5),-X(4)]); a=addmf(a,'input',1,'NB','trimf',[-X(5),-X(4),-X(3)]); a=addmf(a,'input',1,'NM','trimf',[-X(4),-X(3),-X(2)]); a=addmf(a,'input',1,'NS','trimf',[-X(3),-X(2),-X(1)]); a=addmf(a,'input',1,'NSS','trimf',[-X(2),-X(1),0]); a=addmf(a,'input',1,'ZE','trimf',[-X(1),0,X(1)]); a=addmf(a,'input',1,'PSS','trimf',[0,X(1),X(2)]); a=addmf(a,'input',1,'PS','trimf',[X(1),X(2),X(3)]); a=addmf(a,'input',1,'PM','trimf',[X(2),X(3),X(4)]); a=addmf(a,'input',1,'PB','trimf',[X(3),X(4),X(5)]); a=addmf(a,'input',1,'PBB','trimf',[X(4),X(5),5]); a=addvar(a,'input','SOC',[-5,5]); a=addmf(a,'input',2,'NBB','trimf',[-5,-X(10),-X(9)]); a=addmf(a,'input',2,'NB','trimf',[-X(10),-X(9),-X(8)]); a=addmf(a,'input',2,'NM','trimf',[-X(9),-X(8),-X(7)]); a=addmf(a,'input',2,'NS','trimf',[-X(8),-X(7),-X(6)]); a=addmf(a,'input',2,'NSS','trimf',[-X(7),-X(6),0]); a=addmf(a,'input',2,'ZE','trimf',[-X(6),0,X(6)]); a=addmf(a,'input',2,'PSS','trimf',[0,X(6),X(7)]); a=addmf(a,'input',2,'PS','trimf',[X(6),X(7),X(8)]); a=addmf(a,'input',2,'PM','trimf',[X(7),X(8),X(9)]); a=addmf(a,'input',2,'PB','trimf',[X(8),X(9),X(10)]); a=addmf(a,'input',2,'PBB','trimf',[X(9),X(10),5]); a=addvar(a,'output','Te',[-6,6]); a=addmf(a,'output',1,'NBB','trimf',[-6,-X(15),-3]); a=addmf(a,'output',1,'NB','trimf',[-2*X(14)+X(13),-X(14),-X(13)]); a=addmf(a,'output',1,'NM','trimf',[-2*X(13)+X(12),-X(13),-X(12)]); a=addmf(a,'output',1,'NS','trimf',[-X(13),-X(12),-2*X(12)+X(13)]); a=addmf(a,'output',1,'NSS','trimf',[-3*X(11),-X(11),X(11)]); a=addmf(a,'output',1,'ZE','trimf',[-X(12),0,X(12)]); a=addmf(a,'output',1,'PSS','trimf',[-X(11),X(11),3*X(11)]); a=addmf(a,'output',1,'PS','trimf',[2*X(12)-X(13),X(12),X(13)]); a=addmf(a,'output',1,'PM','trimf',[X(12),X(13),2*X(13)-X(12)]); a=addmf(a,'output',1,'PB','trimf',[X(13),X(14),2*X(14)-X(13)]); a=addmf(a,'output',1,'PBB','trimf',[3,X(15),6]); rulelist=[1 1 X(16) 1 1; 1 2 X(17) 1 1; %Xulelist是一个矩阵,每一行为一条规则,他们之间是ALSO的关系 1 3 X(18) 1 1; %前N个数分别表示N个输入变量的某一个语言名称的indeX 1 4 X(19) 1 1; %没有的话用0表示,后面两个分别表示该条规则的权重和各条件的关系,1表示AND,2表示OX 1 5 X(20) 1 1; 1 6 X(21) 1 1; 1 7 X(22) 1 1; 1 8 X(23) 1 1; 1 9 X(24) 1 1; 1 10 X(25) 1 1; 1 11 X(26) 1 1; 2 1 X(27) 1 1; 2 2 X(28) 1 1; 2 3 X(29) 1 1; 2 4 X(30) 1 1; 2 5 X(31) 1 1; 2 6 X(32) 1 1; 2 7 X(33) 1 1; 2 8 X(34) 1 1; 2 9 X(35) 1 1; 2 10 X(36) 1 1; 2 11 X(37) 1 1; 3 1 X(38) 1 1; 3 2 X(39) 1 1; 3 3 X(40) 1 1; 3 4 X(41) 1 1; 3 5 X(42) 1 1; 3 6 X(43) 1 1; 3 7 X(44) 1 1; 3 8 X(45) 1 1; 3 9 X(46) 1 1; 3 10 X(47) 1 1; 3 11 X(48) 1 1; 4 1 X(49) 1 1; 4 2 X(50) 1 1; 4 3 X(51) 1 1; 4 4 X(52) 1 1; 4 5 X(53) 1 1; 4 6 X(54) 1 1; 4 7 X(55) 1 1; 4 8 X(56) 1 1; 4 9 X(57) 1 1; 4 10 X(58) 1 1; 4 11 X(59) 1 1; 5 1 X(60) 1 1; 5 2 X(61) 1 1; 5 3 X(62) 1 1; 5 4 X(63) 1 1; 5 5 X(64) 1 1; 5 6 X(65) 1 1; 5 7 X(66) 1 1; 5 8 X(67) 1 1; 5 9 X(68) 1 1; 5 10 X(69) 1 1; 5 11 X(70) 1 1; 6 1 X(71) 1 1; 6 2 X(72) 1 1; 6 3 X(73) 1 1; 6 4 X(74) 1 1; 6 5 X(75) 1 1; 6 6 X(76) 1 1; 6 7 X(77) 1 1; 6 8 X(78) 1 1; 6 9 X(79) 1 1; 6 10 X(80) 1 1; 6 11 X(81) 1 1; 7 1 X(82) 1 1; 7 2 X(83) 1 1; 7 3 X(84) 1 1; 7 4 X(85) 1 1; 7 5 X(86) 1 1; 7 6 X(87) 1 1; 7 7 X(88) 1 1; 7 8 X(89) 1 1; 7 9 X(90) 1 1; 7 10 X(91) 1 1; 7 11 X(92) 1 1; 8 1 X(93) 1 1; 8 2 X(94) 1 1; 8 3 X(95) 1 1; 8 4 X(96) 1 1; 8 5 X(97) 1 1; 8 6 X(98) 1 1; 8 7 X(99) 1 1; 8 8 X(100) 1 1; 8 9 X(101) 1 1; 8 10 X(102) 1 1; 8 11 X(103) 1 1; 9 1 X(104) 1 1; 9 2 X(105) 1 1; 9 3 X(106) 1 1; 9 4 X(107) 1 1; 9 5 X(108) 1 1; 9 6 X(109) 1 1; 9 7 X(110) 1 1; 9 8 X(111) 1 1; 9 9 X(112) 1 1; 9 10 X(113) 1 1; 9 11 X(114) 1 1; 10 1 X(115) 1 1; 10 2 X(116) 1 1; 10 3 X(117) 1 1; 10 4 X(118) 1 1; 10 5 X(119) 1 1; 10 6 X(120) 1 1; 10 7 X(121) 1 1; 10 8 X(122) 1 1; 10 9 X(123) 1 1; 10 10 X(124) 1 1; 10 11 X(125) 1 1; 11 1 X(126) 1 1; 11 2 X(127) 1 1; 11 3 X(128) 1 1; 11 4 X(129) 1 1; 11 5 X(130) 1 1; 11 6 X(131) 1 1; 11 7 X(132) 1 1; 11 8 X(133) 1 1; 11 9 X(134) 1 1; 11 10 X(135) 1 1; 11 11 X(136) 1 1;]; a=addrule(a,rulelist); a1=setfis(a,'DefuzzMethod','centroid'); %Defuzzy writefis(a1,'PSOfis1126'); a2=readfis('PSOfis1126'); PSOfis1126=readfis('PSOfis1126.fis'); %导入工作空间 代码完毕。运行第一次是可以的,运行第二次就出现了什么的错误。第二次是 X=[1.32000000000000,1.01000000000000,1.24000000000000,2.37000000000000,5.60000000000000,1.12000000000000,3.08000000000000,3.60000000000000,3.32000000000000,6.15000000000000,-1.14000000000000,1.90000000000000,2.86000000000000,1.72000000000000,7.64000000000000,10,7,9,7,6,4,3,4,3,2,3,8,9,9,6,6,7,4,5,3,5,4,10,8,8,8,8,6,3,4,6,4,3,8,7,9,8,8,6,6,6,5,3,3,9,9,8,9,7,6,5,4,3,7,7,11,7,8,10,7,6,4,6,5,7,7,11,10,7,9,8,8,5,6,8,8,5,11,11,7,9,8,5,4,6,6,8,7,12,8,9,8,8,6,6,7,9,8,5,10,11,10,9,7,10,10,8,8,6,6,13,11,10,9,11,7,7,7,8,9,9];这个是粒子群优化后的参数及规则。请问是不是得把优化的参数给它们排个序再使用吗?为什么运行不了呢? |
» 猜你喜欢
谈谈两天一夜的“延安行”
已经有15人回复
EST投稿状态问题
已经有6人回复
职称评审没过,求安慰
已经有15人回复
垃圾破二本职称评审标准
已经有11人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有16人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
聘U V热熔胶研究人员
已经有10人回复
求助文献
已经有3人回复
投稿返修后收到这样的回复,还有希望吗
已经有8人回复
三无产品还有机会吗
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
动力学方程组参数求解问题
已经有9人回复
comsol保存为m文件,怎样在m文件里面加入for循环
已经有8人回复
matlab程序错误,提示如下【弄了半夜还是不行】
已经有10人回复
matlab 运行ode45出错,不知道什么原因
已经有4人回复
运行bands.x出错
已经有5人回复
MATLAB解方程提示错误‘is not a valid expression equation’
已经有10人回复
急!lammps安装修改makefile.g++文件后运行出错。
已经有12人回复
用matlab制作的M文件保存在哪里才能直接调用?
已经有9人回复
matlab一运行就出现的问题
已经有7人回复
matlab 语言错误
已经有4人回复
matlab程序中调用m文件的问题
已经有13人回复
matlab的m文件关联问题
已经有17人回复
Matlab程序 运行结束 提示
已经有5人回复
MATLAB可以在Android手机上运行了 Android版MATLAB下载使用
已经有33人回复
打开 .fchk 文件总是出错
已经有7人回复
关于linux里运行mathematica的.nb文件
已经有4人回复
粘过来的m文件怎么都运行不了?
已经有4人回复
matlab m文件运行出错
已经有4人回复
同样的MATLAB程序,为何在别人的电脑上运行不了
已经有21人回复
【求助】matlab 中,几个m文件调用
已经有14人回复
【求助】BSSE of O2运行出错
已经有17人回复














; %每一列堆叠
回复此楼