| Platinum Member 
				 
				Регистрация: 22.07.2010 Адрес: Санкт-Петербург 
					Сообщений: 3,304
				      | 
				  
 
			
			Оппонент, у меня стандартный ответ - 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)
> |