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