You are on page 1of 73

Universidad Nacional

Mayor de San Marcos


Decana de Amrica, fundada en 1551

Facultad de Ingeniera de Sistemas e


Informtica
Ingeniera de Control

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:

Primero descargamos el instalador del servidor Apache desde la pgina oficial


(http://apache.cs.utah.edu//httpd/binaries/win32/httpd-2.2.19-win32-x86-no_ssl.msi)

Una vez descargado el instalador, lo ejecutamos y obtenemos la siguiente ventana:


Seleccionamos la opcin Next, aparece la siguiente ventana:

Se nos muestra la licencia de Apache, aceptamos los trminos seleccionando la opcin I


accept the terms in the license agreement y damos clic en Next, obtenemos la siguiente
ventana:
En esta ventana se nos dice qu es Apache, slo tiene un carcter informativo, damos clic
en Next y se nos muestra la siguiente ventana:

En esta ventana se nos muestra 3 casillas para rellenar:

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.

Adminisrators Email Address: Es el correo del administrador, en este caso usaremos el


de alonso_bl57@hotmail.com

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.

Despus de esto el Apache mostrar una ventana de confirmacin para la instalacin,


seleccionamos Next, se comienza instalar el Apache, y una vez que termine de instalarse
se nos muestra la ventana en donde se informa que la instalacin fue un xito, damos clic
en Ok y la instalacin de Apache estar completa.

Adicionalmente tambin instalaremos el Tomcat para conectarlo con el Apache y para


poder trabajar con java y contenido dinmico, los pasos son los siguientes:

Descargamos el archivo .ZIP (versin estable) de la pgina oficial


(http://apache.mesi.com.ar/tomcat/tomcat-7/v7.0.20/bin/apache-tomcat-7.0.20-windows-x86.zip), en
este caso trabajaremos con el Tomcat 7.0

Una vez descargado tenemos nuestro .ZIP


Lo extraemos y obtenemos la siguiente carpeta:

A esta carpeta le cambiamos el nombre por Tomcat (sin comillas) y la pegamos en el


Disco C: \
Ahora slo falta hacer que el Tomcat y el Apache trabajen juntos, para esto necesitamos
descargar un mdulo de Apache, el mdulo mod_jk.so para eso entramos a la pgina
oficial de Apache y lo descargamos desde ah (http://www.apache.org/dist/tomcat/tomcat-
connectors/jk/binaries/windows/tomcat-connectors-1.2.32-windows-i386-httpd-2.2.x.zip)

Cuando termine la descarga obtenemos nuestro archivo .ZIP

Lo extraemos y obtenemos nuestro archivo mod_jk.so

Este archivo lo copiaremos a la carpeta modules de nuestra instalacin de Apache, para


nuestro caso est en C: \Apache\modules
Ahora, dentro de la carpeta Apache, nos dirigimos a la carpeta conf (C:\Apache\conf),
dentro hay un archivo llamado httpd.conf, abrimos este archivo con un editor de texto
plano

Al final del archivo httpd.conf agregamos lo siguiente:

##############################################################
#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
##############################################################

Ahora dentro, todava en la carpeta conf, creamos un archivo llamado


workers.properties y lo abrimos con un editor de texto plano

Dentro de este archivo copiamos lo siguiente:

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.

Configuraremos el mdulo mod_rewrite.so, con esta configuracin todo el contenido


(esttico y dinmico) se estara ruteando para que lo resuelva el Tomcat. Ahora vamos a ver
cmo configurar Apache para que slo enve el dinmico (JSPs, servlets, etc.) y resuelva l
el esttico, por default se instala junto con el Apache, pero no se carga junto con l, as que
haremos que se cargue al iniciar el Apache:

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
##############################################################

Guardamos los cambios y eso es todo.

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.

Para un ptimo desarrollo de pruebas, es necesario tener ciertas nociones funcionales de la


aplicacin que se va a evaluar. Si esto no es as, las pruebas no sern completas al no saber
por ejemplo si ha devuelto la hoja apropiada a la peticin hecha o si nos ha permitido
acceder con un login no apropiado.

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:

Carga y administracin de productos y categoras de productos.


Permite la administracin de compras y seguimiento de estado de los mismos.
Soporta varios precios por producto.
Permite generar promociones y cupones de descuentos.
Incluye un nmero restringido de campos extra para la adaptacin del mdulo a
necesidades particulares.

La implementacin en nuestro servidor Apache-Tomcat es muy sencilla y la detallaremos a


continuacin:
Primero descargamos el aplicativo e-commerce de la pgina oficial de Konakart
(http://www.konakart.com/downloads/community_edition)

Una vez descargado obtenemos nuestra ejecutable

Lo ejecutamos y nos pregunta si queremos proceder con la instalacin, elegimos la opcin


Yes

Nos aparece la ventana de Setup del Konakart, seleccionamos la opcin Next


Nos aparecen los trminos y condiciones, aceptamos las condiciones eligiendo la opcin I
accept the terms of the license agreement y damos clic en Next.

Se nos pregunta en donde queremos realizar la instalacin, lo instalaremos en C:


\Konakart, damos clic en Next.
Ahora, como es un aplicativo e-commerce basado en java, se nos pregunta en que ruta est
instalado el JRE, en nuestro caso ingresaremos nuestro JDK que est ubicado en C:
\Program Files\Java\jdk.1.6.0_14 y damos clic en Next

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

Se nos muestra entonces un resumen de los datos de la instalacin del aplicativo e-


commerce Konakart. Es importante notar que se nos asigna un usuario y contrasea con
la cul podremos administrar al Konakart. (Usuario: admin@konakart.com Contrasea:
princess)

Damos clic en Next para proseguir con la instalacin:


Una vez terminada la instalacin se nos pide elegir un sistema gestor de base de datos, esto
porque para que el Konakart funcione necesita tablas en donde guardar la informacin. La
mquina elegida para ser el servidor tiene instalado el MySQL, as que elegimos esa opcin
y le 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).

Para configurar esta directiva, accedemos al archivo server.xml

Observamos lo siguiente:

Actualmente tenemos asignados un mximo de 150, este valor lo variaremos.

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:

Dentro del archivo, navegamos hasta la etiqueta Host

Agregamos lo siguiente:
El resultado es el siguiente:

Ahora reiniciamos el servidor y tenemos un archivo del tipo local_host_access_log.yyyy-


mm-dd.txt (dentro de la carpeta logs) en donde se encuentra la actividad del servidor:

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

Buscando ms se encontr lo siguiente:

%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)

Nosotros necesitamos %D (o sea el tiempo de respuesta en milisegundos)

Definicin de las pginas a las que haremos


peticiones:
Nuestro host es: 192.168.18.105

Nuestras pginas son:

/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

Definicin de los campos que se necesitan:


Para los campos finales:
Slo necesitamos 2 campos:

Entrada: Max Clients


Salida: Tiempo promedio de respuesta

Para los campos del JMeter:


Usar la tabla resumen y guardar los datos.
Realizacin de la corrida para el
modelado matemtico del servidor web

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:

Memoria total del sistema: 5GB


Memoria usada por el sistema operativo (Windows 7 Home Premium): 1.2 GB
Memoria usada por otros procesos en ejecucin: 1.3 GB
Memoria que ocupa el proceso Apache: 20 MB

Reemplazando los datos en la ecuacin tenemos:

( )

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.

3.2 Determinacin de la variacin de los valores de MaxClients


Al tener ya un valor mximo de MaxClients definido, podemos definir los valores en los
que variar. La variacin de valores del MaxClient sigue una forma sinusoidal, y para
obtener automticamente cuales son estos valores se cre una hoja Excel que los genera
automticamente, slo se tienen que ingresar los parmetros necesarios:

Valores ingresados
Max MaxClient 130 clientes
Min MaxClient 20 clientes
Vida del MaxClient 120 segundos
Perodo 2400 segundos

Eleccin del valor mximo que tomar el MaxClient:


Obtenido por medio de una ecuacin que considera la memoria disponible en el sistema
(calculado en la seccin Cantidad mxima de MaxClients), el valor fue de 130.

Eleccin del valor mnimo que tomar el MaxClient:


Como es absurdo definir un valor de MaxClient igual a cero, se opt por un valor que sea
bajo en comparacin con el valor mximo que puede tomar, sin llegar a tocar el cero, por
eso escogimos un valor igual a 20.

Eleccin de la duracin de la vida de un MaxClient:


Se realizaron algunas interacciones por parte de usuarios con la aplicacin Konakart y
calculamos que para que un usuario este tranquilo en su navegacin por las pginas debe de
tener un aproximado de 2 minutos, por eso le dimos un valor de 120 segundos.

Eleccin de la duracin del perodo:


La determinacin del perodo se calcul a partir de cuntas variaciones de MaxClients
queramos obtener en todo el periodo, decidimos obtener 20 variaciones en total ya que as
tenemos variada cantidad de diferentes valores para nuestro MaxClient, adems obtenemos
un valor de 40 minutos por perodo, por eso escogimos un valor de 2400 segundos para la
duracin del perodo.

Con estos parmetros ingresados en el archivo Excel, se nos generan los siguientes
resultados (slo se muestran los 2 primeros perodos):

t Seno Discreto(t) t Seno Discreto(t)


0 75 1920 22
120 91 2040 30
240 107 2160 42
360 119 2280 58
480 127 2400 75
600 130 2520 91
720 127 2640 107
840 119 2760 119
960 107 2880 127
1080 91 3000 130
1200 75 3120 127
1320 58 3240 119
1440 42 3360 107
1560 30 3480 91
1680 22 3600 75
1800 20 3720 58

En forma visual, a partir de los datos obtenemos la siguiente grfica:

MC
140
120
100
80
60 MC
40
20
0
0 5000 10000 15000 20000 25000
En resumen, se tiene lo siguiente:

Valor mximo que alcanza el MaxClient: 130


Valor mnimo que alcanza el MaxClient: 20
Tiempo de vida de un MaxClient: 120 segundos
Duracin del perodo: 2400 segundos
Amplitud de la grfica: 55

3.3 Algoritmo usado para la gestin de los logs y de los los


archivos de configuracin del servidor
Como se nos pide cambiar en caliente el valor de MaxClient mientras se realiza la
corrida, se construy una aplicacin en Java con la IDE Eclipse Indigo que se encarga de
cambiar el valor de esta directiva (la aplicacin est adjunta dentro de la carpeta
Aplicacin sensor del entregable), se muestra una pantalla de la aplicacin:

Tambin, al finalizar la corrida, la aplicacin se encarga de calcular los valores promedios


de los tiempos de respuesta y colocarlos en un archivo Excel.
3.4 Configuracin de la carga de trabajo
El generador de la carga de trabajo elegido es el JMeter. Para que el JMeter pueda simular
la carga de trabajo debemos indicarle cules son las pginas web de nuestra aplicacin e-
commerce Konakart con las que va a interactuar. Para esto creamos un nuevo test de
pruebas en el JMeter de la siguiente manera:

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.

Nombre de servidor o IP: 192.168.18.105


Puerto: 8780

Paso 4
Ahora empezaremos a agregar las pginas web que conforman nuestra aplicacin, aqu hay
un listado de todas ellas:

Listado de pginas web:


/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

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:

Clic derecho sobre el controlador de tiempo, navegamos por Aadir/Muestreador/ y


seleccionamos la opcin Peticin HTTP.

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.

Ahora slo queda configurar el log.

3.4 Configuracin del log


El log es el lugar en donde queda registrada la actividad del servidor, para nuestro caso el
log tiene 2 campos:

Hora en que se realiza la peticin


Tiempo de respuesta para la peticin

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).

