четверг, 3 октября 2013 г.

Octave + Fuzzy Logic Toolkit

По этой связке хорошо помогают работать следующие ссылки:
http://octave.sourceforge.net/fuzzy-logic-toolkit/overview.html
http://radio.feld.cvut.cz/matlab/toolbox/fuzzy/fuzzyt23.html

Во второй ссылке описывается формат системы нечеткого вывода в Matlab,  который состоит из входов, выходов и правил соответствия, которым соответствуют веса. Треугольной функции принадлежности соответствует функция trimf, после которой должен идти список (в квадратных скобках из трех элементов).

Не совсем понятен, параметр connection - но значение 1 туда подходит.

Еще возможной проблемой является то, что нельзя в названии значений входов и выходов использовать пробелы. Octave тогда ломается и выдает стектрейс.

Для разработки имеет смысл использовать плагин для NetBeans - OctaveNB, который предоставляет чуть ли не REPL для Octave.

Сам скрипт будет состоять из трех команд:

% Читаем систему из файла в переменную fis
fis = readfis("system.fis"); 
% Проводим вывод на системе
results = evalfis([[0.5], [-0.5]], fis);
% Показываем результаты
disp(results);

Где [[0.5], [-0.5]] - матрица, в которой каждая строка - массив значений для входа N. На выходе, соответственно - матрица значений для выходов.

Довольно легко и просто!