مهندس ببخشید،
قبلاً یه کد فازی نوشته بودی که میومد یک رنج از اعداد رو به دو گروه تقسیم می کردد. من یه مقاله دیدم که میومد قوانین فازی و توابع عضویت رو با استفاده از الگوریتم بهینه سازی، بهینه میکرد تا جواب بهتری بگیریم. حالا این کدی که پایین میذارم زیاد قانون و توابع عضویت نداره. اگه زیاد باشه میشه از این الگوریتمها استفاده کرد. میخوام بدونم چطوری این فازی با این الگوریتم ها ارتباط برقرار میکنه؟شما اطلاعی دارید؟
مثلاً بشه قوانین و توابع عضویت یک سیستم فازی رو با الگوریتم ژنتیک، PSO و یا cuckoo بهینه سازی کرد!
clc;
clear all;
close all;

P =unifrnd(1,100,1,20);
Range=0:100;
aa = newfis ('sefroyek', 'sugeno', ...
'min', 'max', ...
'min', 'max', 'wtaver');
aa = addvar (aa, 'input', 'P', [min(Range) max(Range)]);
aa = addmf (aa, 'input', 1, 'Low', 'trapmf', [min(Range)-5 min(Range) range(Range)*0.45+min(Range) range(Range)*0.55+min(Range)]);
aa = addmf (aa, 'input', 1, 'High', 'trapmf', [range(Range)*0.45+min(Range) range(Range)*0.55+min(Range) max(Range) max(Range)+5]);
aa = addvar (aa, 'output', 'sefroyek', [0 1]);
aa = addmf (aa, 'output', 1, 'Low', 'constant', 0);
aa = addmf (aa, 'output', 1, 'High', 'constant',1);
aa = addrule (aa, [1 1 1 1;2 2 1 1]);
% plotfis(aa)
figure
plotmf (aa, 'input', 1);
% plotmf (aa, 'output', 1);
pp=evalfis(P,aa) ;
fprintf('\n\nCoalition of Group 1 :\n P1 =');
iGroup1=find(pp<0.5);
P1=P(iGroup1); disp(P1);
fprintf('\n\nCoalition of Group 2 :\n P2 =');
iGroup2=find(pp>=0.5);
P2=P(iGroup2); disp(P2);