Professional Documents
Culture Documents
Temas:
- Controladores con PID, Lgica Difusa, Redes
Neuronales y Algoritmos Genticos.
Profesor:
Armando Fermn Prez
Alumnos:
Clavo Navarro, Katerine Roco 08200142
Melgarejo Galvn, Alonso Ral 08200178
Cabanillas Murrugarra, David 08200013
Ciclo: 2011 - II
Grupo: 2 - Viernes
INSTALACIN Y CONFIGURACIN DEL SERVIDOR APACHE
Aclaramos que trabajamos sobre un entorno Windows (especficamente Windows Vista),
adems como tenemos pensado usar java, adicionalmente le agregaremos al Apache el
mdulo mod_jk.so para que pueda trabajar junto con el Tomcat, el proceso para dejar a
nuestro servidor completamente funcional es el siguiente:
Network Domain: Esta casilla contiene la direccin IP de nuestra mquina, en este caso
pondremos localhost (sin comillas), con esto le decimos a Apache que trabajaremos a
nivel de host.
Server Name: Es el nombre que queremos que tenga nuestro servidor, para simplificar le
llamaremos localhost.
Por ltimo seleccionamos la opcin for All Usars, on Port 80, as a Service --
Recommended, de esta forma instalamos Apache conmo un servicio de Windows que se
inicia al arrancar Windows, adems el Servidor se pone a escuchar por el puerto 80.
Con todo esto configurado, damos clic en Next para continuar con la instalacin, nos
aparece esta ventana:
Haremos una instalacin tpica del Apache, seleccionamos la opcin Typical y damos
clic en Next y vemos lo siguiente:
En esta ventana seleccionaremos en que ruta ser instalado el Apache, por default se instala
en C:\Program Files\Apache Software Foundation\Apache, pero nosotros lo instalaremos
en C: \Apache\, esto porque en el entorno Windows la carpeta Program Files da
problemas por los permisos de administrador. Para cambiar la ruta seleccionamos la
opcin Change y navegamos hasta la ruta C: \Apache, despus damos clic en
Next.
##############################################################
#CONFIGURACION DEL MODULO mod_jk.so
# Carga el mod_jk module
LoadModule jk_module modules/mod_jk.so
# Lo configura workers.properties
JkWorkersFile conf/workers.properties
# Dnde poner los logs logs
JkLogFile logs/mod_jk.log
# Nivel de log [debug/error/info]
JkLogLevel info
# Formato del log
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Manda toda url que contenga /miaplicacion/ al tomcat ajp13w
JkMount /miaplicacion/* miservidor
#FIN DE LA CONFIGURACION DEL MODULO mod_jk.so
##############################################################
worker.list=miservidor
worker.miservidor.port=8009
worker.miservidor.host=localhost
worker.miservidor.type=ajp13
worker.miservidor.socket_timeout=3600
Con esto hemos definido a nuestro servidor Tomcat, ahora slo queda un paso ms.
Dentro de la carpeta conf, abrimos el archivo httpd.conf con un editor de texto plano:
Buscamos la lnea LoadModule rewrite_module modules/mod_rewrite.so (sin comillas) y
la descomentamos (borramos el # que antecede a la lnea).
Ahora, al final de este archivo, pero antes del agregado que le hicimos para la
configuracin del mdulo mod_jk.so agregamos lo siguiente:
##############################################################
#CONFIGURACION DEL MODULO rewrite_module
# Activacin
RewriteEngine on
# Configuracin
RewriteRule ^(.*)(png|jpg|gif|css|js)$ /$1$2 [NC,L]
RewriteRule ^/(.*)$ /miaplicacion/$1 [PT,QSA,NC,L]
#FIN DE LA CONFIGURACION DEL MODULO rewrite_module
##############################################################
Con esto termina la instalacin y configuracin del servidor Apache, teniendo en cuenta
que cooperar con Tomcat para el uso de contenido dinmico (JSP y servlet).
ELECCIN DEL GENERADOR DE CARGA DE TRABAJO
Generador de carga de trabajo escogido: Apache JMeter 2.5
Apache JMeter es una herramienta de carga diseada para realizar Pruebas de Rendimiento
y Pruebas Funcionales sobre Aplicaciones Web. Originalmente el Apache JMeter fue
diseado para realizar pruebas de estrs sobre aplicaciones web (pruebas web clsicas), sin
embargo hoy en da su arquitectura ha evolucionado, ahora no slo puede llevar a cabo
pruebas en componentes tpicos de Internet (HTTP), sino tambin puede realizar pruebas
sobre Bases de Datos, scripts Perl, servlets, objetos java, servidores FTP y prcticamente
cualquier medio de los que se pueden encontrar en la red.
El Apache JMeter est diseado para desarrollar diferentes tipos de test, permitiendo
disear tanto sencillos testeos que soliciten simples pginas web, como complejas
secuencias de requisiciones que permitan evaluar el comportamiento de una aplicacin o
como la capacidad de carga mxima que pueda tener una aplicacin en un servidor
(pudiendo llegar a satura el servidor). JMeter tambin permite la ejecucin de pruebas
distribuidas entre distintos ordenadores, para realizar pruebas de rendimiento.
El Apache JMeter incluye una interfaz grfica de usuario que facilita el diseo de las
pruebas. Esta interfaz grfica adems de aportar un entorno cmodo de trabajo, tambin
permite guardar y alterar tanto los test desarrollados como los componentes que lo integran.
Gracias a esto se pueden reutilizar las pruebas o mdulos de las mismas en el desarrollo de
nuevas pruebas. Adems de las funcionalidades de prueba antes mencionadas, el Apache
JMeter tambin ofrece la posibilidad de activar un Proxy web. Gracias a esto se puede
grabar la navegacin de un usuario para posteriormente usarla en la generacin de una
prueba.
La instalacin del Apache JMeter es sencilla, slo hay que acceder al sitio oficial
(http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi), descargar una versin
estable, descomprimir el .ZIP, entrar en la carpeta bin y ejecutar el archivo jmeter.bat
que hay dentro.
IMPLEMENTACIN DEL APLICATIVO E-COMMERCE EN EL
SERVIDOR WEB
Para la implementacin del aplicativo en el servidor hemos elegido a Konakart.
Konakart es una aplicacin web de e-commerce escrita en java y de uso gratuito. Permite la
administracin de un site web y la gestin de ventas. El cdigo es semiabierto. Entre sus
principales caractersticas encontramos:
Despus de esto, se nos pregunta el puerto por donde se va a comunicar la aplicacin, por
default aparece el puerto 87, si lo dejamos tal como est el Konakart se encargar de
instalar y configurar de forma automtica un servidor Apache Tomcat para ese puerto, este
Apache Tomcat estara ubicado en la carpeta bin del Konakart como se muestra en la
siguiente imagen:
O tambin podemos darle el puerto 80 que es el que est usando el servidor Apache Tomcat
que nosotros hemos configurado, en cualquier caso ambas opciones son vlidas ya que el
resultado final de la instalacin del servidor es la misma para cualquiera de las 2 opciones
que elijamos, para el caso de nuestra instalacin hemos decidido que se haga sobre el
puerto que define el propio Konakart y que realice la instalacin y configuracin del
servidor de forma automtica, por supuesto las configuraciones posteriores que realicemos
en el servidor sern hechas al Apache Tomcat de la carpeta bin del Konakart.
Entonces dejamos el puerto tal como est y damos clic en Next
Ahora se nos pide definir algunos parmetros para la base de datos, ingresamos la URL de
la base de datos que vamos a usar, en nuestro caso se llama basededatos_konakart (por
supuesto para poder usarlo debimos haberlo creado antes por el MySQL con el comando
CREATE SCHEMA basededatos_konakart). Tambin se nos pide usuario y contrasea
(Usuario: root Contrasea: kora) y por ltimo tambin se nos pide el driver,
automticamente se asigna el com.mysql.jdbc.Driver.
Ingresados estos datos, damos clic en Next y obtenemos la siguiente pantalla:
En esta pantalla se hace un testing para ver si se puede conectar con la base de datos que
hemos definido (basededatos_konakart).
El testing resulto correcto (si no resultara correcto significa que el usuario no existe, que la
contrasea ingresada no es la correcta, que no se puede ubicar el driver, o que la base de
datos ingresada no existe), damos clic en Next para seguir y se observa la siguiente
ventana:
Se nos muestra una ventana en donde se nos pregunta si queremos ejecutar un archivo .SQL
para que se creen las tablas en donde se almacenar la informacin, para esto activamos la
opcin Create the tables required for KonaKart in your database y damos clic en Next
y se nos muestra la ventana en donde se puede ver cmo se ejecuta el archivo .SQL:
Despus de la ejecucin del .SQL damos clic en Next y se nos indica que la instalacin
del Konakart fue exitosa:
Ahora slo falta ejecutar nuestro aplicativo e-commerce Konakart en nuestro servidor,
dejamos marcadas ambas casillas y damos clic en Finish, inmediatamente despus de
esto el servidor Apache Tomcat empezar a ejecutarse:
Finalmente el Tomcat levantar el aplicativo y nos lo mostrar en un navegador web:
Con esto el aplicativo esta implementado en el servidor web y listo para recibir peticiones.
Configuracin del nmero mximo de clientes
Nosotros estamos usando el Apache-Tomcat, este tiene la directiva maxThreads,
define el nmero mximo de clientes que puede sorportar nuestro servidor (esto es lo que el
sensor variar automticamente cada determinado tiempo).
Observamos lo siguiente:
Observacin:
Para el clculo de ese valor se debe realizar una ecuacin:
Configuracin del Log Tomcat
El log de tomcat no est actualmente activado, as que tenemos que agregarlo en el archivo
server:
Agregamos lo siguiente:
El resultado es el siguiente:
Con ayuda del JMeter creamos una pequea prueba para ver que el log registre la actividad
del servidor y como vemos el log fue modificado:
Slo queda explicar qu significa todo eso, pero antes de explicarlo debemos entender lo
siguiente, recordemos esto:
En el recuadro rojo podemos observar que el atributo pattern (patrn) toma el valor
common (normal). Este atributo se refiere a cul ser el formato del log. Al decir que es
common, le estamos diciendo que siga esta estructura:
%h %l %u %t "%r" %s %b
Cada una de estas letras representa los campos impresos en ese orden, daremos una lista de
qu significan cada uno de estos campos (adems de otros campos ms)
% a - La direccin IP remota
% A - La direccin IP local
% b - Bytes enviados, excepto los encabezados HTTP, o escribe "-" (rayita) si es cero
%B - Bytes enviados, excepto los encabezados HTTP
% h - nombre de host remoto (o la direccin IP si resolveHosts es falsa)
%H - protocolo de peticin
%l - nombre de usuario remoto lgica de identd (siempre vuelve "-")
%m - el mtodo de peticin (GET, POST, etc)
%p - Puerto local en que se recibi esta solicitud
%q - Cadena de consulta (al principio con una si es que existe '?')
%r - Primera lnea de la solicitud (el mtodo y el URI de la solicitud)
% s - cdigo de estado HTTP de la respuesta
%S - ID de sesin de usuario
%t - Fecha y hora, en el Formato Comn de Registro
%u - usuario remoto que ha sido autentificada (si existe), de lo contrario escribe "-"
(rayita)
%U - ruta de la URL solicitada
%v - el nombre del servidor local
Problema actual: Qu tenemos que hacer para poder obtener tambin en el Log un
atributo que me indique los tiempos de respuesta (en milisegundos)?
Respuesta:
Referencia: http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html
%a - La direccin IP remota
%A - La direccin IP local
%b - Bytes enviados, excepto los encabezados HTTP, o "-" si es cero
%B - Bytes enviados, excepto los encabezados HTTP
%h - nombre de host remoto (o la direccin IP si resolveHosts es falsa)
%H - protocolo de peticin
%l - nombre de usuario remoto lgica de identd (siempre vuelve "-")
%m - el mtodo de peticin (GET, POST, etc)
%p - Puerto local en que se recibi esta solicitud
%q - Cadena de consulta (al principio con una si es que existe '?')
%r - Primera lnea de la solicitud (el mtodo y el URI de la solicitud)
%s - cdigo de estado HTTP de la respuesta
%S - ID de sesin de usuario
%t - Fecha y hora, en el Formato Comn de Registro
%u - usuario remoto que ha sido autentificada (si existe), de lo contrario "-"
%U - ruta de la URL solicitada
%v - el nombre del servidor local
%D - Tiempo de tramitacin de la solicitud, en milisegundos
%T - Tiempo de tramitacin de la solicitud, en segundos
%I - nombre actual subproceso de solicitud (se puede comparar ms tarde con
stacktraces)
/konakart/Welcome.do
/konakart/Login.do
/konakart/LoginSubmit.do
/konakart/SelectCat.do
/konakart/SelectProd.do
/konakart/ShowReviews.do
/konakart/QuickSearch.do
/konakart/ShowRandomReviewDetails.do
/konakart/ShowCartitems.do
/konakart/AddToCartSubmit.do
/konakart/EditCartSubmit.do
/konakart/AddToCartFromProdid.do
/konakart/ShowOrderDetails.do
/konakart/MyAccount.do
1. Introduccin
El informe que se presenta describe cmo el equipo ha realizado la simulacin de la carga
de trabajo sobre nuestra aplicacin e-commerce Konakart. Para la construccin del
controlador se debe de obtener primero la forma matemtica del servidor web, y como un
servidor web es un sistema computacional y no uno fsico, la nica forma en la que se
puede modelar matemticamente es por medio de la data almacenada en los logs del propio
servidor, revisando los tiempos promedio de respuesta que tiene para las peticiones que se
le realiza. Al no contar con una data histrica ya que se trata de un proyecto acadmico, se
ha realizado una generacin y captura de data por medio de una simulacin de carga de
trabajo.
2. Objetivo de la corrida
Obtener el comportamiento de los tiempos de respuesta de nuestro servidor Apache-Tomcat
simulando una carga de trabajo mientras se vara el valor de MaxClients, de esta manera
obtenemos la data que usaremos en la construccin del controlador.
3. Clculos y configuraciones previas a la corrida
3.1 Cantidad mxima de MaxClients
Antes que nada, se debe determinar como mximo cuantos clientes puede soportar el
servidor antes de que entre en conflictos de disponibilidad de memoria, para ello debemos
realizar un clculo que nos lo indica. El clculo se realiza segn la siguiente ecuacin:
( )
En total, el sistema computacional cuenta con 5GB de memoria y el proceso del Apache
Tomcat ocupa 20MB. El sistema operativo usado en el servidor es Windows 7 Home
Premium, segn la pgina oficial de Microsoft, ocupa 1.2 GB. La memoria usada por las
otros procesos que estn en ejecucin es de 1.3 GB. En total hay 2.5 GB ocupados por los
procesos. Podemos verificar esto con ayuda del administrador de procesos del TuneUp:
En resumen, tenemos los siguientes datos:
( )
Quiere decir que aproximadamente como mximo podemos llegar a darle un valor de 128
clientes a nuestra directiva MaxClients. Como se trata de un valor de referencia, se
trabajar con un valor mximo de MaxClients igual a 130 clientes.
Valores ingresados
Max MaxClient 130 clientes
Min MaxClient 20 clientes
Vida del MaxClient 120 segundos
Perodo 2400 segundos
Con estos parmetros ingresados en el archivo Excel, se nos generan los siguientes
resultados (slo se muestran los 2 primeros perodos):
MC
140
120
100
80
60 MC
40
20
0
0 5000 10000 15000 20000 25000
En resumen, se tiene lo siguiente:
Paso 1
Clic derecho en Plan de Pruebas, navegamos por Aadir/Hilos (Usuarios)/ y
seleccionamos la opcin Grupo de Hilos, que representa una simulacin.
Paso 2
Clic derecho en el grupo de hilos recin creados, navegamos por Aadir/Controlador
Lgico/ y seleccionamos la opcin Controlador Simple, de esta forma podemos
controlar a qu hora inicia y termina la corrida.
Paso 3
Clic derecho sobre el controlador de tiempo que se acaba de agregar, navegamos por
Aadir/Elemento de Configuracin/ y seleccionamos la opcin Valores por defecto para
Peticin HTTP.
Se crear un objeto en donde podremos agregar los valores que compartirn todas las
pginas web que agregaremos en el siguiente paso. Slo ser necesario ingresar los datos de
nuestra mquina servidor.
Paso 4
Ahora empezaremos a agregar las pginas web que conforman nuestra aplicacin, aqu hay
un listado de todas ellas:
En total son 14 pginas. Ahora que sabemos cules son las pginas web que tiene nuestra
aplicacin, se tiene que agregar una a una cada pgina, y como es un trabajo mecnico-
repetitivo, slo mostraremos como ingresamos una pgina:
Agregaremos la pgina Welcome de nuestra aplicacin, para eso definimos los siguientes
datos:
Nombre: Welcome
Ruta: /konakart/Welcome.do
Notar que las opciones de Nombre de Servidor o IP y Puerto estn vacas ya que se
estn usando los valores por defecto para la peticin HTTP que agregamos en el paso 3.
Esta es la forma como se agrega una pgina web, y de igual forma se debe proceder para
agregar las otras 13 pginas.
Para poder obtener el log con esos 2 campos tenemos que configurar el archivo
server.xml ubicado en la carpeta conf del servidor Apache-Tomcat.
Para ello, abrimos el archivo server.xml con un editor de texto plano y dentro del archivo,
navegamos hasta la etiqueta Host.
Dentro de la etiqueta Host, agregamos lo siguiente:
De esta manera estamos creando nuestro log, lo importante aqu es entender los valores que
toman los atributos pattern, prefix, y suffix:
Atributo: pattern = %t %D
Indica que en el log se guardar los atributos Hora en que se realiza una peticin (%t), y
Tiempo de respuesta para esa peticin (%D).
4. Ejecucin de la corrida
Ahora que todas las configuraciones han terminado se debe de iniciar la corrida, para ello
definimos la hora inicio y de trmino de la corrida, tambin definimos la cantidad de
usuarios que estarn interactuando con la aplicacin:
En total la corrida durar 6 horas, se eligi 130 usuarios ya que es el mximo valor que el
MaxClient puede tomar.
Ahora que sabemos las caractersticas de nuestra corrida, procedemos a ingresar los datos
en el JMeter y en el sensor:
JMeter:
La aplicacin JMeter est corriendo en otra mquina que se encuentra en la misma red que
el servidor, la ip de la mquina es 192.168.18.106
Hay que saber que el nmero de hilos representa al nmero de usuarios que interactan con
la aplicacin, el perodo de subida representa cuanto demora en aparecer un nuevo cliente,
y el contador de bucle indica cuantas veces interactuar el usuario con las pginas web,
para nuestro caso es sin fin (acabar cuando termine la corrida).
Despus de esto, en el men Lanzar seleccionamos la opcin Arrancar.
Ahora el JMeter esperar la hora indicada para que empiece a generar la carga de trabajo.
Sensor:
El sensor construido para cambiar los valores de MaxClient estar tambin ejecutndose
junto al JMeter.
5. Resultados obtenidos
Finalizada la iteracin de 6 horas, nuestro sensor se encarga de calcular los tiempos
promedio de respuestas obtenidos.
El grfico obtenido a partir de los tiempos promedios de respuesta respecto al tiempo es el
siguiente:
T.Respuesta
600
500
400
300
T.Respuesta
200
100
0
0 5000 10000 15000 20000 25000
6. Siguiente paso
Con la data generada, ya podemos construir el controlador por medio de las herramientas
que nos brinda el Matlab.
Generacin del modelo matemtico
Los datos de entrada son la data que obtuvimos por medio de la simulacin de carga de
trabajo.
Pasos:
Paso 1 Importar los archivos con la data
Clic en la opcin Import data del Workspace.
Nos aparece una ventana de navegacin, nos dirigimos haca mc.csv y seleccionamos
abrir.
Repetimos el mismo proceso para respuesta.csv, con eso ya habremos importado los
datos que fueron generados en la simulacin:
Despus de esperar un momento, nos aparece la ventana del toolbox System Identification
Tool.
Paso 3 Cargar la data
Seleccionamos la opcin Time domain data
Input: maxclients
Output: tiemporespuesta
Data name: Data
Starting time: 1
Sampling interval: 1
Si activamos el checkbox Zeros and poles podresmo ver los ceros y polos:
Para ver un resumen de nuestra grfica, hacemos doble clic sobre ella:
Por ltimo, slo queda agregar el modelo matemtico generado al workspace de Matlab,
para ello arrastramos la grfica hasta la opcin To workspace
( )( )
( )
( )
F: Pre-filtro
C: Compensador (o controlador)
G: Planta
H: Sensor
Variable Significado
C Compensador o controlador
z Variable discreta de tiempo.
Ts Sampling time (tiempo de muestra). La creacin de modelos en tiempo
discreto es muy parecida a la creacin de modelos de tiempo continuo, salvo
que tambin se debe especificar un perodo de muestreo o el tiempo de la
muestra para los modelos de tiempo discreto. El valor de tiempo de muestreo
debe ser escalar y se expresa en segundos.
Diseo del controlador web con Lgica Difusa
Introduccin terica
Lgica difusa:
La lgica difusa o borrosa (Fuzzy Logic) ha surgido como una herramienta lucrativa para el
control de subsistemas y procesos industriales complejos, as como tambin para la
electrnica de entretenimiento y hogar, sistemas de diagnstico y otros sistemas expertos.
Aunque la lgica borrosa se invent en Estados Unidos el crecimiento rpido de esta
tecnologa ha comenzado desde Japn y ahora nuevamente ha alcanzado USA y tambin
Europa. La lgica borrosa es todava un boom en Japn, el nmero de cartas patentando
aplicaciones aumenta exponencialmente. Principalmente se trata de aplicaciones ms bien
simples de lgica borrosa.
Conjunto borroso:
Un conjunto difuso, es un conjunto que puede contener elementos de forma parcial. Es
decir que la propiedad puede ser cierta con un grado de verdad.
Como la edad comienza en 0, el rango ms inferior de este conjunto est claro. El rango
superior, por otra parte, es ms bien complicado de definir. Como un primer intento
colocamos el rango superiora en, digamos, 20 aos. Por lo tanto nosotros definimos B
como un intervalo denominado:
B = [0, 20]
Pasamos a continuacin a mostrar como un conjunto borroso nos permite definir una
nocin como "l/ella es un poco joven".
Tal y como constatamos en la introduccin podemos usar conjuntos borrosos para hacer
computadoras ms sabias, y ahora tenemos que codificar la idea ms formalmente. En
nuestro ejemplo primero codificamos todos los elementos del Universo de Discurso con 0 o
1. Una manera de generalizar este concepto est en permitir ms valores entre 0 y 1. De
hecho, nosotros permitimos infinitas alternativas entre 0 y 1, denominando el intervalo de
unidad Yo = [0, 1].
La interpretacin de los nmeros ahora asignados a todos los elementos del Universo de
Discurso es algo ms difcil. Por supuesto, el nmero 1 asignado a un elemento significa
que el elemento est en el conjunto B y 0 significa que el elemento no est definitivamente
en el conjunto el B. El resto de valores significan una pertenencia gradual al conjunto B.
Para ser ms concretos mostramos ahora grficamente el conjunto de gente joven de forma
similar a nuestro primer ejemplo por su funcin caracterstica.
De esta forma unos 25 aos de edad todava sera joven al grado de 50 por ciento.
El control borroso
Los controladores borrosos son las aplicaciones ms importantes de la teora difusa. Ellos
trabajan de una forma bastante diferente a los controladores convencionales; el
conocimiento experto se usa en vez de ecuaciones diferenciales para describir un sistema.
Este conocimiento puede expresarse de una manera muy natural, empleando las variables
lingsticas que son descritas mediante conjuntos borrosos.
Por ejemplo, para saber cundo una velocidad es alta o baja tendramos:
Sistema Mandani
Este es el sistema que usaremos para el diseo de nuestro controlador. En la figura se
muestra la configuracin bsica de un sistema tipo Mamdani:
Vemos 4 mdulos:
Fuzzificador
Teniendo los diferentes niveles de pertenencia arrojados por el fuzzificador, los mismos
deben ser procesados para general una salida difusa. La tarea del sistema de inferencia es
tomar los niveles de pertenencia y apoyado en la base de reglas generar la salida del sistema
difuso.
La base de reglas son la manera que tiene el sistema difuso de guardar el conocimiento
lingstico que le permiten resolver el problema para el cual ha sido diseado. Estas reglas
son del tipo IF-THEN.
Una regla de la base de reglas o base de conocimiento tiene dos partes, el antecedente y la
conclusin como se observa en la siguiente figura:
En un sistema difuso tipo Mamdani tanto el antecedente como el consecuente de las reglas
estn dados por expresiones lingsticas.
Defuzzificador
La salida que genera el mecanismo de inferencia es una salida difusa, lo cual significa que
no puede ser interpretada por un elemento externo (por ejemplo un controlador) que solo
manipule informacin numrica. Para lograr que la salida del sistema difuso pueda ser
interpretada por elementos que solo procesen informacin numrica, hay que convertir la
salida difusa del mecanismos de inferencia; este proceso lo realiza el fuzzificador.
PASO 1:
Ejecutamos la herramienta de lgica difusa de Matlab, para ello escribimos fuzzy en la
consola:
PASO 2:
Nos aparecer la siguiente ventana:
Como vemos estamos usando un sistema del tipo Mandani, tambin usaremos la
configuracin por defecto:
PASO 3:
Lo siguiente es definir las variables que se usarn, segn Fuzzy Control for Guaranteeing
Absolute Delays in Web Servers, tenemos tres variables con sus respectivos valores:
Variables de entrada:
E: Error de retraso
Variable de salida:
Y obtenemos lo siguiente:
Ahora por cada variable agregada, implementaremos las funciones que forman el conjunto
borroso, para esto hacemos doble clic sobre la variable que queremos editar y nos aparecer
el cuadro de edicin para esa variable:
Para la variable E:
Para la variable VE:
Con estas 3 variables, en total se producirn 25 reglas, que tendrn la siguiente forma:
E NB NS Z PS PB
VE
NB NH NB NB NM NS
NS NB NM NS Z PS
Z NS Z Z Z PS
PS NS Z PS PM PB
PB PS PM PB PB PH
Pasaremos a hacer estas 25 reglas, para ello hacemos doble clic en el cuadro blanco que
tiene como rtulo controlador, nos aparecer la siguiente ventana:
Esta ventana nos permite agregar las reglas de forma interactiva, y despus de agregar todas
las 25 reglas obtenemos lo siguiente:
Para ver todas nuestras reglas de forma visual, hacemos clic en view/rules, se nos muestran
entonces las 25 reglas:
Estas reglas obtenidas se implementarn en un lenguaje de listas llamado LISP, el cual es
perfecto para los sistemas expertos:
Diseo del controlador con Redes Neuronales
Introduccin
Se propone un enfoque que una el modelo neuronal y el control de retroalimentacin para
lograr un nivel de servicio de respuesta basado en la especificacin del tiempo, para un
servidor web
Mdulo Neuronal:
Se utiliza para calcular el valor del parmetro MaxClients del servidor Apache, para que
pueda responder en un tiempo determinado dada la respuesta media que actualmente se
observa en la tasa media de llegadas de solicitud
Tambin, segn Mixed neural and feedback controller for Apache web server, para el
modulo neuronal se debe de usar la arquitectura 4/16/1 (4 neuronas en la capa de entrada,
16 neuronas para la capa oculta y 1 neurona para la capa de salida); y para el mdulo de
control de retroalimentacin se debe de usar un controlador PI generado por la data
histrica o simulada
Herramienta en Matlab
La herramienta que se usa en Matlab es la nntool, para ejecutarla escribimos ese
comando:
Despus de importar la data, seleccionamos la opcin new para crear la red neuronal, nos
aparece la siguiente ventana
Aqu rellenamos los datos como siguen:
Si hacemos doble clic sobre nuestra red neuronal y navegamos hasta la pestaa Train,
podemos hacer que nuestra red aprenda con datos de entrada y targets.
Con la red neuronal creada, podemos usar una herramienta externa que la utilice como
input para generar nuestra red neuronal en C o en Java.
Diseo del controlador con Algoritmos Genticos
Conceptos bsicos
Los algoritmos genticos son mtodos de bsqueda basados en seleccin natural (Teoria de
Darwin). El principio de los algoritmos genticos es tomar, dentro de una poblacin de
individuos dada, los individuos que mejor se acomoden a los resultados segn los
parmetros preestablecidos de manera que al ser reducida sta poblacin, se crea una nueva
generacin mejor adaptada a la situacin.
Los algoritmos genticos recurren a analizar los datos proporcionados (sea algn tipo de
rango que hayamos preestablecido), y generan una regla o modelo para dichos datos con la
forma de controlador, para la cual trabajara con datos pares (es decir, analizar los datos de
2 en 2), con los cuales realizar un cruce y obtendr una mutacin (o sea, un solo dato), de
tal manera que cuando termine con los datos analizados en primera instancia, se proceder
a crear la siguiente generacin, hasta que el nmero de datos sea muy pequeo o que
cumpla algn condicin establecida anteriormente.
Matlab
La herramienta para la utilizacin de los algoritmos genticos es gatool
Conclusiones
La generacin de la data del servidor necesariamente requiere tener al cliente y al
servidor ejecutndose en dos mquinas diferentes.
Una vez generada la data del servidor, la generacin del modelo matemtico y de
los controladores es ms sencilla gracias a los toolbox de Matlab.
La lgica difusa es especial para tratar aquellos sistemas no lineales
Por medio de las redes neuronales podemos hacer que el controlador aprenda
Los algoritmos genticos estn basados en reforzar a los otros tipos de controladores