XFL3: El lenguaje de especificación de Xfuzzy 3

Bases de reglas

Una base de reglas en XFL3 es un objeto que contiene las reglas que definen las relaciones lógicas entre las variables lingüísticas. Su formato de definición es el siguiente:

rulebase identifier (input_list : output_list) using operatorset {
    [factor] if (antecedent) -> consecuent_list;
    [factor] if (antecedent) -> consecuent_list;
    ............. }
  

El formato de definición de las variables de entrada y salida es "type identifier", donde type hace referencia a uno de los tipos de variables lingüísticas previamente definidas. La selección del conjunto de operadores es opcional, de forma que cuando no es definido explícitamente se emplean los operadores por defecto. Es posible aplicar a las reglas pesos o factores de confidencia (con valor por defecto de 1).

El antecedente de una regla describe la relación entre las variables de entrada. XFL3 permite expresar antecedentes complejos combinando proposiciones básicas mediante conectivos y modificadores lingüísticos. Por otra parte, cada consecuente de una regla describe la asignación de un valor lingüístico a una variable de salida como "variable = label".

Una proposición básica relaciona una variable de entrada con una de sus etiquetas lingüísticas. XFL3 admite diferentes relaciones como igualdad, desigualdad y varios modificadores lingüísticos. La siguiente tabla muestra las diferentes relaciones ofrecidas por XFL3.

Proposiciones básicas

Descripción

Representación

variable == label equal to
variable >= label equal or greater than
variable <= label equal or smaller than
variable > label greater than
variable < label smaller than
variable != label not equal to
variable %= label slightly equal to
variable ~= label moreorless equal to
variable += label strongly equal to

En general, el antecedente de una regla está formado por una proposición compleja. Las proposiciones complejas están compuestas de varias proposiciones básicas conectadas mediante conectivos difusos y modificadores lingüísticos. La siguiente tabla muestra cómo generar proposiciones complejas en XFL3.

Proposiciones complejas Descripción
proposition & proposition and operator
proposition | proposition or operator
!proposition not operator
%proposition slightly operator
~proposition moreorless operator
+proposition strongly operator

Éste es un ejemplo de base de reglas compuesta por algunas reglas que incluyen proposiciones complejas.

 rulebase base1(input1 x, input2 y : output z) using systemop {
    if( x == medium & y == medium) -> z = tall;
    [0.8] if( x <=short | y != very_tall ) -> z = short;
    if( +(x > tall) & (y ~= medium) ) -> z = tall;
    ............. } 

Para comentarios, sugerencias, notificación de bugs, etc. contacte con nosotros en:   xfuzzy-team@imse-cnm.csic.es

©IMSE-CNM 2018