Вы находитесь на странице: 1из 19

Marco Terico

Lgica Difusa
Fue formulada en 1965 por el ingeniero y matemtico Lotfi A. Zadeh. La lgica difusa e basa
en lo relativo de lo observado como posicin diferencial. Este tipo de lgica toma dos
valores aleatorios, pero contextualizados y referidos entre s. As, por ejemplo, una persona
que mida dos metros es claramente una persona alta, si previamente se ha tomado el valor
de persona baja y se ha establecido en un metro. Ambos valores estn contextualizados a
personas y referidos a una medida mtrica lineal.
La lgica difusa se adapta mejor al mundo real en el que vivimos, e incluso puede
comprender y funcionar con nuestras expresiones, del tipo hace mucho calor, no es muy
alto, el ritmo del corazn est un poco acelerado, etc.
La clave de esta adaptacin al lenguaje se basa en comprender los cuantificadores de
cualidad para nuestras inferencias (en los ejemplos de arriba, mucho, muy y un
poco).
En la teora de conjuntos difusos se definen tambin las operaciones
de unin, interseccin, diferencia, negacin o complemento, y otras operaciones sobre
conjuntos (ver tambin subconjunto difuso), en los que se basa esta lgica.
Para cada conjunto difuso, existe asociada una funcin de pertenencia para sus elementos,
que indica en qu medida el elemento forma parte de ese conjunto difuso. Las formas de las
funciones de pertenencia ms tpicas son trapezoidal, lineal y curva.
Se basa en reglas heursticas de la forma SI (antecedente) ENTONCES (consecuente), donde
el antecedente y el consecuente son tambin conjuntos difusos, ya sea puros o resultado de
operar con ellos. Sirvan como ejemplos de regla heurstica para esta lgica (ntese la
importancia de las palabras muchsimo, drsticamente, un poco y levemente para
la lgica difusa):

SI hace muchsimo fro. ENTONCES aumento drsticamente la temperatura.


SI voy a llegar un poco tarde. ENTONCES aumento levemente la velocidad.
Los mtodos de inferencia para esta base de reglas deben ser sencillos, verstiles y eficientes.
Los resultados de dichos mtodos son un rea final, fruto de un conjunto de reas solapadas
entre s (cada rea es resultado de una regla de inferencia). Para escoger una salida concreta
a partir de tanta premisa difusa, el mtodo ms usado es el del centroide, en el que la salida
final ser el centro de gravedad del rea total resultante.
Las reglas de las que dispone el motor de inferencia de un sistema difuso pueden ser
formuladas por expertos o bien aprendidas por el propio sistema, haciendo uso en este caso
de redes neuronales para fortalecer las futuras tomas de decisiones.
Los datos de entrada suelen ser recogidos por sensores que miden las variables de entrada
de un sistema. El motor de inferencias se basa en chips difusos, que estn aumentando
exponencialmente su capacidad de procesamiento de reglas ao a ao.
Un esquema de funcionamiento tpico para un sistema difuso podra ser de la siguiente
manera:

Los conceptos se asocian a conjuntos difusos (asociando los valores de pertenencia) en un


proceso llamado fuzzificacin. Una vez que tenemos los valores fuzzificados podemos
trabajar con reglas lingsticas y obtener una salida, que podr seguir siendo difusa o
defuzzificada para obtener un valor discreto crisp
De este modo, a diferencia de la teora clsica de conjuntos que se basa en el principio bsico
de la lgica de forma que un individuo pertenece o no pertenece a un conjunto, la idea bsica
de un conjunto difuso es que un elemento forma parte de un conjunto con un determinado
grado de pertenencia.
Un ejemplo claro es la representacin de la altura de una poblacin de individuos.
En la representacin crisp, se dibuja una lnea que separa claramente en 1.8m los individuos
que son altos de los que no lo son, asociando un valor de pertencia estricto al conjunto de
los altos a aquellos que superan esa altura. Sin embargo, el conjunto difuso permite expresar
que Carlos tiene un grado de pertenencia al conjunto de los altos en A(Altura) = 0,82. As,
un conjunto difuso proporciona una transicin suave entre los lmites de lo que sera un
conjunto crisp. El Universo del discurso se define como todos los posibles valores que puede
tomar una determinada variable (en el caso de la imagen anterior se correspondera con el
eje horizontal de las grficas, desde 150 a 210cm).

2.-Procedimiento
Para la actividad 4 se tomaron bases de la lgica para el funcionamiento de esta misma, para
su desarrollo se implementaron 3 entradas de la practica 1 del laboratorio, de las cuales
fueron la temperatura, pulso cardiaco y postura, en las que estas mismas van a trabajar con
cierta relacin para dar como salida a la salud, en donde cada una de estas variables tendrn
valores lingsticos establecidos como se muestra a continuacin.

As tambin, para facilitar estos valores establecidos se abrevio cada uno de estos con siglas
y posteriormente con nmeros para definir cada uno de estos valores en un rango de 1 a 5,
en donde cada uno de estos nmeros representan los valores lingsticos, en donde se
realiz una tabla en Excel para colocar 125 reglas donde estas 3 entradas (temperatura, pulso
cardiaco y postura) tendrn una cierta relacin en la que se estableci distintas salidas de
salud con un rango de 1 a 5 tambin, para establecer si se encuentra enfermo o sano de
salud.
variables
X1 temperatura
X2 pulso cardiaco
X3 postura
y salud

Entradas Salud (y)


