Algoritmos de Optimizacion
Algoritmos de Optimizacion
Algoritmos de Optimizacion
Dirigido por:
Prof. José Jaime Ruz Ortiz
Dpto. Arquitectura de Computadores y Automática
Sistemas Informáticos Curso 2002-2003
2
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Índice
1.- Resúmenes............................................................................................. 6
1.1.- Resumen.......................................................................................... 6
1.2.- Summary ......................................................................................... 6
2.- Palabras clave......................................................................................... 7
3.- Introducción ........................................................................................... 8
4.- Algoritmos de Optimización....................................................................... 9
4.1.- Optimización con Restricciones sobre Dominios Finitos............................ 9
4.1.1.- Introducción ............................................................................... 9
4.1.2.- Restricciones de dominios finitos ................................................... 9
4.1.2.1.- Resolutor mediante backtracking simple ................................. 10
4.1.2.2.- Nodo y Arco Consistencia ..................................................... 10
4.1.2.3.- Consistencia de límites ......................................................... 11
4.2.- Ramificación y Poda con Backtracking ................................................ 13
4.2.1.- Introducción ............................................................................. 13
4.2.2.- Conceptos básicos ..................................................................... 13
4.2.3.- Metodología de resolución........................................................... 14
4.2.4.- Algoritmo general ...................................................................... 15
4.2.5.- Backtracking............................................................................. 15
4.2.6.- Esquema del algoritmo implementado .......................................... 16
4.3.- Algoritmo Genético .......................................................................... 17
4.3.1.- Introducción y conceptos ............................................................ 17
4.3.2.- Características de los algoritmos genéticos.................................... 17
4.3.3.- Decisiones para implementar un algoritmo genético ....................... 18
4.3.4.- El operador de selección ............................................................. 19
4.3.5.- El operador de cruce .................................................................. 20
4.3.6.- El operador de mutación............................................................. 21
4.3.7.- Esquema general del algoritmo genético ....................................... 23
5.- Recursos de Internet utilizados en el sistema ............................................ 24
5.1.- Páginas estáticas............................................................................. 24
5.2.- Páginas activas ............................................................................... 24
5.3.- Servicios Web ................................................................................. 25
5.3.1.- SOAP (Simple Object Access Protocol) .......................................... 29
5.3.1.1.- Capas de Red...................................................................... 29
5.3.1.2.- XML, la clave en la descripción de servicios Web ...................... 30
5.3.1.3.- Anatomía de una petición/respuesta de SOAP .......................... 30
5.3.2.- WSDL (Web Service Description Language) ................................... 32
5.3.2.1.- Anatomía de un documento WSDL ......................................... 32
5.3.2.2.- Generando la descripción de servicio WSDL ............................. 33
5.3.3.- UDDI (Universal Description, Discovery, and Integration) ................ 33
5.3.3.1.- Secciones Blanca, Amarilla y Verde. ....................................... 34
5.3.3.2.- Estructura central de UDDI ................................................... 34
5.3.3.3.- Características de UDDI........................................................ 34
6.- Plataforma Tecnológica: Microsoft ............................................................ 35
6.1.- ASP .NET........................................................................................ 35
6.1.1.- Formularios Web ....................................................................... 36
6.1.1.1.- Escribir la página de formularios Web ..................................... 36
6.1.1.2.- Utilizar bloques de representación ASP <%%> ........................ 37
6.1.1.3.- Introducción a controles de servidor ASP.NET .......................... 37
6.1.1.4.- Controlar eventos de controles de servidor.............................. 37
6.1.1.5.- Utilizar controles de servidor personalizados............................ 37
6.1.1.6.- Listas, datos y enlace de datos .............................................. 37
6.1.1.7.- Controles de validación de formulario ..................................... 38
6.1.2.- Servicios Web de ASP.NET .......................................................... 38
6.1.2.1.- Obtener acceso a servicios Web............................................. 39
3
Sistemas Informáticos Curso 2002-2003
4
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.1.- Parser...................................................................................... 99
8.3.1.1.- Diagrama de clases ............................................................. 99
8.3.1.2.- Diagrama de secuencia .......................................................101
8.3.2.- AG .........................................................................................102
8.3.2.1.- Diagrama de clases ............................................................103
8.3.2.1.- Diagramas de secuencia ......................................................105
8.3.3.- InterfazWindowsAG ..................................................................107
8.3.3.1.- Diagrama de clases ............................................................107
8.3.4.2.- Diagramas de secuencia ......................................................109
8.3.4.3.- Arquitectura ......................................................................111
8.3.4.- InterfazWebAG.........................................................................112
8.3.4.1.- Diagrama de clases ............................................................112
8.3.4.2.- Diagramas de secuencia ......................................................114
8.3.4.3.- Arquitectura ......................................................................116
8.3.5.- InterfazServicioWebAG..............................................................117
8.3.5.1.- Diagrama de clases ............................................................117
8.3.5.2.- Diagrama de secuencia .......................................................119
8.3.5.3.- Arquitectura ......................................................................120
8.3.6.- ServicioWebAG ........................................................................121
8.3.6.1.- Diagrama de clases ............................................................121
8.3.6.2.- Diagrama de secuencia .......................................................123
9.- Utilización y ejemplos ...........................................................................124
9.1.- Optimización con Restricciones sobre Dominios Finitos.........................124
9.1.1.- Clientes nativos (clienteWin32 y clienteWSWin32).........................124
9.1.2.- Cliente Web (clienteWebResolutor) .............................................135
9.2.- Ramificación y poda con Backtracking ...............................................142
9.2.1.- Cliente Win32 / WSResolutorRPR ................................................142
9.2.2.- ClienteWebRPR ........................................................................147
9.3.- Algoritmo genético .........................................................................150
9.3.1.- Aplicación Windows y Aplicación Servicio Web .............................150
9.3.2.- Aplicación Web.........................................................................162
10.- Bibliografía ........................................................................................169
5
Sistemas Informáticos Curso 2002-2003
1.- Resúmenes
1.1.- Resumen
1.2.- Summary
The system can be accessed using three different methods: from the server
that supports the system using a native interface, from a remote computer
connected to Internet using a conventional browser and, finally, from a native
interface on a remote computer connected to Internet using Web Services XML.
The whole system has been developed within the Microsoft.NET platform, so
to be executed, it requires the Framework .NET software on the server side, and on
the client side only for Web Services access.
6
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
7
Sistemas Informáticos Curso 2002-2003
3.- Introducción
En este proyecto hemos desarrollado el diseño y la implementación de un
sistema de optimización con restricciones en el que se integran tres alternativas
algorítmicas distintas: propagación de consistencia sobre dominios finitos,
algoritmos genéticos, y bifurcación y acotación.
8
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Son los dominios de restricciones en los que los posibles valores que pueden
tomar las variables están restringidos a un conjunto finito. Tanto las restricciones
booleanas como las enteras son ejemplo de restricciones de dominios finitos, en las
booleanas los valores que pueden tomar las variables serán Verdadero o Falso, y en
las enteras, está restringida a permanecer en un rango finito de números enteros.
Ejemplos de aplicaciones reales de este método podrían ser el timetabling,
scheduling etc.…, en los que se debe elegir entre un número finito de posibilidades.
Se han desarrollado distintos métodos para la resolución de problemas de
restricciones de dominio finito, técnicas de nodo y arco consistencia, desarrolladas
por la comunidad de Inteligencia Artificial para resolver problemas de satisfacción
de restricciones y técnicas de propagación de límites, desarrolladas por la
comunidad de Programación de Restricciones.
9
Sistemas Informáticos Curso 2002-2003
Al final puede haber dos resultados, o bien, que haya algún domino vacío, en
cuyo caso el problema es insatisfacible, o bien, que se llegue a que cada dominio
tenga sólo un valor, y que por tanto será una solución al problema.
10
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Dado un dominio de valores para cada variable, hay métodos eficaces para
calcular el nuevo rango de valores de la variable de la restricción, para que sea
límite consistente, estos métodos se llaman reglas de propagación.
X>=min(D,Y)+min(D,Z) X<=max(D,Y)+max(D,Z)
Y>=min(D,X)-max(D,Z) Y<=max(D,X)-min(D,Z)
Z>=min(D,X)-max(D,Y) Z<=max(D,X)-max(D,Y)
W<=9/4-3/4*min(D,P)-2/4*min(D,C)
P<=9/3-4/3*min(D,W)-2/3*min(D,C)
C<=9/2-4/2*min(D,W)-3/2*min(D,P)
11
Sistemas Informáticos Curso 2002-2003
12
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
13
Sistemas Informáticos Curso 2002-2003
2. Estrategia de poda:
− Supongamos un problema de maximización de la función objetivo en
un punto intermedio del recorrido del árbol de soluciones en el que,
además, nos podemos encontrar algún nodo a partir del cual no se
pueda llegar a ninguna solución válida.
− Se han recorrido varios nodos 1..n, estimando para cada uno la cota
superior y la cota inferior para todo nodo j entre 1 y n.
− Se podrá podar un nodo i, si:
CS (i) <= Beneficio (j),
para algún j, solución final (factible).
3. Estrategia de ramificación:
− De forma implícita, se tendrá en cuenta a la hora de llevar a cabo la
ramificación del árbol de soluciones, la lista de nodos vivos en cada
momento.
− La lista de nodos vivos contiene la lista de nodos que ya han sido
generados pero que todavía no han sido explorados, para cada
variable del problema a resolver. Son los nodos pendientes de tratar
por el algoritmo.
− Las posibles estrategias de ramificación a emplear son las siguientes:
- Estrategia FIFO (first in first out): la lista de nodos vivos es
una cola y, por lo tanto, el recorrido del árbol se realiza en
anchura.
- Estrategia LIFO (last in first out): la lista de nodos vivos es
una pila y, por lo tanto, el recorrido del árbol se realiza en
profundidad.
- Estrategia LC (least cost): se selecciona de toda la lista de
nodos vivos aquel con el que se obtenga un mayor beneficio
(o menor coste) para explorar a continuación.
− Dadas las características del problema a resolver en nuestro caso, la
estrategia de ramificación empleada ha sido la estrategia LC.
14
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
repetir
expandir el nodo vivo más prometedor;
generar todos sus hijos;
una vez generados, el padre se mata;
para cada hijo hacer
si tiene un coste esperado peor que
el de la mejor solución en curso
entonces
se mata;
sino
si tiene un coste esperado mejor que el
de la mejor solución en curso y no es
solución
entonces
se pasa a la lista de nodos vivos;
sino
pasa a ser la mejor solución en curso;
se revisa toda la lista de nodos
vivos, eliminando los que prometen
algo peor de lo conseguido;
fsi
fsi
fpara
hasta que la lista esté vacía;
4.2.5.- Backtracking
15
Sistemas Informáticos Curso 2002-2003
INICIO
FASE DE INICIALIZACIÓN
Se fijan los valores iniciales de cada
variable a los límites superiores/
inferiores de sus dominios
dependiendo del sentido de la
optimización (MAX o MIN)
FASE DE COMPROBACIÓN DE
RESTRICCIONES
Se comprueba si se cumplen todas las
restricciones para los valores actuales
de cada variable
SÍ
(ES SOLUCIÓN)
NO
¿Existen posibles
valores sin explorar para
alguna variable?
sí
FASE DE BÚSQUEDA
Se selecciona el siguiente
valor de la variable actual o de NO
la siguiente en el caso de que (NO HAY SOLUCIÓN)
el dominio de la actual ya
fuese unitario (posible
backtracking)
FIN
16
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
17
Sistemas Informáticos Curso 2002-2003
Las decisiones que hay que tomar para implementar un algoritmo genético son:
4 8 20 12
18
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
19
Sistemas Informáticos Curso 2002-2003
20
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Padre 1 Hijo 1
4 8 20 12 4 8 1 -2
CRUCE
-7 13 1 -2 -7 13 20 12
Padre 2 Hijo 2
PUNTO DE CRUCE
21
Sistemas Informáticos Curso 2002-2003
Individuo Individuo
MUTACIÓN
4 8 20 12 -2 8 20 12
BIT A MUTAR
22
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
POBLACIÓN
INICIAL
SI SOLUCIÓN
¿Cumple criterio (= mejor individuo)
de finalización?
NO
Siguiente
generación TRANSFORMACIÓN
(reproducción y mutación)
SELECCIÓN
Y REEMPLAZO
23
Sistemas Informáticos Curso 2002-2003
Las páginas activas son páginas HTML que integran código fuente que se
ejecuta en el servidor cada vez que la página es solicitada por el cliente. Al realizar
la petición de la página activa, se ejecuta el código fuente, y genera un resultado
que junto con el código HTML forman una salida visualizada en el navegador del
usuario.
El rendimiento por tanto de la página activa será menor, puesto que hay una
ejecución previa de todo el código de script de servidor de la página, que junto con
el código HTML estático que existía, formarán un código HTML final distinto en cada
ejecución de la página, puesto que ésta normalmente dependerá de parámetros
que establece el usuario en formularios u otras formas de entrada. Así por ejemplo
la petición de una página activa que visualiza vuelos disponibles, generará un
resultado según el origen y el destino del vuelvo que pida el usuario, aunque la
página a la que se accede sea la misma, y sólo cambien los parámetros de entrada.
El aspecto de una página activa que visualiza la frase “hola mundo”, sería la
siguiente (el lenguaje de script será pseudocódigo para dicha página sea
independiente de la plataforma):
<html>
<body>
<h1>Hola mundo 1</h1><br>
<%
holamundo=”Hola mundo 2”
%>
<%= holamundo%>
</body>
</html>
24
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Hola mundo 1
Hola mundo 2
JSP (Java Server Pages) es igual que ASP, excepto en el lenguaje utilizado,
que en este caso es Java.
Por otra parte, el PERL es un lenguaje más rápido y potente que requiere
obviamente un aprendizaje más largo y resulta más reservado para personas ya
familiarizadas con la verdadera programación.
25
Sistemas Informáticos Curso 2002-2003
• Realizar un simple cálculo con unos datos que se le envían como parámetro,
• Acceder a una base de datos para recuperar un conjunto de registros,
• Validar la corrección de una información o contrastarla frente a otros datos,
etc.
El servicio Web podrá ser solicitado desde otro programa informático que se
ejecute en un ordenador conectado al Web. Junto a la solicitud de la ejecución, se
pueden enviar al ordenador que ofrece el servicio unos parámetros que el servicio
Web remoto tomará como base para el cálculo o la función.
26
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Entre las razones por las cuales los servicios Web jugarán un rol principal en
la siguiente generación de sistemas distribuidos, están:
27
Sistemas Informáticos Curso 2002-2003
Para que los servicios Web tengan éxito, se requieren vencer algunos retos
técnicos, entre los cuales se encuentran:
28
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
XML
HTML/HTTP
Protocolo TCP/IP
29
Sistemas Informáticos Curso 2002-2003
Dado que el XML es textual y legible por los humanos, es ideal como marco
de referencia de transporte para otros servicios de Web débilmente acoplados.
SOAP es una tecnología derivada de estándares anteriores basados en XML (XML-
RPC), y de algún modo, apunta hacia un estándar emergente ebXML. El
establecimiento de ebXML se encuentra en proceso de desarrollo, intentando
proveer una definición amplia de mensajes compartidos de negocios entre socios
comerciales. SOAP es más modesto en alcance y menos complejo de implementar.
30
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Ejemplo de respuesta:
31
Sistemas Informáticos Curso 2002-2003
Una de las ideas centrales detrás de los servicios Web es que las
aplicaciones futuras estarán conformadas de una colección de servicios habilitados
en la red. Mientras haya dos servicios equivalentes que se publiciten a la red de
una forma estándar y neutra, en teoría una aplicación podría seleccionar uno de
ellos en base a criterios establecidos de antemano como precio o rendimiento.
Además, algunos servicios podrían permitir que fueran copiados entre máquinas,
permitiendo así que una aplicación que corra en una máquina (o cluster de
máquinas) mejore en rendimiento al copiar servicios útiles a unidades de disco
locales.
32
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
33
Sistemas Informáticos Curso 2002-2003
34
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
35
Sistemas Informáticos Curso 2002-2003
36
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
37
Sistemas Informáticos Curso 2002-2003
using System;
using System.Web.Services;
[WebMethod]
public String HolaMundo()
{
return "Hola Mundo";
}
38
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Para que este servicio esté disponible, podemos asignar al archivo el nombre
HolaMundo.asmx y colocarlo en un servidor denominado Dominio.com dentro de
un directorio virtual cuyo nombre sea miCarpeta. Mediante un explorador Web, se
podría insertar la dirección URL
http://Dominio.com/MiCarpeta/HolaMundo.asmx y la página resultante
mostraría los métodos públicos para este servicio Web (aquéllos marcados con el
atributo WebMethod), así como los protocolos (SOAP o HTTP GET) que se pueden
utilizar para invocar dichos métodos. Al insertar la dirección
http://Dominio.com/MiCarpeta/HolaMundo.asmx?WSDL en el explorador, se
devuelve un documento de Lenguaje de descripción del servicio Web (WSDL). Este
documento WSDL es muy importante y lo utilizarán los clientes que obtengan
acceso al servicio.
WSDL http://Dominio.com/MiCarpeta/HolaMundo.asmx?WSDL
39
Sistemas Informáticos Curso 2002-2003
6.1.2.2.2.- Cliente
40
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Tipo Descripción
Tipos primitivos Tipos primitivos estándar. En la lista
completa de tipos primitivos admitidos se
encuentran String, Char, Byte, Boolean,
Int16, Int32, Int64, UInt16, UInt32,
UInt64, Single, Double, Guid, Decimal,
DateTime (como timeInstant de XML),
DateTime (como fecha de XML), DateTime
(como hora de XML) y XmlQualifiedName
(como QName de XML).
Tipos Enum Tipos de enumeración, como por ejemplo,
"public enum color { red=1, blue=2 }"
Matrices de primitivos, Enums Matrices de los tipos primitivos anteriores,
como string[] e int[]
Clases y estructuras Tipos de clases y estructuras con campos
o propiedades públicas. Se pueden
serializar los campos y propiedades
públicos.
Matrices de clases (estructuras) Matrices de los tipos anteriores.
DataSet Tipos de DataSet de ADO.NET (vea la
siguiente sección para obtener un
ejemplo). También pueden aparecer
DataSet como campos en estructuras y
clases.
Nota: Microsoft Visual Studio.NET y la
utilidad del SDK XSD.EXE son compatibles
para "establecer tipos inflexiblemente" en
DataSet. Estas herramientas generan una
clase que se hereda de DataSet para
producir DataSet1 al agregar varios
métodos, propiedades, etc. que son
específicos para un esquema XML
concreto. Si se pasa DataSet, los servicios
Web de XML siempre transmiten el
esquema junto con los datos (de forma
que sabe qué tablas y columnas se están
pasando) y los tipos correspondientes
(por ejemplo, int, string). Si se pasa una
subclase de DataSet (por ejemplo,
DataSet1), los servicios Web de XML
41
Sistemas Informáticos Curso 2002-2003
Valores devueltos:
Tipo Descripción
Tipos primitivos (limitados) La mayoría de los tipos primitivos estándar.
La lista completa de tipos primitivos
admitidos comprende los tipos Int32, String,
Int16, Int64, Boolean, Single, Double,
Decimal, DateTime, UInt16, UInt32, UInt64
y Currency. Desde el punto de vista del
cliente, todos estos tipos se transforman en
cadenas.
Tipos Enum Tipos de enumeración, como por ejemplo,
"public enum color { red=1, blue=2 }".
Desde el punto de vista del cliente, los tipos
enum se convierten en clases con una
cadena const estática para cada valor.
Matrices de primitivos, Enums Matrices de los tipos primitivos anteriores,
como string[] e int[]
42
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
<%@Page Language="C#"%>
<html>
<body>
<h1> Hola Mundo, <% Response.Write(DateTime.Now.ToString()); %></h1>
</body>
</html>
43
Sistemas Informáticos Curso 2002-2003
Una aplicación ASP.NET Framework se crea la primera vez que se realiza una
solicitud al servidor; antes de ello, no se ejecuta ningún código ASP.NET. Cuando se
realiza la primera solicitud, se crea una agrupación de instancias HttpApplication
y se provoca el evento Application_Start. Las instancias HttpApplication
procesan esta solicitud y las siguientes hasta que la última instancia termina y se
provoca el evento Application_End.
Observe que los métodos Init y Dispose de HttpApplication se invocan por cada
instancia y, de este modo, pueden utilizarse varias veces entre Application_Start
y Application_End. Sólo se comparten estos eventos entre todas las instancias de
HttpApplication en una aplicación ASP.NET.
void Application_Start()
{
DataSet ds = new DataSet();
FileStream fs = new
FileStream(Server.MapPath("schemadata.xml"),FileMode.Open,FileAccess.Read);
StreamReader reader = new StreamReader(fs);
ds.ReadXml(reader);
fs.Close();
44
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
void Session_Start() {
Session["Color"] = "beige";
...
}
<sessionState timeout=”40”/>
<sessionState cookieless=”true”/>
45
Sistemas Informáticos Curso 2002-2003
<sessionState mode="StateServer"
stateConnectionString="tcpip=localhost:42424" />
46
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
47
Sistemas Informáticos Curso 2002-2003
C:\inetpub\wwwroot
Default.aspx
\order
SubmitOrder.aspx
\img
HappyFace.gif
48
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
49
Sistemas Informáticos Curso 2002-2003
Ésta podría parecer una diferencia sutil, pero permite a las aplicaciones
utilizar esquemas de autenticación como los basados en formularios o la
autenticación de Pasaporte, en los cuales los usuarios no se corresponden con un
equipo o una cuenta de dominio. También permite la autorización de recursos
virtuales, para los cuales no existe un archivo físico subyacente al recurso. Por
ejemplo, una aplicación podría optar por asignar todas las solicitudes de archivos
que terminan en .stk a un controlador que proporciona cotizaciones de valores
según ciertas variables presentes en la cadena de consulta. En ese caso, no existe
un archivo .stk con el que hacer las comprobaciones ACL; por lo tanto, se utiliza
autorización de URL para controlar el acceso al recurso virtual.
50
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Valor Descripción
Ninguno No hay ningún servicio de autenticación de ASP.NET
activo. Observe que los servicios de autenticación de IIS
pueden estar aún presentes.
Windows Los servicios de autenticación de ASP.NET asocian un
WindowsPrincipal
(System.Security.Principal.WindowsPrincipal) a la
solicitud actual para permitir la autorización de usuarios
o grupos de NT.
Formularios Los servicios de autenticación de ASP.NET administran
las "cookies" y desvían a los usuarios no autenticados a
una página de inicio de sesión. Este método se suele
utilizar en conjunción con la opción IIS que permite el
acceso anónimo a una aplicación.
Passport Los servicios de autenticación de ASP.NET proporcionan
un envoltorio apropiado para los servicios suministrados
por el kit de desarrollo de software para pasaporte
(Passport SDK), el cual debe instalarse en el equipo.
<configuration>
<system.web>
<authentication mode="Forms"/>
</system.web>
</configuration>
51
Sistemas Informáticos Curso 2002-2003
Sin embargo, todas estas mejoras no sirven de nada si el código está mal
escrito. Por último, debe asegurarse de que la aplicación satisface las necesidades
de los usuarios. En la próxima sección se describen algunas de las formas comunes
de evitar cuellos de botella en lo que se refiere al rendimiento. Pero primero es
necesario comprender las métricas siguientes:
52
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Declaraciones ::= 'd' 'e' 'c' 'l' 'a' 'r' 'a' 't' 'i' 'o' 'n' 's' ';' Variable+
Variable ::= 'v' 'a' 'r' <espacio>+ NombreVariable <espacio>+ LimiteInf '.' '.'
LimiteSuperior';'
Objetivo ::= 'o' 'b' 'j' 'e' 't' 'i' 'v' 'e' <espacio>+ Tipo ';'
53
Sistemas Informáticos Curso 2002-2003
INTERNET
clienteWebResolutor
INTERNET
clienteWSWin32
Browser
54
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.1.- Resolutor
• CResolutor, que realiza la lógica del algoritmo, y que trata con los arrays
de variables, restricciones y con la función objetivo. Es la clase que hay que
instanciar desde los clientes, para poder hacer las llamadas a resolver,
resolverPasoAPaso, aplicarReglasPasoAPaso y búsqueda.
55
Sistemas Informáticos Curso 2002-2003
• CObjetivo, es la función que hay que calcular para cada solución que se
obtiene, está representada en esta clase mediante la lista de sumandos que
la componen y el término independiente, un ejemplo es 3a-4b+d+3.
56
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
57
Sistemas Informáticos Curso 2002-2003
resolver()
crearObjetos() CResolutor.crearObjetos()
crea las colecciones de
objetos de las clases
CRestriccion
CSumando
CVariable
obtenerReglas()
CObjetivo
obtenerReglas()
crearRegla()
propagar() CRegla()
aplicarReglas()
aplicarReglas
aplicar()
calcularLadoDerecho()
acotarLimiteInferior()
acotarLimiteSuperior()
Se hace una de las 4
operaciones:
AcotarLimites
AcotarLimiteInferior aplicarReglaDistinto()
AcotarLimiteSuperior
AplicarReglaDistinto
calcularLadoDerecho()
acotarLimitesReglaDistinto()
58
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
59
Sistemas Informáticos Curso 2002-2003
60
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.2.- WSResolutor
El método (resolver), recibe los datos del cliente, en forma de arrays, que
son las variables (string[]), los límites inferiores (int[]), los límites superiores
(int[]), las restricciones (int[][]), y los operadores (string[]), y realiza tanto la
propagación inicial como el etiquetado, es decir, todo el algoritmo, y devuelve el
resultado en un objeto ArrayList (objeto del framework Microsoft .NET). Este
método, es llamado desde la aplicación Windows (clienteWSWin32) y desde la
aplicación Web (clienteWebResolutor).
8.1.2.1.-Diagrama de clases
Las clases de las que se compone el servicio Web son las siguientes:
61
Sistemas Informáticos Curso 2002-2003
62
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.2.2.-Diagramas de secuencia
63
Sistemas Informáticos Curso 2002-2003
8.1.3.- ClienteWin32
Las clases de las que se compone este componente son las siguientes:
• CParser, clase que realiza el parseo del código fuente LRPR y que tiene
como método principal resolver al que se le pasa el código a parsear y
genera las colecciones de objetos necesarios para el problema.
64
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
65
Sistemas Informáticos Curso 2002-2003
Cliente Windows
verificarCodigo()
parsear()
prepararParametrosResolutor()
resolver()
Show(arrSoluciones)
resultado_Load
prepararParametrosResolutor()
resolverPasoAPAso()
Show(arrSoluciones)
Propagacion_Load()
El funcionamiento a partir
de la llamada a aplicarReglasPasoAPaso() btnSiguiente_Click()
se puede ver en el diagrama
correspondiente del aplicarReglasPasoAPaso()
Resolutor
66
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.3.3.- Arquitectura
67
Sistemas Informáticos Curso 2002-2003
8.1.4.- ClienteWebResolutor
Aplicación realizada con Web Forms de .NET (ASP .NET), que proporciona
un interfaz de usuario para describir el problema a resolver (lenguaje LRPR), en
una ventana, mediante la declaración de variables y restricciones, y que permite la
resolución completa, o bien, la verificación paso a paso de la propagación inicial de
restricciones, para la resolución posterior del problema.
• CParser, clase que realiza el parseo del código fuente LRPR y que tiene
como método principal resolver al que se le pasa el código a parsear y
genera las colecciones de objetos necesarios para el problema.
68
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
UI::Page
inicio
Global #code
propagacion #btnPasoAPaso
#HyperLink1
+Global() resultado #btnResolver #btnResolver
#Application_Start() #btnVolver1 #btnSiguiente -m_resolutor = new Resolutor.CResolutor()
#Session_Start() #listBoxSoluciones #m_gridVar #lblCodigoCorrecto
#Application_BeginRequest() #Label1 #Label1 #Label1
#Application_EndRequest() #Label2 #btnVolver -m_parser
#Application_AuthenticateRequest() #Label3 -m_dtVar = new DataTable()
-Page_Load()
#Application_Error() #Label4 #lblSolucion
#OnInit()
#Session_End() #textBoxMinutos -m_dvVar
-InitializeComponent()
#Application_End() #textBoxSegundos #txtRestriccion
-btnResolver_Click()
-InitializeComponent() #textBoxMilisegundos -m_resolutor
-btnPasoAPaso_Click()
#btnVolver2 -Page_Load() -verificarCodigo()
-Page_Load() #OnInit() -prepararParametrosResolutor()
#OnInit() -InitializeComponent()
-InitializeComponent() -btnSiguiente_Click()
-btnVolver1_Click() -btnVolver_Click()
-btnVolver2_Click() -btnResolver_Click()
«signal»-Redirect(Session)()
UI::TemplateControl
Web::HttpApplication
CParser
-m_variables
GenericItem -m_limInferior
-column -m_limSuperior
-m_restricciones
+GenericItem() System::EventArgs -m_operadores
+InstantiateIn()
+variables()
+BindData()
+limitesInferiores()
+limitesSuperiores()
+restricciones()
Resolutor::CResolutor
+operadores()
-inicializarObjetos()
+resolver() +parsear()
+resolverPasoAPaso() -parsearDeclaration()
+aplicarReglasPasoAPaso() -parsearVariable()
System::Object
UI::Control +busqueda() -parsearBegin()
-parsearRestriccion()
-insertarCoeficiente()
-parsearTerminoIndependiente()
-parsearOperador()
-parsearEnd()
-parsearObjetive()
-parsearFuncionObjetivo()
ValidateEditItem Collections::ArrayList
-column
-m_tipoDato
+ValidateEditItem()
+InstantiateIn()
+BindData()
69
Sistemas Informáticos Curso 2002-2003
70
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.4.3.- Arquitectura
71
Sistemas Informáticos Curso 2002-2003
8.1.5.- ClienteWSWin32
• CParser, clase que realiza el parseo del código fuente LRPR y que tiene
como método principal resolver al que se le pasa el código a parsear y
genera las colecciones de objetos necesarios para el problema.
72
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Forms::Form
Forms::AxHost
clienteWSWin32::ayuda clienteWSWin32::resultado
clienteWSWin32::CodeEditor
-btnCerrar +m_soluciones
-axWebBrowser1 -btnVolver -code
1 -btnCheck
-components +m_anterior
-listBoxResultado -btnResolver
* +ayuda()
-label4 -m_filename
-axWebBrowser1 #Dispose()
+textBoxMilisegundos -m_CodigoCorrecto
-InitializeComponent()
AxSHDocVw::AxWebBrowser -label3 -m_resolutor
-ayuda_Load()
+textBoxSegundos -m_parser
-btnCerrar_Click()
-label2 -components
+textBoxMin +CodeEditor()
-label1 #Dispose()
-components -InitializeComponent()
+resultado() -Main()
#Dispose() -CodeEditor_Closed()
-InitializeComponent() -CodeEditor_Load()
-formulario_cerrado() -crearMenu()
-btnVolver_Click() -menuItemNew_Click()
-resultado_Load() -menuItemOpen_Click()
-menuItemSave_Click()
-menuItemSaveAs_Click()
-menuItemHelp_Click()
WSResolutor -menuItemExit_Click()
-btnCheck_Click()
-verificarCodigo()
+WSResolutor() -btnResolver_Click()
+resolver() -prepararParametrosResolutor()
+Beginresolver()
+Endresolver()
System::Object
clienteWSWin32::CParser
-m_variables
-m_limInferior
-m_limSuperior
-m_restricciones
-m_operadores
+variables()
+limitesInferiores()
+limitesSuperiores()
+restricciones()
+operadores()
-inicializarObjetos()
+parsear()
-parsearDeclaration()
-parsearVariable()
-parsearBegin()
-parsearRestriccion()
System::EventArgs System::MarshalByRefObject
-insertarCoeficiente()
-parsearTerminoIndependiente()
-parsearOperador()
-parsearEnd()
-parsearObjetive()
-parsearFuncionObjetivo()
Collections::ArrayList
ComponentModel::Container ComponentModel::Component
73
Sistemas Informáticos Curso 2002-2003
74
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.1.5.3.- Arquitectura
Windows 2000
Cliente
HTTP Framework .NET
SOAP
Win32 Proceso Componente
Windows Forms XML Servidor HTTP Resolutor
(IIS) Web Service (dll .NET)
.NET
ASP.NET
75
Sistemas Informáticos Curso 2002-2003
8.2.1.- ResolutorRPR
76
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
• CResolutorRPR, que realiza la lógica del algoritmo y que trata con los
arrays de variables, límites inferiores y superiores, las restricciones, la función
objetivo y el objetivo de la optimización. Esta es la clase que hay que instanciar
desde los clientes para poder hacer la llamada al método encargado de la
resolución de cada problema.
77
Sistemas Informáticos Curso 2002-2003
CVariable
-inferior : int
CResolutorRPR
-superior : int
-variables : ArrayList -CVariable -nombre : string
-restricciones : ArrayList -inferiorOriginal : int
-enumerator : IEnumerator -superiorOriginal : int
-funcionObjetivo : CObjetivo -variables *
-valorEtiqueta : int
-maximizacion : bool -etiquetada : bool
+valorActualOptimizacion : int -inicial : int
1 -temporal : int
+resolverRPR()
-noCumple() +CVariable()
-nuevosValores() +finferior()
-es_final() +fsuperior()
-crearObjetos() +fsuperiorOriginal()
+finferiorOriginal()
1 -funcionObjetivo +fvalorEtiqueta()
1 -restricciones
+fetiquetada()
+fnombre()
+finicial()
-CRestriccion CRestriccion +ftemporal()
-listaSum : ArrayList
-terminoInd : int -operador
*
-oper : Operador
-CVariable *
+CRestriccion()
1
+flistaSum()
+fterminoInd()
+foper()
* -CObjetivo 1 -listaSum
CObjetivo
+sumandos : ArrayList
+terminoIndependiente : int
+CObjetivo() «enumeration»
+calcular() Operador
+Distinto
-Operador +Igual
1 -sumandos +Mayor
+MayorIgual
*
+Menor
+MenorIgual
-variable 1
* -CSumando
CSumando
+nombreVariable : string
-CSumando +coeficiente : int
+variable : CVariable
+CSumando()
*
+nombreVar()
+coef()
+var()
78
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
resolverRPR()
crearObjetos()
noCumple()
noCumple() calcular()
ftemporal()
es_final()
ftemporal()
finferiorOriginal()
fsuperiorOriginal()
79
Sistemas Informáticos Curso 2002-2003
resolverRPR()
crearObjetos()
nuevosValores()
fetiquetada()
finicial()
finferiorOriginal()
fsuperiorOriginal()
finferior()
fsuperior()
fvalorEtiqueta()
ftemporal()
80
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.2.2.- Cliente
81
Sistemas Informáticos Curso 2002-2003
Forms::Form
fmCliente
-lbVariables : Label
-dgVariables : DataGrid
-btActualizar : Button
-dgRestricciones : DataGrid
-gbOptimizacion : GroupBox
-btResolver : Button
-btBorrar : Button
-btSalir : Button
-dgFuncion : DataGrid
-rbMaximizar : RadioButton
-rbMinimizar : RadioButton
-lbFuncion : Label
-lbRestricciones : Label
-gbResultado : GroupBox
-lbResultado : Label
-lbxResultado : ListBox
-lbOpFuncion : Label
-txValorFuncion : TextBox
-lbTiempo : Label
-txTiempo : TextBox
-components : Container = null
-resolutor : CResolutorRPR = new CResolutorRPR()
+fmCliente()
#Dispose(entrada disposing : bool)
-InitializeComponent()
-Main()
-fmCliente_Load(entrada sender : object, entrada e : EventArgs)
-btActualizar_Click(entrada sender : object, entrada e : EventArgs)
-btResolver_Click(entrada sender : object, entrada e : EventArgs)
-btBorrar_Click(entrada sender : object, entrada e : EventArgs)
-btSalir_Click(entrada sender : object, entrada e : EventArgs)
-fmCliente_Closed(entrada sender : object, entrada e : EventArgs)
-obtenerDatos(salida arrVar : string[], salida arrInf : int[], salida arrSup : int[], salida arrRest : int[][], salida arrOp : string[], salida arrFun : int[], salida objetivo : int)
-rbMinimizar_Click(entrada sender : object, entrada e : EventArgs)
-rbMaximizar_Click(entrada sender : object, entrada e : EventArgs)
ResolutorRPR::CResolutorRPR
+resolverRPR()
+crearObjetos()
+es_final()
+noCumple()
+nuevosValores()
ComponentModel::Container ComponentModel::Component
82
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.2.2.2.-Diagrama de secuencia
Cliente Win32
Cliente CResolutorRPR
obtenerDatos()
resolverRPR()
mostrar()
Llamada al método resolverRPR
que resuelve el problema
83
Sistemas Informáticos Curso 2002-2003
8.2.2.3.- Arquitectura
Toda la lógica reside en una sola máquina, que tiene instalado el Framework
de .NET necesario para ejecutar la aplicación.
84
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.2.3.- ClienteWebRPR
Aplicación realizada con Web Forms de .NET (ASP .NET), que proporciona un
interfaz de usuario para describir el problema a resolver (lenguaje LRPR), en una
ventana, mediante la declaración de variables y restricciones, y que permite la
resolución completa del problema.
85
Sistemas Informáticos Curso 2002-2003
CParser
Global
System::EventArgs +Global()
#Application_Start(entrada sender : object, entrada e : EventArgs)
#Session_Start(entrada sender : object, entrada e : EventArgs)
#Application_BeginRequest(entrada sender : object, entrada e : EventArgs)
#Application_EndRequest(entrada sender : object, entrada e : EventArgs)
#Application_AuthenticateRequest(entrada sender : object, entrada e : EventArgs)
System::Object #Application_Error(entrada sender : object, entrada e : EventArgs)
#Session_End(entrada sender : object, entrada e : EventArgs)
#Application_End(entrada sender : object, entrada e : EventArgs)
-InitializeComponent()
inicio
#code : TextBox
Web::HttpApplication #HyperLink1 : HyperLink
#btnResolver : Button
-resolutor : CResolutorRPR = new ResolutorRPR.CResolutorRPR()
#lblCodigoCorrecto : Label
#Label1 : Label
-parser : CParser
GenericItem -Page_Load()
#OnInit()
-column : string -InitializeComponent()
+GenericItem(entrada column : string) -btnResolver_Click()
+InstantiateIn(entrada container : Control) -verificarCodigo()
+BindData(entrada sender : object, entrada e : EventArgs) -prepararParametrosResolutor()
resultado1
#btnVolver1 : Button
#listBoxSoluciones : ListBox
#Label1 : Label
#Label2 : Label
ValidateEditItem #Label3 : Label
-column : string #Label4 : Label
-m_tipoDato : string #textBoxMinutos : TextBox
+ValidateEditItem(entrada column : string, entrada tipoDato : string) #textBoxSegundos : TextBox
+InstantiateIn(entrada container : Control) #textBoxMilisegundos : TextBox
+BindData(entrada sender : object, entrada e : EventArgs) #btnVolver2 : Button
-Page_Load(entrada sender : object, entrada e : EventArgs)
#OnInit(entrada e : EventArgs)
-InitializeComponent()
-btnVolver1_Click(entrada sender : object, entrada e : EventArgs)
-btnVolver2_Click(entrada sender : object, entrada e : EventArgs)
86
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
ClienteWebRPR
Redirect (Session)
Page_Load()
prepararParametrosResolutor()
resolverPasoAPaso()
87
Sistemas Informáticos Curso 2002-2003
8.2.3.3.- Arquitectura
Aplicación realizada con Web Forms de .NET (ASP .NET), que proporciona un
interfaz de usuario para describir el problema a resolver (lenguaje LRPR), en una
ventana, mediante la declaración de variables y restricciones.
Internet
Cliente
HTTP Servidor HTTP
Browser
HTTP .NET FrameWork
88
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.2.4.- WSResolutorRPR
Para que el cliente pueda invocar los métodos Web deberá agregar una
referencia Web a http://<servidor>/WSResolutorRPR.asmx?WSDL, con lo que
recibirá el fichero XML de descripción de servicios Web que Visual Studio utiliza
para poder extraer la información de los métodos y parámetros que estos servicios
necesitan.
89
Sistemas Informáticos Curso 2002-2003
Global
+Global()
#Application_Start(entrada sender : object, entrada e : EventArgs)
#Session_Start(entrada sender : object, entrada e : EventArgs)
#Application_BeginRequest(entrada sender : object, entrada e : EventArgs)
#Application_EndRequest(entrada sender : object, entrada e : EventArgs)
#Application_AuthenticateRequest(entrada sender : object, entrada e : EventArgs)
#Application_Error(entrada sender : object, entrada e : EventArgs)
#Session_End(entrada sender : object, entrada e : EventArgs)
#Application_End(entrada sender : object, entrada e : EventArgs)
-InitializeComponent()
Web::HttpApplication
WSResolutorRPR
System::Object
+WSResolutorRPR()
+resolverRPR()
-InitializeComponent()
#Dispose()
System::EventArgs
Services::WebService
Collections::ArrayList
ComponentModel::MarshalByValueComponent
90
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
WSResolutorRPR CResolutorRPR
resolutorRPR()
91
Sistemas Informáticos Curso 2002-2003
8.2.5.- ClienteWS
92
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Forms::Form
ClienteWS::fmCliente
-lbVariables : Label
-dgVariables : DataGrid
-btActualizar : Button
-dgRestricciones : DataGrid
-gbOptimizacion : GroupBox
-btResolver : Button
-btBorrar : Button
-btSalir : Button
-dgFuncion : DataGrid
-rbMaximizar : RadioButton
-rbMinimizar : RadioButton
-lbFuncion : Label
-lbRestricciones : Label
-gbResultado : GroupBox
-lbResultado : Label
-lbxResultado : ListBox
-lbOpFuncion : Label
-txValorFuncion : TextBox
-lbTiempo : Label
-txTiempo : TextBox
-components : Container = null
-resolutor : WSResolutorRPR = new Cliente.WebReference1.WSResolutorRPR()
+fmCliente()
#Dispose(entrada disposing : bool)
-InitializeComponent()
-Main()
-fmCliente_Load(entrada sender : object, entrada e : EventArgs)
-btActualizar_Click(entrada sender : object, entrada e : EventArgs)
-btResolver_Click(entrada sender : object, entrada e : EventArgs)
-btBorrar_Click(entrada sender : object, entrada e : EventArgs)
-btSalir_Click(entrada sender : object, entrada e : EventArgs)
-fmCliente_Closed(entrada sender : object, entrada e : EventArgs)
-obtenerDatos(salida arrVar : string[], salida arrInf : int[], salida arrSup : int[], salida arrRest : int[][], salida arrOp : string[], salida arrFun : int[], salida objetivo : int)
-rbMinimizar_Click(entrada sender : object, entrada e : EventArgs)
-rbMaximizar_Click(entrada sender : object, entrada e : EventArgs)
System::Object WSResolutorRPR
+WSResolutorRPR()
+valorOptimizacion()
+BeginvalorOptimizacion()
+EndvalorOptimizacion()
System::EventArgs +resolverRPR()
ComponentModel::Container +BeginresolverRPR()
+EndresolverRPR()
ComponentModel::Component
Protocols::WebClientProtocol
System::MarshalByRefObject
Protocols::WebClientProtocol
Protocols::SoapHttpClientProtocol
Protocols::HttpWebClientProtocol
93
Sistemas Informáticos Curso 2002-2003
Cliente WS
ClienteWS WSResolutorRPR
obtenerDatos()
resolverRPR()
94
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.2.5.3.- Arquitectura
Servidor
Windows 2000
HTTP Framework .NET
SOAP
Win32 Proceso Componente
Windows Forms XML Servidor HTTP Resolutor
(IIS) Web Service (dll .NET)
.NET
ASP.NET
95
Sistemas Informáticos Curso 2002-2003
InterfazWindowsAG
AG
Parser
InterfazWindowsAG
+TFormPrincipal
+TFormAyuda
+TFormResultado AG
+TFormIndividuo +TVariables
+TRestricciones
+TVariable
+TRestriccion
+TFuncionObjetivo
+TPoblacion
Parser +TIndividuo
+TAlgoritmo
+TParser
96
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
InterfazWebAG AG
Node Node1
INTERNET
2
Parser
InterfazWebAG
+TWebFormPrincipal AG
+TWebFormAyuda +TVariables
+TWebFormResultado +TRestricciones
+TWebFormIndividuo +TVariable
+TRestriccion
+TFuncionObjetivo
+TPoblacion
+TIndividuo
Parser +TAlgoritmo
+TParser
97
Sistemas Informáticos Curso 2002-2003
InterfazServicioWebAG ServicioWebAG AG
INTERNET
Node1
Parser
InterfazServicioWebAG AG
ServicioWebAG
+TFormPrincipal +TVariables
+SWAG
+TFormAyuda +TRestricciones
+Global
+TFormResultado +TVariable
+TRestriccion
+TFuncionObjetivo
+TPoblacion
+TIndividuo
Parser +TAlgoritmo
+TParser
98
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.1.- Parser
Esta clase es el único elemento del proyecto de C# Parser, que es una biblioteca
de clases cuyo archivo de resultado es Parser.dll.
99
Sistemas Informáticos Curso 2002-2003
TParser
-codigo:string
-variables:ArrayList
-limInferior:ArrayList
-limSuperior:ArrayList
-restricciones:ArrayList
-operadores:ArrayList
-funObjetivo:ArrayList
<<constructor>>
+TParser:void
-limpiarCodigo:string
-inicializarObjetos:void
+parsear:bool
-parsearDeclaration:bool
-parsearVariable:bool
-parsearBegin:bool
-parsearRestriccion:bool
-parsearTerminoIndependiente:bool
-parsearOperador:bool
-parsearEnd:bool
-parsearObjetive:bool
-parsearFuncionObjetivo:bool
-insertarCoeficiente:void
+dameDatos:void
100
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
parser
TParser
1: limpiarCodigo(string):string
2: parsear(int):bool
2.1: inicializarObjetos():void
2.2: parsearDeclaration(string):bool
Tantas veces como
variables haya
declaradas 2.3: parsearVariable(string):bool
2.5.1: parsearTerminoIndependiente
2.5.2: parsearOperador(string):bool
2.6: parsearEnd(string):bool
Solo si hay declarada
funcion objetivo 2.7: parsearObjetive(string,int):bool
2.8: parsearFuncionObjetivo(string,int):bool
101
Sistemas Informáticos Curso 2002-2003
8.3.2.- AG
Los datos del algoritmo genético son un array de strings con los nombres de
las variables declaradas, dos arrays de enteros con los límites inferiores y
superiores de las variables (con estos datos se creará un objeto de tipo TVariables),
un array de arrays de enteros con las restricciones definidas, un array de strings
con los operadores de las restricciones (con estos datos se creará un objeto de tipo
TRestricciones) y un array de enteros con la función objetivo (con estos datos se
creará un objeto de tipo TFuncionObjetivo). Estos datos se almacenarán en
atributos privados de la clase TAlgoritmo y el componente AG los recibirá del
componente que lo invoque.
102
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Estas clases son los elementos del proyecto de C# AG, que es una biblioteca de
clases cuyo archivo de resultado es AG.dll
103
Sistemas Informáticos Curso 2002-2003
TAlgoritmo
TVariables
TRestricciones -numGeneraciones:int
-tamPoblacion:int -variables:TVariable[]
-restricciones:TRestriccion[] -probCruce:double
-probMutacion:double <<constructor>>
<<constructor>> -vars:TVariables +TVariables
+TRestricciones -ress:TRestricciones <<constructor>>
<<constructor>> -fo:TFuncionObjetivo +TVariables
+TRestricciones -aleatorio:Random +indiziador:TVariable
+indiziador:TRestriccion -pasos:int +numVariables:int
+numRestricciones:int
<<constructor>>
+TAlgoritmo 0..*
+NumGeneraciones:int
0..* TVariable
+Pasos:int
TRestriccion +algoritmoGenetico:int[]
-nombre:string
+inciarAlgoritmoGeneticoPaso:void
-coeficientes:ArrayList -limInferior:int
+algoritmoGeneticoPaso:TIndividuo
-terminoIndependiente:int -limSuperior:int
-operador:string -valor:int
<<constructor>> <<constructor>>
TFuncionObjetivo
+TRestriccion +TVariable
<<constructor>> <<constructor>>
-coeficientes:ArrayList
+TRestriccion +TVariable
-objetivo:int
+TIndependiente:int <<constructor>>
+Operador:string +TVariable
<<constructor>>
+cumpleRestriccion:bool +Nombre:string
+TFuncionObjetivo
+LimInferior:int
<<constructor>>
+LimSuperior:int
+TFuncionObjetivo
+Valor:int
+valorFuncionObjetivo:int
TPoblacion
TIndividuo
-poblacion:TIndividuo[]
-aptitud:double
-puntuacion:double
<<constructor>>
-puntuacionAcumulada:double
+TPoblacion:void
-genes:int[]
<<constructor>>
+TPoblacion:void
0..* <<constructor>>
<<constructor>>
+TIndividuo:void
+TPoblacion:void
<<constructor>>
+indiziador:TIndividuo
+TIndividuo
+generarPoblacionInicial:void
<<constructor>>
+seleccion:void
+TIndividuo
+evaluacion:void
<<constructor>>
+cruce:void
+TIndividuo
+mutacion:void
+Genes:int[]
+Aptitud:void
+Aptitud:double
+Puntuacion:void
+Puntuacion:double
+PuntuacionAcumulada:void
+PuntuacionAcumulada:double
+generarIndividuo:void
+adaptacion:double
+cruce:void
+mutacion:void
104
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
1.2: generarPoblacionInicial(Random,TVariables,TRestricciones,TFu...
1.2.1: generarIndividuo(Random,TRestricciones,TFuncionObjetivo,TV...
1.2.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
1.3: evaluacion(int,double):void
1.3.1: Puntuacion(double):void
1.3.2: PuntuacionAcumulada(double):void
Aqui esta la
poblacion inicial
1.4: seleccion(Random):void
1.4.1: adaptacion(TRestricciones,TFuncionObjetivo):double
1.5: cruce(double,TRestricciones,TFuncionObjetivo):void
1.5.1: cruce(TIndividuo,TRestricciones,TFuncionObjetivo):void
1.5.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
1.6: mutacion(Random,TRestricciones,TFuncionObjetivo,TVariables):...
1.6.1: mutacion(Random,TRestricciones,TFuncionObjetivo,TVariables...
1.6.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
1.7: evaluacion(int,double):void
1.7.1: Puntuacion(double):void
1.7.2: PuntuacionAcumulada(double):void
105
Sistemas Informáticos Curso 2002-2003
1: inciarAlgoritmoGeneticoPaso(TPoblacion,int,double):void
Tantos individuos como
1.1: TPoblacion(int,TVariables):void indique el tamanio de la
1.1.1: TIndividuo(TVariables) void poblacion
1.2: generarPoblacionInicial(Random,TVariables,TRestricciones,TFu...
1.2.1: generarIndividuo(Random,TRestricciones,TFuncionObjetivo,TV...
1.2.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
1.3.2: PuntuacionAcumulada(double):void
Aqui esta la
poblacion inicial
2: algoritmoGeneticoPaso(int,TPoblacion,int,double):TIndividuo
2.1: seleccion(Random):void
2.2: cruce(double,TRestricciones,TFuncionObjetivo):void
2.2.1: cruce(TIndividuo,TRestricciones,TFuncionObjetivo):void
2.2.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
2.3: mutacion(Random,TRestricciones,TFuncionObjetivo,TVariables):...
2.3.1: mutacion(Random,TRestricciones,TFuncionObjetivo,TVariables...
2.3.1.1: adaptacion(TRestricciones,TFuncionObjetivo):double
2.4.2: PuntuacionAcumulada(double):void
106
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.3.- InterfazWindowsAG
Es una aplicación para Windows tradicional con una interfaz rica construida
con clases formulario de Windows Form de .NET. El componente
InterfazWindowsAG tiene una referencia al componente AG y otra referencia al
componente Parser.
107
Sistemas Informáticos Curso 2002-2003
System.Windows.Forms.Form System.Windows.Forms.Form
TFormPrincipal TFormResultado
-nombreFichero:string -formPrincipal:TFormPrincipal
-programaModificado:bool
-m_parser:TParser <<constructor>>
+TFormResultado:void
<<constructor>> <<constructor>>
+TFormPrincipal:void +TFormResultado:void
+Main:void #Dispose:void
#Dispose:void -InitializateComponent:void
-InitializateComponent:void -TFormResultado_Load:void
-TFormPrincipal_Load:void -TFormResultado_Close:void
-guardarFichero:void +construirTablaResulVars:DataTable
-menu_Archivo_Nuevo_Click:void +construirTablaResulRess:DataTable
-menu_Archivo_Abrir_Click:void +construirTablaResulFO:DataTable
-menu_Archivo_Guardar_Click:void -mostrarTiempoEjecucion:void
-menu_Archivo_GuardarComo_Click:void -mostrarResultado:void
-textBox_Programa_TextChanged:void +convertirACadena:void
-button_Verificar_Click:void +cumpleRestriccion:bool
-recogerParametrosAG:void +valorFO:int
-recogerDatosAG:void -button_Volver_Click:void
-buttonResolver_Click:void
-radioButtonAEpaso_CheckedChanged:void
-menu_Ayuda_Click:void
-menu_Salir_Click:void
-TFormPrincipal_Closing:void System.Windows.Forms.Form
-myToolBar_ButtonClick:void TFormIndividuo
-formPrincipal:TFormPrincipal
-algoritmo:TAlgoritmo
System.Windows.Forms.Form
-poblacion:TPoblacion
TFormAyuda
-posMejor:int
-sumaAptidudes:double
-formPrincipal:TFormPrincipal
-paso:int
-ress:int[][]
<<constructor>>
-ops:string[]
+TFormAyuda:void
-funObj:int[]
#Dispose:void
-InitializateComponent:void
<<constructor>>
-TFormAyuda_Load:void
+TFormResultado:void
-TFormAyuda_Close:void
#Dispose:void
-button_Volver_Click:void
-InitializateComponent:void
-TFormIndividuo_Load:void
-TFormIndividuo_Close:void
-mostrarResultado:void
-button_Continuar_Click:void
-button_Volver_Click:void
-mostrarIndividuo:void
108
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Suponemos que el
usuario introduce el
programa desde un
1: menu_Archivo_Abrir_Click(object,System.EventArgs):void fichero
El usuario pulsa el
2: button_Verificar_Click(object,System.EventArgs):void bot "Verificar
2.1: TParser(string):void programa"
Ver el diagrama de secuencia
del componente Parser
2.2: parsear(int):bool
El c igo es correcto.
3.2: recogerParametrosAG(int,int,double,double,int):void
Ver el diagrama de secuencia
3.3: TAlgoritmo(int,int,double,)
del componente AG
3.4: TFormResultado(TFormPrincipal,string[],int[],int[],int[][],string[],int[])...
3.4.1: construirTablaResulVars(string[],int[],int[]):DataTable
3.4.2: construirTablaResulRess(string[],int[][],string[]):DataTable
3.4.3: construirTablaResulFO(string[],int[],int[],int[]):DataTable
3.5: algoritmoGenetico():int[]
3.6: mostrarTiempoEjecucion(System.TimeSpan):void
3.7: mostrarResultado(int[],int[][],string[],int[]):void
109
Sistemas Informáticos Curso 2002-2003
Suponemos que el
usuario introduce
un programa desde
1: menu_Archivo_Abrir_Click(object,System.EventArgs):void un fichero
El codigo del
programa es correcto
3: buttonResolver_Click(object,System.EventArgs):void
El usuario elige
ejecucion paso a paso
3.1: recogerDatosAG(string[],int[],int[],int[][],string[],int[]):void
con tamanio de paso
3.1.1: dameDatos(string[],int[],int[],int[],string[],int[]):void P y pulsa el boton
"Resolver"
3.2: recogerParametrosAG(int,int,double,double,int):void
3.3: TAlgoritmo(int,int,double,double,string[],int[],int[],int[][],string[],int[],int)
3.4: TFormIndividuo(TFormPrincipal,string[],int[],int[],int[][],string[],int[],T...
3.4.1: construirTablaResulVars(string[],int[],int[]):DataTable
3.4.2: construirTablaResulRess(string[],int[][],string[]):DataTable
3.4.3: construirTablaResulFO(string[],int[],int[],int[]):DataTable
3.4.4: iniciarAlgoritmoGenetico(TPoblacion,int,double)
Se muestra el paso 0
3.4.5: mostrarIndividuo(TIndividuo):void
3.4.5.1: Aptitud():double
3.4.5.4: Genes():int[]
4.2: mostrarIndividuo(TIndividuo):void
4.2.1: Aptitud():double
4.2.2: Puntuacion():double
4.2.3: PuntuacionAcumulada():double
4.2.4: Genes():int[]
4.3: mostrarResultado(int[]):void
110
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.4.3.- Arquitectura
Windows
Framework .NET
<<executable>> <<library>>
interfazWindowsAG AG
(Windows Forms .NET) (dll .NET)
<<library>>
Parser
(dll .NET)
111
Sistemas Informáticos Curso 2002-2003
8.3.4.- InterfazWebAG
Es una aplicación web tradicional que sirve páginas HTML, realizadas con
Web Forms de .NET. El componente InterfazWebAG tiene una referencia al
componente AG y otra referencia al componente Parser.
112
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
-nombreFichero:string
-m_parser:TParser
-Page_Load:void
-On_Init:void
-InitializateComponent:void
-button_Verificar_Click:void
-recogerParametrosAG:void
-recogerDatosAG:void
-buttonResolver_Click:void
113
Sistemas Informáticos Curso 2002-2003
Suponemos que el
usuario introduce el
programa desde un
fichero
1: Page_Load(object,System.EventArgs):void
El usuario pulsa el
2: button_Verificar_Click(object,System.EventArgs):void boton "Verificar
2.1: TParser(string):void programa"
Ver el diagrama de secuencia
del componente Parser
2.2: parsear(int):bool
El codigo del
programa es
correcto.
4.2: recogerParametrosAG(int,int,double,double,int):void
5.2: crearDataSource_Ress():DataTable
5.3: crearDataSource_FO():DataTable
6: mostrarTiempoEjecucion():void
114
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Suponemos que el
usuario introduce
un programa desde
1: Page_Load(object,System.EventArgs):void un fichero
El codigo del
programa es correcto
3: buttonResolver_Click(object,System.EventArgs):void
El usuario elige
ejecucion paso a paso
3.1: recogerDatosAG(string[],int[],int[],int[][],string[],int[]):void
con tamanio de paso
3.1.1: dameDatos(string[],int[],int[],int[],string[],int[]):void P y pulsa el boton
"Resolver"
3.2: recogerParametrosAG(int,int,double,double,int):void
3.3: TAlgoritmo(int,int,double,double,string[],int[],int[],int[][],string[],int[],int)
4: Page_Load(object,System.EventArgs):void
4.1: iniciarAlgoritmoGeneticoPaso(TPoblacion,int,double)
4.2: mostrarIndividuo(TIndividuo):void
4.3: crearDataSource_Vars():DataTable
4.5: crearDataSource_FO():DataTable
4.6: crearDataSource_Genes():DataTable
Se muestra el paso 0
5: button_Continuar_Click(object,System.EventArgs):void
5.1: algoritmoGeneticoPaso(int,TPoblacion,double)
5.2.1.4:
5.2.2: crearDataSource_Vars():DataTable
5.2.3: crearDataSource_Ress():DataTable
5.2.4: crearDataSource_FO():DataTable
5.2.5: crearDataSource_Genes():DataTable
115
Sistemas Informáticos Curso 2002-2003
8.3.4.3.- Arquitectura
Internet
Cliente
HTTP Servidor HTTP (IIS)
Browser
HTTP .NET FrameWork
Cliente
<<executable>> <<library>>
interfazWindowsAG AG
Navegador (Windows Forms .NET) (dll .NET)
(Cualquier HTTP
plataforma)
<<library>>
Parser
(dll .NET)
116
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.5.- InterfazServicioWebAG
Es una aplicación distribuida para Windows con una interfaz rica construida
con clases formulario de Windows Form de .NET que invoca a un Servicio Web de
ASP .NET. InterfazServicioWebAG tiene una referencia web al componente
ServicioWebAG y otra referencia al componente Parser
117
Sistemas Informáticos Curso 2002-2003
System.Windows.Forms.Form System.Windows.Forms.Form
TFormPrincipal TFormResultado
-nombreFichero:string -formPrincipal:TFormPrincipal
-programaModificado:bool
-m_parser:TParser <<constructor>>
+TFormResultado:void
<<constructor>> <<constructor>>
+TFormPrincipal:void +TFormResultado:void
+Main:void #Dispose:void
#Dispose:void -InitializateComponent:void
-InitializateComponent:void -TFormResultado_Load:void
-TFormPrincipal_Load:void -TFormResultado_Close:void
-guardarFichero:void -construirTablaResulVars:DataTable
-menu_Archivo_Nuevo_Click:void -construirTablaResulRess:DataTable
-menu_Archivo_Abrir_Click:void -construirTablaResulFO:DataTable
-menu_Archivo_Guardar_Click:void -mostrarResultado:void
-menu_Archivo_GuardarComo_Click:void -mostrarTiempoEjecucion:void
-textBox_Programa_TextChanged:void -convertirACadena:void
-button_Verificar_Click:void -valorFO:int
+recogerParametrosAG:void -cumpleRestriccion:bool
+recogerDatosAG:void -button_Volver_Click:void
-buttonResolver_Click:void
-radioButtonAEpaso_CheckedChanged:void
-menu_Ayuda_Click:void
System.Windows.Forms.Form
-menu_Salir_Click:void
TFormAyuda
-TFormPrincipal_Closing:void
-myToolBar_ButtonClick:void
-formPrincipal:TFormPrincipal
<<constructor>>
+TFormAyuda:void
#Dispose:void
-InitializateComponent:void
-TFormAyuda_Load:void
-TFormAyuda_Close:void
-button_Volver_Click:void
118
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Suponemos que el
usuario introduce el
programa desde un
1: menu_Archivo_Abrir_Click(object,System.EventArgs):void fichero
El usuario pulsa el
2: button_Verificar_Click(object,System.EventArgs):void boton "Verificar
2.1: TParser(string):void programa"
Ver el diagrama de secuencia
2.2: parsear(int):bool del componente Parser
El codigo del
programa es
correcto.
3.2: recogerParametrosAG(int,int,double,double,int):void
3.3: SWAG():void
3.5: TFormResultado(TFormPrincipal,string[],int[],int[],int[][],string[],int[])...
3.5.1: construirTablaResulVars(string[],int[],int[]):DataTable
3.5.2: construirTablaResulRess(string[],int[][],string[]):DataTable
3.5.3: construirTablaResulFO(string[],int[],int[],int[]):DataTable
3.6: mostrarTiempoEjecucion(System.TimeSpan):void
3.7: mostrarResultado(int[],int[][],string[],int[]):void
119
Sistemas Informáticos Curso 2002-2003
8.3.5.3.- Arquitectura
Internet
Cliente HTTP Servidor HTTP (IIS)
Windows HTTP .NET FrameWork
SOAP
SOAP
XML
XML
HTTP
SOAP
<<library>> XML
Parser
(dll .NET)
120
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
8.3.6.- ServicioWebAG
121
Sistemas Informáticos Curso 2002-2003
SWAG Global
+SWAG:void <<constructor>>
+InitizalizeComponent:void +Global:void
+resolver:int[] +InitizalizeComponent:void
#Application_End:void
#Application_Start:void
#Application_BeginRequest:void
#Application_EndRequest:void
#Application_AuthenticalRequest:void
#Application_Error:void
#Session_End:void
#Session_Start:void
122
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
servicioWebAG algoritmo
SWAG TAlgoritmo
1: resolver(int,int,double,double,string[],int[],int[],int[][],string[],int[],int):int[]
1.2: algoritmoGenetico():TIndividuo
123
Sistemas Informáticos Curso 2002-2003
124
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Como vemos, tiene un menú con las opciones de Nuevo, Abrir, Guardar,
Guardar como… aplicadas a archivos, Ayuda y Salir, que explicaremos a
continuación. Tiene también una zona para escribir el código fuente que describe el
problema a resolver, código que se puede escribir a mano, o bien se puede cargar
desde un archivo con extensión .rpr. Además hay un botón para verificar la sintaxis
del código fuente, un botón para resolver el problema sin ninguna interrupción, y
un botón sólo disponible en la versión que se ejecuta en el servidor (clienteWin32)
para la ejecución con un paso intermedio en el que se puede observar el efecto de
la propagación inicial de restricciones sobre los dominios de las variables.
125
Sistemas Informáticos Curso 2002-2003
126
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
127
Sistemas Informáticos Curso 2002-2003
128
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
129
Sistemas Informáticos Curso 2002-2003
La opción Ayuda muestra una ventana con la sintaxis del lenguaje LRPR y
un ejemplo de problema:
130
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Si una vez que tenemos el código fuente sobre el área de código, pulsamos
el botón Verificar, hay dos opciones, si es correcto, aparecerá el siguiente aviso:
131
Sistemas Informáticos Curso 2002-2003
132
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
133
Sistemas Informáticos Curso 2002-2003
Como podemos ver, esta ventana tiene los siguientes elementos, el campo
Restricción en el que se muestra la restricción que provoca el cambio de los
dominios, el área de dominios de las variables, el botón Siguiente, que sirve para
ejecutar un paso de propagación (aplicar una restricción a los dominios), el botón
Resolver, que resuelve el problema mostrando las ventanas vistas anteriormente,
y el botón Volver, que vuelve a la pantalla inicial.
134
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Para poder utilizar este cliente, sólo es necesario tener un navegador en una
máquina conectada a Internet, y acceder a la URL
http://servidor/clienteWebResolutor/inicio.aspx, donde servidor será el servidor
Web IIS (Internet Information Server) donde resida la aplicación Web
clienteWebResolutor.
135
Sistemas Informáticos Curso 2002-2003
136
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
137
Sistemas Informáticos Curso 2002-2003
138
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
139
Sistemas Informáticos Curso 2002-2003
Como podemos ver, esta ventana tiene los siguientes elementos, el campo
Restricción en el que se muestra la restricción que provoca el cambio de los
dominios, el área de dominios de las variables, el botón Siguiente, que sirve para
ejecutar un paso de propagación (aplicar una restricción a los dominios), el botón
Resolver, que resuelve el problema mostrando las ventanas vistas anteriormente,
y el botón Volver, que vuelve a la pantalla inicial.
140
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
141
Sistemas Informáticos Curso 2002-2003
142
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Como iremos viendo a continuación, cada una de estas zonas irá variando
según el momento de la ejecución en el que nos encontremos.
Una vez que el usuario a introducido todas las variables y dominios con los
que desea que sea resuelto el problema deberá hacer clic sobre el botón Siguiente
para que el grid de restricciones y el correspondiente a la función de optimización
se completen con el nombre de dichas variables de forma que el usuario sólo tenga
que introducir sus coeficientes.
143
Sistemas Informáticos Curso 2002-2003
144
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
Finalmente, tras haber introducido todos los datos, el usuario deberá hacer
clic sobre el botón Resolver (situado en la botonera inferior) para obtener la
solución óptima, en el caso de que exista, o un mensaje indicando que no hay
solución. Al hacer clic sobre este botón, la pantalla inicial se amplía de modo que
aparece una zona inferior en la que se puede ver lo siguiente:
145
Sistemas Informáticos Curso 2002-2003
146
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
9.2.2.- ClienteWebRPR
Para el caso del cliente Web hemos utilizado una clase Parser de modo que
facilite notablemente la introducción de todos estos valores mediante el empleo de
un mini-lenguaje cuyas especificaciones aparecen en la página de ayuda que se
muestra al hacer clic sobre el link “Ayuda de sintaxis”.
147
Sistemas Informáticos Curso 2002-2003
¾ Ayuda
148
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
149
Sistemas Informáticos Curso 2002-2003
150
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
151
Sistemas Informáticos Curso 2002-2003
152
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
153
Sistemas Informáticos Curso 2002-2003
Obsérvese que la opción de ejecución aún no esta activa, para guiar una vez
más al usuario que intuye de esta manera que el siguiente paso a dar es la
verificación del programa.
154
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
En cuanto el área de texto contenga algo, ya sea por que se abra un archivo
como se acaba de ver, o por que el usuario escriba directamente en el cuadro, la
opción de verificación se activará, es decir, pasarán a estar accesibles tanto el
cuarto botón de la barra de tareas como el botón “Verificar programa”. Además en
la parte central derecha aparecerá una imagen (interrogación amarilla)
acompañada de un texto para informar al usuario del estado del programa, en este
momento, sin verificar. La figura 5 refleja este estado.
155
Sistemas Informáticos Curso 2002-2003
Lo más importante de este panel es que permite elegir al usuario entre dos
formas ejecutar el algoritmo genético, mediante unos radiobuttons
autoexcluyentes. Así sí se selecciona “Algoritmo Evolutivo” tenemos una ejecución
directa, que es la opción por defecto, y sí se cambia a “Algoritmo Evolutivo (paso a
paso)” se tiene una ejecución paso a paso.
156
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
157
Sistemas Informáticos Curso 2002-2003
Para realizar una ejecución paso a paso, estando en la figura 7 se tiene que
seleccionar el segundo radiobutton, “Algoritmo Evolutivo (paso a paso)”. La
aplicación ofrece la posibilidad de decidir el número de pasos o generaciones que se
avanzan cada vez. Por defecto son 10 generaciones.
Esta forma de ejecución tiene un fin didáctico, por lo que se muestra en este
y los siguientes formularios que se generen para esta forma de ejecución, la
correspondencia entre la población sobre la que se aplica el algoritmo genético y el
valor de las variables del resultado encontrado hasta ese momento por el algoritmo
genético. Ese resultado se extraerá del mejor individuo de la población de la
generación en la que nos encontremos. En el panel “Representación del individuo”
se muestran los valores con los que se puntúa cada individuo para seleccionar el
mejor de ellos, aptitud, puntuación y puntuación acumulada, y la cadena de genes
de un individuo, donde cada gen representa una variable y almacena su valor.
158
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
159
Sistemas Informáticos Curso 2002-2003
160
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
El usuario puede repetir toda esta secuencia de pasos para resolver tantos
problemas de restricciones como desee. Cuando desea abandonar la aplicación
debe pulsar la opción “Salir” del menú principal lo el último icono de la barra de
tareas. Entonces, la aplicación le solicitará confirmación de salida, tal como se
muestra en la figura 13. Si el usuario decide salir y el código del área de texto está
modificado, se le pregunta para guardar los cambios en un fichero.
161
Sistemas Informáticos Curso 2002-2003
Una forma más que está disponible para acceder a esta aplicación es la
URL http://servidor/aplicacionWeb/WebFormPrincipal.aspx desde un navegador en
un máquina con conexión a Internet.
162
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
163
Sistemas Informáticos Curso 2002-2003
164
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
165
Sistemas Informáticos Curso 2002-2003
166
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
167
Sistemas Informáticos Curso 2002-2003
168
Arquitectura de un Sistema de Optimización accesible a través de Servicios Web XML
10.- Bibliografía
1. "A Platform for Web Services", Mary Kirtland,
Microsoft Developer Network
http.//msdn.microsoft.com
11. " Computer Algorthms, Introduction to Design and Analysis", Baase S.,
Addision Wesley.
169