Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigo Sistema Difuso 1
Codigo Sistema Difuso 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LibreriaDifuso
{
public class ClsFuzi
{
public int _Valor_Nivel;
_Conjunto_Entrada_Difuso[1, 0] = "Fresca";
_Conjunto_Entrada_Difuso[1, 1] = "[ 9 - 21 ]";
_Conjunto_Entrada_Difuso[1, 2] = "09";
_Conjunto_Entrada_Difuso[1, 3] = "15";
_Conjunto_Entrada_Difuso[1, 4] = "21";
_Conjunto_Entrada_Difuso[2, 0] = "Agradable";
_Conjunto_Entrada_Difuso[2, 1] = "[ 17 - 29 ]";
_Conjunto_Entrada_Difuso[2, 2] = "17";
_Conjunto_Entrada_Difuso[2, 3] = "23";
_Conjunto_Entrada_Difuso[2, 4] = "29";
_Conjunto_Entrada_Difuso[3, 0] = "Calida";
_Conjunto_Entrada_Difuso[3, 1] = "[ 25 - 37 ]";
_Conjunto_Entrada_Difuso[3, 2] = "25";
_Conjunto_Entrada_Difuso[3, 3] = "31";
_Conjunto_Entrada_Difuso[3, 4] = "37";
_Conjunto_Salida_Difuso[1, 0] = "Lenta";
_Conjunto_Salida_Difuso[1, 1] = "[ 10 - 30 ]";
_Conjunto_Salida_Difuso[1, 2] = "10";
_Conjunto_Salida_Difuso[1, 3] = "20";
_Conjunto_Salida_Difuso[1, 4] = "30";
_Conjunto_Salida_Difuso[2, 0] = "Media";
_Conjunto_Salida_Difuso[2, 1] = "[ 20 - 40 ]";
_Conjunto_Salida_Difuso[2, 2] = "20";
_Conjunto_Salida_Difuso[2, 3] = "30";
_Conjunto_Salida_Difuso[2, 4] = "40";
_Conjunto_Salida_Difuso[3, 0] = "Rapida";
_Conjunto_Salida_Difuso[3, 1] = "[ 30 - 50 ]";
_Conjunto_Salida_Difuso[3, 2] = "30";
_Conjunto_Salida_Difuso[3, 3] = "40";
_Conjunto_Salida_Difuso[3, 4] = "50";
_Conjunto_Salida_Difuso[4, 0] = "Maxima";
_Conjunto_Salida_Difuso[4, 1] = "[ 40 - 60 ]";
_Conjunto_Salida_Difuso[4, 2] = "40";
_Conjunto_Salida_Difuso[4, 3] = "50";
_Conjunto_Salida_Difuso[4, 4] = "60";
//Reglas
_Reglas[0, 0] = "Fria";
_Reglas[0, 1] = "Parado";
_Reglas[0, 2] = "1";
_Reglas[1, 0] = "Fresca";
_Reglas[1, 1] = "Lenta";
_Reglas[1, 2] = "2";
_Reglas[2, 0] = "Agradable";
_Reglas[2, 1] = "Media";
_Reglas[2, 2] = "3";
_Reglas[3, 0] = "Calida";
_Reglas[3, 1] = "Rapida";
_Reglas[3, 2] = "4";
_Reglas[4, 0] = "Torrida";
_Reglas[4, 1] = "Maxima";
_Reglas[4, 2] = "5";
}
public void ActivacionReglas()
{
int k = 0;
for (int j = 0; j < 5; j++) //Recorrer Conjunto difuso entrada
{
for (int i = 0; i < 5; i++) //Recorrer Reglas
{
if (Convert.ToDouble(_Grados_Pertenencia[j, 0]) >= 0 &&
_Grados_Pertenencia[j, 1] == "1") //Compara grados de pertenencia
{
if (_Conjunto_Entrada_Difuso[j, 0] == _Reglas[i, 0])
//Ver que reglas se activan
{
_ReglasActivadas[k, 0] = _Reglas[i, 2]; //Guarda
Regla Activada
_ReglasActivadas[k, 1] = _Reglas[i, 0];
_ReglasActivadas[k, 2] = _Reglas[i, 1];
k = k + 1;
}
}
}
}
}
public double Desfuzificacion()
{
for (int j = 0; j < 5; j++) //Recorrer Conjunto difuso salida
{
for (int i = 0; i < 2; i++)
{
if (_ReglasActivadas[i, 2] == _Conjunto_Salida_Difuso[j,
0])
{
_ValorCentroide[i] = _Conjunto_Salida_Difuso[j, 3];
}
}
}
//Calculo de la salida difusa
double producto=0, suma=0;
int k=0 ;
for (int j = 0; j < 5; j++)
{
if (_Grados_Pertenencia[j, 1] == "1")
{
producto = producto +
Convert.ToDouble(_ValorCentroide[k]) *
Convert.ToDouble(_Grados_Pertenencia[j, 0]);
suma = suma + Convert.ToDouble(_Grados_Pertenencia[j,
0]);
k = k + 1;
}
}
return producto / suma;
}
public void limpiar()
{
for (int i=0; i < 2; i++)
{
_Grados_Pertenencia[i, 0] = "";
_Grados_Pertenencia[i, 1] = "";
}
}
}
}
FrmConjuntos
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LibreriaDifuso;
namespace SisDifuso
{
public partial class FrmConjuntos : Form
{
public FrmConjuntos()
{
InitializeComponent();
}
frmReglas
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LibreriaDifuso;
namespace SisDifuso
{
public partial class FrmReglas : Form
{
public FrmReglas()
{
InitializeComponent();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LibreriaDifuso;
namespace SisDifuso
{
public partial class FrmSimulador : Form
{
public FrmSimulador()
{
InitializeComponent();
}
objconjunto.ActivacionReglas();
lvwActivacion.Items.Clear();
for (int i = 0; i < 2; i++)
{
ListViewItem _lista1 = new ListViewItem();
_lista1.Text = objconjunto._ReglasActivadas[i, 0];
_lista1.SubItems.Add(objconjunto._ReglasActivadas[i, 1]);
_lista1.SubItems.Add(objconjunto._ReglasActivadas[i, 2]);
lvwActivacion.Items.Add(_lista1);
}
lblResultado.Text = objconjunto.Desfuzificacion().ToString("0.00");
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SisDifuso
{
public partial class FrmPrincipal : Form
{
public FrmPrincipal()
{
InitializeComponent();
}