Atributo: prefix = localhost_access_log.


Indica que el nombre del archivo ser siempre antecedido por la palabra
localhost_access_log., despus de este prefijo se le agregar la fecha actual.

Atributo: suffix = .cvs


Indica que el log se generar en un archivo del tipo .CSV, este tipo de archivos es especial
para trabajar con datos tabulados, adems tiene la ventaja de ser un archivo de texto plano.

Con esto la configuracin previa al inicio de la corrida ha culminado, ahora se proceder a


ejecutarla.

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:

Hora de inicio de la corrida: 2011/10/08 00:30:32


Hora de trmino de la corrida: 2011/10/08 06:30:32
Nmero de usuarios que interactan: 130

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

Parmetros de configuracin para la corrida:

Nmero de Hilos: 130


Perodo de Subida (en segundos): 1
Contador de bucle: Sin fin (seleccionado)
Tiempo de Arranque: 2011/10/08 00:30:32
Tiempo de Finalizacin: 2011/10/08 06:30:32
Duracin (segundos): 216000

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.

Parmetros de configuracin para la corrida:

Hora de inicio: 2011/10/08 00:30:32


Hora de fin: 2011/10/08 06:30:32
Min MC: 20
Max MC: 130
Duracin del perodo: 2400
Tiempo vida MC: 120

