我正在尝试使用包“sets”在R中创建一个模糊系统。在我的模型中,我有三种类型的模糊集,每种都有三种状态,并且具有不同的“宇宙”。当我绘制系统时我没有问题但是当我尝试进行推理时,我得到了这个错误:“gset_charfun(x)中的错误:参数'x'必须是一个通用集。”有没有人有这个问题的解决方案?这是代码。
library(sets)
U1 <- seq(from = 0, to = 1, by = 0.0001)
U2 <- seq(from = -0.5, to = 0.5, by = 0.001)
## se definen los conjuntos difusos
variables <- set(produccion = fuzzy_variable(
bajo = fuzzy_trapezoid_gset(corners = c(-2, 0, 0.3, 0.6),universe=U1),
normal = fuzzy_trapezoid_gset(corners = c(0.4, 0.55, 0.55, 0.7), universe=U1),
alto = fuzzy_trapezoid_gset(corners = c(0.5, 0.7, 1, -2), universe=U1)),
tendencia = fuzzy_variable(bajo = fuzzy_trapezoid_gset(corners = c(-10, -0.4, -0.05, 0.1),universe=U2),
normal = fuzzy_triangular_gset(corners = c(-0.067, 0.067, 0.2), universe=U2),
alto = fuzzy_trapezoid_gset(corners = c(0.1, 0.15, 0.15, -10), universe=U2) ) ,
zona = fuzzy_variable(roja = fuzzy_triangular_gset(corners = c(-2, 0, 0.33), universe=U1),
amarilla = fuzzy_triangular_gset(corners = c(0.33, 0.5, 0.66),universe=U1),
verde = fuzzy_triangular_gset(corners = c(0.66, 1, 2), universe=U1))
)
## definir las reglas
reglas <-
set(
fuzzy_rule(produccion %is% alta || tendencia %is% alta, zona %is% verde),
fuzzy_rule(produccion %is% alta || tendencia %is% baja, zona %is% amarilla),
fuzzy_rule(produccion %is% media|| tendencia %is% baja, zona %is% roja),
fuzzy_rule(produccion %is% baja || tendencia %is% alta, zona %is% verde),
fuzzy_rule(produccion %is% baja || tendencia %is% baj, zona %is% roja)
)
## combina el sistema
system <- fuzzy_system(variables, reglas)
print(system)
plot(system) ## plots variables
## se realiza la inferencia
inferencia <- fuzzy_inference(system, list(produccion = 0.6, tendencia = 0.2))
## Error in gset_charfun(x) : Argument 'x' must be a generalized set.
答案 0 :(得分:1)
你只是有一堆拼写错误。您的规则匹配值应与您的变量定义相对应。例如,您为&#34; produccion&#34;
定义了三个级别bajo = fuzzy_trapezoid_gset(...)
normal = fuzzy_trapezoid_gset(...)
alto = fuzzy_trapezoid_gset(...)
但是,在您的规则中,您引用了
produccion %is% alta
produccion %is% media
produccion %is% baja
这些名称需要完全匹配。同样适用于&#34; tendencia&#34;值。