![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
hazamov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 24.4.2009 Репутация: нет Всего: нет |
Здравствуйте. Прочел статью "нечеткая логика в МВТУ" (http://reactors.ru/mvtu/mbtu_lab/FL/fuzzy_logic.htm).
Подробно объясняется процедура активизации и аккумуляции, и создается блок, в котором обе эти процедуры осуществлены. Блок программируется
А что за параметр x? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
по-моему, это не совсем с++ ;)
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
17dufa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
hazamov, x - это конкретное значение из интервала возможных значений выходной переменной.
то есть если выходная переменная принимает значения от MIN до MAX, используя функцию AccProb можно построить аккумулированный график "степени истинности" для каждого конкретного значения от MIN до MAX. *затем проводится дефазификация, например, у этой фигуры вычисляется центр масс и получается конкретное значение выходной переменной. |
|||
|
||||
hazamov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 24.4.2009 Репутация: нет Всего: нет |
ok, спасибо 17dufa. Значит х в процедуре должен меняться от MIN до MAX? Процедура AccProb соответствует операции,отмеченной коричневыми стрелками на прикрепленном рисунке, да?
Присоединённый файл ( Кол-во скачиваний: 12 ) ![]() |
|||
|
||||
17dufa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
hazamov, на картинках приведен другой способ активизации.
На картинках функция принадлежности B1 "обрубается" в соответствии с степенью истинности правила (A11 & A12 => B1). В приведенной Вами методичке используется другой метод: вся функция принадлежности B1 умножается на степень истинности правила (A11 & A12 => B1), то есть как бы опускается: Допустим степень истинности правила равна 0.5, а функция принадлежности B1 равна 0, для X меньше 0.5, (X-0.5)*2 для X от 0,5 до 1, (1.5-X)*2 для X от 1 до 1.5, 0 для X больше 1.5 (треугольный горб вокруг 1). По правилу из рисунков результатом будет: 0, для X меньше 0, (X-0.5)*2 для X от 0.5 до 0.75, 0.5 для X от 0.75 до 1.25, (1.5-X)*2 для X от 1.25 до 1.5, 0 для X больше 1.5 (треугольному горбу сам горб срезали горизонтальной линией MF = 0.5) А по методе после корректировки функции принадлежности в соответствии с степенью истинности правила, получим: 0 для X меньше 0.5, X-0.5 для X от 0.5 до 1, 1.5-X для X от 1 до 1.5, 0 для X больше 1.5 (тоже треугольный горб вокруг 1, но более пологий, максимум уменьшился с 1 до 0.5). Советую эти 2 долгих объяснения нарисовать на бумаге, станет понятнее. кроме того, степень истинности правила для операции && определяется по-разному: в картинках - минимумом из 2 значений, в методе степень истинности правила равна произведению степеней принадлежности аргументов. Функция делает 2 операции сразу: и отмеченные стрелками и суммирование графиков для формирования итоговой картинки справа внизу. Центра масс функция не вычисляет. Это сообщение отредактировал(а) 17dufa - 7.12.2009, 14:55 |
|||
|
||||
hazamov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 24.4.2009 Репутация: нет Всего: нет |
Спасибо, 17dufa За подробное объяснение.
Различие между двумя методами понял. Но если перейти конкретно к функции AccProb( x).
А откуда берется значение Х ? Это ведь конкретное значение из универсума,которое является базой для нечеткого множества B1. А конкретного значение мы вроде получаем только после вычисления центра масс. Не так? |
|||
|
||||
17dufa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: 3 Всего: 5 |
hazamov, перебираются все значения, как бы строится итоговый график, который на рисунке справа внизу. То есть Функция AccProb позволяет для любого значения x получить значение этого итогового графика. Понять функцию AccProb оторвано сложно, лучше совместно с функцией дефазификации (вычисление центра масс):
с функцией AccProb действительно не все в порядке: во-первых, она выполняет 2 действия (активация и аккумуляция); во-вторых, ее нельзя рассматривать отдельно от результирующей функции, которая использует AccProb. *что-то у меня сомнения по поводу, не забыл ли я, как правильно считать центр масс. в частности чисто математически stepLength получается лишним, так как в дроби, описывающей ResultB он и в числителе и в знаменателе выносится за скобки и сокращается. Это сообщение отредактировал(а) 17dufa - 10.12.2009, 13:12 |
|||
|
||||
hazamov |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 24.4.2009 Репутация: нет Всего: нет |
Теперь всё понятно
![]() А в материале по той же ссылке даётся деффазификация:
Но то,что вы показали намного проще) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |