% Fuzzy rules and its implementation
close all; clear; clc
fuzzy_Mamdani = newfis('FL power switching.fis'); %%%%%%%%%%%%%%%Step1: Fuzzification of the input and output variables%%%%%% %% Input variables fuzzy_Mamdani.input(1).name = 'Load power'; fuzzy_Mamdani.input(1).range = [0 1]; fuzzy_Mamdani.input(1).mf(1).name = 'Low'; fuzzy_Mamdani.input(1).mf(1).type = 'trimf'; fuzzy_Mamdani.input(1).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.input(1).mf(2).name = 'Medium'; fuzzy_Mamdani.input(1).mf(2).type = 'trimf'; fuzzy_Mamdani.input(1).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.input(1).mf(3).name = 'High'; fuzzy_Mamdani.input(1).mf(3).type = 'trimf'; fuzzy_Mamdani.input(1).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.input(2).name = 'Solar power'; fuzzy_Mamdani.input(2).range = [0 1]; fuzzy_Mamdani.input(2).mf(1).name = 'Low'; fuzzy_Mamdani.input(2).mf(1).type = 'trimf'; fuzzy_Mamdani.input(2).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.input(2).mf(2).name = 'Medium'; fuzzy_Mamdani.input(2).mf(2).type = 'trimf'; fuzzy_Mamdani.input(2).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.input(2).mf(3).name = 'High'; fuzzy_Mamdani.input(2).mf(3).type = 'trimf'; fuzzy_Mamdani.input(2).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.input(3).name = 'Wind power'; fuzzy_Mamdani.input(3).range = [0 1]; fuzzy_Mamdani.input(3).mf(1).name = 'Low'; fuzzy_Mamdani.input(3).mf(1).type = 'trimf'; fuzzy_Mamdani.input(3).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.input(3).mf(2).name = 'Medium'; fuzzy_Mxrfdddddddddddddddddddddddddccccsx .amdani.input(3).mf(2).type = 'trimf'; fuzzy_Mamdani.input(3).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.input(3).mf(3).name = 'High'; fuzzy_Mamdani.input(3).mf(3).type = 'trimf'; fuzzy_Mamdani.input(3).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.input(4).name = 'Storage power'; fuzzy_Mamdani.input(4).range = [0 1]; fuzzy_Mamdani.input(4).mf(1).name = 'Low'; fuzzy_Mamdani.input(4).mf(1).type = 'trimf'; fuzzy_Mamdani.input(4).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.input(4).mf(2).name = 'Medium'; fuzzy_Mamdani.input(4).mf(2).type = 'trimf'; fuzzy_Mamdani.input(4).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.input(4).mf(3).name = 'High'; fuzzy_Mamdani.input(4).mf(3).type = 'trimf'; fuzzy_Mamdani.input(4).mf(3).params = [0.5 0.7 1];
% outputs
fuzzy_Mamdani.output(1).name = 'G2L'; fuzzy_Mamdani.output(1).range = [0 1]; fuzzy_Mamdani.output(1).mf(1).name = 'Low'; fuzzy_Mamdani.output(1).mf(1).type = 'trimf'; fuzzy_Mamdani.output(1).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(1).mf(2).name = 'Medium'; fuzzy_Mamdani.output(1).mf(2).type = 'trimf'; fuzzy_Mamdani.output(1).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(1).mf(3).name = 'High'; fuzzy_Mamdani.output(1).mf(3).type = 'trimf'; fuzzy_Mamdani.output(1).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(2).name = 'PV2L'; fuzzy_Mamdani.output(2).range = [0 1]; fuzzy_Mamdani.output(2).mf(1).name = 'Low'; fuzzy_Mamdani.output(2).mf(1).type = 'trimf'; fuzzy_Mamdani.output(2).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(2).mf(2).name = 'Medium'; fuzzy_Mamdani.output(2).mf(2).type = 'trimf'; fuzzy_Mamdani.output(2).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(2).mf(3).name = 'High'; fuzzy_Mamdani.output(2).mf(3).type = 'trimf'; fuzzy_Mamdani.output(2).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(3).name = 'W2L'; fuzzy_Mamdani.output(3).range = [0 1]; fuzzy_Mamdani.output(3).mf(1).name = 'Low'; fuzzy_Mamdani.output(3).mf(1).type = 'trimf'; fuzzy_Mamdani.output(3).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(3).mf(2).name = 'Medium'; fuzzy_Mamdani.output(3).mf(2).type = 'trimf'; fuzzy_Mamdani.output(3).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(3).mf(3).name = 'High'; fuzzy_Mamdani.output(3).mf(3).type = 'trimf'; fuzzy_Mamdani.output(3).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(4).name = 'BAT2L'; fuzzy_Mamdani.output(4).range = [0 1]; fuzzy_Mamdani.output(4).mf(1).name = 'Low'; fuzzy_Mamdani.output(4).mf(1).type = 'trimf'; fuzzy_Mamdani.output(4).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(4).mf(2).name = 'Medium'; fuzzy_Mamdani.output(4).mf(2).type = 'trimf'; fuzzy_Mamdani.output(4).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(4).mf(3).name = 'High'; fuzzy_Mamdani.output(4).mf(3).type = 'trimf'; fuzzy_Mamdani.output(4).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(5).name = 'PV2BAT'; fuzzy_Mamdani.output(5).range = [0 1]; fuzzy_Mamdani.output(5).mf(1).name = 'Low'; fuzzy_Mamdani.output(5).mf(1).type = 'trimf'; fuzzy_Mamdani.output(5).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(5).mf(2).name = 'Medium'; fuzzy_Mamdani.output(5).mf(2).type = 'trimf'; fuzzy_Mamdani.output(5).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(5).mf(3).name = 'High'; fuzzy_Mamdani.output(5).mf(3).type = 'trimf'; fuzzy_Mamdani.output(5).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(6).name = 'W2BAT'; fuzzy_Mamdani.output(6).range = [0 1]; fuzzy_Mamdani.output(6).mf(1).name = 'Low'; fuzzy_Mamdani.output(6).mf(1).type = 'trimf'; fuzzy_Mamdani.output(6).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(6).mf(2).name = 'Medium'; fuzzy_Mamdani.output(6).mf(2).type = 'trimf'; fuzzy_Mamdani.output(6).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(6).mf(3).name = 'High'; fuzzy_Mamdani.output(6).mf(3).type = 'trimf'; fuzzy_Mamdani.output(6).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(7).name = 'G2BAT'; fuzzy_Mamdani.output(7).range = [0 1]; fuzzy_Mamdani.output(7).mf(1).name = 'Low'; fuzzy_Mamdani.output(7).mf(1).type = 'trimf'; fuzzy_Mamdani.output(7).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(7).mf(2).name = 'Medium'; fuzzy_Mamdani.output(7).mf(2).type = 'trimf'; fuzzy_Mamdani.output(7).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(7).mf(3).name = 'High'; fuzzy_Mamdani.output(7).mf(3).type = 'trimf'; fuzzy_Mamdani.output(7).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(8).name = 'PV2ELEC'; fuzzy_Mamdani.output(8).range = [0 1]; fuzzy_Mamdani.output(8).mf(1).name = 'Low'; fuzzy_Mamdani.output(8).mf(1).type = 'trimf'; fuzzy_Mamdani.output(8).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(8).mf(2).name = 'Medium'; fuzzy_Mamdani.output(8).mf(2).type = 'trimf'; fuzzy_Mamdani.output(8).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(8).mf(3).name = 'High'; fuzzy_Mamdani.output(8).mf(3).type = 'trimf'; fuzzy_Mamdani.output(8).mf(3).params = [0.5 0.7 1];
fuzzy_Mamdani.output(9).name = 'W2ELEC'; fuzzy_Mamdani.output(9).range = [0 1]; fuzzy_Mamdani.output(9).mf(1).name = 'Low'; fuzzy_Mamdani.output(9).mf(1).type = 'trimf'; fuzzy_Mamdani.output(9).mf(1).params = [0 0.2 0.4]; fuzzy_Mamdani.output(9).mf(2).name = 'Medium'; fuzzy_Mamdani.output(9).mf(2).type = 'trimf'; fuzzy_Mamdani.output(9).mf(2).params = [0.2 0.5 0.7]; fuzzy_Mamdani.output(9).mf(3).name = 'High'; fuzzy_Mamdani.output(9).mf(3).type = 'trimf'; fuzzy_Mamdani.output(9).mf(3).params = [0.5 0.7 1]; %%%%%Rules evaluation and inference system%%%%%%%%%%%
cold_Mamdani.rule(1).antecedent = [1 1 1 1]; cold_Mamdani.rule(1).consequent = [1 1 1 1 1 1 3 1 1]; cold_Mamdani.rule(1).weight = 1; cold_Mamdani.rule(1).connection = 1;
cold_Mamdani.rule(2).antecedent = [1 1 1 2]; cold_Mamdani.rule(2).consequent = [1 1 1 2 1 1 1 1 1]; cold_Mamdani.rule(2).weight = 1; cold_Mamdani.rule(2).connection = 1;
cold_Mamdani.rule(3).antecedent = [1 1 1 3]; cold_Mamdani.rule(3).consequent = [1 1 1 3 1 1 1 1 1]; cold_Mamdani.rule(3).weight = 1; cold_Mamdani.rule(3).connection = 1;
cold_Mamdani.rule(4).antecedent = [1 1 2 1]; cold_Mamdani.rule(4).consequent = [1 1 2 1 1 2 1 1 1]; cold_Mamdani.rule(4).weight = 1; cold_Mamdani.rule(4).connection = 1;
cold_Mamdani.rule(5).antecedent = [1 1 2 2]; cold_Mamdani.rule(5).consequent = [1 1 2 1 1 1 1 1 1]; cold_Mamdani.rule(5).weight = 1; cold_Mamdani.rule(5).connection = 1;
cold_Mamdani.rule(6).antecedent = [1 1 2 3]; cold_Mamdani.rule(6).consequent = [1 1 2 1 1 1 1 1 1]; cold_Mamdani.rule(6).weight = 1; cold_Mamdani.rule(6).connection = 1;
cold_Mamdani.rule(7).antecedent = [1 1 3 1]; cold_Mamdani.rule(7).consequent = [1 1 3 1 1 2 1 1 1]; cold_Mamdani.rule(7).weight = 1; cold_Mamdani.rule(7).connection = 1;
cold_Mamdani.rule(8).antecedent = [1 1 3 2]; cold_Mamdani.rule(8).consequent = [1 1 3 1 1 2 3 1 1]; cold_Mamdani.rule(8).weight = 1; cold_Mamdani.rule(8).connection = 1;
cold_Mamdani.rule(9).antecedent = [1 1 3 3]; cold_Mamdani.rule(9).consequent = [1 1 3 1 1 1 1 1 2]; cold_Mamdani.rule(9).weight = 1; cold_Mamdani.rule(9).connection = 1;
cold_Mamdani.rule(10).antecedent = [1 2 1 1]; cold_Mamdani.rule(10).consequent = [1 2 1 1 2 1 1 1 1]; cold_Mamdani.rule(10).weight = 1; cold_Mamdani.rule(10).connection = 1;
cold_Mamdani.rule(11).antecedent = [1 2 1 2]; cold_Mamdani.rule(11).consequent = [1 2 1 1 2 1 1 1 1]; cold_Mamdani.rule(11).weight = 1; cold_Mamdani.rule(11).connection = 1;
cold_Mamdani.rule(12).antecedent = [1 2 1 3]; cold_Mamdani.rule(12).consequent = [1 2 1 1 1 1 1 2 1]; cold_Mamdani.rule(12).weight = 1; cold_Mamdani.rule(12).connection = 1;
cold_Mamdani.rule(13).antecedent = [1 2 2 1]; cold_Mamdani.rule(13).consequent = [1 2 1 1 1 2 1 2 1]; cold_Mamdani.rule(13).weight = 1; cold_Mamdani.rule(13).connection = 1;
cold_Mamdani.rule(14).antecedent = [1 2 2 2]; cold_Mamdani.rule(14).consequent = [1 2 1 1 1 2 1 1 1]; cold_Mamdani.rule(14).weight = 1; cold_Mamdani.rule(14).connection = 1;
cold_Mamdani.rule(15).antecedent = [1 2 2 3]; cold_Mamdani.rule(15).consequent = [1 2 1 1 1 1 1 1 2]; cold_Mamdani.rule(15).weight = 1; cold_Mamdani.rule(15).connection = 1; plotfis(fuzzy_Mamdani);
error Index exceeds matrix dimensions.
Error in discfis (line 69) mfType=deblank(mfTypeList(mfIndex2,:));
Error in plotfis (line 57) [xi,yi,xo,yo,r]=discfis(fis,181);
Error in fuzzy_rules (line 243) plotfis(fuzzy_Mamdani);