Implementación de un motor de lógica difusa Implementación
Esta sección detalla cómo codificar un motor de lógica difusa, utilizando las premisas expuestas hasta el momento. El siguiente código está escrito en C#, pero podría adaptarse fácilmente a cualquier otro lenguaje orientado a objetos. Es compatible con el framework .NET 4.5 (y versiones superiores), y Windows 8 o superior.
Cuando se requieran conocimientos matemáticos, se explicarán las fórmulas utilizadas.
1. El núcleo del código: los conjuntos difusos
a. Point2D: un punto de una función de pertenencia
Vamos a comenzar creando las clases básicas. Para ello, necesitaremos una clase Point2D que nos permita definir las coordenadas de un punto representativo de las funciones de pertenencia. El eje de abscisas (x) representa el valor numérico y el eje de ordenadas (y) el valor de pertenencia correspondiente, entre 0 y 1.
La base de esta clase es la siguiente:
using System;
public class Point2D
{
public double X { get; set; }
public double Y { get; set; }
public Point2D(double x, double y)
{
this.X = x;
this.Y = y;
}
}
Más adelante, habrá que comparar dos puntos para conocer su orden. En lugar de comparar nosotros mismos las coordenadas x de los puntos, vamos a implementar la interfaz...