Se muestra el grfico correspondiente con la configuracin:

Seleccionamos comenzar y el sensor esperar la hora indicada para empezar a trabajar.


Una vez terminada las 6 horas de la corrida, nuestro archivo log estar poblado con miles
de datos generados por la simulacin, lo podemos apreciar en la siguiente imagen:

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.

Para el diseo haremos uso del toolbox de Matlab

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:

Paso 2 Ejecutar el toolbox para la identificacin del modelo


matemtico
En la lnea de comandos escribimos: ident

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

Nos aparece la siguiente ventana:

Llenamos los siguientes datos:

Input: maxclients
Output: tiemporespuesta
Data name: Data
Starting time: 1
Sampling interval: 1

Seleccionamos la opcin Import y ya tenemos la data cargada.


Paso 4 Generacin del modelo matemtico por medio de ARX
En Preprocess, seleccionamos la opcin Quick start

Nos aparece la siguiente grfica:

U1 representa a nuestra variable de entrada MaxClient


Y1 representa a nuestra variable de salida Tiempo de respuesta

Ahora, en Estimate seleccionamos la opcin Linear parametric models


Nos aparece una ventana en donde se nos pide ingresar los valores para el modelo lineal,
ingresamos na = 2, nb = 2, nk = 3; adems el nombre de nuestro modelo ser: arx223

