Цю статтю треба для відповідності Вікіпедії. (вересень 2013) |
Алгоритм Мамдані — алгоритм нечіткого логічного виводу по базі знань (базі правил). Отримав назву від імені англійського математика Ебрахіма Мамдані (Ebrahim Mamdani), який запропонував його 1974 року.
Алгоритм використовується переважно в задачах нечіткого моделювання, де дозволяє значно зменшити обсяги обчислень.[]
Означення
Формується в предметній області у вигляді нечітких предикатних правил виду:
- П1: якщо x є A1, тоді z є B1,
- П2: якщо x є A2, тоді z є B2,
- . . . . . . . . . .
- Пn: якщо x є An, тоді z є Bn,
Де х — вхідна змінна(ім'я для відомих значень даних), z — змінна виводу(ім'я для значення даних, яке буде обчислене). Ai та Bi — нечіткі множини, визначені на X та Z відповідно за допомогою функції приналежності та (z).
Математичне трактування
У представленій ситуації даних вивід у формі алгоритму Мамдані математично можна представити наступним чином.
1. Введення нечіткості (fuzzification): для заданого(чіткого) значення аргументу х = х0 знаходяться степені істинності для передумов кожного правила аі = (х0).
2. Нечіткий вивід: знаходиться рівні відсічення для передумов кожного з правил (з використання правила мінімуму):
де через позначено операцію логічного мінімуму.
Потім знаходяться усічені функції належності:
3. Композиція: з використанням операції max (позначеної як ) виконується об'єднання знайдених усічених функцій, що приводить до отримання підсумкової нечіткої підмножини для змінної виходу з функцією належності.
Реалізація
private List<UnionOfFuzzySets> accumulation(List<ActivatedFuzzySet> activatedFuzzySets) { List<UnionOfFuzzySets> unionsOfFuzzySets = new ArrayList<UnionOfFuzzySets>(numberOfOutputVariables); for (Rule rule : rules) { for (Conclusion conclusion : rule.getConclusions()) { int id = conclusion.getVariable().getId(); unionsOfFuzzySets.get(id).addFuzzySet(activatedFuzzySets.get(id)); } } return unionsOfFuzzySets; } private double getMaxValue(double x) { double result = 0.0; for (FuzzySet fuzzySet : fuzzySets) { result = Math.max(result, fuzzySet.getValue(x)); } return result; }
4. Приведення до чіткості (для знаходження z0) виконується центроїдним методом (як центр тяжіння для кривої функції належності):
Реалізація
private double[] defuzzification(List<UnionOfFuzzySets> unionsOfFuzzySets) { double[] y = new double[numberOfOutputVariables]; for(int i = 0; i < numberOfOutputVariables; i++) { double i1 = integral(unionsOfFuzzySets.get(i), true); double i2 = integral(unionsOfFuzzySets.get(i), false); y[i] = i1 / i2; } return y; }
Приклад даного правила
якщо x — низько, то z — високо.
Механізм нечіткого виводу при апроксимації функції z(x) можна представити у вигляді: Передумова:
- П1: якщо x є A1, тоді z є B1,
- П2: якщо x є A2, тоді z є B2,
- . . . . . . . . . .
- Пn: якщо x є An, тоді z є Bn,
Факт: x є A
Наслідок: z є B
Реалізації
Алгоритм Мамдані реалізовано в пакетах Fuzzy Logic Toolbox (розширення для MATLAB), fuzzyTECH та інших.
Примітки
- Mamdani, E. H., Application of fuzzy algorithms for the control of a simple dynamic plant. In Proc IEEE (1974), 121–159.
Література
- Алгоритмы нечёткого вывода: алгоритм Мамдани и алгоритм Сугэно. // В. Дьяконов, В. Круглов. Математические пакеты расширения MATLAB. Специальный справочник. — Санкт-Петербург: Питер, 2001 — С. 307–309
- Штовба С. Д. Проектирование нечетких систем средствами MATLAB / С. Штовба. — М: Горячая линия-Телеком, 2007. — 288 с.
- Леоненков А. В. Нечеткое моделирование в среде MATLAB и fuzzyTECH / А. Леоненков. — СПб: БХВ-Петербург, 2003. — 736 с.
Це незавершена стаття з математики. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cyu stattyu treba vikifikuvati dlya vidpovidnosti standartam yakosti Vikipediyi Bud laska dopomozhit dodavannyam dorechnih vnutrishnih posilan abo vdoskonalennyam rozmitki statti veresen 2013 Algoritm Mamdani algoritm nechitkogo logichnogo vivodu po bazi znan bazi pravil Otrimav nazvu vid imeni anglijskogo matematika Ebrahima Mamdani Ebrahim Mamdani yakij zaproponuvav jogo 1974 roku Algoritm vikoristovuyetsya perevazhno v zadachah nechitkogo modelyuvannya de dozvolyaye znachno zmenshiti obsyagi obchislen dzherelo OznachennyaFormuyetsya v predmetnij oblasti u viglyadi nechitkih predikatnih pravil vidu P1 yaksho x ye A1 todi z ye B1 P2 yaksho x ye A2 todi z ye B2 Pn yaksho x ye An todi z ye Bn De h vhidna zminna im ya dlya vidomih znachen danih z zminna vivodu im ya dlya znachennya danih yake bude obchislene Ai ta Bi nechitki mnozhini viznacheni na X ta Z vidpovidno za dopomogoyu funkciyi prinalezhnosti ta z Matematichne traktuvannyaU predstavlenij situaciyi danih vivid u formi algoritmu Mamdani matematichno mozhna predstaviti nastupnim chinom 1 Vvedennya nechitkosti fuzzification dlya zadanogo chitkogo znachennya argumentu h h0 znahodyatsya stepeni istinnosti dlya peredumov kozhnogo pravila ai h0 2 Nechitkij vivid znahoditsya rivni vidsichennya dlya peredumov kozhnogo z pravil z vikoristannya pravila minimumu a1 A1 x0 B1 y0 displaystyle alpha 1 A1 x0 land B1 y0 a2 A2 x0 B2 y0 displaystyle alpha 2 A2 x0 land B2 y0 de cherez displaystyle land poznacheno operaciyu logichnogo minimumu Potim znahodyatsya usicheni funkciyi nalezhnosti C1 z a1 C1 z displaystyle C 1 z alpha 1 land C 1 z C2 z a2 C2 z displaystyle C 2 z alpha 2 land C 2 z 3 Kompoziciya z vikoristannyam operaciyi max poznachenoyi yak displaystyle lor vikonuyetsya ob yednannya znajdenih usichenih funkcij sho privodit do otrimannya pidsumkovoyi nechitkoyi pidmnozhini dlya zminnoyi vihodu z funkciyeyu nalezhnosti M z C z C1 z C2 z a1 C1 z a2 C2 z displaystyle M z C z C 1 z lor C 2 z alpha 1 land C 1 z lor alpha 2 land C 2 z Realizaciya private List lt UnionOfFuzzySets gt accumulation List lt ActivatedFuzzySet gt activatedFuzzySets List lt UnionOfFuzzySets gt unionsOfFuzzySets new ArrayList lt UnionOfFuzzySets gt numberOfOutputVariables for Rule rule rules for Conclusion conclusion rule getConclusions int id conclusion getVariable getId unionsOfFuzzySets get id addFuzzySet activatedFuzzySets get id return unionsOfFuzzySets private double getMaxValue double x double result 0 0 for FuzzySet fuzzySet fuzzySets result Math max result fuzzySet getValue x return result 4 Privedennya do chitkosti dlya znahodzhennya z0 vikonuyetsya centroyidnim metodom yak centr tyazhinnya dlya krivoyi funkciyi nalezhnosti z0 minmaxz M z dz minmaxM z dz displaystyle z0 int min max z M z dz over int min max M z dz Realizaciya private double defuzzification List lt UnionOfFuzzySets gt unionsOfFuzzySets double y new double numberOfOutputVariables for int i 0 i lt numberOfOutputVariables i double i1 integral unionsOfFuzzySets get i true double i2 integral unionsOfFuzzySets get i false y i i1 i2 return y Priklad danogo pravilayaksho x nizko to z visoko Mehanizm nechitkogo vivodu pri aproksimaciyi funkciyi z x mozhna predstaviti u viglyadi Peredumova P1 yaksho x ye A1 todi z ye B1 P2 yaksho x ye A2 todi z ye B2 Pn yaksho x ye An todi z ye Bn Fakt x ye A Naslidok z ye BRealizaciyiAlgoritm Mamdani realizovano v paketah Fuzzy Logic Toolbox rozshirennya dlya MATLAB fuzzyTECH ta inshih PrimitkiMamdani E H Application of fuzzy algorithms for the control of a simple dynamic plant In Proc IEEE 1974 121 159 LiteraturaAlgoritmy nechyotkogo vyvoda algoritm Mamdani i algoritm Sugeno V Dyakonov V Kruglov Matematicheskie pakety rasshireniya MATLAB Specialnyj spravochnik Sankt Peterburg Piter 2001 S 307 309 Shtovba S D Proektirovanie nechetkih sistem sredstvami MATLAB S Shtovba M Goryachaya liniya Telekom 2007 288 s Leonenkov A V Nechetkoe modelirovanie v srede MATLAB i fuzzyTECH A Leonenkov SPb BHV Peterburg 2003 736 s Ce nezavershena stattya z matematiki Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi