Существуют различные пакеты, реализующие подходы к нечеткой логике. Наиболее яркими представителями являются следующие 3 пакета:
- FuzzyTech;
- CubiCalc;
- FuzzyCalc;
- Бизнеспрогноз.
FuzzyTech – пакет позволяет проектировать и отлаживать Fuzzy-системы. Конечным продуктом разработки системы является генерирующий при помощи программных модулей пакет содержит два редактора:
1. Редактор для создания и работы с лингвистическими переменными;
2. Редактор для работы с базой Fuzzy-правил.
Редактор для работы с лингвистическими переменными позволяет графически определить для каждого из возможных значений функцию принадлежности. В этом пакете функция принадлежности определяется при помощи координат или так называемых точек определения. Точки определения связывают линейными или нелинейными функциями. В пакете, как правило, используется четыре стандартные функции zi, λi, pi, si.
Функции принадлежности обычно нормализуют стандартные MBF-функции и задаются графически по следующему алгоритму:
Шаг 1. Для каждого значения лингвистической переменной определяется самое типичное численное значение. В этой точки функции принадлежности присваивается значение единица.
Шаг 2. Значение ноль присваивается функции принадлежности в граничной точке, которая является самой типичной уже для другого (соседнего) значения лингвистической переменой.
Шаг 3. Точки 1 и 0 связываются соответствующими линиями.
Шаг 4. Для самого правого и самого левого на оси X значения лингвистической переменной используется соответствующий S-тип и Z-тип функции принадлежности.
Функции принадлежности могут быть нелинейными. Наиболее точно соответствуют требованиям, предъявляемым к функциям принадлежности, одна из нелинейных функций которых, называется кубический сплайн.
Вторая часть пакета – это редактор для работы с базой правил. Блоки правил осуществляют стратегии управления к базе системы. Каждый блок правил включает все правила для принятия решения. Решение полностью определяется входными и выходными переменными и правилами. Процесс выполнения правила начинается с проверки выполнения условия «если». Оператор типа блока правил определяет какой метод исполняется. Существуют следующие виды операторов:
1. MIN – MAX
2. MIN – AVG
3. GAMMA
Пример:
Моделирование работы светофора в нечеткой логике.
В предлагаемом нечетком светофоре время цикла остается постоянным, однако, время его работы в режиме зеленого света должно меняться в зависимости от количества подъезжающих к перекрестку машин. Пусть время цикла традиционного и нечеткого светофоров будет одинаковым и равным 1мин.=60сек. Длительность зеленого света обычного светофора зададим 30сек., тогда красный свет будет гореть тоже 30сек.
Для работы нечеткого светофора на перекрестке улиц Север-Юг (СЮ) и Запад-Восток (ЗВ) необходимо установить 8 датчиков (рис.1), которые считают проехавшие мимо них машины.
Светофор использует разности показаний четырех пар датчиков: (Д1-Д2), (Д3-Д4), (Д5-Д6) и (Д7-Д8). Таким образом, если для улицы СЮ горит зеленый свет, машины проезжают перекресток и показания двух пар датчиков равны: Д1=Д2, Д5=Д6, а, следовательно, их разность равна нулю. В это же время на улице ЗВ перед светофором останавливаются машины, которые успели проехать только Д4 и Д7. В результате можно рассчитать суммарное количество автомобилей на этой улице следующим образом:
(Д4-Д3)+(Д7-Д8)=(Д4-0)+(Д7-0)=Д4+Д7.
Для сравнения работы обоих светофоров введем показатель эффективности, в качестве которого будем рассматривать число машин, не проехавших перекресток за один цикл светофора.
Поскольку работа светофора зависит от числа машин на обеих улицах и текущего времени зеленого света, для нашей подпрограммы предлагается использовать 3 входа: число машин на улице СЮ по окончанию очередного цикла, число машин на улице ЗВ по окончанию цикла и время зеленого света нечеткого светофора.
Теперь для каждой переменной надо задать лингвистические термы, соответствующие некоторым диапазонам четких значений. Так, для переменной время зеленого света предлагается использовать три терма (рис.2):
малое (10-25сек.);
среднее(20-40сек.);
· большое(35-50сек.).
Рис.2. Функция принадлежности первой входной переменной.
Аналогично, термы для двух оставшихся переменных будут (рис.3):
очень малое (0-18);
малое (16-36);
среднее (34-56);
большое (54-76);
· очень большое (72-90).
Рис.3. Функция принадлежности второй и третьей входных переменных.
Так как суть работы светофора состоит в изменении времени зеленого света, в качестве выходного параметра предлагается использовать величину этого изменения. Термы в этом случае будут следующие:
уменьшить (-20-0сек.);
не изменять (-15-15сек.);
увеличить (0-20сек.).
Рис.4. Функция принадлежности выходной переменной.
Кроме того, в подпрограмму записывается таблица правил на основе условных высказываний, которая формирует выходное значение исходя из величин входных параметров, например:
Если (число машин на улице СЮ=малое)&(число машин на улице ЗВ=большое)&(время зеленого света на улице СЮ=большое), то (время зеленого света=уменьшить).