Seleccionamos la opcin Estimate y obtenemos una nueva grfica:


Seleccionamos la grfica hacindole clic, y al activar el checkbox Model ouput podemos
comprobar el porcentaje de confianza de nuestra grfica:

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:

En el resumen, vemos que nuestro modelo matemtico es:

Discrete-time IDPOLY model: A(q)y(t) = B(q)u(t) + e(t)


A(q) = 1 0.5167 q^-1 + 0.3558q^-2
B(q) = 8.277 q^-3 6.862 q^-4

Estimated using ARX from data set eDat


Loss function 41.5821 and FPE 45.2783
Sampling interval 1

Por ltimo, slo queda agregar el modelo matemtico generado al workspace de Matlab,
para ello arrastramos la grfica hasta la opcin To workspace

Ya est todo listo para poder construir los controladores.


Diseo del controlador web con PID
Para el diseo del controlador PID haremos uso de la herramienta sisotool, la llamaremos
desde la consola con el comando sisotool, y le pasaremos como referencia nuestro modelo
matemtico, llamado arx223.

Despus de esto nos aparece la siguiente ventana:

Navegamos a la pestaa Automated Tuning y en Desing method seleccionamos la


opcin PID Tuning.
Como vemos por defecto tenemos seleccionada la opcin de PID, si quisiramos generar un
controlador de otro tipo simplemente cambiamos la opcin por la que nos parezca mejor.

Despus seleccionamos la opcin Update Compensator y obtenemos nuestro controlador:


Finalmente, obtenemos la funcin que debe de ser implementada en el servidor:

( )( )
( )
( )

Donde, para la arquitectura mostrada

F: Pre-filtro
C: Compensador (o controlador)
G: Planta
H: Sensor

Adems, para la ecuacin:

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.

Por ejemplo, queremos describir el conjunto de gente joven. Ms formalmente nosotros


podemos denotar:

B = {conjunto de gente joven}

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]

Ahora la pregunta es: por qu alguien es en su 20 cumpleaos joven y al da siguiente no?


Obviamente, este es un problema estructural, porque si movemos el lmite superior del
rango desde 20 a un punto arbitrario podemos plantear la misma pregunta.

Una manera ms natural de construir el conjunto B estara en suavizar la separacin estricta


