function [fis,MIN,MAX]=CreateInitialFIS(data)
inputData=data.TrainInputs;
outputData=data.TrainTargets;
%% Create FIS Structure
fisName='GEN_FIS';
fisType='mamdani';
andMethod='prod';
orMethod='max';
impMethod='min';
aggMethod='max';
defuzzMethod='centroid';
fis=newfis(fisName,fisType,andMethod,orMethod,impMethod,aggMethod,defuzzMethod);
%% Add Variables
%Input
Names = ["R87126" "H08393" "X6329" "R36977" "H43887" "H40095" "R42501" "M22382" "M26383" "J02854"];
for i=1:size(inputData,2)
MIN = min(inputData);
MAX = max(inputData);
fis = addvar(fis,'input',Names(i),[(MIN(i)-0.8*(MAX(i)-MIN(i))) (MAX(i)+0.8*(MAX(i)-MIN(i)))]);
% % Create MFs randomly
temp = zeros(1,11); %% 11 = 4+3+4
for j=1:11
if j==1
temp(j) =(MIN(i)-0.8*(MAX(i)-MIN(i))); %-inf;
elseif j==2
temp(j) =(MIN(i)-0.8*(MAX(i)-MIN(i)));
elseif j==3
temp(j) = temp(2) + (temp(10)-temp(2)).*rand(1);
elseif j ==10
temp(j) = (MAX(i)+0.8*(MAX(i)-MIN(i)));
elseif j ==11
temp(j) = (MAX(i)+0.8*(MAX(i)-MIN(i)));
elseif j==4
temp(j) = temp(3) + (temp(10)-temp(3)).*rand(1);
elseif j==5
temp(j) =temp(3) + (temp(4)-temp(3)).*rand(1);
elseif j==6
temp(j) = temp(5) + (temp(10)-temp(5)).*rand(1);
elseif j==7
temp(j) = temp(6) + (temp(10)-temp(6)).*rand(1);
elseif j== 8
temp(j) = temp(6) + (temp(7)-temp(6)).*rand(1);
elseif j==9
temp(j) =temp(8) + (temp(10)-temp(8)).*rand(1);
end
end
fis=addmf(fis,'input',i,'L','trapmf',temp(1:4));
fis=addmf(fis,'input',i,'M','trimf',temp(5:7));
fis=addmf(fis,'input',i,'H','trapmf',temp(8:11));
end
% Output
fis = addvar(fis,'output','class',[0 1]);
fis=addmf(fis,'output',1,'Zero','trimf',[0,0.2,0.45]);
fis=addmf(fis,'output',1,'One','trimf',[0.55,0.75,1]);
% fis=addmf(fis,'output',1,'two','trimf',[0.25,0.5,0.75]);
% % Create rules randolly
Num = 300;
temp = randi([0 1],Num,22);
temp2 = 1;
for k=1:Num
if temp(k,1)==1
temp3 = zeros(1,size(inputData,2));
for l=1:size(inputData,2)
if isequal(temp(k,2*l:2*l+1),[0,0])
temp3(l) = 0; %% Dont care
elseif isequal(temp(2*l:2*l+1),[0,1])
temp3(l) = 1; %% Low
elseif isequal(temp(2*l:2*l+1),[1,0])
temp3(l) = 2; %% Medium
elseif isequal(temp(2*l:2*l+1),[1,1])
temp3(l) = 3; %% High
end
end
Rules(temp2,1:size(inputData,2)) = temp3;
Rules(temp2,size(inputData,2)+1) = randi([1,2]);
Rules(temp2,[size(inputData,2)+2,size(inputData,2)+3]) = [1,1];
temp2 = temp2+1;
end
end
fis = addrule(fis,Rules);
% fis = genfis3(inputData,outputData,'mamdani',3);
end