Набор инструментов нечеткой логики Matlab

Я получаю следующую ошибку при написании кода Matlab с использованием набора инструментов нечеткой логики и не могу ее решить.

Ошибка при использовании evalfismex
Недопустимые параметры в fisTriangleMf() --> a > b
Ошибка в evalfis (строка 83)
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
Ошибка в Untitl (строка 45)
evalfis([1 0.5],fis)

Ниже приведен код Matlab: В коде значения 0 1 представляют значения cos при 90 градусах и 180 градусах. По сути, мне нужно построить график между EP и различными значениями cos под разными углами. Но я не могу пройти вышеупомянутую ошибку.

fis = newfis('force');
fis.input(1).name = 'x1';
fis.input(1).range = [0 1];
fis.input(1).mf(1).name = 'NS';
fis.input(1).mf(1).type = 'trimf';
fis.input(1).mf(1).params = [1 0 1];
fis.input(1).mf(2).name = 'NB';
fis.input(1).mf(2).type = 'trimf';
fis.input(1).mf(2).params = [0 1 0];
fis.input(1).mf(3).name = 'Z';
fis.input(1).mf(3).type = 'trimf';
fis.input(1).mf(3).params = [0 1 0];

% input 2
fis.input(2).name = 'x2';
fis.input(2).range = [0 1];
fis.input(2).mf(1).name = 'PS';
fis.input(2).mf(1).type = 'trimf';
fis.input(2).mf(1).params = [0 1 0];
fis.input(2).mf(2).name = 'PB';
fis.input(2).mf(2).type = 'trimf';
fis.input(2).mf(2).params = [1 0 1];

% output
fis.output(1).name = 'EP';
fis.output(1).range = [0 1];
fis.output(1).mf(1).name = 'NME';
fis.output(1).mf(1).type = 'trimf';
fis.output(1).mf(1).params = [1 0];
fis.output(1).mf(2).name = 'NE';
fis.output(1).mf(2).type = 'trimf';
fis.output(1).mf(2).params = [0 1 ];
fis.output(1).mf(3).name = 'ME';
fis.output(1).mf(3).type = 'trimf';
fis.output(1).mf(3).params = [0 1];

% Rules
fis.rule(1).antecedent = [1 1];
fis.rule(1).consequent = 1;
fis.rule(1).weight = 1;
fis.rule(1).connection = 2;
fis.rule(2).antecedent = [2 0];
fis.rule(2).consequent = 2;
fis.rule(2).weight = 1;
fis.rule(2).connection = 1;
fis.rule(3).antecedent = [3 2];
fis.rule(3).consequent = 3;
fis.rule(3).weight = 1;
fis.rule(3).connection = 2;

evalfis([1 0.5],fis)

Любая помощь будет действительно оценена.


person hsyeda    schedule 05.03.2018    source источник


Ответы (1)


Проблема в том, что вы предоставляете недопустимые параметры для треугольной функции принадлежности. Он должен принимать три параметра, скажем, a, b и c, так что a < b < c, где, цитируя онлайн-документация MATLAB,

Параметры a и c определяют «ножки» треугольника, а параметр b определяет пик.

Тем не менее, я рекомендую вам использовать нечеткий графический интерфейс MATLAB для создания вашей системы. Возможно, что-то не так с вашими правилами.

person Diego Stéfano    schedule 05.03.2018