entre el joven y el no joven. Nosotros haremos esto para permitir no solamente la (crispada)
decisin "l/ella SI est en el conjunto de gente joven" o "l/ella NO est en el conjunto de
gente joven", sino tambin las frases ms flexibles como "l/ella SI pertenece un poquito
ms al conjunto de gente joven" o "l/ella NO pertenece aproximadamente al conjunto de
gente joven".

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

La entrada de un sistema de lgica difusa tipo Mamdani normalmente es un valor nmerico


proveniente, por ejemplo, de un sensor; para que este valor pueda ser procesado por el
sistema difuso se hace necesario convertirlo a un "lenguaje" que el mecanismos de
inferencia pueda procesar. Esta es la funcin del fuzzificador, que toma los valores
numricos provenientes del exterior y los convierte en valores "difusos" que pueden ser
procesados por el mecanismo de inferencia. Estos valores difusos son los niveles de
pertenencia de los valores de entrada a los diferentes conjuntos difusos en los cuales se ha
dividido el universo de discurso de las diferentes variables de entrada al sistema.

Mecanismo de inferencia difusa

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.

Base de Reglas Difusas

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.

Diseo del controlador


Para el diseo del controlador con Lgica Difusa, haremos uso del toolbox Fuzzy Logic
de Matlab.

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:

And method: Para el lado de las premisas, usaremos el conector AND


Or method: Para el lado de los consecuentes, usaremos el conector OR
Implication: Seleccionamos min para Mandani
Aggregation: Si 2 ms reglas son activadas, selecionaremos aquella MAX
Defuzzification: Se traduce como desborrosificacin, se usar el del tipo de Centro
de Masas.

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

Conjuntos Borrosos: Rango Tipo de Funcin Parmetros


NB (Negative Big) <-14;-1] Trapezoidal [-14 -10 -8 -1]
NS (Negative Small) [-8;0] Triangular [-8 -1 0]
Z (Zero) <-1;1] Triangular [-1 0 1]
PS (Posotive Small) <0;8] Triangular [0 1 8]
PB (Positive Big) <1;14> Trapezoidal [1 8 10 14]

VE: Variacin de error de retraso


Conjuntos Borrosos: Rango Tipo de Funcin Parmetros
NB (Negative Big) <-14;-2] Trapezoidal [-14 -12 -10 -2]
NS (Negative Small) <-10;0] Triangular [-10 -2 0]
Z (Zero) <-2;2] Triangular [-2 0 2]
PS (Posotive Small) <0;10] Triangular [0 2 10]
PB (Positive Big) <2;14> Trapezoidal [2 10 12 14]

Variable de salida:

VP: Proceso de regulacin

Conjuntos Borrosos: Rango Tipo de Funcin Parmetros


NH (Negative Huge) <-40;-18] Triangular [-40 -32 -18]
NB (Negative Big) <-32;-4] Triangular [-32 -18 -4]
NH (Negative <-6;-2] Triangular [-6 -4 -2]
Medium)
NS (Negative Small) <-4;0] Triangular [-4 -2 0]
Z (Zero) <-2;2] Triangular [-2 0 2]
PS (Positive Small) <0;4] Triangular [0 2 4]
PM (Positive <2;6] Triangular [2 4 6]
Medium)
PB (Positive Big) <4;32] Triangular [4 18 32]
PH (Positive Huge) <18;40] Triangular [18 32 40]

Entonces agregamos las variables en Matlab:

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:

Para la variable VP:


Paso 4:

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

Arquitectura de control basada en redes neuronales retroalimentadas


Para el diseo del controlador se sigue la arquitectura definida en Mixed neural and
feedback controller for Apache web server:

En esta arquitectura, el mdulo neuronal se encarga de calcular el valor del parmetro


MaxClients para lograr un tiempo medio de respuesta, dado el que se observa actualmente
en la tasa de llegada, mientras que el mdulo de control de retroalimentacin compara el
tiempo de respuesta del servidor con el tiempo deseado y ajusta el MaxClient para asegurar
que el tiempo sea deseado.

En resumen, estos 2 mdulos se encargan de:

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

Mdulo de control de retroalimentacin


Compara el tiempo medio de respuesta actual del servidor con el tiempo medio deseado, y
ajusta el MaxClients para asegurarse de que el tiempo medio de respuesta deseada es
mantenido.

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:

