/>
4.2.5 Умова зупину
Робота алгоритму являє собою ітераційний процес, який триває до виконання однієї з умов зупину:
- виконання заданого числа поколінь;
- припинення поліпшення популяції.
ГЛАВА 5. ОПИС ПРОГРАМИ
Програма розроблена в середовищі Microsoft Visual Studio +2012, мова програмування - C #. Мова програмування C #, створений спеціально для платформи Microsoft .NET Framework, взяв усе найкраще з мов C ++ і Java і тому дозволяє ефективно описати і реалізувати нечітку систему і генетичний алгоритм з використанням прийомів об'єктно-орієнтованого програмування. З іншого боку, платформа .NET Framework дає можливість швидко створити зручний і красивий користувальницький інтерфейс, зосередивши тим самим всю увагу на реалізації поставленого завдання.
5.1 Функціональні можливості
Програма знаходить оптимальний набір правил, минимизирующий среднеквадратическую помилку апроксимації. В якості тестової була обрана функція через те, щоб наочно продемонструвати результат. Рішення шукається модифікованим генетичним алгоритмом - еволюційної стратегією. Для отримання результату необхідно задати наступні вхідні параметри:
- t-норму
- s-норму
- імплікації
- дефазифікації
- ліву і праву кордону нечітких множин
- число точок у дискретному поданні нечіткої множини
- число ітерацій генетичного алгоритму
- число правил в шуканої базі знань
Оператори t-норми, s-норми, імплікації і дефазифікації вибираються зі списку. Реалізовано наступні оператори:
- t-норми і s-норми: Заде, Фодор, Алгебраїчна
- імплікація: Фодор, Райхенбах, Клині-Дінс, Заде
- дефазифікації - центр ваги (Center of Gravity - COG)
5.2 Представлення даних
Нечіткі змінні в програмі представлені двома класами: TrapezoidalVariable і DiscreteVariable .
TrapezoidalVariable являє собою трапецієподібну нечітку змінну, задаваемую чотирма параметрами a, b, c, d. Функція приналежності даної змінної має наступний вигляд:
DiscreteVariable являє собою нечітку змінну з функцією приналежності, заданої в кінцевому числі точок. Створення цього класу обумовлено тим, що в результаті застосування операції імплікації, t- або s-норми до трапецієподібним змінним, виходить змінна довільного виду.
Класи, описані вище, успадковані від базового класу Variable , і реалізують спільний для всіх нечітких змінних інтерфейс. Таким чином, у завдання не складе труднощів додати новий клас, більш точно описує яку-небудь нечітку змінну, який легко впишеться у вже побудовану систему.
5.3 Реалізація
В основі програми лежить наступний набір класів:
Variable
Являє собою базовий клас для нечіткої змінної.
LeftВозвращает ліву межу множества.RightВозвращает праву межу множества.mu () Повертає значення функції приналежності в заданій точці.
TrapezoidalVariable
Трапецієвидна нечітка змінна.
a, b, c, dПараметри трапецієподібної змінної.
DiscreteVariable
Нечітка змінна з функцією приналежності, заданої в кінцевому числі точок.
PointsВозвращает число точок сітки, на якій задана функція прінадлежності.StepВозвращает крок сітки, на якій задана функція прінадлежності.Set () Ставить у відповідність певній точці сітки значення функції приналежності в цій точці.
TNorm, SNorm, Implication, Defuzzification
Представляють собою статичні класи (класи, всі члени яких є статичними), що містять нечіткі операції. Кожен метод, що представляє собою нечітку операцію, позначається відповідним атрибутом: implicationAttribute, TNormAttribute, SNormAttribute, DefuzzificationAttribute. За допомогою цих атрибутів під час виконання можна знайти і використовувати всі доступні оператори. Таким чином, для додавання в програму нового оператора, достатньо описати його в одному з даних статичних класів і помітити відповідним аттрібутом. Опреатора в...