Reglas X1 X2 X3 y
1 1 1 1 1
2 1 1 2 1
3 1 1 3 1
4 1 1 4 1
5 1 1 5 1
6 1 2 1 1
7 1 2 2 1
8 1 2 3 2
9 1 2 4 1
10 1 2 5 1
11 1 3 1 2
12 1 3 2 2
13 1 3 3 2
14 1 3 4 2
15 1 3 5 2
16 1 4 1 1
17 1 4 2 1
18 1 4 3 2
19 1 4 4 2
20 1 4 5 2
21 1 5 1 1
22 1 5 2 1
23 1 5 3 1
24 1 5 4 1
25 1 5 5 1
26 2 1 1 1
27 2 1 2 1
28 2 1 3 1
29 2 1 4 2
30 2 1 5 2
31 2 2 1 1
32 2 2 2 1
33 2 2 3 2
34 2 2 4 2
35 2 2 5 2
36 2 3 1 2
37 2 3 2 2
38 2 3 3 2
39 2 3 4 2
40 2 3 5 2
41 2 4 1 1
42 2 4 2 1
43 2 4 3 1
44 2 4 4 2
45 2 4 5 2
46 2 5 1 1
47 2 5 2 1
48 2 5 3 2
49 2 5 4 2
50 2 5 5 2
51 3 1 1 1
52 3 1 2 1
53 3 1 3 2
54 3 1 4 2
55 3 1 5 2
56 3 2 1 2
57 3 2 2 2
58 3 2 3 2
59 3 2 4 3
60 3 2 5 3
61 3 3 1 3
62 3 3 2 3
63 3 3 3 4
64 3 3 4 4
65 3 3 5 5
66 3 4 1 4
67 3 4 2 2
68 3 4 3 3
69 3 4 4 3
70 3 4 5 2
71 3 5 1 2
72 3 5 2 2
73 3 5 3 2
74 3 5 4 2
75 3 5 5 2
76 4 1 1 1
77 4 1 2 1
78 4 1 3 1
79 4 1 4 1
80 4 1 5 1
81 4 2 1 2
82 4 2 2 2
83 4 2 3 2
84 4 2 4 2
85 4 2 5 2
86 4 3 1 2
87 4 3 2 2
88 4 3 3 2
89 4 3 4 3
90 4 3 5 3
91 4 4 1 1
92 4 4 2 1
93 4 4 3 2
94 4 4 4 2
95 4 4 5 2
96 4 5 1 1
97 4 5 2 1
98 4 5 3 1
99 4 5 4 1
100 4 5 5 1
101 5 1 1 1
102 5 1 2 1
103 5 1 3 1
104 5 1 4 2
105 5 1 5 2
106 5 2 1 1
107 5 2 2 1
108 5 2 3 1
109 5 2 4 2
110 5 2 5 2
111 5 3 1 2
112 5 3 2 2
113 5 3 3 2
114 5 3 4 2
115 5 3 5 2
116 5 4 1 1
117 5 4 2 1
118 5 4 3 1
119 5 4 4 2
120 5 4 5 2
121 5 5 1 1
122 5 5 2 1
123 5 5 3 1
124 5 5 4 2
125 5 5 5 2

Temperatura
valores lingsticos
MB Muy Baja 1
B Baja 2
M Media 3
A Alta 4
MA Muy Alta 5

Pulso cardiaco
valores lingsticos
MB Muy Bajo 1
B Bajo 2
M Estable 3
A Alto 4
MA Muy Alto 5

Postura
valores lingsticos
A Acostado 1
I Incado 2
S Sentado 3
In Intermedio 4
P Parado 5

Salud
valores lingsticos
ME Muy Enfermo 1
E Enfermo 2
Es Estable 3
S Sano 4
MS Muy Sano 5

Posteriormente la tabla de Excel de las reglas fue vaciada en el software scilab en donde se
estableceran dos programaciones para centroide y alturas.
Estas fueron las reglas establecidas en scilab:
Centroide
Alturas
En el caso de centroide, los resultados fueron los siguientes:

Enfermo X = [0.1 0.1 0.1]


Muy sano X = [0.5 0.5 0.9]
En el caso de alturas, los resultados fueron los siguientes:

Enfermo X = [0.75 0.75 0.9]


Muy sano X = [0.5 0.45 0.9]

Modelo en 3D del proyecto


Fotos del proceso de armado del proyecto.
ARMADO
codigo

#include <Servo.h>

Servo servoMotor;

Servo servoMotor1;

long tiempo;

int disparador = 4; // triger

int entrada = 2; // echo

float distancia;

void setup()

pinMode(disparador, OUTPUT);

pinMode(entrada, INPUT);

Serial.begin(9600);

servoMotor.attach(9);

servoMotor1.attach(8);

// Desplazamos a la posicin 0

void loop()

// lanzamos un pequeo pulso para activar el sensor

digitalWrite(disparador, HIGH);

delayMicroseconds(10);

digitalWrite(disparador, LOW);

// medimos el pulso de respuesta

tiempo = (pulseIn(entrada, HIGH)/2); // dividido por 2 por que es el

// tiempo que el sonido tarda


// en ir y en volver

// ahora calcularemos la distancia en cm

// sabiendo que el espacio es igual a la velocidad por el tiempo

// y que la velocidad del sonido es de 343m/s y que el tiempo lo

// tenemos en millonesimas de segundo

distancia = float(tiempo * 0.0343);

delay(1000);

if (distancia<20){

servoMotor.write(180);

servoMotor1.write(180);

Serial.println(distancia);

delay(1000);

Вам также может понравиться