Académique Documents
Professionnel Documents
Culture Documents
Asignatura
Laboratorio de Control Aplicado
1
Práctica: 1
/* Control Aplicado */
/* Sergio López y Juan Islas */
/* Fuzzy Tip */
/* Función de lógica difusa para el problema de la propina. Dadas las entradas servicio y comida se
calcula el porcentaje de propina
Para la entrada de servicio se usan 3 funciones de membresía gaussianas */
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{
float service, food, alpha_pobre, beta_pobre, Pobre;
float auxiliar1, auxiliar2,Bueno,alpha_bueno, beta_bueno;
float Excelente,alpha_excelente, beta_excelente;
float alpha_mala, beta_mala, delta_mala=1, phi_mala=3, Mala;
float auxiliar3, auxiliar4, auxiliar5,auxiliar6,min,max;
float alpha_deliciosa, beta_deliciosa, delta_deliciosa=8, phi_deliciosa=10, Deliciosa;
float Baja, Regular, Alta;
int alpha_baja, beta_baja, delta_baja;
int alpha_regular, beta_regular, delta_regular=20;
int alpha_alta, beta_alta, delta_alta;
float tip;
food=0;
service=0;
/* Función Bueno */
alpha_bueno=1.5;
beta_bueno=5;
2
/* Función gaussiana */
auxiliar1=pow(service-beta_bueno,2);
auxiliar2=pow(alpha_bueno,2);
Bueno=exp((-auxiliar1)/(2*auxiliar2));
/* Función Excelente */
alpha_excelente=1.5;
beta_excelente=10;
/* Función gaussiana */
auxiliar1=pow(service-beta_excelente,2);
auxiliar2=pow(alpha_excelente,2);
Excelente=exp((-auxiliar1)/(2*auxiliar2));
if(auxiliar6<1)
{
min=auxiliar6;
}
else if(1<auxiliar6)
{
min=1;
}
else
{
min=1;
}
if(min>0)
{
Mala=min;
}
else
{
Mala=0;
}
3
/* Función Deliciosa */
alpha_deliciosa=7;
beta_deliciosa=8;
delta_deliciosa=10;
phi_deliciosa=10;
/*Función gaussiana*/
auxiliar1=food-alpha_deliciosa;
auxiliar2=beta_deliciosa-alpha_deliciosa;
auxiliar3=phi_deliciosa-food;
auxiliar4=phi_deliciosa-delta_deliciosa;
auxiliar5=auxiliar1/auxiliar2;
auxiliar6=auxiliar3/auxiliar4;
if(min>0)
{
Deliciosa=min;
}
else
{
Deliciosa=0;
}
4
Regular=Bueno;
/* Regla tres: If service is Excelente or food is deliciosa Tip= Alta */
if(Excelente>Deliciosa)
{
Alta=Excelente;
}
else
{
Alta=Deliciosa;
}