Показать сообщение отдельно
Старый 16.05.2016, 21:41   #12
Hogfather
Platinum Member
 
Аватар для Hogfather
 
Регистрация: 22.07.2010
Адрес: Санкт-Петербург
Сообщений: 3,281
По умолчанию

Оппонент, у меня стандартный ответ - GNU R.

Пример кода из документации пакета sets.
Код:
library(sets)
## set universe
sets_options("universe", seq(from = 0, to = 25, by = 0.1))

## set up fuzzy variables
variables <-
  set(service =
        fuzzy_partition(varnames =
                          c(poor = 0, good = 5, excellent = 10),
                        sd = 1.5),
      food =
        fuzzy_variable(rancid =
                         fuzzy_trapezoid(corners = c(-2, 0, 2, 4)),
                       delicious =
                         fuzzy_trapezoid(corners = c(7, 9, 11, 13))),
      tip =
        fuzzy_partition(varnames =
                          c(cheap = 5, average = 12.5, generous = 20),
                        FUN = fuzzy_cone, radius = 5)
  )

## set up rules
rules <-
  set(
    fuzzy_rule(service %is% poor || food %is% rancid,
               tip %is% cheap),
    fuzzy_rule(service %is% good,
               tip %is% average),
    fuzzy_rule(service %is% excellent || food %is% delicious,
               tip %is% generous)
  )

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

## do inference
fi <- fuzzy_inference(system, list(service = 3, food = 8))

## plot resulting fuzzy set
plot(fi)

## defuzzify
gset_defuzzify(fi, "centroid")

## reset universe
sets_options("universe", NULL)



Листинг с результатами

Код:
> library(sets)
> ## set universe
> sets_options("universe", seq(from = 0, to = 25, by = 0.1))
> 
> ## set up fuzzy variables
> variables <-
+   set(service =
+         fuzzy_partition(varnames =
+                           c(poor = 0, good = 5, excellent = 10),
+                         sd = 1.5),
+       food =
+         fuzzy_variable(rancid =
+                          fuzzy_trapezoid(corners = c(-2, 0, 2, 4)),
+                        delicious =
+                          fuzzy_trapezoid(corners = c(7, 9, 11, 13))),
+       tip =
+         fuzzy_partition(varnames =
+                           c(cheap = 5, average = 12.5, generous = 20),
+                         FUN = fuzzy_cone, radius = 5)
+   )
> 
> ## set up rules
> rules <-
+   set(
+     fuzzy_rule(service %is% poor || food %is% rancid,
+                tip %is% cheap),
+     fuzzy_rule(service %is% good,
+                tip %is% average),
+     fuzzy_rule(service %is% excellent || food %is% delicious,
+                tip %is% generous)
+   )
> 
> ## combine to a system
> system <- fuzzy_system(variables, rules)
> print(system)
A fuzzy system consisting of 3 variables and 3 rules.

Variables:

food(rancid, delicious)
tip(cheap, average, generous)
service(poor, good, excellent)

Rules:

service %is% poor || food %is% rancid => tip %is% cheap
service %is% excellent || food %is% delicious => tip %is% generous
service %is% good => tip %is% average
> plot(system) ## plots variables
> 
> ## do inference
> fi <- fuzzy_inference(system, list(service = 3, food = 8))
> 
> ## plot resulting fuzzy set
> plot(fi)
> 
> ## defuzzify
> gset_defuzzify(fi, "centroid")
[1] 14.88624
> 
> ## reset universe
> sets_options("universe", NULL)
>
---------
DNF is not an option
Hogfather вне форума   Ответить с цитированием
Реклама