Nos muestra la siguiente ventana:


En esta ventana elegimos la opcin Import para importar los datos de nuestro servidor:

Como Input Data seleccionamos maxclient y como Target Data seleccionamos


tiemporespuesta.

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:

Tipo de red: Feed-forward backprop


Data de entrada: MaxClient
Data objetivo: Tiempo de respuesta
Funcin de aprendizaje: LearnGDM
Nmero de capas: 2
o En la primera capa hay 4 neuronas
o En la segundo hay 16 neuronas

Despus damos clic en la opcin crear y obtenemos nuestra red neuronal:

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.

Pasos para elaborar un algoritmo gentico


Definir la funcin objetivo.- sta funcin representa la restriccin a la cual se
deben adaptar los individuos de la poblacin de cada generacin.
Definir el tamao de la poblacin.- Se debe escoger a la poblacin con la
flexibilidad que sea manejable para el desarrollo y solucin del problema.
Definir la codificacin de posibles soluciones.- Se debe definir un cdigo que
automatice el proceso de las generaciones.
Definir el mecanismo de seleccin.- Se centra en elegir a los individuos ms
adaptados de cada generacin para poder establecer una nueva mejor.
Definir parmetros de control.- El cruce y mutacin representan los individuos
escogidos de una generacin que crearn la siguiente generacin.
Definir tasa de convergencia.- Debemos de definir en qu momento detener el
algoritmo, (podemos establecer un nmero fijo de iteraciones).

DESARROLLO DE UN ALGORITMO GENTICO


DIAGRAMA DE FLUJO DE UN ALGORITMO GENETICO

Algoritmos genticos relacionados a la Ingeniera de Control


A lo largo del curso hemos aprendido distintos mtodos para realizar el control de sistemas,
de manera que stos se adapten rpidamente y de la mejor forma a cualquier cambio o
irregularidad que pueda ocurrir.

Los algoritmos genticos en la ingeniera de control tiene el objetivo de crear un modelo


con un intervalo de error mnimo para la funcin objetivo que le asignemos para poder
controlar el tipo de sistema en cuestin, basndose en los parmetros que le
proporcionemos.

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.

Algoritmos genticos relacionados al control de un servidor E-


Commerce
Definir la Funcin Objetivo
La funcin objetivo (FO) para controlar un E Commerce est representada por la
diferencia entre el resultado esperado y el resultado obtenido, es decir, el error. Y el
objetivo ser minimizar dicho error a cero, con esto estableceramos parmetros que
hagan que nuestro servidor como hardware se adecue de manera ptimo a los
cambios irregulares en carga de trabajo.

Definir el tamao de la poblacin


La poblacin para la definicin de nuestro modelo de algoritmos genticos vendra a
ser los datos que arrojo la corrida en el sistema definiendo los parmetros como MC
y otros.

Definir la codificacin de posibles soluciones


La codificacin se refiere al algoritmo que generara las generaciones y mostrar el
proceso por el cual atraviesa cada uno de los individuos (datos MC y datos TR),
para su respectivo cruce y mutacin. De manera que muestre la mejora de cada
generacin.

Definir el mecanismo de seleccin


Refiere a aquellos individuos (datos) que se adaptan mejor a la FO para establecer
un patrn que se adapte mejor a los resultados esperados, de manera que crearemos
una generacin que evalu los cambios y recurra a los parmetros especficos (por
ejemplo, actualizaciones en el MC), que sean necesarios para controlar un sistema E
Commerce.

Definir parmetros de control


Aqu realizamos el cruce y mutacin creando as una nueva lista de datos los cuales
son los que ms se adaptan a los cambios e irregularidades durante una corrida, para
establecer un mejor control y crear flexibilidad en el sistema.
Estos nuevos datos resultantes (mutaciones), representan la nueva generacin de
individuos (datos), los cuales se volvern a analizar de ser necesario, para poder
establecer un modelo eficiente.

Definir tasa de convergencia


Este es el paso final, donde indicamos en qu momento deseamos detener el
algoritmo y usar la generacin resultante, para la generacin del nuevo modelo
sobre el cual trabajaremos para controlar el sistema e commerce.

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

You might also like