посоветуйте пакет по fuzzy logic - ответ: пока пакет sets

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
_Vitaliy_
Новоприбывший
Сообщения: 13
Зарегистрирован: 07 ноя 2013, 18:38
Репутация: 0

посоветуйте пакет по fuzzy logic - ответ: пока пакет sets

Сообщение _Vitaliy_ » 18 янв 2015, 09:10

Доброго времени суток.
Вопрос в принципе озвучен в шапке. Пробовал работать с пакетом "sets" с примерами разобрался но когда решил взять пример из другого источника и проверить его используя R ответ мягко говоря не сошелся. За основу примера было взято страница 17 (основной пример нечеткого вывода).
Если кто сталкивался в работе с системами нечеткого вывода посоветуйте линками или названием пакета с примерами, с которыми Вы разобрались и Вас устроили.
Последний раз редактировалось _Vitaliy_ 20 янв 2015, 19:03, всего редактировалось 1 раз.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: посоветуйте пакет по fuzzy logic

Сообщение gamm » 18 янв 2015, 12:21

_Vitaliy_ писал(а):Если кто сталкивался в работе с системами нечеткого вывода посоветуйте линками или названием пакета с примерами, с которыми Вы разобрались и Вас устроили.
система JFS, автор ее забросил 10 лет назад, там почти все исходники есть (некоторые утилиты он не открыл), и работающие exe с документацией. В "Машине времени интернета" следы еще остались ... тыц. Но это не R, и новее я не знаю (давно не интересовался). А пример действительно какой-то странный результат дает ...

_Vitaliy_
Новоприбывший
Сообщения: 13
Зарегистрирован: 07 ноя 2013, 18:38
Репутация: 0

Re: посоветуйте пакет по fuzzy logic

Сообщение _Vitaliy_ » 18 янв 2015, 17:24

Если есть желание (и время) завтра с работы возьму исходники и выложу...

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: посоветуйте пакет по fuzzy logic

Сообщение gamm » 18 янв 2015, 17:51

_Vitaliy_ писал(а):Если есть желание (и время) завтра с работы возьму исходники и выложу...
а у меня все это где-то лежит. Мы JFS использовали для обучения студентов, совместно с Куинлановской C4.5, из которой извлекали правила. Все было понятно, по крайней мере - для экспериментов самое то.

_Vitaliy_
Новоприбывший
Сообщения: 13
Зарегистрирован: 07 ноя 2013, 18:38
Репутация: 0

Re: посоветуйте пакет по fuzzy logic

Сообщение _Vitaliy_ » 20 янв 2015, 19:03

Вчера ответить не получилось, приношу извинения...
Сегодня немного покорпел над примером и результат все-таки сошелся с теорией. Поэтому пакетом sets в принципе можно пользоваться (а может это открытие только для меня ;-)). За основу взял пример из книги (стр 52-56): Макеева А.В. Основы нечёткой логики. Монография. Учебное пособие для ВУЗов. ВГИПУ Н. Новгород 2009.
Извиняюсь но ссылку дать не могу, вроде искал но может меня в гугле забанили...
Привожу листинг скрипта (перед использованием нужно установить библиотеку sets):

Код: Выделить всё

library("sets")
## set universe
sets_options("universe", seq(from = 0, to = 150, by = 0.1))

## set up fuzzy variables
variables <-
  set(davl =
        fuzzy_variable(     
          d_low    = fuzzy_trapezoid(corners = c(-100, 0, 0, 100)),
          d_medium = fuzzy_trapezoid(corners = c(0, 50, 50, 100)),
          d_hight  = fuzzy_trapezoid(corners = c(0, 100, 150, 450))
                      ),
      temp =
        fuzzy_variable(
          t_low    = fuzzy_trapezoid(corners = c(-50, 0, 50, 100)),
          t_medium = fuzzy_trapezoid(corners = c(0, 50, 100, 150)),
          t_hight  = fuzzy_trapezoid(corners = c(50, 100, 150, 450))
                      ),
      rasx =
        fuzzy_partition(varnames=c(          
          r_low = 2, r_medium = 4, r_hight = 6),
          FUN = fuzzy_cone, radius = 3.5)
                      
)
## set up rules
rules <-
  set(
    fuzzy_rule(temp %is% t_low && rasx %is% r_low, davl %is% d_low),
    fuzzy_rule(temp %is% t_medium, davl %is% d_medium),
    fuzzy_rule(temp %is% t_hight || rasx %is% r_hight, davl %is% d_hight)
  )
    

## combine to a system
system <- fuzzy_system(variables, rules)
print(system)
plot(system) ## plots variables

## do inference
fi <- fuzzy_inference(system, list(temp = 85, rasx = 3.5))

## plot resulting fuzzy set
plot(fi)

## defuzzify
##gset_defuzzify(x,
##               method = c("meanofmax",        
##                          "smallestofmax",   
##                          "largestofmax", 
##                          "centroid"))
gset_defuzzify(fi, "largestofmax")

## reset universe
sets_options("universe", NULL)
Результат приведенный в книге "сходится" с тем, что выдает этот скрипт. Если кому будет интересно то могу некоторые вещи пояснить (насколько это понимаю я)
При выборе дефазификации методами

Код: Выделить всё

"meanofmax", "smallestofmax", "largestofmax",
ответ уверенно 50, а вот при

Код: Выделить всё

"centroid"
около 80 (в книге ответ= 50 методом первого максимума).
Пробовал вручную перепроверить используя метод центра тяжести, получил результат около 58 (вычислялось "на коленке" с погрешностями линейки, глаза, карандаша и тп.) поэтому можно его принять как верный.

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

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей