implementación del algoritmo de selección de variables...

181
Implementación del algoritmo de selección de variables conocido con el nombre de "Simulated Annealing" (Recocido Simulado) . AUTOR: J. Javier Peláez Moreno DIRECTOR: Eduard Llobet Valero FECHA: Enero / 2005

Upload: phungtu

Post on 22-Apr-2018

218 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Implementación del algoritmo de selección de variables conocido con el nombre de "Simulated Annealing"

(Recocido Simulado) .

AUTOR: J. Javier Peláez Moreno

DIRECTOR: Eduard Llobet Valero

FECHA: Enero / 2005

Page 2: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 1

ÍNDICE Pág. 1.0 INTRODUCION 3 2.0 OBJETIVOS DEL PROYECTO 6 3.0. CONSIDERACIONES PREVIAS 7 3.1. SENSORES DE GAS 7 4.0. DATOS DE PARTIDA 11 5.0 MÉTODOS EXISTENTES PARA LA SELECCIÓN DE VARIABLES 14 5.1 FORWARD SELECTION 14 5.2 BACKWARD ELIMINATION 16 5.3 STEPWISE SELECTION 17 5.4 OTROS MÉTODOS 17 5.4.1 REDES NEURONALES 18 5.4.1.1 RED FUZZY ARTMAP 18 5.4.1.2 RED PROBABILÍSTICA 20 6.0 DESCRIPCIÓN DEL MÉTODO "SIMULATED ANNEALING" 23 6.1 ANALOGIA FISICA 23 6.2 EL PROCESO DE “SIMULATED ANNEALING” 24 6.3 DECISIONES GENÉRICAS 27 6.4 DECISIONES ESPECIFICAS PARA CADA PROBLEMA 30 6.5 APLICACIONES DEL METODO 32 7.0 TRATAMIENTO DE DATOS 34 7.1 PROGRAMA “SIMULATED_AN1.M” 35 7.2 PROGRAMA “GRAFICAS.M” 37 7.3 PROGRAMA “MINIMO.M” 38 7.4 PROGRAMA “GRAFICA_MIN.M” 40 7.5 PROGRAMA “VALIDACIÓN_CRUZADA.M” 41 7.6 PROGRAMA “ELECCION_MIN_ERROR.M” 42 7.7 PROGRAMA “ELECCION_MIN_VARIABLES.M” 44 7.8 PROGRAMA “GUI_SA.M” 46 7.8.1 IMPLEMENTACIÓN EN UN ENTORNO GRÁFICO CON MATLAB 46 7.8.2 HERRAMIENTAS BÁSICAS DE DISEÑO DE GUI’S 46 7.8.3 PROGRAMACIÓN DE GUI’S 52 7.8.4 ESTRUCTURA DEL GUI 58 7.9 SOFTWARE 59

Page 3: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 2

Pág. 8.0 APLICACIÓN DEL METODO SIMULATED ANNEALING 60 8.1 PARAMETROS INICIALES 60 8.2 RESULTADOS 62 8.2.1 PRIMER FICHERO DE DATOS 62 8.2.2 SEGUNDO FICHERO DE DATOS 80 9.0 EVALUACION DE DATOS 102 9.1 ANALISIS DE LOS DATOS 104 9.2 COMPARATIVA CON OTROS MÉTODOS 105 9.3 EVALUACION RESULTADOS 108 10.0 CONCLUSIONES 109 11.0 BIBLIOGRAFIA 110 12.0 ANEXOS 113 12.1 PROGRAMACION EN MATLAB 113 12.1.1 PROGRAMA “SIMULATED_AN1.M” 113 12.1.2 PROGRAMA “GRAFICAS.M” 120 12.1.3 PROGRAMA “MINIMO.M” 121 12.1.4 PROGRAMA “GRAFICA_MIN.M” 124 12.1.5 PROGRAMA “VALIDACIÓN_CRUZADA.M” 126 12.1.6 PROGRAMA “ELECCION_MIN_ERROR.M” 128 12.1.7 PROGRAMA “ELECCION_MIN_VARIABLES.M” 132 12.1.8 PROGRAMA “GUI_SA1.M” 136 12.2 GRÁFICOS DE LA EVOLUCIÓN DE DATOS 139 12.2.1 EVELOCIÓN PRIMER FICHERO DATOS (5 CLASES) 139 12.2.2 EVELOCIÓN SEGUNDO FICHERO DATOS (6 CLASES) 160

Page 4: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 3

1.0 INTRODUCION El olfato fue siempre uno de nuestros sentidos más enigmáticos. Ya se sabía desde 1991 que, en promedio, una nariz puede detectar casi 10.000 aromas diferentes en un ejercicio que usa aproximadamente 1.000 células olfativas. El sistema olfativo activa todo un conjunto de células especializadas receptoras que, a su vez, transmite esta información a otras partes del cerebro donde la misma queda registrada en la memoria. El olfato humano es un "instrumento" ampliamente utilizado como control de calidad en la industria. Este proceso es caro ya que requiere un conjunto de expertos entrenados que sólo pueden trabajar durante periodos de tiempo relativamente cortos, puesto que su exposición a determinados aromas durante tiempos prolongados reduce su sensibilidad olfativa. Por lo tanto existe la necesidad de desarrollar instrumentación electrónica que pueda imitar el sistema olfativo humano, que sea de bajo coste, de fácil utilización y que permita obtener los resultados del análisis en tiempo real. Una “nariz electrónica” es un instrumento que puede oler, es decir, es capaz de realizar análisis cualitativos y/o cuantitativos de una mezcla de gases, vapores y olores. La nariz electrónica es un instrumento de olfato artificial que permite distinguir y reconocer aromas utilizando sensores de gas. La nariz electrónica tiene al menos 4 partes con diferentes funciones:

- La primera, realiza la adecuación de la mezcla gaseosa y el muestreo. - La segunda, sería el conjunto de sensores de gas que hace la detección. - La tercera, la electrónica de control que se dedica a la gestión del conjunto de

sensores y adecuación de la señal. - Finalmente, la cuarta sería la computadora, con adecuados algoritmos de

clasificación de patrones, extrae los rasgos característicos o "huellas" de cada aroma y presenta los resultados en la interfaz con el usuario.

Page 5: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 4

El poder analítico de un conjunto de sensores fue ya apreciado en la década del ‘80 por investigadores de la Universidad Warwick de Gran Bretaña y por el Aragonne National Labs. de los EE.UU. Estos grupos utilizaron un conjunto de sensores para la detección de ciertos gases. Los investigadores de la Universidad Warwick liderados por K. Persaud orientaron los estudios en entender los procesos del olfato biológico utilizando un conjunto de sensores de óxidos metálicos semiconductores (MOX) y posteriormente ampliaron su investigación a sensores basados en polímeros conductores. Liderados por J. Setter y W. Penrose, el grupo del "Aragonne National Labs" desarrolló un dispositivo para la detección en casos de emergencias de escapes gaseosos peligrosos, acuñaron el término CPS (espectroscopía química paramétrica) y utilizaron la “huella digital” olfativa para caracterizar las substancias. El primer instrumento comercial conocido con el nombre de “sniffer” (olfateador) fue construído por Baccharach Inc. en la década del ’60. Tenía un solo sensor de gas y si bien se utilizaba para oler no llegó a ser una nariz electrónica. En 1991 el tema “narices electrónicas” recibiría un renovado interés gracias al Primer Congreso Internacional de Narices Electrónicas (ISOEN 1) en Reikjavik, Islandia (financiado por la OTAN). Actualmente, las narices electrónicas están en una etapa muy inicial de su desarrollo y no han madurado aún como tecnología. Las cámaras de medición están dotadas de un número no tan grande de sensores: entre 6 y 32 para la gran mayoría de las narices comerciales, contra los varios o cientos de miles de los mamíferos, que además son de clases diferentes y redundantes, dando un total de varios millones. Esta limitación de los sistemas olfativos electrónicos les imposibilita a veces discriminar algunos olores debido a que, en algunos casos, los gases interfieren entre sí, dando la misma señal en los sensores. La nariz electrónica toma ciertos aspectos inherentes a una nariz biológica pero, como es obvio, su escasa complejidad en comparación con esta última la hace muy específica y requiere de un diseño apropiado para cada situación particular que se quiera caracterizar. En esto reside su limitación como instrumento universal pero también su potencia como detector específico. Las narices electrónicas sirven para oler algo si se selecciona o desarrolla el conjunto de sensores adecuados para una aplicación determinada. Por ejemplo: distinguir cítricos sanos de enfermos, el grado de frescura de la carne de pescado, la calidad del aire ambiental, detectar enfermedades de la piel, diferenciar calidad de alimentos y materias primas, alertar en ambientes gaseosos peligrosos, separar cosméticos, realizar diagnósticos médicos, etc. Para cada caso particular se las “entrena” mediante un software de reconocimiento de olores (patrones de señal de los sensores). Las narices más avanzadas del mundo poseen conjuntos de sensores de diferentes tecnologías o bien un gran número de sensores de características similares pero no iguales, en el que sólo un subconjunto es adecuado para cada aplicación. La nariz electrónica se diferencia de un monitor de gases en que una nariz electrónica distingue y reconoce aromas, que son combinaciones de una gran cantidad de gases y elementos volátiles. Reconoce clases diferentes previamente aprendidas y almacenadas en la memoria de la computadora de la nariz electrónica. Un monitor de gases está calibrado

Page 6: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 5

para medir la cantidad presente en el aire de un determinado gas, usualmente dada en partes por millón (ppm). También, podríamos diferenciar una nariz electrónica con respecto a un olfateador aunque en realidad son instrumentos que se utilizan con el mismo objetivo y la palabra pude utilizarse indistintamente para describir un aparato que reconoce patrones de olor. Sin embargo, actualmente existe una tendencia a llamar olfateador (sniffer) a aquellos que se utilizan en la detección y extracción de datos para su posterior análisis en cromatografos de gas, espectrometria de masa o espectrometria infrarroja, mientras que se llaman narices a los que utilizan sensores químicos de estado sólido para la detección, clasificación e identificación de olores.

Page 7: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 6

2.0 OBJETIVOS DEL PROYECTO La enorme cantidad de datos proporcionada por las narices electrónicas hace muy difícil el tratamiento de los datos obtenidos, por ello, se persigue encontrar un subconjunto "óptimo" de sensores sin perder información. Existen varias estrategias de algoritmos de búsqueda de selección de variables las cuales las podríamos agrupar en dos categorías: secuenciales, y aleatorias. Los algoritmos de búsqueda secuenciales deterministas son las estrategias que reducen el número de variables así como el numero de combinaciones a inspeccionar aplicando búsquedas locales. Los métodos más simples son: Forward Selection - la selección secuencial delantera (SFS), Backward elimination - la selección secuencial dirigida hacia atrás (SBS) y la selección del Stepwise. Los algoritmos de la búsqueda aleatorios intentan superar los costos computacionales de métodos exponenciales; estas técnicas incluyen el recocido simulado (SA) y los algoritmos genéticos (GA). El objetivo de este proyecto es implementar el algoritmo de selección de variables conocido con el nombre de "Simulated Annealing" (Recocido Simulado) para poder ser utilizado como pre-procesado en métodos de reconocimiento de patrones y cuya finalidad principal es su utilización en una nariz electrónica. Los algoritmos Genéticos (GA) disponen de una aplicación insertada dentro del Matlab que nos permitiría realizar la selección de variables directamente sin necesidad de diseñar ningún programa, pero esto no existe para nuestro método “Simulated Annealing”. Por ello, hemos tenido que desarrollar una serie de programas informáticos mediante MATLAB, que nos calculan el numero de variables (sensores) óptimos a utilizar reduciendo así al máximo la cantidad de información con la que partiremos a la hora de analizar datos sin perder información.

Page 8: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 7

3.0. CONSIDERACIONES PREVIAS Las prestaciones de un sistema de olfato electrónico quedan fundamentalmente condicionadas por las características de los sensores químicos que lo integran. Por este motivo, desde los años 70 se han desarrollado diversos tipos de sensores, basados en diferentes materiales y en diferentes principios de funcionamiento. Su característica común es la de poseer sensibilidades parcialmente solapadas de forma que cada sensor responde a un amplio espectro de gases o vapores. La mayoría de los esfuerzos dedicados ha consistido en la investigación en materiales inorgánicos de tipo semiconductor y metales catalíticos. Dichos materiales trabajan a temperaturas elevadas (entre 100 y 600 °C), produciendo la combustión en su superficie de los vapores/aromas detectados. La alteración de la concentración de oxígeno adsor-bido en la superficie del sensor debida a la reacción conduce a una variación en su conductividad eléctrica. También se han estudiado materiales orgánicos como los polímeros conductores (polipirroles y polianilinas principalmente). Éstos trabajan a temperatura ambiente (entre 20 y 60 ºC) y poseen muy buena sensibilidad. Su principio de funcionamiento se basa en la adsorción reversible de las moléculas olorosas en la capa activa, que producen un cambio de la conductividad eléctrica en el caso de los polímeros conductores depositados sobre electrodos o bien produciendo una variación en la frecuencia de oscilación cuando el polímero se ha depositado sobre dispositivos piezoeléctricos como microbalanzas de cuarzo o SAW . 3.1. SENSORES DE GAS Se entiende como sensor a un dispositivo que consta de dos partes principales:

- Un elemento sensible o activo, cuyas propiedades físicas o químicas cambian en presencia de aquello que se desea detectar.

- Un elemento transductor, que convierte los cambios en las propiedades del elemento activo en una señal eléctrica.

El sensor puede en ciertos casos contar con una membrana selectiva, que impide el paso de materia o radiación indeseable. En la siguiente figura se esquematiza un sensor de gases o líquidos junto con las etapas de procesamiento de señales. Esta tipología de sensores es el utilizada en narices y lenguas electrónicas.

Page 9: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 8

Los sensores suelen poseer alta sensibilidad, es decir que pueden llegar a detectar niveles muy bajos de la especien en cuestión, dependiendo de la aplicación específica. Los sensores son generalmente de bajo costo, con capacidad de miniaturización y tienen la posibilidad de diseñarse especialmente para cada aplicación. Cuando se desean determinar concentraciones de una dada especie, la principal desventaja es que los sensores son inespecíficos: la señal de salida no puede asignarse unívocamente a una especie determinada.

Los tipos de sensores de gases más utilizados actualmente son:

- MOX: Metal Oxide Semiconductor (utilizados en las narices electrónicas)

- QCM: Quartz Crystal Microbalance

- SAW: Surface Acoustic Waves

- MOSFET: Metal Oxide Semiconductor Field Effect Transistor

- CP: Conducting Polymers

- FO: Fiber Optics

Un ejemplo de sensor de gas MOX sería:

Page 10: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 9

Sobre un sustrato microfabricado en silicio cristalino se deposita una placa que soporta el micro-calefactor de platino y sus contactos eléctricos. Una placa dieléctrica lo separa de la película sensora, depositada sobre el mismo. La película activa de dióxido de estaño nanoestructurada mide unos 80 micrones (dibujada en naranja en la figura inferior de la derecha). Los MOX están formados por una película delgada o gruesa de un material policristalino semiconductor, típicamente dióxido de estaño (SnO2). Los films necesitan ser calentados localmente a temperaturas entre 300 y 600 °C para favorecer el proceso de conducción. También se suelen incorporar dopantes como aluminio (Al), antimonio (Sb), paladio (Pd), oro (Au), etc., para mejorar la sensibilidad del sensor ante determinados gases (selectividad).

Las propiedades de los MOS como sensores dependen de las siguientes variables:

- Temperatura local de calentamiento

- Concentraciones de impurezas dopantes

- Tamaño del grano/microestructura.

El principio de funcionamiento se basa en el proceso de reducción de la superficie de los granos del material cuando se acerca un gas reductor: metano (CH4), monóxido de carbono (CO), alcoholes, hidrógeno (H2), etc. De esta forma el gas reductor a ser detectado introduce electrones en la banda de conducción, disminuyendo la carga negativa que suele estar atrapada y fija en la superficie por átomos de oxígeno (gas oxidante) que no participa en el proceso de conducción. Los films delgados de SnO2 se suelen depositar sobre una membrana que a su vez se coloca sobre un soporte de silicio. La membrana es calentada entre 300 y 600 °C por un dispositivo calefactor. Todo el conjunto mide unas 500 micras. El sensor de gas sufre una variación en la conductividad cuando las moléculas componentes del olor se adsorben e interactuan con la nanoestructura de la película de SnO2. Sin embargo, la medición de esta variación no es suficiente para identificar un olor, dado que la mayoría de los sensores químicos son inespecíficos y están lejos de ser selectivos como para distinguir una especie gaseosa. Pero, cuando se utiliza un gran número de sensores de gas distintos con baja selectividad se obtiene un patrón de señales que, bajo ciertas condiciones, permite tener una gran repetibilidad en la correspondencia única con un olor.

La identificación de un patrón medido se realiza utilizando un software o algoritmo de reconocimiento que compara este patrón medido con aquellos almacenados en la memoria durante la etapa de aprendizaje. Un proceso muy similar es el que ocurre en el olfato biológico de los mamíferos. Este proceso de aprendizaje se lleva a cabo cuando la nariz electrónica se usa para una nueva aplicación. Distintas muestras de olor se miden con la nariz electrónica y su patrón sensorial característico (huella digital olfativa o diagrama) es etiquetado con un nombre y almacenado en la memoria de la computadora. Estas etiquetas con su nombre son mostradas por la nariz electrónica cuando la misma detecta un olor similar. A esto se le llama diferenciar o reconocer.

Page 11: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 10

Los sensores desarrollados se someten a un riguroso examen de capacidades y se caracterizan exhaustivamente para conocer su selectividad ante distintas especies gaseosas. Para ello se utilizan los "banco de gases". El sistema que controla precisamente las cantidades de diferentes especies gaseosas que conforman una mezcla en una cámara de medición. La cámara puede acomodar varios sensores de gas y algunos adicionales para temperatura y humedad relativa. Tanto el control de la temperatura y humedad como la estequiometría de la mezcla gaseosa presente en la cámara se realiza mediante una PC conectada a electroválvulas, controladores de flujo másico, mezcladores y baños termostatizados. El uso de un "banco de gas" es fundamental en la elección de sensores para su instalación en una nariz electrónica, debido a que pueden elegirse aquellos que sean más sensibles y selectivos para cada aplicación, además de proveer información importante sobre su deterioro con el tiempo, lo cual es uno de los principales problemas de los sensores activos. El desarrollo de sensores es una temática multidisciplinaria. Involucra aspectos de Física, Química e Ingeniería, y abarca desde la síntesis del material activo hasta la medición con arreglos multisensoriales como los de la Nariz Electrónica. Un programa global de investigación en el área de sensores involucra varias etapas previas al uso comercial de un dado dispositivo.

Page 12: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 11

4.0. DATOS DE PARTIDA Para el estudio de nuestra aplicación del algoritmo de selección de variables hemos realizado pruebas con dos ficheros o conjunto de datos. Un primer fichero de datos, algo más sencillo, de 12 variables (columnas) clasificadas en cinco clases y un segundo tipo, más complejo, de 120 variables clasificadas en veinticuatro clases, aunque previamente a su estudio realizaremos un análisis con estos datos clasificados en 6 clases. Los datos se han obtenido de la siguiente forma: El proceso de identificación de olores comprende tres estados durante el muestreo del olor: el primero es de limpieza de la cámara de medición y sensores mediante enjuagues realizados con “aire limpio” para barrer las moléculas de mediciones anteriores, el segundo es la toma de la muestra, en la que se reciben en la cámara cantidades controladas de “aire con olor” exponiendo a los sensores al mismo, y finalmente, un segundo enjuague de la cámara y sensores con “aire limpio” previo a la próxima toma de muestras. Es necesaria la estabilizacion térmica de la muestra y de la cámara en todas estas etapas. Del mismo modo, debido a que la humedad afecta tanto la medición como la muestra misma, sólo se deben comparar resultados tomados en condiciones de humedad y temperatura normalizadas. El equipo de medida utilizado será:

- Una cámara estanco construida en el laboratorio. - Una matriz de sensores. - Un ventilador para homogeneizar la muestra. - Un termómetro para controlar la temperatura. - Un Higrómetro para controlar la humedad. - Un P.C. - Placa de interfície. - Placa de adquisición. - Un cable de conexión al P.C.

Para realizar estas medidas, se prepara un recipiente para cada una de ellas. Una vez tenemos los recipientes preparados con estas proporciones de contaminantes, ya podemos inyectarlas. Para la realización de las medidas se utiliza una metodología estricta. El ventilador de la cámara estará en funcionamiento todo el rato de forma contraria introduciríamos perturbaciones en la lectura del sensor. A continuación, detallamos el proceso seguido: Partimos de una cámara limpia, unos sensores estabilizados y una humedad controlada del 30%.

1. Se carga la jeringuilla con un volumen de líquido contaminante apropiado para la concentración que queremos medir.

2. Se inicia el programa de adquisición de datos, introduciendo todos los datos sobre el experimento que nos pedirá el programa. Obtendremos una documentación adecuada para cada medida.

3. Se empiezan a adquirir los datos antes de inyectar el contaminante en la cámara. 4. Esperamos unos 10 minutos para asegurarnos que los sensores están totalmente

estabilizados.

Page 13: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 12

5. Se limpia la cámara con la introducción de aire sintético durante un par de minutos. 6. No volveremos a medir hasta pasada una hora para asegurarnos la estabilidad de

los sensores. Una vez obtenidas las medidas en forma de ficheros de datos se deben tratar para poder operar con ellos. Se debe, por tanto, eliminar las cabeceras del fichero de texto donde tenemos la información de los gases en sí, temperatura, humedad, etc… También eliminaremos la primera fila de la matriz, en el título, ya que son nombres y la última fila, porque hay errores. A partir de este fichero elaboraremos la matriz final de datos. Fabricaremos una matriz con tantas filas como ficheros tenemos y tantas columnas como parámetros por sensor. Primer conjunto de datos Este primer sistema comprende una matriz de 12 sensores de gas de metal óxido comercialmente disponibles de de Figaro Engineering Inc. (Tipo de sensores TGS 812, 717, 813 (2x), 814, 824, 815, 882, 816 (2x), 817, 825. Las muestras medidas consistían en cinco alcohole simples:5 ppm en el aire de metanol, etanol, butanol, propanol y metil-butanol. El proceso fue repetido para proporcionar 6 muestras idénticas de cada uno de las 5 clases, haciendo un total de 30 vectores de la entrada. Segundo conjunto de datos: Este sistema comprende una matriz de 12 sensores de gas de metal óxido comercialmente disponibles de de Figaro Engineering Inc. (Tipo de sensores TGS 825 (2x), 826, 822 (2x), 800 (2x), 882 (2x), 2160, 2611, y 2620). Para estas medidas los sensores están en una cámara controlada de temperatura a 30ºC y una humedad relativa del 10%. Y utilizaremos el calor para homogeneizar la mezcla. Los vapores medidos son acetona, amoníaco, y o-xileno en 50, 100, 200, y 400 ppm y sus mezclas binarias (midiendo todas las posibles combinaciones entre dos vapores, dado las cuatro concentraciones usadas). Esto da un total de 3 medidas de solo vapores y 21 medidas de mezclas binarias, o sea, 24 clases. Como cada medida se reprodujo cuatro veces, hay un total de 96 medidas en la base de datos. Las medidas se recogieron durante 5 días consecutivos. El estudio previo que realizamos con este segundo conjunto de datos es partiendo con 3 medidas de solo vapores y sus combinaciones binarias entre dos sin tener en cuenta las concentraciones, o sea, 3 mezclas binarias, dando un total de 6 clases. En la siguiente figura se muestra la respuesta típica de un sensor TGS 2610 para 200ppm de o-xileno y algunos de sus rasgos extraídos.

Page 14: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 13

La lista completa de rasgos extraídos de la respuesta de los 12 sensores de la matriz es: - Conductancia inicial (o línea Base), Gi. la Conductancia de un sensor en la presencia

de aire - Conductancia Final, Gf. la Conductancia de un sensor al final del período de

adquisición (600s). - Cambio de Conductancia , AG = Gf- Gi. - Cambio de Conductancia normalizada: AGn=(Gf-Gi)/Gi. - Conductancia máxima, Gmax. El valor máximo de la conductancia del sensor - Cambio de la conductancia Máximo, AGmax = Gmax – Gi. - Cambio de la conductancia máximo normalizado, AGmax_n = (Gmax - Gi)/Gi - Tiempo en que se alcanza la conductancia máxima, tmax - Tiempo de subida de la conductancia causado por la inyección de compuestos

volátiles, definida entre 10 y 90% del cambio de la conductancia máximo, t10-90 - Tiempo de subida de la conductancia causado por la inyección de compuestos

volátiles, definida entre 30 y 60% del cambio de la conductancia de máxima,, t30-60 . Dado que se extrajeron 10 rasgos en la respuesta de cada sensor y que había 12 sensores dentro de la matriz, cada medida fue descrita por 120 rasgos, la matriz de los datos tenía 96 filas (es decir las medidas) y 120 columnas (es decir las variables).

Page 15: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 14

5.0 MÉTODOS EXISTENTES PARA LA SELECCIÓN DE VARIABLES

Existen varios métodos de selección de variables de los cuales queremos diferenciar por un lado los algoritmos determinísticos o de búsqueda secuencial, siendo los más simples; el Forward selection (SFS), el Backward elimination (SBS) y el Stepwise selection, y por otro lado, los algoritmos estocásticos o de la búsqueda aleatoria entre los que destacan el Recocido Simulado (SA) y los algoritmos genéticos (GA). Dentro de la selección secuencial tenemos de dos tipos: incremental o decremental. En la primera se basan los algoritmos del tipo forward selection y en la segunda se basan los del tipo backward elimination. El siguiente gráfico donde se muestra como funciona una selección incremental y decremental.

Selección secuencial: A) incremental, B) decremental. 5.1 FORWARD SELECTION La traducción literal sería: selección hacia delante o selección incremental, también llamada selección incremental secuencial (SFS) debido a que se basa en un bucle repetitivo y que se ejecuta secuencialmente. El principio es sencillo, consiste en ir eligiendo las variables más representativas de nuestro conjunto de variables, según un método de validación predeterminado, hasta llegar a un máximo predeterminado o una condición a cumplir. Dicha condición puede ser, por ejemplo, la de reducción del error hasta un valor tolerable. El método tradicional de realizar la validación “fitness” para elegir la variable seleccionada es el de los mínimos cuadrados que consiste en buscar la diferencia entre el valor obtenido, después de operar con la salida y la columna en cuestión (que representa una variable), y la propia salida. Una vez obtenido el error para cada columna, elegimos la columna que tenga el error menor, en este caso, para entrar en el sistema de variables seleccionadas. La que tenga el mínimo error ya que será la que mejor describa el sistema por sí sola. Una vez elegida, volvemos a formar un sistema diferente restándole la contribución de la columna elegida a las restantes y volviendo a ejecutar el proceso tantas veces como numero de variables hallamos decidido seleccionar.

Page 16: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 15

Ejemplo

Supongamos que disponemos de un conjunto de 5 variables y queremos seleccionar las 3 variables más relevantes con el algoritmo SFS. Así, X = {X1, X2, X3, X4, X5} por lo que d = 5 y p = 3 (donde p es el número de variables a elegir). La ejecución de SFS (X, 3) será la siguiente:

Inicialmente, Y0 = ∅ y Lo = X = {X1, X2, X3, X4, X5}

En la primera iteración (k = 0), sea ξm = X3 ( o sea, la variable elegida). Entonces,

Y1 = Y0 {X3} = {X3}

L1 = L0 - {X3} = {X1, X2, X4, X5}

En la segunda iteración (k = 1), sea ξm = X1. Entonces,

Y2 = Y1 {X1} = {X1, X3}

L2 = L1 - {X1} = {X2, X4, X5}

En la tercera (y última) iteración (k = 2), sea ξm = X5. Entonces,

Y3 = Y2 {X5} = {X1, X3, X5}

L3 = L2 - {X5} = {X2, X4}

Finalmente Y ← Y3 , por lo que Y = {X1 , X3 , X5 }será el conjunto de 3 variables seleccionado de X por el algoritmo SFS.

Page 17: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 16

5.2 BACKWARD ELIMINATION La traducción literal sería: eliminación hacia atrás o eliminación decremental, también llamada selección decremental secuencial (SBS) debido a que se basa en un bucle repetitivo y que se ejecuta secuencialmente. Se trata, básicamente, de un algoritmo top-down que selecciona una variable (para su eliminación) en cada paso. Este método es igual que el anterior pero en vez de partir de un conjunto las variables elegidas nulas, partimos de la totalidad del grupo y vamos eliminando las que no nos interesan, de forma que nos quedemos con las variables más representativas como en el caso anterior. El algoritmo también utiliza el método de validación de los mínimos cuadrados. O sea, una vez obtenemos un error para cada columna o variable, elegimos para salir del conjunto aquella que su error es mayor ya que representa peor la totalidad del conjunto.

Ejemplo

Supongamos que disponemos de un conjunto de 5 variables y queremos seleccionar las 3 variables más relevantes con el algoritmo SBS. Así, X = {X1, X2, X3, X4, X5} por lo que d = 5 y p = 3. La ejecución de SBS ( X, 3) será la siguiente:

Inicialmente,. =oY~

X = {X1, X2, X3, X4, X5}

La última iteración será cuando k = d - p - 1 = 5 - 3 - 1 = 1

En la primera iteración (k = 0), sea ξm = X3. Entonces,

1~Y = oY

~- {X3} = {X1, X2, X4, X5}

En la segunda (y última) iteración (k = 1), sea ξm = X1. Entonces,

2~Y = oY

~ - {X1} = {X2, X4, X5}

Finalmente 235~~~YYYY pd ==← −− , por lo que Y = { X2, X4, X5} será el conjunto de 3

variables seleccionado de X por el algoritmo SBS.

Page 18: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 17

5.3 STEPWISE SELECTION Este último método, se puede decir que es una mezcla de los dos anteriores. Se trata de ejecutar primero uno y después otro, tantas veces como queramos. El hecho de ejecutar los dos métodos anteriores en uno permite tanto seleccionar variables (proceso forward selection) como deseleccionarlas (proceso backward elimination). Esto será muy efectivo en el caso de ficheros de datos muy complejos en los que puede haber diferentes grupos de variables que nos den la solución correcta. El hecho de poder deseleccionar una variable seleccionada anteriormente, nos permite redireccionar el camino en el que se van eligiendo las variables. Si este método se repite varias veces al final llegaremos a una solución óptima. 5.4 OTROS MÉTODOS Los métodos descritos anteriormente, se basan como ya hemos dicho, en utilizar el método de validación de mínimos cuadrados, pero también se puede aplicar otras técnicas, como las redes neuronales o probabilísticas y obtener así el error entre lo real y lo calculado.Con ello, podríamos obtener combinaciones como por ejemplo Backward-Fuzzy Artmap o Backward-PNN. Existen otro tipo de métodos, metaheurísticos, que son una clase de métodos aproximados que están diseñados para resolver problemas difíciles de optimización combinatoria. Estos proporcionan un marco general para crear nuevos algoritmos híbridos combinando diferentes conceptos derivados de: inteligencia artificial, evolución biológica y mecanismos estadísticos. Podríamos destacar como los más utilizados:

- Búsqueda Tabú - Simulated Annealing (Recocido Simulado) - Algoritmos Genéticos - GRASP (Greedy Randomized Adaptative Search Procedures).

Nuestro método a analizar, el “Simulated Annealing”, utiliza las redes neuronales para realizar la validación de sus errores, de ahí que comenzaremos en los siguientes apartados por introducir éstas.

Page 19: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 18

5.4.1 REDES NEURONALES Aplicar las redes neuronales a la selección de variables como método de validación resulta factible y eficaz. Las redes neuronales pretenden simular o darnos una predicción de lo que se supone que ellas han aprendido a través de un método de aprendizaje. A través de esta predicción y comparándola con lo que debería darnos obtendremos un acierto o un error. O sea, básicamente, entrenamos la red introduciendo combinaciones entrada (dato)- salida (grupo al que pertenece), correctos y, una vez entrenada la red se prueba introduciendo un dato y esperando una clasificación por parte de la red. Si la califica bien, se considerará acierto y sino fallo. Del estudio de la cantidad de fallos o aciertos de cada columna (variable) respecto a las otras, obtendremos un ganador, el cual seleccionaremos. Como se puede ver, en un principio debería ser suficiente para poder hacer una selección de las variables más importantes. Pero que pasa si obtenemos el mismo número de fallos para una columna que para otra. Eso querría decir que, en un principio, nos da igual cual elegir, aunque sepamos que no es lo mismo. Este pequeño incidente fue una de las razones por las que introducimos un segundo criterio para el caso de las redes Fuzzy. Éste consiste en observar los pesos que se crean dentro de la red y fijarnos en el parámetro interno wija. Dicho parámetro, nos dará un numero mayor o menor dependiendo de la dificultad con la que se ha encontrado la red para obtener una respuesta a esa entrada. Así parece lógico que si dos variables tienen el mismo número de errores en la predicción del grupo al cual pertenecen sus filas, pero diferentes wijas, se pueda discriminar y encontrar un ganador. En este caso, a menor valor de wija, menos le ha costado a la red encontrar la predicción. De la suma de todas las wijas de cada fila obtenemos el valor e toda la columna (variable) que compararemos. Gracias a este nuevo parámetro podemos discriminar perfectamente las variables interesantes de las que no lo son. La introducción de este nuevo criterio de selección, es debida a que la salida de las redes es digital, o está bien (‘100’) o está mal (‘0’) la comparación con la salida real o agrupación a la que pertenece. 5.4.1.1 RED FUZZY ARTMAP Estas técnicas fueron creadas para imitar el comportamiento del cerebro humano. Las primeras funciones creadas al respecto fueron las ART (1,2 y 3) y se trata de funciones no supervisadas. La red Fuzzy Art surgió de una modificación de la ART1 y básicamente intenta agrupar un cierto número de medidas sin tener ninguna información más que las medidas de entrada.

Su modo de funcionamiento se basa en que cada vez que la red recibe un nuevo vector de entrada reacciona activando uno y solo uno de los nodos de salida. Cada uno de estos nodos representa cada una de las categorías que se han creado anteriormente con las entradas. En caso de que el nuevo vector de entrada no se

Page 20: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 19

corresponda con ningún nodo ya creado, se creará uno nuevo cuyo primer miembro será el nuevo vector.

Para controlar este algoritmo contamos con un parámetro llamado de vigilancia. Éste puede tomar los valores entre “0” y “1” y, básicamente, la variación de este parámetro designará la rigurosidad con la que el sistema agrupara las muestras. Si ponemos este parámetro a “1” el sistema identificará a cada medida con una clase mientras que si lo ponemos a “0” agrupara a todas las medidas en una clase. También contamos con un parámetro que es el ritmo de aprendizaje, con el que podemos incrementar o disminuir la velocidad de aprender de la red.

Otro tipo de red que proviene de la red Artmap es la Fuzzy Artmap. Se trata de un análisis supervisado donde le introducimos información tanto de las medidas de entrada como de las salidas ideales y en la que también distinguimos una fase de entrenamiento y otra de simulación. Este método tiene unas características principales:

- Aprendizaje rápido con baja carga computacional de las medidas que se presentan en el entrenamiento, lo que permite programar el algoritmo en dispositivos programables de bajo coste, aplicar validaciones cruzadas de orden 1 y probar diferentes combinaciones e parámetros.

- No hay necesidad de obtener muchas muestras para el entrenamiento, una cosa muy interesante en cualquier aplicación experimental en la que sea costosa la obtención de conjuntos de medida extensos. La red presenta una habilidad particular para aprender rápidamente hechos singulares que aparecen muy pocas veces en el conjunto del entrenamiento. Por tanto, en este conjunto, no es necesario que haya el mismo número de medidas de cada clase para que funcione correctamente.

- Aprende continuamente las nuevas categorías sin olvidar lo que se ha aprendido antes, una cosa muy útil para adaptarse a las derivas producidas por el sensor.

- En comparación con otros tipos de redes neuronales, Fuzzy Artmap calcula automáticamente el número de neuronas en la capa oculta. Además, maximiza el poder de generalización aprendiendo al 100% el conjunto de entrenamiento.

- No se trata de un método totalmente cerrado como el MLP, sino que se puede analizar los pesos obtenidos internamente y sacar conclusiones, lo que puede dar luz sobre los procesos internos y como influyen en la categorización de los resultados.

- La implementación práctica de la red Fuzzy Artmap presenta un problema que se tiene que tratar con mucho cuidado: La red aprende el 100% de las medidas del conjunto de entrenamiento sacrificando lo mínimo posible la generalización. Pero la presencia de “outliers” o medidas erróneas en el conjunto de entrenamiento puede requerir un incremento del valor del parámetro de vigilancia excesivo, cosa que perjudicará seriamente la capacidad de generalizar de la red. Este problema es una de las razones por las que este tipo de algoritmo se ha utilizado poco en la nariz electrónica, ya que en este tipo de aplicaciones es sumamente difícil identificar medidas erróneas dadas la baja repetitividad de las señales de los sensores.

Page 21: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 20

Para aplicar este método se utilizan dos funciones llamadas fzmaptrnok y Fzmaptstok. La primera la utilizaremos para entrenar la red mientras que la segunda para testar o simular la red. Resumiendo: La red Fuzzy Artmap es una red de clasificación con aprendizaje supervisado. En una fase de entrenamiento la red necesita que se le suministre un conjunto de medidas. Cada medida ha de contener un vector de entrada, que detalla los parámetros medidos en cada experiencia y un vector de salida que codifica la categoría que se le tiene que asignar. Posteriormente, en la fase de evaluación sólo se suministra el vector de entrada y la red clasifica esta medida siguiendo los criterios que ha aprendido en la fase de entrenamiento. 5.4.1.2 RED PROBABILÍSTICA Básicamente, la estructura general de este tipo de redes es la misma que en el caso anterior. Su función también es simular el comportamiento del cerebro humano y en concreto la función de las neuronas. Su diferencia reside en el funcionamiento de la neurona en si. La red probabilística guarda mucha relación con las redes de base radial, ya que se compone de dichas neuronas. El modelo de neurona de base radial lo tenemos a continuación:

Modelo de neurona de base radial.

En el podemos ver, como característica más representativa, la función radbas que gobierna la salida. La función de transferencia que representa es la siguiente: radbas (n) =

2ne−

Page 22: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 21

Y la gráfica de dicha función es:

Gráfica de la función radbas.

Este tipo de redes pueden ser usadas para la clasificación de problemas, como en el anterior caso. Cuando se presenta una entrada, la primera capa se encarga de calcular las distancias entre el vector entrada y el vector de entrenamiento correspondiente, y produce un vector que nos indica cuan parecido son los dos vectores. La segunda capa suma estas contribuciones para cada clase de entrada para producir, a su salida, un vector de probabilidades. Finalmente, una función de transferencia determinada (radbas), colocada al final de la segunda capa, se encarga de elegir la máxima de estas probabilidades, y produce un uno ‘1’ para esta clase y un cero ‘0’ para las restantes. La arquitectura final de la red es la que se puede ver a continuación:

Grafismo de la arquitectura de la red probabilística.

Page 23: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 22

El diseño de las redes de Base Radial puede realizarse muy rápidamente y de dos formas diferentes: - El primer método, newrbe, encuentra la solución exacta. La función newrbe crea

redes radial basis con tantas neuronas de este tipo como vectores de entrada en los datos de entrenamiento.

- El segundo método, newrb, encuentra la red más pequeña que pueda resolver el problema con un error dado. Típicamente, menos neuronas son necesarias para diseñar mediante la función newrb. Sea como sea, como el número de neuronas radial basis es proporcional a las dimensiones del espacio de entrada, y la complejidad del problema, las redes de base radial pueden llegar a ser mayores que las redes del tipo backpropagation.

Las redes neuronales del tipo probabilísticas, pueden también ser utilizadas para la clasificación de problemas. Su diseño es sencillo y no depende del entrenamiento. Este tipo de redes generaliza bien. En concreto, el mayor interés que encontramos en este tipo de redes es que no necesita de entrenamiento con lo que se convierte en una herramienta muy rápida de utilizar, al contrario que el anterior tipo de red. Principalmente, su programación consiste únicamente de las siguientes tres líneas:

net = newpnn(P,T,0.01); Y = sim(net,P); Yc = vec2ind(Y);

Donde, P es el vector de entrada, T el vector de targets y el Spread (0.01) es un parámetro de ajuste. Finalmente en Yc obtenemos la salida predicha por la red para esa entrada.

Page 24: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 23

6.0 DESCRIPCIÓN DEL MÉTODO "SIMULATED ANNEALING" El “Simulated Annealing” o Recocido Simulado es una de las metaheurísticas más clásicas. Su simplicidad y buenos resultados en numerosos problemas, la han convertido en una herramienta muy popular, con cientos de aplicaciones en los más variados campos. Desde que Kirkpatrick (1983) introdujeron hace veinte años el concepto de Recocido Simulado, “Simulated Annealing”, ("Simulated Annealing", SA, en inglés), esta metaheurística ha demostrado ser una herramienta muy exitosa para resolver una amplia gama de problemas de optimización combinatoria. El “Simulated Annealing” es una variante de la búsqueda local que permite movimientos ascendentes para evitar quedar atrapado prematuramente en un óptimo local. El nombre le viene de la idea en que está basado un algoritmo diseñado en los años 50 para simular el enfriamiento de material (un proceso denominado "recocido"). A menudo se dice que mientras que es muy fácil hacer que “Simulated Annealing” funcione, es difícil hacer que funcione bien. Esto es debido a que no es propiamente un algoritmo, sino una estrategia heurística que necesita de varias decisiones para que quede totalmente diseñado, las cuales tienen una gran influencia en la calidad de las soluciones generadas. 6.1 ANALOGIA FISICA El método del recocido se utiliza en la industria para obtener materiales más resistentes, o más cristalinos, en general, para mejorar las cualidades de un material. El proceso consiste en “derretir” el material (calentarlo a muy alta temperatura). En esa situación, los átomos adquieren una distribución “azarosa” dentro de la estructura del material y la energía del sistema es máxima. Luego se hace descender la temperatura muy lentamente por etapas, dejando que en cada una de esas etapas los átomos queden en equilibrio (es decir, que los átomos alcancen una configuración optima para esa temperatura). Al final del proceso, los átomos forman una estructura cristalina altamente regular, el material alcanza así una máxima resistencia y la energía del sistema es mínima. Experimentalmente se comprueba que si la temperatura se hace descender bruscamente o no se espera suficiente tiempo en cada etapa, al final la estructura del material no es la optima. La rama de la Física llamada Mecánica Estadística se encargo de desarrollar una serie de métodos para estudiar el comportamiento de grandes cantidades de átomos de un sistema. Debido a que en promedio, en un sistema hay 1023 átomos por cm3, solamente puede estudiarse el comportamiento mas probable del sistema en equilibrio a una dada temperatura. La experimentación mostró que los átomos de un sistema en un proceso de recocido se comportan según el factor de probabilidad de Boltzman. En 1953 Metropolis modelo el proceso de recocido: en cada paso del algoritmo se le da al átomo un

Page 25: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 24

desplazamiento azaroso y se mide el cambio de energía ∆E. Si ∆E ≤ 0 se acepta el desplazamiento. Si ∆E > 0, se acepta el desplazamiento con probabilidad exp (-∆E / T.K), donde T es la temperatura del sistema y K es la constante de Boltzman. 6.2 EL PROCESO DE “SIMULATED ANNEALING” Los algoritmos tradicionales de búsqueda local parten de una solución inicial que de modo paulatino es transformada en otras que a su vez son mejoradas al introducirles pequeñas perturbaciones o cambios (tales como cambiar el valor de una variable o intercambiar los valores que tienen dos variables). Si este cambio da lugar a una solución "mejor" que la actual, se sustituye ésta por la nueva, continuando el proceso hasta que no es posible ninguna nueva mejora. Esto significa que la búsqueda finaliza en un óptimo local, que no tiene por qué ser forzosamente el global. Un modo de evitar este problema es permitir que algunos movimientos sean hacia soluciones peores. Pero por si la búsqueda está realmente yendo hacia una buena solución, estos movimientos "de escape" deben realizarse de un modo controlado. En el caso del “Simulated Annealing”, esto se realiza controlando la frecuencia de los movimientos de escape mediante una función de probabilidad que hará disminuir la probabilidad de esos movimientos hacia soluciones peores conforme avanza la búsqueda (y por tanto estamos previsiblemente más cerca del óptimo global). La fundamentación de este control se basa en el trabajo de Metropolis (1953) en el campo de la termodinámica estadística. Básicamente, Metropolis modeló el proceso de recocido mencionado anteriormente simulando los cambios energéticos en un sistema de partículas conforme decrece la temperatura, hasta que converge a un estado estable (congelado). Las leyes de la termodinámica dicen que a una temperatura t la probabilidad de un incremento energético de magnitud δE se puede aproximar por P[δE ] = exp(-δE /kt) siendo k una constante física denominada de Boltzmann. En el algoritmo de Metropolis se genera una perturbación aleatoria en el sistema y se calculan los cambios de energía resultantes: si hay una caída energética, el cambio se acepta automáticamente; por contra, si se produce un incremento energético, el cambio será aceptado con una probabilidad dada por la formula anterior. El proceso se repite durante un número predefinido de iteraciones en series decrecientes de temperaturas, hasta que el sistema esté "frío". A principios de la década de los 80, publicaciones independientes de Kirkpatrick (1983) sobre diseño de circuitos VLSI, y Cerny (1985) para el TSP, mostraron cómo este proceso podría ser aplicado a problemas de optimización, asociando conceptos clave del proceso original de simulación, con elementos de optimización combinatoria según se indica en la tabla 1.

Page 26: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 25

Simulación termodinámica Optimización combinatoria Estados del sistema Soluciones factibles Energía Coste Cambio de estado Solución en el entorno Temperatura Parámetro de control Estado congelado Solución heurística

Tabla 1. Relación establecida entre los elementos de simulación termodinámica y los de optimización combinatoria

Si describimos el algoritmo básico de “Simulated Annealing” para problemas de minimización, tenemos lo siguiente: Sea f(s) el coste de la solución s y sea N(s) su entorno. Seleccionar una solución inicial so; Seleccionar una temperatura inicial to > 0;

Seleccionar una función de reducción de la temperatura α; Seleccionar un número de iteraciones nrep; Seleccionar un criterio_ de_parada; REPETIR

REPETIR

Seleccionar aleatoriamente una solución s ∈ N(so); Sea δ =f(s) - f(so);

SI δ< 0 ENTONCES so= s SINO

Generar aleatoriamente u ∈ U(0,1);

SI u < exp(δ/t) ENTONCES so= s; FINSINO

HASTAQUE cuenta_iteraciones = nrep

t = α (t); HASTAQUE criterio_ de_parada = CIERTO.

La mejor solución visitada será la solución heurística dada por el algoritmo. Por tanto, cualquier implementación de búsqueda local puede convertirse en una implementación “Simulated Annealing” al elegir elementos del entorno de modo aleatorio, aceptar automáticamente todos los movimientos hacia una mejor solución, y aceptar los movimientos a una solución peor de acuerdo con una probabilidad dada por P, descrita anteriormente. La constante de Boltzmann k en general no se considera, debido a que no tiene significado en los problemas de optimización. Por tanto, podemos definir un algoritmo básico de “Simulated Annealing” para problemas de minimización tal y como lo hemos descrito anteriormente.

Page 27: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 26

El parámetro t es un parámetro de control denominado generalmente temperatura, siguiendo la analogía con el proceso de enfriamiento físico. Una solución que suponga un incremento δ en la función de coste se aceptará con probabilidad exp(-δ/t). Por tanto, si se permite que t alcance valores suficientemente pequeños, ya no habrá más movimientos a peores soluciones y la convergencia será a un óptimo local. Varios estudios teóricos demuestran que si t decrece lo suficientemente lento, el proceso converge a la solución óptima. Sin embargo, una función de reducción de la temperatura α que garantizase esa convergencia al óptimo global, requeriría unos tiempos de cálculo prohibitivos. A pesar de todo, muchos trabajos empíricos que se han publicado usando programas de enfriamiento más rápidos demuestran que “Simulated Annealing” es una heurística eficiente para una gran variedad de problemas combinatorios. Para poder implementar el algoritmo descrito anteriormente para un problema concreto, es preciso tomar una serie de decisiones. Estas decisiones podemos dividirlas en decisiones genéricas y específicas. Las genéricas se refieren principalmente a cómo controlar la temperatura (incluyendo la definición de su valor inicial t0 y la función de decrecimiento α), el número de iteraciones nrep antes del decrecimiento de la temperatura, y las condiciones que nos permitirán considerar que el sistema está ya "frío". Las decisiones específicas comprenden la definición del espacio de soluciones y la estructura de entornos, la función de coste, y cómo se obtendrá la solución inicial s0. Ambos tipos de decisiones hay que tomarlas con cuidado pues, ejercen una gran influencia sobre la calidad de las soluciones. Aunque no hay un conjunto concluyente de reglas que definan cómo tomar las mejores decisiones genéricas y específicas en un problema concreto, sí que hay algunos consejos que pueden ayudar en el proceso de elección de esos parámetros. Estos consejos los tratamos en los siguientes apartados.

Page 28: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 27

6.3 DECISIONES GENÉRICAS Las decisiones genéricas están básicamente relacionadas con los parámetros que dirigen el programa de enfriamiento, incluyendo los valores máximo y mínimo que podrá tomar la temperatura, la velocidad a la que se reducirá y las condiciones de parada. Como antes se comentó, resultados teóricos basados en la teoría de las cadenas de Markov han demostrado que con un programa de enfriamiento infinitamente lento, el algoritmo de recocido convergería al óptimo global con probabilidad l, según la temperatura tiende a 0. Los detalles pueden ser consultados en Van Laarhoven y Aarts (1988), y en Aarts y Korst (1989). Sin embargo, no se puede garantizar esa convergencia en programas de enfriamiento finitos, y en ese sentido, Van Laarhoven y Aarts han demostrado que para garantizar llegar a una solución que esté a una distancia arbitrariamente próxima a la óptima, son necesarios tiempos de computación de tipo exponencial. Hajek (1988) demostró que si se usa un programa de enfriamiento dado por tk = Γ / ln(1 +k), siendo k el número de iteraciones y Γ la máxima profundidad necesaria (ver Figura 1) para escapar de cualquier óptimo local -no global-, está garantizada una convergencia asintótica al óptimo. Como por lo general no se conoce el valor Γ, este resultado no tiene uso práctico, pero da una idea de cómo la velocidad del programa de enfriamiento debe estar relacionada con las características del espacio de soluciones, definidas por la función de coste y la estructura de entornos elegida.

FIGURA 1. Explicación del valor Γ en el teorema de Hajek Dado que uno de los objetivos de cualquier procedimiento robusto de búsqueda es que la calidad de la solución final sea independiente de la solución inicial de la que se parta, la temperatura inicial debería ser independiente de la solución inicial y lo suficientemente alta como para aceptar casi libremente las soluciones del entorno. En aquellos problemas que están bien estructurados, por lo general hay suficiente información como para estimar este valor. Por ejemplo, si el mayor incremento entre soluciones vecinas es conocido, sería posible calcular un valor to que aceptase un movimiento con una determinada probabilidad. Cuando este no sea posible, la razón entre movimientos aceptados y rechazados que dé lugar a un estado inicial aceptablemente volátil puede ser fijado de antemano, y entonces el sistema podría ser calentado rápidamente hasta que esa razón alcance el valor deseado. Ese sería entonces el valor elegido to para la temperatura inicial a partir de la cual comenzaría el proceso de recocido.

Page 29: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 28

La velocidad a la que se produce el enfriamiento es otro factor clave en el éxito de la estrategia. Viene determinado por una parte por el número de iteraciones nrep que se ejecutarán a cada temperatura, y por otro por la velocidad α a la que se realizará el enfriamiento. La teoría sugiere que se debería permitir que el sistema esté cerca de su estado estacionario correspondiente a la temperatura actual, antes de reducir ésta, y que además la temperatura vaya gradualmente acercándose al valor 0. En los primeros años del “Simulated Annealing” se utilizaron diversos programas de enfriamiento, de los cuales dos son especialmente interesantes porque, por una parte, dominaron rápidamente las elecciones hechas por los investigadores que resolvieron problemas reales, y por otra, representan alternativas justamente opuestas. La primera, establecía una velocidad de enfriamiento de la temperatura de tipo geométrico t -> α.t, con α<1. Las evidencias empíricas daban a entender que valores elevados de α con valores entre 0.8 y 0.99 (correspondientes a velocidades lentas de enfriamiento) eran los que mejores resultados proporcionaban. El número de iteraciones en cada temperatura se correspondía generalmente con el tamaño del problema, variando según descendía la temperatura. Por otro lado, es importante dedicar suficiente tiempo de búsqueda a temperaturas bajas para garantizar que se visita el óptimo local (es decir, aumentar el valor nrep según se reduce t). Según el segundo programa de enfriamiento, propuesto por Lundy y Mees (1986), se ejecuta una sola iteración para cada temperatura, pero por el contrario la temperatura se reduce a una velocidad muy lenta según la fórmula t -> t/(1+β t), siendo β un valor muy pequeño. La evidencia empírica y los resultados teóricos dan a entender que los detalles concretos del programa de enfriamiento no son tan importantes como la velocidad a la que se reduce la temperatura, y que tanto el programa geométrico como el de Lundy y Mees darán resultados similares cuando el enfriamiento se produzca para el mismo rango de temperaturas y para un número total de iteraciones similares. El valor final de t es también importante. Teóricamente, t debería reducirse hasta 0, pero en la práctica la búsqueda converge por lo general a su óptimo local final bastante antes de ese valor nulo de la temperatura. Por tanto, si la temperatura de parada se fija muy baja, gastaremos mucho tiempo de búsqueda en las fases finales, que seguramente sería mejor aprovechado en temperaturas superiores. Por el contrario, si la temperatura final se fija en un valor muy alto, es posible que la búsqueda no consiga alcanzar ningún óptimo local. Como se cumple que Prob(f(so)-f(sopt)<ε) > ( |S| -1).exp(-ε/t), siendo S el conjunto de soluciones, Lundy y Mees sugieren para llegar con probabilidad ? a una solución que esté a menos de una distancia ε del optimo, parar en el momento en que t < ε/ln[ |S| -1 / ?]. Otros sugieren detener la búsqueda simplemente cuando se haya producido un número determinado de iteraciones sin ninguna aceptación. Aunque los dos planes de enfriamiento son bastante sencillos de implementar, ambos requieren una labor de determinación (y por tanto de prueba y error) de los

Page 30: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 29

parámetros más adecuados. Por tanto, no es de extrañar que haya habido en todos estos años un gran interés por desarrollar programas de enfriamiento de modo automático. En muchas ocasiones, los fundamentos de las distintas soluciones aportadas se han basado en los propios orígenes del RC (es decir, la termodinámica estadística). Por ejemplo, White (1984) propuso que la temperatura inicial debería ser lo suficientemente alta como para garantizar que la energía media (es decir, el coste) de las soluciones visitadas sea igual a la energía media de todo el sistema. Otros sugirieron sistemas realmente adaptativos que usan el concepto de equilibrio térmico para cada temperatura. Por ejemplo Huang (1986) ajustan la temperatura según la ecuación t -> t exp(-?t /s (t)) siendo s (t) la desviación típica de la energía para la temperatura t. Mirkin (1993) hicieron experimentos con el programa de Huang obteniendo que los resultados son independientes del parámetro ?, pero que sin embargo ? tiene un gran impacto en el tiempo de cálculo. Aunque la mayoría de los programas automáticos de enfriamiento resultan atractivos desde un punto de vista teórico, la evidencia empírica indica que su uso es esporádico y que su éxito depende en gran medida del problema que se pretende resolver

Page 31: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 30

6.4 DECISIONES ESPECIFICAS PARA CADA PROBLEMA Las decisiones específicas se refieren sobre todo a la definición del espacio de soluciones, la estructura de los entornos y la función de coste, así como a la elección de la solución inicial. Los resultados de Hajek (1988) apoyan la idea de que el modo en que estas decisiones interactúan al definir el ámbito de la búsqueda, tiene un efecto muy significativo en la calidad de la solución final alcanzada. Está generalmente aceptado que la solución inicial so debe ser generada de modo aleatorio. Para otras alternativas, como ocurría con las decisiones genéricas, no hay reglas definitivas que seguir, aunque es posible apuntar algunos factores que deberían ser tenidos en cuenta. Algunas de las primeras teorías sobre “Simulated Annealing” se basaban en entornos uniformes y simétricos, es decir, todos los entornos eran del mismo tamaño y si i∈N(j) => j ∈N(i). Sin embargo, hoy se sabe que es suficiente con exigir el cumplimiento de una condición más suave que exige que cualquier solución pueda alcanzarse desde cualquier otra a través de una cadena de movimientos válidos, usando los entornos. Es decir, es importante garantizar esta condición de "alcanzabilidad" (o "ergodicidad") al definir la estructura del espacio de soluciones y de los entornos. Para garantizar que el tiempo de cálculo se usa de un modo efectivo, es importante verificar que las rutinas más frecuentemente usadas funcionen lo más rápido posible. Nótese que en cada iteración se llama siempre a dos funciones, la primera de las cuales es la generación aleatoria de una solución del entorno N(so). Aunque este es un proceso bastante trivial para la mayoría de las definiciones de espacios de soluciones y entornos, se puede volver más difícil cuando los entornos son grandes y complejos, y cuando el espacio de soluciones está condicionado por muchas restricciones. A veces puede ser beneficioso relajar algunas de las restricciones en la definición del espacio de soluciones, y penalizar por el contrario mediante la función de coste las violaciones de las restricciones no consideradas. La segunda función llamada en cada iteración es el cálculo del cambio en la función de coste. En este caso se utilizará más eficientemente el tiempo si este cambio se calcula usando información relativa a qué parte de la solución ha cambiado, sin proceder a evaluarla totalmente sin tener en cuenta la información previamente disponible. Otro aspecto que mejora el tiempo de computación reside en el cálculo del factor de Boltzmann: Johnson (1989), tras observar que en su problema la tercera parte del tiempo de computación se emplea en calcular las funciones exponenciales, proponen crear una tabla en la que miran directamente esos valores. El tamaño de la tabla ellos lo han fijado en 1000 posiciones, tras considerar que valores no automáticamente rechazables o aceptables son, para cada t, los δ∈[t/200 , 5t]. Cada posición representa el δ = i.(t/200), y por tanto, en la posición i se almacenará el valor e -δt = e –i/200. El índice para mirar en esta tabla se obtiene calculando δ.(200/t), redondeando y acotando los valores entre 1 y 1000.

Page 32: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 31

Los resultados de Hajek indican que puede no ser una buena idea usar entornos que den lugar a espacios de búsqueda con muchos picos o con grandes y profundos valles. Es también evidente que la función de coste debería guiar la búsqueda hacia buenos mínimos locales, y que las grandes llanuras en las que todas las soluciones del entorno tienen el mismo valor, deberían ser evitadas. La eficiencia de la búsqueda en un número finito de iteraciones dependerá igualmente del tamaño del espacio de soluciones, y por tanto el objetivo debería ser mantenerlo lo más pequeño posible. Esto podría hacerse por ejemplo mediante un pre-procesado que reduzca el tamaño del espacio de soluciones. Sin embargo, debe tenerse cuidado que esto no viole las condiciones de alcanzabilidad, o que de lugar a superficies con picos que son más dificiles de explorar. A1 igual que con espacios de soluciones reducidos, hay ventajas al considerar entornos razonablemente reducidos, que aseguren que la búsqueda no converja hacia óptimos locales a temperaturas bajas. Sin embargo, esto debe ser compaginado con la facilidad que permiten los grandes entornos de que se produzcan mejoras importantes en un movimiento simple, y de facilitar rápidos movimientos de un área a otra del espacio de búsqueda. La evidencia empírica en un gran número de problemas parece indicar que las preferencias entre entornos pequeños y grandes son dependientes de cada problema.

Page 33: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 32

6.5 APLICACIONES DEL METODO Ejemplos recientes incluyen los trabajos de Lucie and Teodorovié (1999) para la planificación de los turnos de una compañía aérea, D'Amico (2002) para el problema de dividir una región en distritos para la asignación de patrullas de policía, o Antunes y Peeters (2001) para la solución de un problema de localización multi-período relativo a la reorganización de la escolarización elemental en Portugal. Sin embargo, para otros problemas las soluciones simples pueden no ser tan eficientes por diversos motivos. En algunos casos, el problema puede que no sea buen candidato a ser resuelto mediante “Simulated Annealing”, sino por otras formas de modificación de las soluciones, debido a las características particulares del problema. Una queja bastante común relativa a “Simulated Annealing” es que esta metodología puede necesitar mucho tiempo de cálculo cuando los problemas son grandes y complejos. Como el tiempo de cálculo está directamente relacionado con el tamaño del espacio de soluciones, el modo más obvio de reducir el tiempo es intentar reducir el espacio de soluciones. Muchos problemas clásicos de optimización pueden reducirse a través de un preprocesamiento mediante un conjunto de reglas de reducción. Este es el enfoque elegido por Bornstein y Azlan (1998) en su solución “Simulated Annealing” para el problema de localización de una planta con restricciones de capacidad, y por Dowsland (1993) en su solución para problemas bidimensionales de empaquetado rectangular. Cuando esto no sea posible, una alternativa podría ser reducir el espacio de soluciones para parte de la búsqueda. Lutfiyya(1992) resuelven un problema de empaquetado irregular donde las soluciones están representadas por las posiciones en un mallado de la piezas empaquetadas. Un mallado más denso implica una representación más exacta, y por tanto una mejor calidad del óptimo, pero tiene el inconveniente de suponer un mayor tamaño del espacio de búsqueda. Los autores han afrontado este problema manejando un mallado menos fino durante las etapas iniciales del algoritmo permitiendo así que la búsqueda encuentre áreas prometedoras. Posteriormente el mallado se vuelve más fino conforme se reduce la temperatura, facilitando una búsqueda más exacta conforme el algoritmo empieza a converger. Otra posibilidad es reducir la proporción del entomo que puede ser explorado en cada iteración. Por ejemplo, para problemas del tipo de creación de horarios o de secuenciación donde el objetivo es hallar una solución factible, la función de coste puede representar el número de restricciones no satisfechas siendo el objetivo reducir ese número a cero. En este caso, es habitual considerar exclusivamente movimientos que contribuyan a reducir el coste. Tanto Lutfiyya (1992) como Sechen (1988) usan entornos reducidos para evitar perder tiempo de cálculo a temperaturas bajas. Ambos indican que movimientos grandes son muy raramente aceptados cuando t es pequeña, y por tanto reducen el tamaño del entorno conforme el sistema se enfría, evitando así una pérdida de tiempo explorando y rechazando saltos grandes en las últimas iteraciones del algoritmo. En algunas ocasiones es posible que no podamos definir una adecuada combinación de parámetros específicos que aseguren una superficie "suave" (sin picos ni valles profundos) del espacio de soluciones. En esos casos, una alternativa útil podría ser hacer un "recalentamiento", el más común de los cuales consiste en hacerlo muy esporádicamente

Page 34: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 33

cuando apreciemos signos de que nos hemos quedado atrapados o que no nos movemos durante un elevado número de iteraciones de una determinada solución. Sin embargo, otras estrategias han sido también exitosas. Por ejemplo Dowsland (1993) usó para un problema de empaquetamiento bidimensional un programa de enfriamiento ondulatorio que enfría cuando se acepta un movimiento, y se recalienta a un ritmo mucho menor cada vez que se rechaza un movimiento, evitando así quedarse atrapado en un óptimo local profundo. Connolly (1990) afirma para un problema de asignación cuadrática que "recocer" a una temperatura constante le dio mejores resultados que el recocido clásico. Ross (2000) llevó a cabo unos experimentos detallados usando estrategias convencionales y de recalentamiento en un problema de diseño de redes de distribución, concluyendo que resulta interesante considerar alguna forma inteligente de recalentamiento. También pueden causar problemas la necesidad de fijar un conjunto adecuado de pesos en problemas multiobjetivo, o cuando necesitamos penalizar en la función de coste las restricciones que han sido relajadas en la definición del espacio de soluciones. Dige (1993) tuvieron serios problemas usando estos últimos pesos para obtener soluciones factibles en su implementación “Simulated Annealing” para el problema de elaboración de horarios escolares. Wright (1991) afirma que los pesos deberían ser fijados de acuerdo con la dificultad para poder satisfacer las restricciones, y no proporcionalmente a su importancia, obteniendo muy buenos resultados al aplicar estas ideas a diferentes problemas de secuenciación relacionados con el mundo del cricket. Thompson and Dowsland (1998) abordaron problemas similares en la implementación de una solución para el problema de secuenciación de exámenes, resolviéndolo en dos fases: en la primera se relajó el espacio de soluciones y la búsqueda se concentró en encontrar una solución factible; una vez hallada, se eliminan del espacio de búsqueda todas las infactibles y se amplía el entorno para eliminar todo potencial problema de alcanzabilidad; la búsqueda continúa concentrándose en los objetivos secundarios y las restricciones "blandas". Otros (por ejemplo Stern (1992)) han obtenido buenos resultados con pesos que son dependientes de la temperatura. Incluso en aquellos casos en los que todos los elementos de la función de coste son objetivos auténticos, puede ser que el equilibrio óptimo entre los distintos objetivos no sea constante durante todo el período de búsqueda, por lo que pesos constantes no serán completamente exitosos. Wright (2001) propone un modo de evitar esto, que denomina "búsqueda de subcoste guiada". En ella la función de aceptación se define que tal modo que permitirá un mayor grado de empeoramiento global en la función de coste, siempre que dé lugar a una mejora notable en al menos un objetivo. Hay también numerosos ejemplos de hibridación entre “Simulated Annealing” y otras técnicas heurísticas, particularmente con algoritmos genéticos.

Page 35: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 34

7.0 TRATAMIENTO DE DATOS Para poder implementar el algoritmo de selección de variables conocido como "Simulated Annealing" hemos desarrollado mediante el MATLAB los siguientes programas informáticos: 1.- "Simulated_an1.m" -> Programa principal donde aplicamos el método

de “Simulated Annealig”. 2.- "Graficas.m" -> Programa que nos visualiza la evolución y

resultados de la aplicación de dicho método. 3.- "Minimo.m" -> Programa que nos selecciona aquellos casos

donde se presentan el mínimo numero de variables con el mínimo error.

4.- "Grafica_min.m" -> Programa para visualizar la evolución y el resultado del mínimo hallado anteriormente.

5.- "Validación_cruzada" -> Programa que nos dará el error real aplicando la validación cruzada de orden uno.

6.- "Elección_min_error.m" -> Programa que nos permitirá elegir un error deseado obteniendo todos aquellos casos de variables seleccionadas que sean inferior o igual a dicho error.

7.- "Elección_min_variables.m" -> Programa que nos permitirá elegir el numero de variables seleccionadas y obtener aquellos casos que presentan el mínimo error.

8.- "GUI_SA1.m" -> Programa de implementación de un entorno gráfico de los programas anteriores.

Mediante el siguiente diagrama de proceso podemos observar la estructura que se le ha dado ha este proyecto:

Ejecución del método SA

Obtención de la evolución de

resultados mediante Gráficos

Elección del mínimo nº de variables - con el

mínimo error

Cargar los datos a analizar

Obtención gráfica de la evolución del resultado

donde se haya el mínimo

Obtención de Error mediante una validación

cruzada de orden uno

Obtención de las variables

seleccionadas por debajo de un error

deseado

Obtención de las variables

seleccionadas con el mínimo error para un

nº de variables deseado

Page 36: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 35

7.1 PROGRAMA “SIMULATED_AN1.M” En este programa es donde se implanta el algoritmo de Simulated Annealing. En el capítulo 12, anexamos su programación en MATLAB. Su funcionamiento lo podemos describir mediante el siguiente diagrama de bloques:

Dada Matriz datos (dat1) con N variables

Clasificador PNN=> Error inicial (E0)

Clasificador PNN=> Error (Ei)

Nueva Matriz datos (dat2) con N-1variables

A = rand (N)

AE = Ei –Ei-1

Inicio (Entrada variables)

¿Modelo mejor? AE<=0

Pi = exp(–AE/Ti) R=rand (0,1)

¿Probabilidad de incremento

energético? Pi >R

Eliminamos variable N = N-1

¿Fin Iteraciones

?

T i+1 = α Ti ( α<1)

¿Fin Nrepeticiones

?

Guardar valores para cada Ti Iteraciones – Nº Variables

Iteraciones – Errores

Fin

No

No

No

No

Page 37: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 36

Primeramente debemos cargar los datos (datos y targets) para los que queremos aplicar el método. Una vez ejecutemos el programa, éste nos solicitara que introduzcamos los parámetros iniciales; Temperatura inicial (Ti), Numero de Repeticiones (Nrepeticiones), valor de α (alfa) y numero de Iteraciones (It). A continuación, repetiremos el siguiente bucle tantas veces como el Numero de repeticiones introducido: - Calculáremos el Error inicial (E0) de los datos con todas las variables mediante

una Red probabilística PNN (Probabilistic Neural Network). Para ello, partiremos los datos iniciales en ¾ partes de los datos para entrenar la red y ¼ parte para validarla. Esta partición de los datos (filas) la realizaremos de forma aleatoria y además para obtener un error más fiable repetiremos este proceso durante 5 veces.

- Posteriormente, iniciamos el bucle de iteraciones para reducir las variables, o sea, intentaremos reducir variables tantas veces como numero de Iteraciones hallamos introducido. Para el cálculo de errores mediante un clasificador PNN, debemos ajustar el valor del SPREAD (ajuste de la funciones de base radial) que para nuestros datos se ha ajustado a 0.9. Previamente nombraremos la matriz de datos actual, con las variables hasta el momento(dat1).

Elegiremos una variable al eliminar al azar y generaremos una segunda matriz de datos (dat2) sin esa variable. Calculáremos su error (Ei) de la misma forma que hemos calculado el error inicial y compararemos el incremento de error (AE=Ei-Ei-1). Si el AE <0 significa que el modelo es mejor, ya que sin esa variable presenta una mejora en el error, y por lo tanto reduzco la variable. Si el AE>0 significa que al eliminar la variable empeoro el error y por lo tanto no debería aceptar la eliminación de la variable pero, tal y como dice el método, vuelvo a generar la posibilidad de aceptar la eliminación de la variable mediante la probabilidad Pi>R, siendo Pi = exp (-∆E / T) y R un numero aleatorio entre 0 y 1. Si Pi>R, definitivamente, no acepto la eliminación de la variable.

- Finalizado el numero de Iteraciones pasamos a repetir el bucle de Repeticiones

teniendo en cuenta la nueva Temperatura siguiente: Ti+1 = α Ti, siendo α<1 Finalmente, guardamos los siguientes valores para cada Temperatura (Ti): • Iteraciones – Nº Variables (Itfinal) • Iteraciones – Errores (Itefinal)

Page 38: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 37

• Iteraciones – Variables Eliminadas (Neliminadafinal) • Iteraciones – Variables Eliminadas por probabilidad (NeliminadaPifinal) Y generamos la matriz de datos con todas las variables para poder calcular el error por validación cruzada de orden 1( Datos.datval y Targ.targetval) 7.2 PROGRAMA “GRAFICAS.M” Este programa nos mostrara de una forma visual la evolución de los datos obtenidos para cada repetición de Temperatura. Bajo la perspectiva de dar la mayor información posible y de forma agradable a la vista hemos diseñado las siguientes gráficas. Para cada temperatura obtendremos tres sub-gráficos, según mostramos en el ejemplo, con la siguiente información:

Primeramente mediante el titulo sabremos a que Repetición y Temperatura corresponden las gráficas. En la primera sub-gráfica observaremos el numero de variables existentes en cada iteración. En la segunda sub-gráfica podremos ver la variable eliminada en cada iteración, aportándonos además la in formación de cual de ellas ha sido eliminada por Probabilidad. En la tercera sub-gráfica podremos ver el error obtenido en cada iteración.

Page 39: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 38

7.3 PROGRAMA “MINIMO.M” Este programa nos servirá para seleccionar de una forma automática aquellos casos donde para el mínimo numero de variables se consigue el mínimo error. Su funcionamiento lo podemos describir mediante el siguiente diagrama de bloques:

Dado que el Matlab extrae los mínimos de una matriz por columnas y dándonos el resultado del primero que encuentra en la columna, lo primero que hacemos es reordenar nuestra matriz de datos, de tal forma que podamos extraer el valor del mínimo de error para cada Temperatura (nº de repeticiones). La reordenación que realizaremos en la matriz de datos, tanto en la matriz de datos de Iteraciones – Nº Variables (Itfinal) como la de Iteraciones – Errores (Itefinal), consiste en lo siguiente:

Dado matrices Iteraciones - Nº variables (Itfinal)

Iteraciones – Errores (Itefinal)

Reordenar Matrices (Itfinal - Itefinal)

Extraer mínimo Error por Temperatura (Error_min_inicial)

Extraer valores de numero de variables para cada valor del mínimo

Error por temperatura (It_min_inicial)

Extraer mínimo numero variables (Fila_min;Columna_min;Error_min)

Crear matrices optimas (Datos.datval; Targ.targetval)

Mostrar resultados: - Nº variables eliminadas - Variables seleccionadas

- Error obtenido

Page 40: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 39

- La estructura de las dos matrices para dar sus valores (nº variables existente y errores)

se ha configurado de tal forma que las filas corresponden a las diferentes temperaturas (repeticiones) y las columnas al numero de iteración.

- Como buscamos el mínimo de cada temperatura, debemos colocar la temperatura como columna, para ello, nos basta simplemente con realizar la traspuesta de dichas matrices.

- Con esto, tendríamos que cada fila es una iteración de forma descendente. Como lo que nos interesa es encontrar el mínimo error con el mínimo numero de variables, lo que debemos hacer es empezar a buscar los errores por la última iteración de este modo el primer mínimo error que encontramos nos corresponderá con un numero de variables menor, para el caso de que existan varios valores mínimos de error en la columna. Para conseguir esto, antes de realizar la traspuesta descrita en el punto anterior, debemos reordenar las matrices de forma que las iteraciones sean ascendentes, o sea, empezar por la última iteración.

Seguidamente, extraeremos los valores correspondientes de las variables existentes en esa iteración donde se produjo el mínimo error, obteniendo así un sub-conjunto de valor de variables para los mínimos errores. A continuación, escogeremos el mínimo numero de variables del sub-conjunto anterior y con eso habremos obtenido todos aquellos casos donde se produce el mínimo numero de variables con el mínimo error. Posteriormente, pasaremos a crear las matrices optimas, es decir, reconstruiremos las matrices de datos eliminando aquellas variables que fueron eliminadas al aplicar el algoritmo de selección de variables hasta alcanzar nuestro mínimo hallado (Datos.datval y Targ.targetval). Finalmente, mostraremos por pantalla, para aquellos casos donde se consigue el mínimo error con el mínimo numero de variables (error mínimo optimo), los siguientes datos: • El numero de variables eliminadas • Las variables seleccionadas • El Error obtenido.

Page 41: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 40

7.4 PROGRAMA “GRAFICA_MIN.M” Este programa nos mostrará de una forma visual la evolución y el resultado de los datos obtenidos en aquellos casos donde se consigue el mínimo numero de variables con el mínimo error. El siguiente ejemplo, nos muestra la información dada:

Como podemos observar, la gráfica es del estilo anterior con un titulo para saber a Temperatura se produjo el mínimo, el numero de variables existentes en cada iteración, las variable eliminadas y el Error en cada iteración. También podemos observar que además, nos indica el valor del Error mínimo obtenido y nos señala en que iteración se ha producido. Mediante un campo de control llamado "Graf_contr" podemos utilizar esa gráfica tanto para mostrar el mínimo calculado como para: la elección del mínimo escogiendo el error máximo o la elección del mínimo escogiendo las variables, mostrándonos además, en la última sub-gráfica, el error máximo deseado o las variables máximas escogidas respectivamente

Page 42: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 41

7.5 PROGRAMA “VALIDACIÓN_CRUZADA.M” Este programa pretende darnos un error más real realizando su cálculo mediante una validación cruzada de orden uno. Hasta ahora, hemos realizado un cálculo de error mediante una Red probabilística PNN (Probabilistic Neural Network), partiendo los datos iniciales en ¾ partes de los datos para entrenar la red y ¼ parte para validarla. Con este programa realizaremos el cálculo del error con la Red probabilística PNN, cogiendo de los datos iniciales todos los datos (filas) menos uno para entrenar la red y ese que no hemos cogido lo utilizaremos para validarla. Este proceso lo repetiremos para todos los datos (filas), obteniendo una media de error totalmente fiable. Finalmente, este error (en %) lo mostraremos por pantalla. Este programa lo podremos ejecutar tanto para todas las variables, después de haber ejecutado el método “Simulated Annealing”, como para cualquier cálculo de los mínimos procesados.

Page 43: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 42

7.6 PROGRAMA “ELECCION_MIN_ERROR.M” Este programa nos permitirá elegir un error máximo deseado y nos dará todos aquellos casos de variables seleccionadas que sean inferior o igual a dicho error. Su funcionamiento lo podemos describir mediante el siguiente diagrama de bloques:

Una vez ejecutemos el programa, éste nos solicitara que introduzcamos el error (%) máximo deseado Al igual que el programa del “Mínimo” para hallar mínimos, lo primero que hacemos es reordenar nuestra matriz de datos, de tal forma que podamos tener ordenados los valores de error para cada Temperatura.

Introducir Error máximo deseado

Reordenar Matrices (Itfinal - Itefinal)

Extraer valores de numero de variables donde el valor del error es igual o inferior al máximo deseado

(It_min_inicial)

Extraer mínimo error para el mínimo numero de variables

(Fila_min;Columna_min;Error_min)

Crear matrices optimas (Datos.datval; Targ.targetval)

Mostrar resultados: - Nº variables eliminadas - Variables seleccionadas

- Error obtenido

Extraer mínimo numero variables (It_min_inicial1)

Page 44: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 43

Seguidamente, extraeremos los valores correspondientes de las variables existentes en la iteración donde se produce que el error es inferior o igual al máximo deseado, obteniendo así un sub-conjunto de valores de las variables para esos errores máximos deseados. A continuación, escogeremos aquellos casos del sub-conjunto anterior donde se produce el mínimo numero de variables, y hallaremos en que situaciones se produce el mínimo error con el mínimo numero de variables. Posteriormente, pasaremos a crear las matrices optimas, es decir, reconstruiremos las matrices de datos eliminando aquellas variables que fueron eliminadas al aplicar el algoritmo de selección de variables hasta alcanzar nuestro mínimo_error hallado (Datos.datval y Targ.targetval). Finalmente, mostraremos por pantalla, para aquellos casos donde se consigue el mínimo error con el mínimo numero de variables para un máximo error deseado (optimo con error máximo deseado), los siguientes datos: • El numero de variables eliminadas • Las variables seleccionadas • El Error obtenido. Para estos casos de Error máximo deseado, también podemos ver sus gráficas correspondiente ejecutando el programa “Grafica_min” y dándonos, como vemos en el ejemplo, además el dato y el lugar donde se produce el Error_max_deseado.

Page 45: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 44

7.7 PROGRAMA “ELECCION_MIN_VARIABLES.M” Este programa nos permitirá elegir el numero de variables seleccionadas y nos dará todos aquellos casos que presentan el mínimo error. Su funcionamiento lo podemos describir mediante el siguiente diagrama de bloques:

Primero reordenaremos nuestra matriz de datos, de tal forma que podamos tener ordenados los valores de variables para cada Temperatura. A continuación, extraemos los errores correspondientes al valor de variables seleccionado para cada Temperatura y seleccionamos aquel valor que presente en mínimo error. Posteriormente, pasaremos a crear las matrices optimas, es decir, reconstruiremos las matrices de datos eliminando aquellas variables que fueron eliminadas al aplicar el algoritmo de selección de variables hasta alcanzar nuestro mínimo_variables hallado para el mínimo error (Datos.datval y Targ.targetval).

Introducir Nº variables máximo deseado

Reordenar Matrices (Itfinal - Itefinal)

Extraer valores de Error para el valor de variables deseado en cada

Temperatura (Error_min_inicial)

Extraer mínimo error para el numero de variables seleccionadas

(Fila_min;Columna_min;Error_min)

Crear matrices optimas (Datos.datval; Targ.targetval)

Mostrar resultados: - Nº variables eliminadas - Variables seleccionadas

- Error obtenido

Page 46: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 45

Finalmente, mostraremos por pantalla, para aquellos casos donde se consigue el mínimo error con el mínimo numero de variables seleccionado(optimo con las variables solicitadas), los siguientes datos: • El numero de variables eliminadas • Las variables seleccionadas • El Error obtenido. Para estos casos de elección del numero de variables, también podemos ver sus gráficas correspondiente ejecutando el programa “Grafica_min” y dándonos, como vemos en el ejemplo, el lugar donde se produce el Error mínimo para ese numero de variables seleccionado.

Page 47: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 46

7.8 PROGRAMA “GUI_SA1.M”

7.8.1 IMPLEMENTACIÓN EN UN ENTORNO GRÁFICO CON MATLAB El motivo por el cual se ha elegido este tipo de creador de interficies gráficas ha sido porque, ya que hemos utilizado Matlab para crear nuestros programas, hemos decidido seguir utilizando éste para evitarnos incompatibilidades y problemas que pudieran surgir.

Sin lugar a dudas, Matlab se ha convertido en los últimos años en una herramienta imprescindible, ya no sólo por su facilidad de manejo en lo que respecta al cálculo matemático, sino también se ha extendido su ámbito de actuación, gracias, en gran parte, a la cantidad de librerías añadidas de diversa funcionalidad. Un ejemplo de ello, lo tenemos en los programas como Simulink. Este programa ampliamente utilizado, que te permite simular circuitos eléctricos y electrónicos de forma fácil y rápida, ha sido una de las estrellas de Matlab en versiones anteriores, gracias a su capacidad de incorporación de nuevos elementos o dispositivos mediante la adición de nuevas librerías.

Una gran ventaja añadida en la nueva versión de Matlab 6, respecto a las anteriores, son sus herramientas de creación de interficies gráficas de usuario llamadas GUI’s. Estas son herramientas que simplifican la representación de programas, a su vez tan complejos como se quiera, con la simple utilización de botones, listas, menús, etc... O sea, que para ejecutar una función basta con apretar un botón que tenga un enlace a dicha función, con ello nos evitamos el invocar a la función de forma escrita y basta con pulsar virtualmente un botón para ejecutarla. Esto es muy práctico para personas que no estén familiarizadas con los lenguajes de programación y las funciones de Matlab. En un sistema basado en ventanas, botones, listas, etc…, como en el entorno operativo de Windows, todo el mundo se aclara, más o menos.

La creación de estos GUI’s no es muy complicada pero se requiere del aprendizaje de las herramientas básicas, así como de un nuevas funciones o mejor dicho, requiere de un análisis más exhaustivo de todas las posibilidades que nos brindan las librerías de funciones de Matlab. 7.8.2 HERRAMIENTAS BÁSICAS DE DISEÑO DE GUI’S Antes de empezar, decir que la función que se utiliza para llamar al editor de GUI’s desde el workspace es Guide. Como en casi todas las cosa de la vida, el diseño de GUI’s presenta más funcionalidades de las que se han utilizado en este ejemplo. No se aprovecha todo el potencial que esta herramienta de Matlab nos ofrece, ya que el objetivo que nos hemos planteado desde un principio ha sido la sencillez, en contra de la sofisticación, que en la mayoría de los casos comporta pérdida de tiempo y encarecimiento de costes.

Page 48: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 47

La pantalla inicial que nos aparece al ejecutar la llamada a la herramienta de creación de GUI’s con la escritura de guide, es la siguiente:

Figura 1. GUIDE Quick Start

En dicha pantalla podemos ver que nos ofrece la posibilidad, en primer instancia, de elegir si comenzar una nueva interficie o proseguir con una ya creada. Dentro de la primera, nos ofrece la opción de abrirnos uno en blanco, uno con controles, uno con representación axial y un menú o uno con una pregunta que necesita ser respondida. También te ofrece guardar la figura abierta en un destino a especificar.

Una vez dicho esto, explicar que los GUI’s están pensados para que cada casilla, cada botón, cada menú, tenga una función asociada cuando el ratón lo presione o seleccione. Cada uno de los tipos de objetos que nos encontramos dentro de los GUI’s consta de varios campos a actuar cuando entramos en el menú de características (“Property inspector”), donde los más utilizados básicamente son los siguientes:

- Callback: Es donde se especifica la función asociada a la que se llama cuando se pulsa o selecciona en el objeto determinado.

- Position: Para modificar la posición y las dimensiones de cada objeto.

- Color: Para modificar el color primario y secundario del bloque.

- String: Se utiliza en bloques donde el usuario entra información por teclado.

- Value : Sobretodo en casillas de exclusión mutua (on/off, etc..).

Page 49: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 48

- Visible: Para hacer visible o no el bloque seleccionado.

- Tag : Da un nombre al bloque, una etiqueta con que identificarlo en el código

El menú de parámetros que aparece cuando se aprieta sobre el botón derecho del ratón y se elige la opción del menú “Property Inspector”, es el siguiente:

Figura 2. Property Inspector

En el podemos observar cada uno de los parámetros descritos con anterioridad. Estos parámetros son comunes para todos los bloques o unidades de control que son los elementos que permiten actuar al usuario.

Las unidades de control más utilizadas en la creación de GUI’s se explican a continuación:

7.8.2.1- PUSH BUTTONS Generan una acción cuando se pulsa sobre ellos. Cuando se hace un clic del ratón, aparecen hundidos, y cuando se deja el botón del ratón, retornan a la posición original, realizándose entonces la llamada o callback asociada.

Figura 3. Push button

Page 50: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 49

En esta interfície, los Push buttons se utilizan para ejecutar cada uno de los programas y para salir de la aplicación. También, por ejemplo, para obtener ayuda en el menú principal. 7.8.2.2- RADIO BUTTONS Acostumbran a estar acompañados de otros radio buttons, presentando exclusión mutua. Son casillas de selección (p.e. si/no, 1/2, on/off, etc…). Para ejecutar la acción asociada sólo hará falta apretar sobre él y la casilla se mostrará activada. La propiedad value es la que permite saber si la casilla está activada. También se puede activar desde el propio código.

Figura 4. Radio buttion

7.8.2.3- EDIT TEXT Es un campo que permite al usuario entrar o modificar cadenas de texto. Se utiliza cuando se quiere un texto como entrada, y la propiedad string es la que que contiene dicha información. Como antes, edit text no es sólo un bloque de entrada sino también de salida.

Figura 5. Edit text

7.8.2.4- STATIC TEXT Es parecido al anterior pero aquí no se entra nada por teclado. Se utiliza para etiquetar controles, mostrar información al usuario o para poner títulos.

El usuario no puede modificar el contenido, ni tiene ninguna rutina asociada o callback. Sólo se actuará sobre el en el campo string, para colocar la información útil para el usuario.

Figura 6. Static text

Los Static text son parecidos a los anteriores, en aspecto únicamente. Éstos últimos no nos sirven, como en el caso anterior, para adquirir información.

Page 51: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 50

7.8.2.5- LIST BOX Son cajas que muestran una lista de opciones (definidas por el usuario en la propiedad string) y permiten a éste escoger una o más opciones. La propiedad string contendrá las cadenas que el usuario leerá, pero la selección de una de estas opciones activará la propiedad value, que tendrá un índice de acuerdo con que si la opción escogida es la primera (value=1), o la segunda… y así para todas las opciones disponibles.

Figura 7. List box

7.8.2.6- POPUP MENU

La traducción más fiel sería la de menús plegables. En hacer clic sobre la pestaña superior, se despliega un menú que contiene diversas opciones, al estilo de list box. En este caso, pero una vez elegida la opción, el menú vuelve a su estado inicial, mostrando sólo la opción escogida. Con este y a diferencia del list box, sólo se podrá escoger una opción de todas las propuestas.

En cierta manera, no deja de ser un mecanismo de exclusión mutua (escoger una opción no es más no escoger las restantes). En este sentido, son parecidos a a los radio buttons, pero con una gran ventaja, ya que si el número de opciones es grande, el espacio se reduce sensiblemente. Las propiedades más importantes son string y value . La primera contiene las opciones en si, y la segunda, tiene por valor un índex asociado a cada opción y es el que se tiene que consultar para saber el camino a seguir en el código.

Figura 8. Pop up menu

Page 52: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 51

7.8.2.7.- OTROS CONTROLES Existen otros controles, no tan utilizados como los anteriores comentados pero que también comentaremos: Toggle buttons, checkboxes, sliders, frames i axes. Los toggle buttons son parecidos a los radio buttons, solo haciendo un clic, el botón no retorna al estado inicial, sino que se aguanta hundido. Es en el momento de hacer un nuevo clic que el botón vuelve al estado inicial. Esto permite definir dos comportamientos, según el estado del botón, según el valor de la propiedad value.

Figura 9. Toggle button

Los checkbox son parecidos a los radio buttons, solo que los últimos están más encarados a la exclusión mutua. Los checkbox se usan por ejemplo para llenar opciones de un formulario, siendo la propiedad más interesante value, que informa sobre el estado de la casilla, seleccionada o no.

Figura 10. Check box

Los sliders son barras que, horizontalmente o verticalmente, se desplazan en consonancia con una variación numérica dentro de un rango determinado. Así, si se establece un intervalo [-5, 5] i la barra tiene desplazamiento horizontal, el extremo izquierdo equivaldrá a -5 i el derecho a 5. La barra, que se podrá mover por las pestañas de los extremos, dará los valores intermedios de acuerdo con la posición en la que se encuentre.

Figura 11. Slider

Los frames son cuadros que pretenden englobar regiones del GUI. No tienen ninguna función asociada o callback, i en el GUI realizado, en el que se han utilizado, tienen una justificación simplemente visual, ya que engloban menús u opciones relacionadas.

Los axes son unidades que permiten la representación de gráficos o figuras diversas, obtenidas por medio de instrucciones como plot.

Page 53: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 52

Figura 12. Axes

7.8.3 PROGRAMACIÓN DE GUI’S Ya conocemos las herramientas interactivas, y por tanto, podemos pasar a describir, a grandes rasgos, como programarlas. Se trata de construir un código, utilizando el lenguaje Matlab, que reaccione ante la acción de activación ( o desactivación), de alguna de las casillas que conforman el GUI. Cabe decir que, en el momento de guardar un documento creado con el editor de interfícies gráficas (Guide), no solo se guarda la figura (fichero .fig), sino que también se guarda un código asociado a la figura (fichero .m), un fichero de rutina de Matlab, como cualquier fichero que se haya podido realizar en alguna de las prácticas a lo largo de este segundo ciclo. Cada vez que se inserta un elemento en el GUI, este se selecciona con el botón derecho, i se elige la opción Edit Callback, que genera una función asociada a la activación del mismo, como se muestra a continuación:

Figura 13. Selección de edición de acción asociada.

Si se observan les propiedades, haciendo también con el botón derecho Inspect Properties, podemos ver como el campo callback contiene la llamada a una función de Matlab.

Page 54: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 53

Figura 14. Definición del campo del callback

Esta función, se puede ver también en el código, en el archivo .m que corresponde con el GUI que se está diseñando. Aparece el encabezamiento, pero la función no hace nada más. Aquí es donde se debe comenzar a programar que sucederá cada vez que se apriete el botón, menú o lista a la que se está haciendo referencia.

Figura 15. Código asociado a la creación de un callback

Se debe tener en cuenta también que, en el campo tag, al que se puede acceder a través de Inspect Properties apretando el botón derecho, se puede etiquetar el bloque, dándole un nombre más comprensible y descartando el que el editor otorga por defecto. Así , tal como se ve en la figura anterior, un bloque tiene por nombre pushbutton1, se puede prestar a confusiones, por eso es útil acceder al campo tag y ponerle el nombre que nosotros creamos más adecuado. Se recomienda variar este parámetro justo después de creado el objeto. Si una vez hecho esto, se le atribuye al elemento una función asociada haciendo Edit Callback, se podrá observar como en el menú de propiedades, la función no tiene como nombre, por ejemplo,

Page 55: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 54

pushbutton1_Callback, sino Reset_Callback . Igualmente, en el código, en el archivo .m, a función tomará el nombre respecto a lo que se diga en el campo tag.

Esto será útil porque, una vez introducidos en la programación del código, será más fácil hacer referencia a un bloque con un nombre más explicativo. Una vez aquí, se supone que se ha hecho todo lo necesario con el bloque de control en el editor (ubicación del bloque, definición de la función asociada, escritura de algún mensaje en el campo string, definición de las opciones a escoger, colores, visibilidad, etc…). Ahora ya se pueden empezar a debatir los aspectos más generales de la programación con Matlab. No se trata de dar un cursillo de programación en Matlab, ya que el código es muy simple. La programación de GUI’s tiene sus propias funciones, pero de entre todas, se han usado las mínimas i más simples, las que hacen referencia a la entrada/salida de datos. Todo se ha hecho para evitar instrucciones que suspendan la ejecución del código, que la recuperen, que la interrumpan, etc. Para la sincronización en el flujo normal de ejecución del código, se ha hecho uso, básicamente, de la propiedad que hace visible o no a los elementos, de manera que los parámetros que el usuario puede tocar se modifican uno a uno y en un orden que acostumbra a forzar la invarianza. El usuario irá incorporando parámetros siguiendo una secuencia predeterminada i lógica.

7.8.3.1- LAS FUNCIONES GET/SET Para consultar el estado de una unidad de control, se acostumbra a utilizar la función get, mientras que para actuar sobre ella, la función es set. El formato de las mismas es el que se muestra a continuación:

V = GET(H,'PropertyName') SET(H,'PropertyName',PropertyValue)

Código 1. Funciones d’E/S set & get

Las dos funciones, como se puede ver, requieren de un parámetro, llamado H, i que es el handle. Viene a ser como un identificador, que cada unidad de control tiene, i que se utiliza para hacer referencia a cualquier unidad dentro del código. Si, dentro de una función asociada a un bloque, se hace referencia a este, ya sea para hacer get o set, el handle será h. Si, al contrario, se pretende actuar sobre un bloque A dentro de la función asociada a un bloque B, el handle ya no será h sino handles.nombre_bloque, entendiendo como nombre del bloque el campo tag, al que previamente se ha hecho referencia. Por ejemplo, si es tiene un GUI con dos menús plegables, que tienen como tag popup_menu1 i popup_menu2, i tienen como funciones asociadas popup_menu1_Callback i popup_menu2_Callback, se tendrá en cuenta lo que figura en la siguiente tabla, que indica como hacer referencia al handle de un bloque determinado en función de la parte del código en la que se está.

Page 56: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 55

Tag handles a popup_menu1_Callback

handles a popup_menu2_Callback

popup_menu1 H handles.popup_menu1 popup_menu2 handles.popup_menu2 h

Tabla 1. Como hacer referencia a un handle

Una vez solucionada la problemática de los handles, se puede pasar a hablar de PropertyName. Las funciones get y set, permiten actuar sobre la mayoría de los campos de cada bloque. Los campos son todas aquellas propiedades que aparecen al seleccionar un elemento con el botón derecho y elegir la opción Inspect Properties. Son campos los que se han comentado antes: callback, string, value, position, color, etc. Pero también lo son otros como FontSize, FontName, Horizontal/allignment, etc. Todos ellos son modificables con las instrucciones ya explicadas, sólo hace falta poner comillas antes y después del nombre de la propiedad (‘string’,’value’,’fontsize’, etc.). Ahora ya se está capacitado para ejecutar una orden de consulta, de lectura, sobre cualquier bloque de control en cualquier posición del código. La única restricción es que todo esto es válido cuando hace referencia siempre a un único GUI. Si desde, por ejemplo, file1.m se consulta el estado de un push button que de file3.m, se generará un mensaje de error y se parará la ejecución del código. Es el único impedimento, pero siempre existen soluciones, como son las variables globales, de las que se hablará más adelante. Finalmente, PropertyValue, útil para escribir o actuar sobre un bloque, contendrá aquella información que se quiere depositar en el bloque de destino. Así, si se quiere escribir sobre un Static text una cadena de caracteres, ésta se pondrá entre comillas (‘hola, buen día’), o se quiere forzar a un Popup menu a una determinada opción, se le introducirá un enter (1 ó 2 ó n), o si se actúa sobre un campo que tiene unos valores específicos (como puede ser el campo visible), los valores irán entre comillas (‘on’,’off’). Comentar, ahora sí para concluir, que algunos campos donde el usuario entra en un determinado valor por teclado, i este valor quiere significar un enter, necesitará de la función str2num, que transforma la cadena de texto a valores enteros. Si se encuentra con algún carácter no numérico, no retorna nada. La forma de declararlo en el código es la siguiente:

V = STR2NUM(GET(H,'PropertyName'))

Código 2. Función str2num de conversión de cadenas a enters

Si no se hace así, probablemente v, la variable de salida valga ‘2’ i no 2, como se querría. Y si este valor se hace servir como parámetro de entrada de una función que en aquel campo necesita un enter, dará error i se parará la ejecución.

Page 57: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 56

7.8.3.2- LAS FUNCIONES UIGETFILE/UIPUTFILE Son funciones bastante menos usadas que las anteriores, pero se usan, son interactivas y han resultado nuevas en el momento de iniciar la programación de la interficie. Lo que hacen, a grandes rasgos, es abrir una ventana, como se hace cuando se abre un fichero o cuando se guarda. Estas funciones no hacen precisamente esto, simplemente retornan el nombre i el path, pero con eso es suficiente para cargar o guardar un fichero, eso sí, sin necesidad de ir al menú correspondiente de la ventana ni tener que hacer Ctrl+A ó Ctrl+G. Las funciones tienen el aspecto que es muestra a continuación:

[FILENAME, PATHNAME] = UIGETFILE(FILTERSPEC, TITLE) [FILENAME, PATHNAME] = UIPUTFILE(FILTERSPEC, TITLE)

Código 3. Funciones d’E/S uigetfile & uisetfile

La primera, uigetfile, dará la información suficiente como para que, a partir de pathname i filename, crear una cadena que permita abrir un fichero con ayuda de la función load. La segunda, uiputfile, permitirá crear un fichero de destino, donde se podrán guardar los resultados que se deseen. Tanto en un caso como en el otro, filterspec permite definir cual será la extensión de los ficheros. Introduciendo la cadena ‘*.*’, se mostrarán todos los archivos de la carpeta en la que se esté. Por otro lado, title dará la oportunidad de escoger el mensaje que figurará como título de la ventana, es decir, prescindir de un frío y poco explicativo untitled o Open file y poder hacer entender al usuario qué está realmente haciendo (p.e. ‘Cargar workspace’).

Todo esto se muestra en la siguiente figura.

Figura 16. Ejemplo de uso de uigetfile.

Page 58: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 57

Una vez obtenidas las variables de salida de las funciones, con el nombre del fichero (filename) i el path o ruta o directorio al que pertenecen (pathname), solo hace falta construir una cadena de caracteres haciendo, por ejemplo, nombre_completo_fichero = [pathname filename]. Llegados hasta aquí, un simple load o save (nombre_completo_fichero) será suficiente para abrir o guardar los datos. 7.8.3.3- LAS VARIABLES GLOBALES La siguiente sorpresa con la que nos encontramos fue la posibilidad, que también ofrece Matlab, de programar y aprovecharse de las ventajas que suponen las variables globales. Las variables globales suelen ser la fuente de muchos problemas en sistemas críticos, como el control de encoders o tarjetas de adquisición de datos. El caso es, pero, que esta versión de Matlab no és ejecutable en ordenadores de potencia de cálculo media: se hace necesario un buen ordenador, un ordenador rápido. Además, el flujo de ejecución de esta interfície no rivaliza con la velocidad de un ordenador que pueda ejecutar Matlab. Todos estos motivos son suficientes para no tener miedo a utilitzar las variables globales, solo se pide prudencia para evitar sobrescribir valores.

Las variables globales lo son sólo en aquellas funciones en las que se encuentran definidas, es decir, que si la variable scores es declarada global a function1 y function3, la variable del mismo nombre variará de forma independiente a function2, donde una vez acabada su ejecución, dicha variable no tendrá valor. Para declarar una función como global, sólo hace falta ir al principio de cada función donde esta se debe utilizar y escribir.

global NOM_VARIABLE_GLOBAL

Código 4. Declaración de variable global

Las variables globales suelen ir en mayúsculas, no solo en la declaración sino también en el momento de hacer referencia a ellas en medio del código.

Page 59: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 58

7.8.4 ESTRUCTURA DEL GUI El GUI creado para este proyecto está realizado de forma básica, para mostrar simplemente mediante una interficie gráfica las posibilidades que tenemos a la hora de implementar nuestro método y obtener sus resultados. En esta interficie gráfica es importante haber insertado previamente todos los ficheros de ejecución, descritos en los apartados anteriores, del Matlab (*.m) en el directorio actual o corriente de trabajo del Matlab. Actualmente, esta definida la dirección en "C:/Maltab6p5/work". El menú que nos encontraremos lo vemos en la figura siguiente:

Figura 17. Pantalla inicial de nuestro GUI

Como vemos, nos encontraremos con los siguientes botones de ejecución de los diferentes programas desarrollados para implementar el método: q Cargar datos. Botón que nos mostrara una pantalla donde seleccionaremos el

fichero de los datos con los que vamos a trabajar. Esta opción creara un fichero .mat llamado “dataini.mat” que servirá para almacenar los datos deseados a analizar por el método.

q Ejecutar Método “Simulates Annealing”. Botón que ejecuta el programa

principal donde aplicamos el método de “Simulated Annealig”. Esta opción creara un fichero .mat llamado “dataini_totales.mat” donde se grabaran los datos obtenidos y servirá para poder ejecutar el resto de opciones. Para consultar la tabla de los datos generados, en caso de profundizar sobre ellos, bastará con abrir dicho fichero mencionado, obteniendo así en el Workspace todas las tablas de datos generados.

Page 60: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 59

q Gráficas del método SA. Botón que nos activará las gráficas de los resultados de la evolución de la aplicación de dicho método.

q Selección con el mínimo error. Botón que nos selecciona las variables de

aquellos casos donde se presentan el mínimo numero de variables con el mínimo error. Esta opción creara un fichero .mat llamado “dataini_min.mat” donde se grabaran los datos obtenidos y servirá para poder ejecutar su gráfica o su validación cruzada de orden uno.

q Selección con el mínimo error- Eligiendo nº de variables. Botón que nos

permitirá elegir el numero de variables y obtener aquellos casos que presentan el mínimo error. Esta opción también creara un fichero .mat llamado “dataini_min.mat”, en el caso de que exista lo actualizará, donde se grabaran los datos obtenidos y servirá para poder ejecutar su gráfica o su validación cruzada de orden uno.

q Selección eligiendo error máximo. Botón que nos permitirá elegir un error

máximo deseado obteniendo todos aquellos casos de variables seleccionadas que sean inferior o igual a dicho error. Esta opción también creara un fichero .mat llamado “dataini_min.mat” donde se grabaran los datos obtenidos y servirá para poder ejecutar su gráfica o su validación cruzada de orden uno.

q Gráficas del mínimo. Botón que nos activará la gráfica con el resultado del

mínimo hallado en cualquiera de los tres opciones anteriores. q Cálculo error mediante validación cruzada. Botón que nos dará el error real

aplicando la validación cruzada de orden uno. Esta opción se puede ejecutar para todos los casos anteriores.

7.9 SOFTWARE Este proyecto se ha realizado con un Ordenador Pentium 4 3.00GHz y 512M de RAM con el sistema operativo Microsoft Windows XP Profesional. El MATLAB utilizado ha sido la versión 6.5, Release 13.

Page 61: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 60

8.0 APLICACIÓN DEL METODO SIMULATED ANNEALING Primeramente definiremos los parámetros iniciales y necesarios para poder inicializar el algoritmo y seguidamente mostraremos los resultados de los datos analizados. 8.1 PARAMETROS INICIALES Temperatura inicial (t0) La temperatura inicial t0 debe ser una temperatura que permita casi (o todo) movimiento, es decir que la probabilidad de pasar de un estado (i) al siguiente (j) (en el conjunto de soluciones si) sea muy alta, sin importar la diferencia del coste de la solución (f(sj) – f(si)). Esto es que el sistema tenga un alto grado de libertad. En general se toma un valor t0 que se cree suficientemente alto y se observa la primera etapa para verificar que el sistema tenga un grado de libertad y en función de esta observación se ajusta t0. El valor final de t es también importante. Teóricamente. T debería reducirse hasta 0, pero en la práctica la búsqueda converge por lo general a su óptimo local final bastante antes de ese valor nulo de la temperatura. Para este proyecto hemos adoptado el criterio de realizar un estudio para valores de temperatura de 0 a 100, por lo que nuestra t0 será igual a 100. Solución inicial (s0) En todas las versiones, el sistema debe ser “derretido” antes de implementar el algoritmo. Esto es que la solución factible inicial que llamamos s0 debería ser una solución tomada al azar del conjunto de soluciones factibles. En nuestro caso será el error (Fitness) calculado con todo el conjunto de variables. Factor de enfriamiento Como ya describimos anteriormente, en el apartado 6, existen dos formas de establecer el programa de enfriamiento: Tnext = αT (factor de enfriamiento geométrico, α < 1, muy cercano a 1) Tnext = t / (1 + βT) (donde β es un real positivo cercano a cero) En la primera opción, que es la que hemos adoptado, las evidencias empíricas daban a entender que a valores elevados de α, con valores entre 0.8 y 0.99 (correspondientes a velocidades lentas de enfriamiento) eran los que mejores resultados proporcionaban.

Page 62: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 61

En este proyecto será este el factor que ajustaremos en función del numero de repeticiones escogido y el intervalo de temperaturas deseado. Según esto hemos escogido los siguientes:

- Para α = 0,97 ( con variaciones de aprox. de 2º-3º entre Ti y Ti_siguiente) => Obtenemos un intervalo de Temperaturas de 100 º a 50º.

- Para α = 0,92 ( con variaciones de aprox. de 1º-4º entre Ti y Ti_siguiente) => Obtenemos un intervalo de Temperaturas de 50 º a 10º.

- Para α = 0,89 ( con variaciones de aprox. de 1º entre Ti y Ti_siguiente) => Obtenemos un intervalo de Temperaturas de 10 º a 0º.

Longitud La longitud o número de Repeticiones es la cantidad de veces que realizaremos cada etapa. En este proyecto hemos acotado el numero de veces a realizar el cálculo para la Temperatura siguiente (Ti+1) a 20, para no extender el tiempo de cálculo del programa. Número de iteraciones El número de iteraciones en cada temperatura se corresponde generalmente con el tamaño del problema, pudiendo variar según desciende la temperatura (equivalente a la cantidad de tiempo que vamos a esperar a que el sistema alcance su equilibrio térmico para una dada temperatura T). A medida que T disminuye se supone que al sistema le resulta mas difícil alcanzar un equilibrio porque es mas dificultoso el movimiento, entonces hay que esperar mas tiempo, esto se traduciría en aumentar el número de iteraciones (algunos estudios utilizan un factor con valores alrededor de 1,05). En nuestro proyecto tomamos como criterio realizar tantas iteraciones como variable presenten nuestros datos. Para el primer caso que trabajamos con 12 variables el valor adoptado es de 20 y para el segundo caso donde trabajamos con 120 variables adoptaremos un valor fijo de 120 iteraciones. Velocidad de enfriamiento Este factor viene determinado por una parte por el numero de iteraciones que se ejecutarán a cada temperatura y por otra por el factor de enfriamiento α.

Page 63: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 62

8.2 RESULTADOS A continuación, mostraremos los resultados que se han ido obteniendo al aplicar el método y en el capítulo 9, donde realizamos la evaluación de los datos obtenidos, podremos ver la tabla el resumen más significativa.

8.2.1 PRIMER FICHERO DE DATOS (5 CLASES) Realizamos el estudio con los siguientes datos: - 30 medidas - tomadas con 12 sensores (variables). - pertenecientes a cinco clases diferentes (1,2,3,4,5 repetitivamente).

Ejecutamos programa: Para Tª =100º a 50º Introducir Tª inicial >>Ti= 100 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.97 Introducir Nº de iteraciones para cada Ti >>It= 20 Resultados: Tabla de reducción de variables

Iteración

Ti 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 2 12 11 10 9 8 7 6 5 4 4 3 2 1 1 1 1 1 1 1 1 1 3 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 4 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 5 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 6 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 7 12 12 11 10 9 8 8 7 6 6 5 4 3 2 1 1 1 1 1 1 1 8 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 9 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1

10 12 11 10 9 8 7 6 5 5 4 3 2 1 1 1 1 1 1 1 1 1 11 12 11 10 9 8 7 6 6 5 4 3 2 1 1 1 1 1 1 1 1 1 12 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 13 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 14 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 15 12 11 11 10 9 8 7 6 5 4 3 2 2 1 1 1 1 1 1 1 1 16 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 17 12 11 10 9 8 7 6 5 5 5 4 3 2 1 1 1 1 1 1 1 1 18 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 19 12 11 10 9 8 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 20 12 11 10 9 8 7 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1

Page 64: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 63

Tabla de eliminación de variables

Iteración Ti

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 0 9 10 11 1 7 5 3 2 6 8 4 0 0 0 0 0 0 0 0 0 2 0 6 11 8 5 4 7 10 2 0 9 1 3 0 0 0 0 0 0 0 0 3 0 4 7 3 2 1 9 5 11 6 10 8 0 0 0 0 0 0 0 0 0 4 0 5 8 2 9 4 1 3 12 7 6 10 0 0 0 0 0 0 0 0 0 5 0 1 2 4 7 9 8 11 6 5 3 10 0 0 0 0 0 0 0 0 0 6 0 1 4 7 9 5 8 12 10 6 2 3 0 0 0 0 0 0 0 0 0 7 0 0 3 8 10 7 0 2 4 0 6 12 9 11 1 0 0 0 0 0 0 8 0 11 10 9 4 3 12 2 6 1 8 5 0 0 0 0 0 0 0 0 0 9 0 5 2 7 6 11 9 12 8 3 4 10 0 0 0 0 0 0 0 0 0

10 0 6 9 10 1 11 3 2 0 8 5 4 12 0 0 0 0 0 0 0 0 11 0 11 2 4 1 9 10 0 12 3 7 5 6 0 0 0 0 0 0 0 0 12 0 2 11 3 1 9 8 7 6 10 5 12 0 0 0 0 0 0 0 0 0 13 0 1 6 9 5 2 4 7 3 8 12 10 0 0 0 0 0 0 0 0 0 14 0 2 6 8 4 1 3 11 7 5 12 9 0 0 0 0 0 0 0 0 0 15 0 8 0 4 6 5 7 3 10 11 9 2 0 12 0 0 0 0 0 0 0 16 0 11 8 12 10 2 1 5 9 6 7 3 0 0 0 0 0 0 0 0 0 17 0 1 6 5 11 8 10 2 0 0 9 12 3 7 0 0 0 0 0 0 0 18 0 6 5 9 11 7 8 10 4 12 2 1 0 0 0 0 0 0 0 0 0 19 0 4 5 8 6 0 11 7 10 2 3 1 9 0 0 0 0 0 0 0 0 20 0 8 4 7 5 2 0 1 6 9 3 11 10 0 0 0 0 0 0 0 0

Tabla de errores

Iteración

Ti+1 0 1 2 3 4 5 6 7 8 9 10

1 0 0 0 2.8571 0 0 0 2.8571 0 14.286 17.143 2 0 0 0 2.8571 0 11.429 14.286 5.7143 20 45.714 37.143 3 0 0 0 0 2.8571 8.5714 14.286 2.8571 5.7143 14.286 42.857 4 0 0 0 0 5.7143 8.5714 5.7143 22.857 14.286 17.143 22.857 5 0 0 0 17.143 5.7143 11.429 17.143 40 37.143 45.714 42.857 6 0 0 0 0 0 0 0 8.5714 11.429 14.286 25.714 7 0 5.7143 0 0 2.8571 0 14.286 5.7143 28.571 31.429 25.714 8 0 0 0 0 0 0 0 2.8571 17.143 14.286 11.429 9 0 2.8571 0 2.8571 8.5714 5.7143 8.5714 8.5714 8.5714 37.143 20

10 0 0 0 0 0 5.7143 5.7143 14.286 25.714 20 28.571 11 0 0 2.8571 0 2.8571 11.429 8.5714 17.143 20 22.857 11.429 12 0 0 0 5.7143 5.7143 17.143 5.7143 5.7143 17.143 34.286 37.143 13 0 0 0 2.8571 0 11.429 14.286 5.7143 25.714 17.143 22.857 14 0 0 5.7143 11.429 14.286 11.429 42.857 17.143 20 25.714 34.286 15 0 0 5.7143 2.8571 2.8571 2.8571 5.7143 5.7143 11.429 14.286 8.5714 16 0 0 0 5.7143 2.8571 8.5714 8.5714 22.857 28.571 25.714 40 17 0 0 2.8571 8.5714 0 5.7143 11.429 17.143 34.286 42.857 31.429 18 0 0 0 2.8571 0 0 0 5.7143 2.8571 14.286 14.286 19 0 0 0 2.8571 0 14.286 5.7143 2.8571 11.429 2.8571 40 20 2.8571 0 2.8571 5.7143 11.429 5.7143 40 34.286 40 37.143 37.143

Page 65: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 64

Iteración

Ti+1 11 12 13 14 15 16 17 18 19 20

1 25.714 25.714 25.714 25.714 25.714 25.714 25.714 25.714 25.714 25.714 2 45.714 51.429 51.429 51.429 51.429 51.429 51.429 51.429 51.429 51.429 3 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 4 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 5 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 6 40 40 40 40 40 40 40 40 40 40 7 25.714 25.714 20 17.143 17.143 17.143 17.143 17.143 17.143 17.143 8 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 9 20 20 20 20 20 20 20 20 20 20

10 34.286 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 11 11.429 2.8571 2.8571 2.8571 2.8571 2.8571 2.8571 2.8571 2.8571 2.8571 12 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286 13 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 37.143 14 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 15 17.143 25.714 20 20 20 20 20 20 20 20 16 54.286 54.286 54.286 54.286 54.286 54.286 54.286 54.286 54.286 54.286 17 37.143 37.143 48.571 48.571 48.571 48.571 48.571 48.571 48.571 48.571 18 40 40 40 40 40 40 40 40 40 40 19 17.143 20 20 20 20 20 20 20 20 20 20 31.429 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286

Page 66: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 65

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 8 variables. Quedándonos con las siguientes: ans = 4 6 8 12 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 50 %.

Page 67: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 66

** Si ejecutamos el programa de elección de mínimo error obtenemos >> Introducir error máximo deseado en % Error_max_deseado= 5 El optimo con un error máximo deseado de 5% , se consigue eliminando 11 variables. Quedándonos con las siguientes: ans = 8 Con un Error(%) = 2.8571 %

** Y para este mínimo si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno obtenemos: > El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 63.3333 %

Page 68: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 67

** Si ejecutamos el programa de búsqueda de elección de variables mínimas para esta selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 5 El optimo con 5 variables solicitadas, se consigue eliminando 7 variables. Quedándonos con las siguientes: ans = 1 5 6 7 8 Con un Error(%) = 2.8571 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 13.3333 %

Page 69: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 68

Para Tª =50º a 10º Introducir Tª inicial >>Ti= 50 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.92 Introducir Nº de iteraciones para cada Ti >>It= 20 Resultados: Tabla de reducción de variables

Iteración Ti

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 12 11 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 2 12 11 10 9 8 7 6 5 5 4 4 3 2 1 1 1 1 1 1 1 1 3 12 11 10 9 8 7 6 5 4 3 3 2 1 1 1 1 1 1 1 1 1 4 12 11 10 9 8 7 6 6 5 5 4 3 2 1 1 1 1 1 1 1 1 5 12 11 11 10 9 8 7 6 5 4 4 4 3 2 2 2 1 1 1 1 1 6 12 11 10 9 8 7 6 5 4 3 3 3 2 1 1 1 1 1 1 1 1 7 12 11 11 10 9 8 8 7 7 6 6 6 5 4 3 3 2 1 1 1 1 8 12 11 10 9 8 7 6 5 4 3 3 2 1 1 1 1 1 1 1 1 1 9 12 11 10 9 8 8 7 6 5 4 3 2 2 2 2 1 1 1 1 1 1

10 12 11 10 9 8 7 6 5 5 5 5 5 4 4 3 2 2 1 1 1 1 11 12 11 10 9 8 7 6 5 4 3 2 2 1 1 1 1 1 1 1 1 1 12 12 11 10 9 8 7 6 5 4 3 2 2 1 1 1 1 1 1 1 1 1 13 12 11 10 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 14 12 11 10 9 8 7 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 15 12 11 10 9 8 7 6 5 4 3 2 1 1 1 1 1 1 1 1 1 1 16 12 11 11 10 9 8 7 6 5 5 5 5 4 3 3 3 2 1 1 1 1 17 12 11 10 9 8 7 6 5 4 3 2 2 2 2 2 2 2 2 2 2 1 18 12 11 10 9 8 8 7 6 6 5 4 3 3 2 1 1 1 1 1 1 1 19 12 11 10 9 8 7 7 6 5 4 3 3 3 3 2 1 1 1 1 1 1 20 12 11 10 9 9 9 8 8 8 8 8 8 8 8 8 7 6 6 6 6 6

Page 70: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 69

Tabla de eliminación de variables

Iteración Ti

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 0 2 0 3 4 11 8 5 12 6 9 1 10 0 0 0 0 0 0 0 0 2 0 3 7 5 9 11 6 2 0 8 0 4 1 12 0 0 0 0 0 0 0 3 0 3 2 8 6 11 4 10 5 7 0 9 1 0 0 0 0 0 0 0 0 4 0 9 4 2 6 3 1 0 5 0 11 8 7 10 0 0 0 0 0 0 0 5 0 9 0 8 6 10 11 4 3 1 0 0 2 5 0 0 7 0 0 0 0 6 0 6 10 11 4 5 9 8 7 12 0 0 3 1 0 0 0 0 0 0 0 7 0 2 0 3 4 10 0 7 0 8 0 0 11 6 5 0 12 9 0 0 0 8 0 2 4 7 10 12 3 11 5 8 0 9 6 0 0 0 0 0 0 0 0 9 0 9 3 7 11 0 2 4 5 10 6 1 0 0 0 12 0 0 0 0 0

10 0 8 7 5 11 9 1 2 0 0 0 0 4 0 10 6 0 3 0 0 0 11 0 4 3 9 1 5 7 10 11 6 8 0 2 0 0 0 0 0 0 0 0 12 0 5 11 3 9 2 7 8 6 10 4 0 12 0 0 0 0 0 0 0 0 13 0 3 4 0 5 2 9 7 11 8 12 6 1 0 0 0 0 0 0 0 0 14 0 10 3 4 5 9 0 6 7 2 11 12 8 0 0 0 0 0 0 0 0 15 0 3 8 1 11 5 7 4 6 12 9 10 0 0 0 0 0 0 0 0 0 16 0 1 0 7 6 11 4 12 8 0 0 0 3 2 0 0 5 9 0 0 0 17 0 6 3 8 1 2 12 11 9 4 5 0 0 0 0 0 0 0 0 0 7 18 0 7 9 3 8 0 11 1 0 5 4 6 0 10 12 0 0 0 0 0 0 19 0 3 4 6 11 2 0 5 1 10 7 0 0 0 8 12 0 0 0 0 0 20 0 7 4 2 0 0 6 0 0 0 0 0 0 0 0 9 8 0 0 0 0

Tabla de errores

Iteración Ti+1

0 1 2 3 4 5 6 7 8 9 10

1 2.8571 0 11.429 5.7143 8.5714 14.286 8.5714 8.5714 11.429 14.286 17.143 2 2.8571 0 0 0 0 0 2.8571 5.7143 14.286 11.429 25.714 3 0 0 0 2.8571 8.5714 5.7143 20 22.857 17.143 11.429 22.857 4 0 0 0 0 0 11.429 8.5714 17.143 14.286 17.143 20 5 0 0 2.8571 0 2.8571 5.7143 0 11.429 11.429 2.8571 11.429 6 0 0 0 0 0 5.7143 2.8571 0 14.286 11.429 20 7 0 0 5.7143 11.429 5.7143 5.7143 11.429 5.7143 17.143 8.5714 37.143 8 5.7143 0 2.8571 2.8571 8.5714 0 8.5714 8.5714 5.7143 14.286 37.143 9 2.8571 0 0 0 0 5.7143 0 2.8571 2.8571 2.8571 11.429

10 0 0 2.8571 5.7143 5.7143 8.5714 11.429 11.429 37.143 31.429 45.714 11 0 0 0 0 0 0 0 0 2.8571 2.8571 11.429 12 0 0 2.8571 0 0 0 2.8571 5.7143 11.429 22.857 17.143 13 0 0 0 2.8571 0 0 0 8.5714 5.7143 8.5714 22.857 14 2.8571 0 0 0 2.8571 0 2.8571 0 0 0 17.143 15 0 0 0 2.8571 2.8571 8.5714 0 8.5714 14.286 17.143 14.286 16 0 0 2.8571 0 0 0 2.8571 5.7143 5.7143 20 22.857 17 0 0 0 0 5.7143 8.5714 22.857 25.714 20 22.857 14.286 18 0 0 0 0 5.7143 14.286 11.429 11.429 17.143 8.5714 14.286 19 0 0 0 0 0 0 8.5714 8.5714 20 17.143 20 20 0 0 0 0 8.5714 8.5714 0 8.5714 5.7143 5.7143 8.5714

Page 71: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 70

Iteración

Ti+1 11 12 13 14 15 16 17 18 19 20

1 14.286 40 40 40 40 40 40 40 40 40 2 17.143 17.143 34.286 34.286 34.286 34.286 34.286 34.286 34.286 34.286 3 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 4 34.286 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 5 14.286 22.857 14.286 31.429 31.429 37.143 37.143 37.143 37.143 37.143 6 20 11.429 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 7 34.286 25.714 28.571 17.143 22.857 20 25.714 25.714 25.714 25.714 8 34.286 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 28.571 9 5.7143 31.429 34.286 25.714 40 40 40 40 40 40

10 34.286 34.286 37.143 42.857 40 45.714 51.429 51.429 51.429 51.429 11 20 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 12 22.857 20 20 20 20 20 20 20 20 20 13 20 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 22.857 14 11.429 17.143 17.143 17.143 17.143 17.143 17.143 17.143 17.143 17.143 15 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 14.286 16 25.714 25.714 11.429 40 37.143 34.286 37.143 37.143 37.143 37.143 17 45.714 42.857 48.571 48.571 25.714 31.429 54.286 37.143 40 40 18 8.5714 22.857 17.143 17.143 17.143 17.143 17.143 17.143 17.143 17.143 19 37.143 25.714 28.571 20 25.714 25.714 25.714 25.714 25.714 25.714 20 20 8.5714 22.857 11.429 11.429 2.8571 48.571 42.857 45.714 37.143

Page 72: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 71

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 8 variables. Quedándonos con las siguientes: ans = 1 8 11 12 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 50 %.

Page 73: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 72

** Si ejecutamos el programa de elección de mínimo error obtenemos El optimo con un error máximo deseado de 5% , se consigue eliminando 9 variables. Quedándonos con las siguientes: ans = 2 8 12 Con un Error(%) = 2.8571 %

** Y para este mínimo si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno obtenemos: > El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 40 %

Page 74: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 73

** Si ejecutamos el programa de búsqueda de elección de variables mínimas para esta selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 6 El optimo con 6 variables solicitadas, se consigue eliminando 6 variables. Quedándonos con las siguientes: ans = 1 2 7 8 11 12 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 10 %

Page 75: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 74

Para Tª =10º a 0º Introducir Tª inicial >>Ti= 10 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.89 Introducir Nº de iteraciones para cada Ti >>It= 20 Resultados: Tabla de reducción de variables

Iteración

Ti 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 12 11 10 10 9 8 8 7 6 5 5 5 4 3 2 2 2 1 1 1 1 2 12 11 10 10 9 8 7 7 7 6 6 5 5 4 3 2 1 1 1 1 1 3 12 11 10 10 9 8 7 6 6 5 5 4 3 3 3 3 2 1 1 1 1 4 12 11 10 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 12 11 10 9 9 8 7 6 6 6 5 4 4 3 3 3 3 3 3 3 3 6 12 11 10 9 8 7 6 5 5 4 4 4 4 4 4 4 4 4 4 4 4 7 12 11 10 9 9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 12 11 10 9 8 8 8 7 6 6 5 4 3 2 2 1 1 1 1 1 1 9 12 11 10 9 9 8 7 6 6 5 5 5 4 3 2 2 2 2 2 1 1

10 12 11 11 10 10 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 11 12 11 10 9 8 7 7 6 5 4 4 4 4 4 4 4 4 4 4 4 4 12 12 11 10 9 8 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 13 12 11 10 9 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 14 12 11 10 9 8 8 7 6 5 5 5 5 5 5 5 5 5 5 5 5 5 15 12 11 11 10 10 9 8 7 6 6 5 5 5 5 5 5 5 5 5 5 5 16 12 11 10 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 17 12 11 10 9 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 18 12 11 10 9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 19 12 11 10 10 10 10 9 8 8 8 7 7 7 7 7 7 7 7 7 7 7 20 12 11 10 10 10 10 10 9 9 9 8 8 8 8 8 8 8 8 8 8 8

Page 76: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 75

Tabla de eliminación de variables

Iteración Ti

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

1 0 2 4 0 3 10 0 12 7 8 0 0 11 5 1 0 0 6 0 0 0 2 0 8 7 0 2 5 6 0 0 12 0 4 0 1 9 10 3 0 0 0 0 3 0 5 8 0 10 4 7 6 0 3 0 9 2 0 0 0 11 1 0 0 0 4 0 10 2 8 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 5 12 10 0 7 8 9 0 0 6 4 0 1 0 0 0 0 0 0 0 6 0 3 7 10 11 9 4 6 0 8 0 0 0 0 0 0 0 0 0 0 0 7 0 6 11 1 0 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 7 6 5 1 0 0 4 8 0 12 9 3 10 0 2 0 0 0 0 0 9 0 6 9 10 0 4 11 12 0 3 0 0 5 7 2 0 0 0 0 8 0

10 0 2 0 1 0 10 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 11 0 9 8 11 2 6 0 5 10 7 0 0 0 0 0 0 0 0 0 0 0 12 0 1 10 7 4 6 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 1 5 4 2 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 0 7 9 11 4 0 3 2 5 0 0 0 0 0 0 0 0 0 0 0 0 15 0 3 0 1 0 5 4 7 12 0 8 0 0 0 0 0 0 0 0 0 0 16 0 10 7 8 0 9 0 0 0 0 0 0 0 0 0 0 0 0 12 0 0 17 0 6 11 4 10 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 0 9 3 1 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 11 1 0 0 0 7 8 0 0 6 0 0 0 0 0 0 0 0 0 0 20 0 9 2 0 0 0 0 8 0 0 6 0 0 0 0 0 0 0 0 0 0

Tabla de errores

Iteración Ti+1

0 1 2 3 4 5 6 7 8 9 10

1 0 0 2.8571 14.286 5.7143 5.7143 17.143 11.429 0 17.143 22.857 2 0 0 2.8571 8.5714 8.5714 20 28.571 42.857 37.143 37.143 45.714 3 0 0 0 8.5714 0 2.8571 5.7143 11.429 17.143 8.5714 11.429 4 0 0 0 0 2.8571 20 25.714 25.714 14.286 25.714 25.714 5 0 0 0 0 2.8571 2.8571 0 2.8571 11.429 5.7143 5.7143 6 0 0 0 0 0 0 0 0 2.8571 0 14.286 7 0 0 0 0 2.8571 2.8571 2.8571 28.571 25.714 25.714 22.857 8 0 0 0 0 0 8.5714 2.8571 5.7143 11.429 40 17.143 9 0 2.8571 0 0 5.7143 0 0 0 8.5714 0 2.8571

10 0 0 5.7143 0 11.429 2.8571 14.286 11.429 8.5714 25.714 20 11 0 0 0 0 0 14.286 22.857 14.286 14.286 17.143 34.286 12 0 0 0 0 0 5.7143 8.5714 5.7143 20 28.571 28.571 13 2.8571 0 0 0 0 8.5714 2.8571 22.857 8.5714 17.143 14.286 14 0 0 0 0 0 2.8571 0 0 0 2.8571 8.5714 15 0 0 2.8571 0 2.8571 0 0 0 0 2.8571 0 16 0 0 0 0 8.5714 0 8.5714 5.7143 11.429 2.8571 5.7143 17 2.8571 0 0 0 0 2.8571 0 22.857 14.286 14.286 11.429 18 2.8571 0 0 0 0 0 17.143 20 5.7143 11.429 8.5714 19 0 0 0 2.8571 2.8571 2.8571 0 0 2.8571 5.7143 0 20 0 0 0 2.8571 5.7143 2.8571 5.7143 2.8571 8.5714 20 2.8571

Page 77: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 76

Iteración

Ti+1 11 12 13 14 15 16 17 18 19 20

1 20 17.143 34.286 31.429 42.857 37.143 37.143 37.143 37.143 37.143 2 34.286 45.714 42.857 45.714 48.571 51.429 51.429 51.429 51.429 51.429 3 8.5714 11.429 25.714 25.714 28.571 22.857 22.857 22.857 22.857 22.857 4 20 20 22.857 22.857 28.571 17.143 22.857 20 25.714 17.143 5 5.7143 20 5.7143 31.429 31.429 20 37.143 28.571 25.714 31.429 6 20 11.429 11.429 8.5714 17.143 8.5714 14.286 8.5714 20 14.286 7 20 22.857 14.286 28.571 28.571 8.5714 22.857 14.286 20 17.143 8 17.143 17.143 14.286 20 17.143 17.143 17.143 17.143 17.143 17.143 9 5.7143 0 0 0 20 11.429 11.429 8.5714 5.7143 5.7143

10 14.286 28.571 20 17.143 22.857 17.143 20 22.857 22.857 17.143 11 40 40 45.714 31.429 45.714 40 57.143 42.857 45.714 40 12 28.571 22.857 25.714 17.143 22.857 20 25.714 17.143 22.857 25.714 13 17.143 17.143 20 20 14.286 17.143 17.143 20 17.143 22.857 14 5.7143 2.8571 11.429 8.5714 11.429 5.7143 11.429 5.7143 8.5714 17.143 15 14.286 17.143 14.286 8.5714 17.143 11.429 5.7143 11.429 8.5714 11.429 16 14.286 8.5714 11.429 14.286 5.7143 11.429 11.429 2.8571 11.429 14.286 17 8.5714 11.429 5.7143 20 14.286 14.286 11.429 11.429 8.5714 11.429 18 11.429 8.5714 2.8571 11.429 14.286 20 5.7143 5.7143 17.143 8.5714 19 28.571 20 22.857 14.286 22.857 20 22.857 28.571 28.571 22.857 20 17.143 25.714 22.857 14.286 25.714 20 14.286 22.857 17.143 17.143

Page 78: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 77

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 10 variables. Quedándonos con las siguientes: ans = 1 8 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 56.6667 %

Page 79: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 78

** Si ejecutamos el programa de búsqueda de elección de variables mínimas para esta selección de Temperaturas obtenemos: > Introducir nº de variables máximo deseado Variables_max_deseado= 3 El optimo con 3 variables solicitadas, se consigue eliminando 9 variables. Quedándonos con las siguientes: ans = 1 2 8 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 13.3333 %

Page 80: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 79

** Si volvemos a ejecutar el programa de búsqueda de elección de variables mínimas para esta selección de Temperaturas obtenemos: > Introducir nº de variables máximo deseado Variables_max_deseado= 4 El optimo con 4 variables solicitadas, se consigue eliminando 8 variables. Quedándonos con las siguientes: ans = 1 2 7 8 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 10 % Nota: Recordar que en siguiente capítulo veremos el resumen de los resultados

obtenidos.

Page 81: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 80

8.2.2 SEGUNDO FICHERO DE DATOS ANALISIS DEL METODO PARA UNA CLASIFICACIÓN DE 6 CLASES Realizamos el estudio con los siguientes datos: - 96 medidas - tomadas con 120 sensores (variables). - pertenecientes a seis clases diferentes.

Ejecutamos programa: Para Tª =100º a 50º Introducir Tª inicial >>Ti= 100 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.97 Introducir Nº de iteraciones para cada Ti >>It= 120 Si mostramos la tabla de las dos ultimas iteraciones y errores vemos:

Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 4 9.1667 3 8.3333 2 1 31.667 1 31.667 3 3 8.3333 2 17.5 4 1 50.833 1 50.833 5 2 10.833 1 32.5 6 2 12.5 1 33.333 7 1 45.833 1 45.833 8 3 11.667 2 15 9 4 4.1667 3 10.833 10 2 18.333 1 35.833 11 1 35 1 35 12 4 16.667 3 16.667 13 3 11.667 2 31.667 14 4 5 4 15 15 2 19.167 2 33.333 16 1 22.5 1 22.5 17 2 9.1667 1 34.167 18 2 35 2 30 19 2 22.5 1 37.5 20 2 46.667 2 34.167

Page 82: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 81

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 115 variables. Quedándonos con las siguientes: ans = 7 17 39 57 117 Con un Error(%) = 0 %

Y también, el Error mínimo optimo se consigue eliminando 115 variables. Quedándonos con las siguientes: ans = 9 26 48 94 104 Con un Error(%) = 0 %

Page 83: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 82

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para estos casos obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Para el 1º caso, tenemos: Error(%) = 14.5833 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 2º caso, tenemos: Error(%) = 13.5417 %

Page 84: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 83

** Si ejecutamos el programa de búsqueda del elección de variables mínimas para esta selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 6 El optimo con 6 variables solicitadas, se consigue eliminando 114 variables. Quedándonos con las siguientes: ans = 7 17 39 49 57 117 Con un Error(%) = 0 %

** Y para este mínimo si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 9.375 %

Page 85: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 84

** Si volvemos a ejecutamos el programa de búsqueda del elección de variables mínimas para la selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 7 El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 34 48 51 60 89 95 103 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 62 64 71 74 102 114 115 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 1 9 46 59 75 81 120 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 4 34 48 80 87 105 109 Con un Error(%) = 0 % ** Y para estos casos si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Para el 1º caso, tenemos: Error(%) = 10.4167 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 2º caso, tenemos: Error(%) = 10.4167 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 3º caso, tenemos: Error(%) = 11.4583 %

Page 86: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 85

El error obtenido por método de "Validación cruzada de orden 1 es: Para el 4º caso, tenemos: Error(%) = 11.4583 %

Page 87: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 86

Para Tª =50º a 10º Introducir Tª inicial >>Ti= 50 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.92 Introducir Nº de iteraciones para cada Ti >>It= 120 Obteniendo la siguiente tabla de las dos ultimas iteraciones y errores:

Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 5 19.167 4 16.667 2 3 5 2 31.667 3 2 27.5 1 33.333 4 3 13.333 2 41.667 5 6 3.3333 5 3.3333 6 4 15 3 24.167 7 3 8.3333 3 31.667 8 8 7.5 7 5.8333 9 4 0.83333 3 6.6667 10 3 3.3333 3 23.333 11 6 0 5 2.5 12 7 0 7 2.5 13 7 0 6 0 14 7 0 6 14.167 15 2 35.833 1 30 16 10 6.6667 9 3.3333 17 8 6.6667 7 8.3333 18 8 0 7 3.3333 19 10 2.5 9 5 20 13 3.3333 12 2.5

Page 88: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 87

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 114 variables. Quedándonos con las siguientes: ans = 18 37 45 59 66 100 Con un Error(%) = 0 %

Y también, el Error mínimo optimo se consigue eliminando 114 variables. Quedándonos con las siguientes: ans = 6 39 48 97 100 114 Con un Error(%) = 0 %

Page 89: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 88

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para estos casos obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Para el 1º caso, tenemos: Error(%) = 9.375 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 2º caso, tenemos: Error(%) = 12.5 %

Page 90: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 89

** Si ejecutamos el programa de búsqueda del elección de variables mínimas para esta selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 7 El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 25 41 52 63 78 84 111 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 18 37 45 59 66 100 118 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 26 27 29 54 60 79 111 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 6 24 39 48 97 100 114 Con un Error(%) = 0 % El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 8 19 23 27 48 96 109 Con un Error(%) = 0 %

Page 91: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 90

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para estos casos obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Para el 1º caso, tenemos: Error(%) = 9.375 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 2º caso, tenemos: Error(%) = 8.3333 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 3º caso, tenemos: Error(%) = 5.2083 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 4º caso, tenemos: Error(%) = 9.375 % El error obtenido por método de "Validación cruzada de orden 1 es: Para el 5º caso, tenemos: Error(%) = 19.7917 %

Page 92: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 91

Para Tª =10º a 0º Introducir Tª inicial >>Ti= 10 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.89 Introducir Nº de iteraciones para cada Ti >>It= 120 Obteniendo la siguiente tabla de las dos ultimas iteraciones y errores: Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 15 5.8333 14 3.3333 2 8 10 7 3.3333 3 12 0.83333 12 4.1667 4 18 3.3333 17 4.1667 5 11 9.1667 10 3.3333 6 13 5 12 5 7 19 0.83333 18 5 8 21 1.6667 21 3.3333 9 27 4.1667 26 0.83333 10 23 5.8333 22 0.83333 11 26 3.3333 25 2.5 12 26 2.5 26 1.6667 13 25 3.3333 24 1.6667 14 43 2.5 42 3.3333 15 31 2.5 30 3.3333 16 45 1.6667 44 0.83333 17 65 4.1667 65 1.6667 18 37 3.3333 36 4.1667 19 58 2.5 57 1.6667 20 65 2.5 65 1.6667

Page 93: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 92

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 105 variables. Quedándonos con las siguientes: ans = 7 14 16 28 40 51 58 68 72 75 86 102 116 118 119 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 8.3333 %

Page 94: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 93

** Si ejecutamos el programa de búsqueda del elección de variables mínimas para esta selección de Temperaturas obtenemos: >> Introducir nº de variables máximo deseado Variables_max_deseado= 7 El optimo con 7 variables solicitadas, se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 14 22 28 47 48 111 114 Con un Error(%) = 3.3333 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 9.375 %

Page 95: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 94

ANALISIS DEL METODO PARA UNA CLASIFICACIÓN DE 24 CLASES Realizamos el estudio con los siguientes datos:

- 96 medidas - tomadas con 120 sensores (variables). - pertenecientes a veinticuatro clases diferentes.

Ejecutamos programa: Para Tª =100º a 50º Introducir Tª inicial >>Ti= 100 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.97 Introducir Nº de iteraciones para cada Ti >>It= 120 Si mostramos la tabla de las dos ultimas iteraciones y errores vemos:

Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 4 26.667 3 15.833 2 2 31.667 2 43.333 3 7 7.5 6 5 4 4 15 3 5.8333 5 3 14.167 2 55 6 6 19.167 5 0 7 2 21.667 1 32.5 8 10 0.83333 10 6.6667 9 3 11.667 2 19.167 10 8 9.1667 7 23.333 11 3 19.167 2 16.667 12 3 32.5 2 34.167 13 5 6.6667 4 11.667 14 3 15 2 40.833 15 2 25 2 63.333 16 4 19.167 3 12.5 17 6 4.1667 5 3.3333 18 6 15.833 5 8.3333 19 4 18.333 3 15.833 20 8 10.833 7 0

Page 96: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 95

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error optimo mínimo se consigue eliminando 116 variables. Quedándonos con las siguientes: ans = 12 62 67 116 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 38.5417 %

Page 97: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 96

Además observamos que para un error menor del 6% podemos quedarnos con tres variables. ** Si ejecutamos el programa de elección de mínimo obtenemos: >> Introducir error máximo deseado en % Error_max_deseado= 6 El optimo con un error máximo deseado de 6% , se consigue eliminando 117 variables. Quedándonos con las siguientes: ans = 29 95 104 Con un Error(%) = 5.8333 %

** Y para este mínimo si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 33.3333 %

Page 98: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 97

Para Tª =50º a 10º Introducir Tª inicial >>Ti= 50 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.92 Introducir Nº de iteraciones para cada Ti >>It= 120 Obteniendo la siguiente tabla de las dos ultimas iteraciones y errores:

Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 9 30 8 9.1667 2 7 10.833 7 20.833 3 5 34.167 4 21.667 4 8 3.3333 7 10 5 9 9.1667 8 6.6667 6 8 0.83333 7 5.8333 7 9 13.333 8 10 8 16 7.5 15 4.1667 9 12 5.8333 11 10.833 10 12 5 11 16.667 11 13 5.8333 12 9.1667 12 12 12.5 12 15.833 13 12 6.6667 11 2.5 14 19 7.5 18 14.167 15 16 6.6667 15 17.5 16 16 5.8333 15 10 17 28 2.5 27 7.5 18 16 5 15 3.3333 19 22 3.3333 22 9.1667 20 32 12.5 32 10.833

Page 99: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 98

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error optimo mínimo se consigue eliminando 109 variables. Quedándonos con las siguientes: ans = 22 28 39 43 58 70 78 82 83 89 118 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 14.5833 %

Page 100: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 99

Además observamos que para un error menor del 6% podemos quedarnos con tres variables. ** Si ejecutamos el programa de elección de mínimo obtenemos: >> Introducir error máximo deseado en % Error_max_deseado= 6 El optimo con un error máximo deseado de 6% , se consigue eliminando 113 variables. Quedándonos con las siguientes: ans = 5 11 12 35 38 71 111 Con un Error(%) = 5.8333 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 17.7083 %

Page 101: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 100

Para Tª =10º a 0º Introducir Tª inicial >>Ti= 10 Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti) >>Nrepeticiones= 20 Introducir alfa, (Siendo alfa<1) >>alfa= 0.89 Introducir Nº de iteraciones para cada Ti >>It= 120 Obteniendo la siguiente tabla de las dos ultimas iteraciones y errores:

Iteración 119 120

Ti Nº Variables seleccionadas Error (%) Nº Variables

seleccionadas Error (%)

1 46 7.5 45 12.5 2 29 3.3333 29 10.833 3 34 8.3333 33 5 4 37 9.1667 36 10 5 46 2.5 46 15 6 37 10.833 37 12.5 7 46 0 46 3.3333 8 51 10 50 13.333 9 64 3.3333 64 11.667 10 58 0 58 12.5 11 72 6.6667 71 4.1667 12 82 5 82 15 13 77 12.5 77 3.3333 14 91 6.6667 91 6.6667 15 95 11.667 95 13.333 16 81 15.833 81 9.1667 17 101 3.3333 101 6.6667 18 87 13.333 87 11.667 19 101 5 101 10 20 102 7.5 102 14.167

Page 102: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 101

** Si ejecutamos el programa de búsqueda del mínimo optimo para esta selección de Temperaturas obtenemos: >> El Error mínimo optimo se consigue eliminando 91 variables. Quedándonos con las siguientes: ans = Columns 1 through 18 6 20 22 24 25 27 29 35 37 40 41 44 46 48 53 55 56 62 Columns 19 through 29 69 74 77 80 83 85 97 107 113 114 119 Con un Error(%) = 0 %

** Si ejecutamos el programa de búsqueda de realizar la validación cruzada de orden uno para este mínimo obtenemos: >> El error obtenido por método de "Validación cruzada de orden 1 es: Error(%) = 18.75 %

Page 103: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 102

9.0 EVALUACION DE DATOS PRIMER FICHERO DE DATOS Recordamos que se trataba de 30 medidas, tomadas con 12 sensores (variables) y pertenecientes a cinco clases diferentes (1,2,3,4,5 repetitivamente).

Mediante la siguiente tabla podremos apreciar diferentes resultados obtenidos:

Nº variables seleccionadas

Variables seleccionadas Error (%) Tasa Éxito (%)

30 Todas 6.67 % 93.33 % 5 1,5,6,7,8 13.33 % 86.67 % 6 1,2,7,8,11,12 10.00 % 90.00 % 3 1,2,8 13.33 % 86.67 % 4 1,2,7,8 10.00 % 90.00 %

Nota: Observar, que en la primera fila se ha medido el error del clasificador PNN de estos datos con todas las variables disponibles. A simple vista, se puede destacar el éxito del método dado que para todas las variables su tasa de éxito es del 93.33% y para una selección de 4 variables obtenemos una tasa del 90.00% . El tiempo de ejecución, para el cálculo de cada grupo de Temperaturas es de 2 minutos y 10 segundos, lo que nos da un total de 6 minutos y 30 segundos para conseguir el barrido de temperaturas desde 100 a 0. SEGUNDO FICHERO DE DATOS Recordamos que se trataba de 96 medidas, tomadas con 120 sensores (variables) y pertenecientes previamente a seis clases diferentes. Mediante la siguiente tabla podremos apreciar diferentes resultados obtenidos:

Nº variables seleccionadas

Variables seleccionadas Error (%) Tasa Éxito (%)

120 Todas 6.25 % 93.75 % 5 9,26,48,94,104 13.54 % 86.46 % 6 7,17,39,49,57,117 9.38 % 90.62 % 7 26,27,29,54,60,79,111 5.21 % 94.79 %

Nota: Observar, que en la primera fila se ha medido el error del clasificador PNN de estos datos con todas las variables disponibles.

Page 104: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 103

Volvemos a apreciar, que con todas las variables tenemos una tasa de éxito del 93.75% y para una selección de 6 variables obtenemos una tasa del 90.62% . Para los mismos datos pertenecientes a veinticuatro clases diferentes, obtenemos los siguientes resultados:

Nº variables seleccionadas

Variables seleccionadas Error (%) Tasa Éxito (%)

120 Todas 12.50 % 87.50 % 3 29,95,104 33.33 % 66.67 % 7 5,11,12,35,38,71,111 17.71 % 82.29 %

11 22,28,39,43,58,70,78,82,83,89,118 14.58 % 85.42 %

Nota: Observar, que en la primera fila se ha medido el error del clasificador PNN de estos datos con todas las variables disponibles. Destacar, que con todas las variables tenemos una tasa de éxito del 87.50% y para una selección de 11 variables obtenemos una tasa del 85.42% O sea, estamos apreciando que después de la aplicación del método de “Simulated Annealing” se han reducido considerablemente las variables con una perdida de información con respecto al total de las variables del orden solamente de un 3%. El tiempo de ejecución, para el cálculo de cada grupo de Temperaturas es de 14 minutos y 6 segundos, lo que nos da un total de 42 minutos y 18 segundos para conseguir el barrido de temperaturas desde 100 a 0. Hay que recordar, que podríamos rebajar el tiempo de cálculo ya que en nuestro programa hemos programado que el cálculo de cada error sea una media de cinco cálculos, es decir, realizamos para cada error hemos realizado 5 veces el bucle de cálculo del error. El hecho de realizar 5 veces el bucle es porque para estos datos se ha experimentado que los errores son más fiables. Si no realizásemos ningún bucle de repetición estaríamos hablando de 6 minutos para cada grupo de temperaturas. Además, también observamos que por debajo de 4ºC no se reducen variables con lo cual nos podríamos ahorrar el cálculo en las 12 últimas iteraciones.

Page 105: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 104

9.1 ANALISIS DE LOS DATOS Por un lado, si profundizamos en la evolución del algoritmo para los datos del primer fichero, anexados en el capitulo 12, también nos podemos dar cuenta: Para Temperaturas entre 100º a 50º

- La reducción de variables se produce a casi cada iteración. - Existe un gran numero de variables eliminadas por probabilidad, del orden de 8-9

(75%). - La eliminación de hasta 8 variables mantiene unos errores aceptables, por debajo

del 20%. Para Temperaturas entre 50º a 10º

- Se tarda un poco más en reducir todas las variables, entre 13-16 iteraciones. - Disminuye un poco, a medida que disminuye la temperatura, el numero de

variables eliminadas por probabilidad, del orden de 5-8 (60%). - Los errores son algo superiores desde el inicio, aumentando a partir de la quinta

variable eliminada por encima del 20%, pero se producen mínimos de error, por debajo del 10%, con 10-12 variables eliminadas.

Para Temperaturas entre 10º a 0º

- Se eliminan de 6-8 variables y no se suele conseguir eliminar todas las variables, con 20 iteraciones. Cuanto menor es la Temperatura más cuesta eliminar una variable y a temperaturas muy bajas (<2º) no se elimina ninguna variable.

- El numero de variables eliminadas por probabilidad es pequeño, del orden de 3-4 (50%).

- Los errores suelen estar por debajo del 10%. La evolución del algoritmo con los datos del segundo fichero se produce algo similar, comprobando:

- Que a medida que disminuye la temperatura la reducción de las variables se retarda durante las iteraciones.

- También al reducir la temperatura se reduce la posibilidad de variables eliminadas por probabilidad.

O sea, estamos viendo que el método se aplica de forma correcta, ya que tal y como describe el método de “Simulated Annealing”, para no finalizar la búsqueda en un óptimo local, se permitían de forma controlada que algunos movimientos sean hacia soluciones peores mediante una función de probabilidad que hará disminuir la probabilidad de esos movimientos hacia soluciones peores conforme avanza la búsqueda, es decir a medida que disminuimos la temperatura, y por lo tanto estaremos previsiblemente más cerca del óptimo global.

Page 106: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 105

Por otro lado, vemos que los resultados obtenidos son asombrosos ya que se consigue con un tiempo de ejecución relativamente pequeño una selección de variables optima y sin perder apenas información. Para el primer fichero vemos que podemos reducir el numero de variables a 4 (de las 12 variables existentes de partida) con una perdida de información del 3% y para el segundo fichero de datos vemos que podemos reducir el numero de variables a 11 (de las 120 existentes de partida) con una perdida de información del 2%. Para poder saber este método es adecuado, realizaremos una comparación con los resultados obtenidos en otros estudios realizados donde se analizan diferentes métodos. 9.2 COMPARATIVA CON OTROS MÉTODOS A continuación, presentaremos los resultados obtenidos en un estudio similar que analizaban diferentes métodos de selección de variables cuyo criterio de selección esta basado en la búsqueda del error con clasificadores que usan redes neuronales tales como fuzzy ARTMAP o PNN. Los vapores medidos, al igual que nuestro segundo fichero de datos, eran acetona, amoniaco y o-xileno en 50, 100, 200 y 400 ppm y sus correspondientes mezclas binarias. Se analizaron 96 medidas, distribuidos en dos matrices de 48 filas, donde cada una contenía dos duplicados de medidas. La primera matriz (la matriz de selección) fue usada para realizar el procedimiento de la selección de variables y la segunda (la matriz de validación) fue usada para validar los resultados. Inicialmente, los clasificadores fuzzy ARTMAP y PNN se construyeron sin ninguna selección de variables. Por consiguiente, el número de entradas era 120. Éste es el número de parámetros extraído de los 12 sensores en la matriz. El número de salidas se puso a 6 que corresponden a la identificación de 6 clases (3 vapores simples y 3 mezclas binarias). La tasa de éxito en la identificación fue del 90.62% para el clasificador de fuzzy ARTMAP y del 87.5% para el PNN . Después, se le acoplaron métodos determinísticos de selección de variables a los clasificadores fuzzy ARTMAP y PNN. Cuando se usó el clasificador de fuzzy ARTMAP, tanto el “foward selection” (selección delantera) como el “backward elimination” (la eliminación dirigida hacia atrás) dieron la misma tasa de éxito en la clasificación (90.62%). El número de variables seleccionado fue de 4 (en la selección delantera) y 67 (la eliminación dirigida hacia atrás). El “Stepwise selection” produjo una selección de 69 variables con una tasa de éxito en la clasificación del 89.58%. Cuando se usó el clasificador de PNN, el número de variables seleccionadas fue de 9, 23 y 25 y la tasa de éxito en la clasificación fue de 91.66%, 88.54% y 91.66%, para el “foward selection”, para el “backward elimination” y parabel “stepwise selection”, respectivamente. Comparado con los clasificadores que usaban todas las variables disponibles, los valores de tasa de éxito de la clasificación son similares o incluso se pueden alcanzar aun más altos cuando se usa un número de variables significativamente más bajo. Sin embargo, el “backward

Page 107: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 106

elimination” y el método de “stepwise selection” sobrestiman que el número de variables necesita tener construido un buen clasificador. El tiempo de cálculo para estas técnicas ronda de 60 a 180 minutos. También se investigó la actuación de un algoritmo genético para la selección de variables. Un algoritmo genético produjo una selección de 17 y 14 variables cuando fue acoplado al fuzzy ARTMAP y al PNN, respectivamente. Los modelos construidos del clasificador dieron una tasa de éxito en la identificación de gas del 91.66% para ambas redes neuronales. Este tasa se obtiene cuando no se lleva a cabo ningún procedimiento de selección de variables. En la siguiente tabla, Tabla1, se resumen los diferentes resultados de las técnicas de la selección de variables.

Métodos Variables seleccionadas Tasa Exito (%)

Fuzzy ARTMAP (Sólo) 120 90.62% GA-fuzzy ARTMAP 17 91.66% Forward-fuzzy ARTMAP 4 90.62% Backward-fuzzy ARTMAP 67 90.62% Stepwise-fuzzy ARTMAP 69 89.58% PNN (Sólo) 120 87.50% GA-PNN 14 91.66% Forward-PNN 9 91.66% Backward-PNN 23 88.54% Stepwise-PNN 25 91.66% Simulated Annealing-PNN 6 90.62%

Tabla 1. Resultados de validación de los modelos predictivos neuronales (fuzzy ARTMAP y PNN) para la identificación del vapor/mezcla con métodos empleados de selección de variables. La desventaja más importante de las técnicas de selección de variables usadas anteriormente es el consumo del tiempo, sobre todo aquéllas basadas en GA y en el “backward elimination” y en el “stepwise selection”. Un aumento en el número de medidas disponibles provoca un aumento del tiempo necesario para validar totalmente los modelos. Por eso, hay que buscar una estrategia alternativa. En este nuevo acercamiento, la selección de variables se ejecuta en dos pasos. En el primer paso, se aplica un basto y muy rápido procedimiento de selección de variables: Se procesa la figura del éxito para la discriminación de cada variable. Se ordenan las medidas usadas por categorías (por ejemplo todas las medidas que corresponden a la misma especie pertenecen a la misma categoría). La variación de la intra-categoría y la variación de la inter-categoría se procesa para cada variable y la tasa de estas variaciones se usa como la figura del éxito para alinear todas las variables. El valor umbral se fija y sólo aquellas variables cuyas figuras de éxito superan el umbral, se retiene para la selección siguiente.

Page 108: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 107

Posteriormente, en el segundo paso se realiza una selección más afinada basada sobre los métodos determinísticos (la selección delantera, eliminación dirigida hacia atrás y selección stepwise) o estocásticos (por ejemplo, GA) del sub-conjunto de variables que resultaron en el primer paso. Durante la selección de variables 'basta', el umbral se ajustó para retener cerca del 25% del número inicial de variables. Con ello, el segundo paso de la selección de variables fue mucho más rápido. En la siguiente tabla, Tabla2, podemos ver el resumen de los resultados finales de la clasificación.

Métodos Variables seleccionadas Tasa Exito (%)

(FM) Sólo validación fuzzy ARTMAP 31 88.54%

GA-fuzzy ARTMAP 12 91.66% Forward-fuzzy ARTMAP 7 90.62% Backward-fuzzy ARTMAP 11 90.62% Stepwise-fuzzy ARTMAP 13 90.62% (FM) Sólo validación PNN 31 83.33%

GA-PNN 11 92.70% Forward-PNN 6 88.54% Backward-PNN 8 90.62% Stepwise-PNN 10 92.70%

Tabla2. Resultados de validación de los modelos predictivos neuronales (fuzzy ARTMAP y PNN) para la identificación del vapor/mezcla. La selección de variables se ha procesado en dos fases. Primero se ha seleccionado un sub-conjunto de variables usando el criterio de la intra-variación y del inter-variación y posteriormente se realiza una selección usando diferentes técnicas. Una comparación entre los resultados obtenidos en las tablas 1 y 2 muestran que la tasa de éxito en el reconocimiento del gas es muy similar cuando se lleva a cabo la selección de variables en una sola fase o dos fases. Sin embargo, el tiempo del cómputo se reduce en un factor de 4 cuando se usa la selección de variables de dos fases.

Page 109: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 108

9.3 EVALUACION RESULTADOS Si comparásemos el estudio realizado de otros métodos vemos que la mejor situación se presenta con el Foward-PNN con una tasa de éxito del 88.54% para una selección de 6 variables frente a nuestros resultados donde obtenemos una tasa de éxito del 90.62% para una selección de 5 variables, o sea, con este método hemos conseguido un mayor éxito y una más adecuada selección de variables. Con todo esto, podemos decir que nuestro algoritmo “Simulated Annealing” tanto para el primer fichero, donde obtenemos una tasa de éxito del 90% para una selección de 4 variables, como para el segundo, donde la tasa de éxito es del 90.62% para una selección de 6 variables en la clasificación de seis clases y del 85.42% para una selección de 11 variables en la clasificación de veinticuatro clases, los resultados obtenidos son bastante buenos, presentando una adecuada selección con una tasa de error inferior al 15% y sobre todo unos tiempos de cálculo muy pequeños.

Page 110: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 109

10.0 CONCLUSIONES Hemos visto la importancia que requiere el estudio de métodos de selección de variables dada su gran importancia de aplicación para las narices electrónicas. Actualmente, uno de los más interesados en el desarrollo de la Nariz Electrónica, o Enose es la NASA, debido básicamente a que en las Estaciones Espaciales, los astronautas viven rodeados de amoniaco (peligroso para la salud cuando su concentración alcanza apenas unas pocas partes por millón ) que es el encargado de hacer la Estación habitable, fluyendo a lo largo de cañerías y disipando el calor generado dentro de la Estación (por las personas y los equipos electrónicos) en el espacio. Una de las atracciones del “Simulated Annealing” es que resulta muy fácil trabajar con él en cualquier problema que presente una estructura de entorno natural, como ocurre en muchos problemas de optimización combinatoria. Sin embargo, incluso para los más simples problemas se debe tener cuidado a la hora de definir las decisiones genéricas y las específicas del problema. En muchos casos eso es suficiente para obtener un buen algoritmo. Otras veces, debe ponerse especial atención en definir un programa de enfriamiento bien afinado, o en aprovechar el conocimiento que se tenga del problema específico para definir una buena estructura de entornos, espacio de soluciones o función de coste. No hay que olvidar, que existen áreas donde el método no es el más indicado, para las cuales una solución podría ser una hibridación con otras técnicas heurísticas, particularmente con algoritmos genéticos. Hay que recordar también, que esta demostrado que los algoritmos de selección de variables determinísticos como “foward selection”, el “backward elimination” y el “Stepwise selection” a los cuales también se les puede acoplar un clasificador neuronal fuzzy ARTMAP o PNN, pueden usarse con éxito, pero cuando hay muchas posibles soluciones, estos algoritmos pueden caer fácilmente en un mínimo local del proceso de optimización. Por eso, es necesario explorar y comparar la actuación con algoritmos estocásticos (por ejemplo el “Simmulated Annealing” o Algoritmo Genéticos (GA)). La desventaja principal de los GA es que requieren un tiempo de computación largo, aunque una posible solución para esta desventaja es realizar el procesados den dos fases, o sea, un preprocesado de las variables y un segundo paso donde se aplique el método. En este proyecto hemos obtenido unos resultados factibles con la aplicación del "Simulated Annealing" y comparándolos con otros métodos de selección de variables vemos que hemos obteniendo resultados mejores y con la ventaja añadida de que hemos reducido significativamente el tiempo de cálculo. Como resumen, podríamos decir que el método estudiado "Simulated Annealing" es un algoritmo generalmente aplicable, flexible, robusto y fácil de implementar para obtener soluciones cercanas al óptimo para un gran numero de problemas de optimización. O sea, podemos considerarlo como una fuerte herramienta de optimización

Page 111: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 110

11.0 BIBLIOGRAFIA P.J.M. van Laarhoven and E.H.L.Aarts, Simulated Annealing: Theory and Applications, Kluwer Academic Publisher,1988. E. Llobet, Evor L. Hines, J.W. Gardner, P.N.Bartlett and Toby T. Mottram, Fuzzy ARTMAP based Electronic Nose Data Analysis. Sensors and Actuadors B (1996): p.11-12. Gardner, J.W., Hines ,E.L., Wilkinson, M., The application of artificial neural networks in an electronic nose. Meas. Sci. Technol., 1990. 1: p. 446-451. Gardner, J.W., Hines, E.L., Pang, C., Detection of vapours and odours from a multisensor array using pattern recognition: self-organising Adaptive Resonance Techniques. Measurement + Control, 1996. 29: p. 172-177. J.W. Gardner, P.N.Bartlett, Performance standarisation of electronic noses, Sensors and Actuators B33 (1996) 60-67 P.T. Moseley, Solid-State gas sensor, Meas:Sci.Technol., 8 (1997), 223-237. A. Mandelis, C. Christofides, Physics, Chemistri and Thechnology of Solid-State Gas Sensor Devices, John Wiley and Sons, New York, 1993. Forward selection: http://www.anc.ed.ac.uk/~mjo/intro/node25.html. Algoritmos subóptimos: http:// www-etsi2.ugr.es/depar/ccia/rf/www/ tema5_00- 01_www/ node10.html. H. Demuth, M. Beale, Neural network toolbox for ues with MATLAB, User’s guide version 3.0, The Mathworks, inc. http://www.mathworks.com A. Lober, L.E. Wangen, A. Kowalski, A theoretical foundation for the PLS algorithm. j. Chemometrics, 1987. Vol1, 19 http:// www.e-nose.com.ar/paginas/portada/htm. http:// www.esi2.us.es/~dco/recocido.htm . Inteligencia Artificial, Revista Iberoamericana de Inteligencia Artificial. No.20 (2001), pp. 34-52. ISSN: I137-3601. ©AEPIA . Aarts, E.H.L., Korst, J.H.M.: Simulated Annealing and Boltzmann Machines, Wiley, Chichester, 1989. Aarts, E.H.L., Lenstra, J.: Local Search in Combinatorial Optimisation. Wiley, Chichester 1997. Antunes, A., Peeters, D.: On solving complex multiperiod location models using simulated annealing. European Journal of Operational Research 130: 190-201, 2001.

Page 112: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 111

Bornstein, C.T., Azlan, H.B.: The use of reduction test and simulated annealing for the capacitataed plant localitation problem. Localitation Science 6:67-82,1998. Cenry, V.: A thermodynamical approach to the travelling salesman problem: an efficient simulation alogarithm. J. Of Optimitation Theory and Applic., 45: 41-55, 1985. Connolly, D.T.: An improved annealing scheme for QAP. European Journal of operational research 46: 93-100,1990. D’Amico, S.J. Wang, S-J Batta, R., Rump, C.M.: A simulated annealing aproach to police distrite design. Computers & Operations. Research 29: 669-684, 2002. Díaz, A., Optimización heurística y Redes neuronales en Dirección de Operaciones e Ingeniería, Paraninfo, Madrid, 1996. Dige, P., Lund, C., Ravn, H,F.: Timetabling by simulated annealing – Lecture Notes in Economic and Mathematical system 396, R.V.V. Vidal (ed), 151-174,Springer-Verlag, 1993. Dowsland, K.A. Some experiments with simulated annealing techniques for packing problems. Europa Journal of Operational Research 68: 389-399,1993. Dowsland, K.A.: Simulated annealing in Moderm Heuristic Techniques for Combinatorial Problems, C.R.Reeves (ed), Blackwell, Oxford, 1993. Hajek, B.: Cooling schedules for optimal annealing. Mathematics of Operations Research., 13 311-329,1998. Huang, M.D., Romeo, F., Sangiovanni-Vincentelli, A.: An efficient general cooling schedule for simulated annealing. Proc IEEE International conference on Computer Aided design, Santa Clara. 381-384, 1986. Johnson, D.S., Aragon, C.R., McGeoch, L.A., Schevon, C.: Optimization by simulated annealing: and experimental evaluation;Part I Graph partitioning. Operation Research 37: 865-892, 1989. Johnson, D.S., Aragon, C.R., McGeoch, L.A., Schevon, C.: Optimization by simulated annealing: and experimental evaluation;Part II Graph coloring and number partitioning. Operation Reserach 39: 378-406, 1991. Kirkpatrick, S., Gellat, C.D. Vecchi, M.P.: Optimization by simulated annealing. Science, 220: 671-680, 1983. Koulamas, C., Antony, S.R., Jane, R.: A survey of simulated annealing applications research problems. OMEGA 22: 41-56, 1994. Lucie, P., Teodorovic, D.: Simulated annealing for the multi-objective aircrew rostering problem. Transportation research (A) 33: 19-45, 1999. Lundy, M. Mees, A.:Convergence of an annealing algorithm. Math.Prog.34: 111-114,1986.

Page 113: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 112

Lutfiyya, H., McMillin, B., Poshyanonda, P., Dagil, C.:Composite stock cutting through simulated annealing, Mathematical. Computational Modelling 16: 57-74, 1992. Metropolis, N., Rosenbluth, A.W., Rosenbluth, M.N., Teller, A.H., Teller, E.: Equation of state calculation by fast computing machines. Journal of Chemistry Phisics, 21 1087-1091, 1953. Mirkin, D.,Vasudevan, K., Cook, F.A.: A comparasion of several cooling schedules for simulated annealing implemented on a residual static problem. Geophysical Research Letters 20, 77-80, 1993. Ross, A.D.: a two-phased approach to the supply network re-configuration problem. European Journal of Operational research 122: 18-30, 2000. Sechen, C., Braun, D., Sangiovanni-Vicentelli, A.: Thunderird: a complete standard cell layout package. IEEE Journal of solid-state circuits, SC23:410-420, 1988. Stern, J.M.: Simulated annealing with a temperature dependant penalty function. ORSA journal on Computing, 4:311-319, 1992. Tompson, J.M., Dowsland, K.A.: A robust simulated annealing based examination timetableng system. Computers & Operation research 25: 637-648, 1998. White, S.R.: Concepts of scale in simulated annealing. Proc. IEEE, International conference on Computer design, 646-651, 1984. Wright, M: Scheduling English cricket umpires. Journal of Operational Research Society 42:447-452, 1991. Wright, M: Subcost-guide search – experiments with timetabling problems. Journal of Heuristics, 7: 251-260, 2001. J. Brezmes, PhD Thesis, Diseño de una nariz electrónica para la determinación no destructiva del grado de maduración de la fruta, Universitat Politècnica de Catalunya, Barcelona, 1999, in Spanish. E. Llobet, J. Brezmes, O. Gualdrón, X. Vilanova, X. Correig, Building parsimonious fuzzy ARTMAP models by variable selection with a cascaded genetic algorithm: application to multisensor systems for gas analysis, Sensors Actuators B, 99, (2004) 267-272 The Mathworks Inc., Matlab User’s Guide, 2004. http:// www.mathworks

Page 114: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 113

12.0 ANEXOS En este apartado, anexaremos la programación de cada fichero Matlab realizado para la implantación del método “Simulated Annealing”, e incluiremos una muestra de la evolución de la aplicación del método, mediante sus gráficas, para el primer fichero de datos analizado y para el estudio previo del segundo fichero donde se analizaban los datos pertenecientes a seis clases. 12.1 PROGRAMACION EN MATLAB

12.1.1 PROGRAMA “SIMULATED_AN1.M” clc; %Inicio entrada variables******************************** disp('Introducir Tª inicial'); input('Ti= '); Ti=ans; disp('Introducir Nº de repeticiones de Ti+1 (Siendo Ti+1=alfa*Ti)'); input('Nrepeticiones= '); Nrepeticiones=ans; disp('Introducir alfa, (Siendo alfa<1)'); input('alfa= '); alfa=ans; disp('Introducir Nº de iteraciones para cada Ti'); input('It= '); It=ans; [FilasD Nvariables]=size(dat); spread=0.09; % Matriz de control de variables clear controlN; for c=1:Nvariables controlN(c)=c; end; clear c; % Desordenar matriz de targets-datos %targetdatos(:,1)=target; %targetdatos(:,2:Nvaraibles)=dat; %for d=1:3 % shuffle(targetdatos); %end; %clear d %target=targetdatos(:,1); %dat=targetdatos(:,2:Nvariables); %Variables iniciales Tisiguiente(1)=Ti;

Page 115: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 114

clear Itv; clear Ite; clear Itfinal; clear Itefinal; clear Nelininada; clear Neliminadafinal; clear NeliminadaPifinal; Itv(1)=Nvariables; Neliminada(1)=0; % Programa base********************************************* for x=1:Nrepeticiones % Bucle de Ti+n ******************* % Valores iniciales N=Nvariables; dat1=dat; target1=target; controlN1=controlN; errormedio1=0; for repe=1:5 % Para realizar una media de cinco errores % Inicializar valores de red PNN clear P; clear T; clear P_tester; clear T_tester; % Generacion de Matriz de entrenamiento inicial r=0; while r==0 r=round(rand*FilasD); end; trescuartos=round(3*FilasD/4); uncuarto=FilasD-trescuartos; s=1; t=1; for m=r:trescuartos+r if m<=FilasD P(s,:)=dat1(m,:); T(s,:)=target1(m,:); s=s+1; else P(s,:)=dat1(t,:); T(s,:)=target1(t,:); s=s+1; t=t+1; end; end;

Page 116: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 115

clear s; clear t; % Generacion de matriz a testear inicial s=1; t=1; for p=m+1:uncuarto+m+1 if p<=FilasD P_tester(s,:)=dat1(p,:); T_tester(s,:)=target1(p,:); s=s+1; else P_tester(s,:)=dat1(t,:); T_tester(s,:)=target1(t,:); s=s+1; t=t+1; end; end; clear p; clear s; clear t; clear m; % Red Probabilistica (PNN)inicial P=P'; T=T'; P_tester=P_tester'; T_tester=T_tester'; Tc=ind2vec(T); net=newpnn(P,Tc,spread); Y=sim(net,P_tester); Yc=vec2ind(Y); % Calculo del error inicial (Fitness N) acierto1=0; for q=1:uncuarto if Yc(:,q)==T_tester(:,q) acierto1=acierto1+1; end; end; clear q; error1=100*((uncuarto-acierto1)/uncuarto); errormedio1=errormedio1+error1; end; clear repe; error(1)=errormedio1/5; Ite(1)=error(1); % Bucle de iteraciones para reducir variables ************

Page 117: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 116

for k=1:It if N>1 %Eliminacion de variable por Backward (decremental) clear dat2; clear target2; clear controlN2; errormedio2=0; NeliminadaPi(k+1)=0; A=0; while A==0 A=round(rand*N); end; E=controlN1(A); % Variable eliminada if A==1 dat2=dat1(:,A+1:N); controlN2=controlN1(:,A+1:N); elseif A==N dat2=dat1(:,1:A-1); controlN2=controlN1(:,1:A-1); else dat2=dat1(:,1:A-1); dat2(:,A:N-1)=dat1(:,A+1:N); controlN2=controlN1(:,1:A-1); controlN2(:,A:N-1)=controlN1(:,A+1:N); end; target2=target1; N=N-1; for repe=1:5 % Para realizar una media de cinco errores % Tasa de error N-1 (Fitness N-1) % Inicializar valores de red PNN clear P; clear T; clear P_tester; clear T_tester; % Generacion de Matriz de entrenamiento r=0; while r==0 r=round(rand*FilasD); end; s=1; t=1; for m=r:trescuartos+r if m<=FilasD P(s,:)=dat1(m,:);

Page 118: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 117

T(s,:)=target1(m,:); s=s+1; else P(s,:)=dat1(t,:); T(s,:)=target1(t,:); s=s+1; t=t+1; end; end; clear s; clear t; % Generacion de matriz a testear s=1; t=1; for p=m+1:uncuarto+m+1 if p<=FilasD P_tester(s,:)=dat1(p,:); T_tester(s,:)=target1(p,:); s=s+1; else P_tester(s,:)=dat1(t,:); T_tester(s,:)=target1(t,:); s=s+1; t=t+1; end; end; clear p; clear s; clear t; clear m; % Red Probabilistica (PNN) P=P'; T=T'; P_tester=P_tester'; T_tester=T_tester'; Tc=ind2vec(T); net=newpnn(P,Tc,spread); Y=sim(net,P_tester); Yc=vec2ind(Y); % Calculo del error acierto2=0; for q=1:uncuarto if Yc(:,q)==T_tester(:,q) acierto2=acierto2+1; end; end; clear q;

Page 119: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 118

error2=100*((uncuarto-acierto2)/uncuarto); errormedio2=errormedio2+error2; end; error(k+1)=errormedio2/5; % Comparacion del error AE*********************** AE=error(k+1)-error(k); if AE<=0 %Modelo mejor y acepto dat1=dat2; target1=target2; Ite(k+1)=error(k+1); controlN1=controlN2; Neliminada(k+1)=E; else % Modelo peor Pi=exp(-(AE/Ti)); R=rand; if Pi>R %Tambien Acepto modelo dat1=dat2; target1=target2; Ite(k+1)=error(k+1); controlN1=controlN2; Neliminada(k+1)=E; NeliminadaPi(k+1)=E; else % Se rechaza el modelo N=N+1; Ite(k+1)=error(k+1); error(k+1)=error(k); Neliminada(k+1)=0; end; end; else Ite(k+1)=Ite(k); Neliminada(k+1)=0; NeliminadaPi(k+1)=0; end; % Guardar valores de las iteraciones************ Itv(k+1)=N; %Iteraciones - Variables end; % Guardar valores finales para cada Ti+1 **************** Tisiguiente(x+1)=alfa*Tisiguiente(x); % Temperatura i+1 Ti=alfa*Ti; Itfinal(x,:)=Itv; % Temperatura - Iteraciones - Variables Itefinal(x,:)=Ite; % Temperatura - Iteraciones - Errores Neliminadafinal(x,:)=Neliminada; % Iteraciones - Variables eliminadas NeliminadaPifinal(x,:)=NeliminadaPi;% Iteraciones - Variables eliminadas por Pi %Nfinal(x,:)=controlN1; % Temperatura - Variables elegidas end;

Page 120: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 119

% Crear variables para la validacion cruzada de orden 1 clear Datos; clear Targ; Datos.datval=dat; Targ.targetval=target; Colum=1; % Crea variable de control del programa de graficas Graf_contr=0; % Limpieza de variables clear A; clear AE; clear E; clear Ite; clear Itv; clear Neliminada; clear NeliminadaPi; clear acierto1; clear acierto2; clear dat1; clear dat2; clear P; clear P_tester; clear T; clear T_tester; clear Pi; clear R; clear Ti; clear Tc; clear Y; clear Yc; clear trescuartos; clear uncuarto; clear error; clear error1; clear error2; clear errormedio1; clear errormedio2; clear k; clear r; clear repe; clear target1; clear target2; clear x;

Page 121: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 120

12.1.2 PROGRAMA “GRAFICAS.M” close all; for w=1:It+1 ejex(w)=w; end; clear w; for w=1:Nrepeticiones figure(w) subplot (3,1,1); hndl=stairs(ejex-1,Itfinal(w,:)); set(hndl,'LineWidth',2); set(hndl,'Marker','*'); axis([0 It+0.5 0 Nvariables+1]); title([int2str(w),'.- Ti+1= ',num2str(Tisiguiente(w))],'Color','b'); ylabel('Nº variables','Color','b'); subplot (3,1,2); axis([0 It+0.5 0 1]); for i=1:It+1 text(i-1,0.5,int2str(Neliminadafinal(w,i)),'FontSize',7,'Color','k'); if ne(NeliminadaPifinal(w,i),0) text(i-1,0.25,'(Pi)','FontSize',7,'Color','g'); end; end; ylabel('Variable eliminada','Color','k'); subplot (3,1,3); bar(ejex-1,Itefinal(w,:)); colormap hsv; axis([0 It+0.5 0 max(max(Itefinal))]); xlabel('nº de iteraciones'); ylabel('Error (%)','Color','r'); clear i; end; clear w; clear ejex; clear hndl;

Page 122: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 121

12.1.3 PROGRAMA “MINIMO.M” % Calculo de minimo error con menos variables % Inicializacion variables clear Fila_min; clear Columna_min; clear Error_min; clear Datos; clear Var; clear Targ; clear Valor_elim; s=It+1; for x=1:It % Reordenar tabla It-Ite - empezando por el final(Suprimiendo el primer valor-error) Itreves(:,x)=Itfinal(:,s); Itereves(:,x)=Itefinal(:,s); s=s-1; end; clear x; clear s; % Girar tabla It-Ite It_t=Itreves'; Ite_t=Itereves'; [C,I]=min(Ite_t); % Minimo error por Ti(columna)-empezando a contar por la ultima iteracion. Error_min_inicial=min(C); i=1; for n=1:Nrepeticiones % Extraer valores correspondientes con el numero de variables (It) if Error_min_inicial==C(n) It_min_inicial(i)=It_t(I(n),n); Fila_min_inicial(i)=n; Columna_min_inicial(i)=It+1-I(n)+1; Error_min_inicial(i)=C(n); i=i+1; end; end; clear n; v=1; It_min=min(It_min_inicial); for u=1:i-1 if It_min==It_min_inicial(u) Fila_min(v)=Fila_min_inicial(u); Columna_min(v)=Columna_min_inicial(u); Error_min(v)=Error_min_inicial(u); v=v+1; end; end; % Limpiar variables

Page 123: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 122

clear n; clear i; clear v; clear u; clear It_t; clear Ite_t; clear Itreves; clear Itereves; clear It_min; clear C; clear I; clear It_min_inicial; clear Fila_min_inicial; clear Columna_min_inicial; clear Error_min_inicial; % Crear matrices optimas [Fil Colum]=size(Columna_min); for q=1:Colum % Para el caso de que exista mas de un optimo Contador_eliminada(q)=0; for z=1:Columna_min(q) Valor_elim(q,z)=Neliminadafinal(Fila_min(q),z); if ne(Valor_elim(q,z),0) Contador_eliminada(q)=Contador_eliminada(q)+1; end; end; clear z; N=Nvariables; datos1=dat; contr1=controlN; for z=1:Columna_min(q) for c=1:N E=contr1(c); if E==Valor_elim(q,z); A=c; end; end; if ne(Valor_elim(q,z),0) if A==1 datos2=datos1(:,A+1:N); contr2=contr1(:,A+1:N); elseif A==N datos2=datos1(:,1:A-1); contr2=contr1(:,1:A-1); else datos2=datos1(:,1:A-1); datos2(:,A:N-1)=datos1(:,A+1:N); contr2=contr1(:,1:A-1); contr2(:,A:N-1)=contr1(:,A+1:N);

Page 124: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 123

end; N=N-1; datos1=datos2; contr1=contr2; end; clear A; clear c; clear E; end; Datos(q).datval=datos1; Var(q).controlNval=contr1; Targ(q).targetval=target; clear z; clear datos1; clear datos2; clear contr1; clear contr2; end; clear q; clear Fil; % Resultados for q=1:Colum disp(['El Error minimo optimo se consigue eliminando ',num2str(Contador_eliminada(q)),' variables.']); disp('Quedandonos con las siguientes:'); Var(q).controlNval disp(['Con un Error(%) = ', num2str(Error_min(q)),' %']); end; Graf_contr=3; % Variable para saber que la Grafica_min.m es del minimo clear q; clear Contador_eliminada;

Page 125: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 124

12.1.4 PROGRAMA “GRAFICA_MIN.M” if Graf_contr==0 disp(' Primero hay que ejecutar el programa de busqueda de minimo'); break else close all; for w=1:It+1 ejex(w)=w; end; clear w; for w=1:Colum optima=Fila_min(w); figure(w) subplot (3,1,1); hndl=stairs(ejex-1,Itfinal(optima,:)); set(hndl,'LineWidth',2); set(hndl,'Marker','*'); axis([0 It+0.5 0 Nvariables+1]); title([int2str(optima),'.- Ti+1= ',num2str(Tisiguiente(optima))],'Color','y'); ylabel('Nº variables','Color','b'); subplot (3,1,2); axis([0 It+0.5 0 1]); for i=1:It+1 text(i-1,0.5,int2str(Neliminadafinal(optima,i)),'FontSize',6,'Color','k'); if ne(NeliminadaPifinal(optima,i),0) text(i-1,0.25,'(Pi)','FontSize',6,'Color','g'); end; end; clear i; ylabel('Variable eliminada','Color','k'); subplot (3,1,3); bar(ejex-1,Itefinal(optima,:)); colormap hsv; axis([0 It+0.5 0 max(max(Itefinal))]); xlabel('nº de iteraciones'); ylabel('Error (%)','Color','r'); text(Columna_min(w)-1,Itefinal(optima,Columna_min(w))+2,'*','FontSize',14,'FontWeight','bold','Color','r'); text(Columna_min(w)-1.2,max(max(Itefinal))-2,'Minimo','Color','r'); text(0.1,max(max(Itefinal))-2,['Error min= ',num2str(Error_min(w)),'%'],'FontSize',8,'Color','r'); if Graf_contr==1 text(0.1,max(max(Itefinal))+2,['Variables max deseado= ',num2str(Variables_max_deseado)],'FontSize',8,'Color','b'); end; if Graf_contr==2 text(0.1,max(max(Itefinal))+2,['Error max deseado= ',num2str(Error_max_deseado),'%'],'FontSize',8,'Color','b'); end;

Page 126: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 125

end; clear w; clear ejex; clear hndl; clear optima; end;

Page 127: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 126

12.1.5 PROGRAMA “VALIDACIÓN_CRUZADA.M” for w=1:Colum % Posibles soluciones % Valores iniciales acierto=0; for i=1:FilasD % Para realizar una validacion cruzada de orden 1 % Inicializar valores de red PNN clear P; clear T; clear P_tester; clear T_tester; % Generacion de matriz a testear P_tester=Datos(w).datval(i,:); T_tester=Targ(w).targetval(i,:); % Generacion de Matriz de entrenamiento r=1; for j=1:FilasD if ne(j,i) P(r,:)=Datos(w).datval(j,:); T(r,:)=Targ(w).targetval(j,:); r=r+1; end; end; clear j; % Red Probabilistica (PNN) P=P'; T=T'; P_tester=P_tester'; T_tester=T_tester'; Tc=ind2vec(T); net=newpnn(P,Tc,spread); Y=sim(net,P_tester); Yc=vec2ind(Y); % Calculo del error if Yc==T_tester acierto=acierto+1; end; end; error=100*((FilasD-acierto)/FilasD); % Limpiar variables clear i;

Page 128: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 127

clear r; % Resultado******************************** disp('El error obtenido por metodo de "Validacion cruzada de orden 1 es: '); if Colum>1 disp(['Para el ',num2str(w),'º caso, tenemos:']); end; disp(['Error(%) = ',num2str(error),' %']) end; clear acierto; clear w; clear P; clear T; clear P_tester; clear T_tester; clear Tc; clear Y; clear Yc;

Page 129: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 128

12.1.6 PROGRAMA “ELECCION_MIN_ERROR.M” % Busqueda de menos variables con el error elegido disp('Introducir error maximo deseado en %'); input('Error_max_deseado= '); Error_max_deseado=ans; % Inicializacion variables clear Fila_min; clear Columna_min; clear Error_min; clear Datos; clear Var; clear Targ; clear Valor_elim; s=It+1; for x=1:It % Reordenar tabla It-Ite - empezando por el final(Suprimiendo el primer valor-error) Itreves(:,x)=Itfinal(:,s); Itereves(:,x)=Itefinal(:,s); s=s-1; end; clear x; clear s; % Girar tabla It-Ite It_t=Itreves'; Ite_t=Itereves'; % Minimo error deseado por Ti(columna)-empezando a contar por la ultima iteracion. No_existe_error=0;%(Para el caso que no exista ninguno) It_min_inicial2=0; y=1; for n=1:Nrepeticiones % Extraer valores correspondientes con el numero de variables (It) i=1; Error_min_inicial1=0; It_min_inicial=0; It_t(It+1,n)=Nvariables; for x=1:It if (Ite_t(x,n)<=Error_max_deseado) & (It_t(x,n)< It_t(x+1,n)) It_min_inicial(i)=It_t(x,n); Fila_min_inicial(i)=n; Columna_min_inicial(i)=It+1-x+1; Error_min_inicial(i)=Ite_t(x,n); i=i+1; No_existe_error=1; end; end; clear It_t(It+1,n);

Page 130: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 129

clear x; It_min_inicial1=min(It_min_inicial); v=1; for u=1:i-1 % Valores minimo de numero de variables por Ti (columna) if It_min_inicial1==It_min_inicial(u) Fila_min_inicial1(v)=Fila_min_inicial(u); Columna_min_inicial1(v)=Columna_min_inicial(u); Error_min_inicial1(v)=Error_min_inicial(u); v=v+1; end; end; clear u; Error_min2=min(Error_min_inicial1); for u=1:v-1 % Valores del minimo numero de variables con el minimo error por Ti if Error_min2==Error_min_inicial1(u); It_min_inicial2(y)= It_min_inicial1; Fila_min_inicial2(y)=Fila_min_inicial1(u); Columna_min_inicial2(y)=Columna_min_inicial1(u); Error_min_inicial2(y)=Error_min_inicial1(u); y=y+1; end; end; clear u; clear v; clear Error_min2; clear It_min_inicial; clear It_min_inicial1; clear Fila_min_inicial; clear Columna_min_inicial; clear Error_min_inicial; clear Fila_min_inicial1; clear Columna_min_inicial1; clear Error_min_inicial1; end; v=1; It_min=min(It_min_inicial2); for u=1:y-1 % Almacenar minimos por Ti if It_min==It_min_inicial2(u) Fila_min(v)=Fila_min_inicial2(u); Columna_min(v)=Columna_min_inicial2(u); Error_min(v)=Error_min_inicial2(u); v=v+1; end; end; % Limpiar variables clear y;

Page 131: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 130

clear n; clear i; clear v; clear u; clear It_t; clear Ite_t; clear Itreves; clear Itereves; clear It_min; clear C; clear I; clear It_min_inicial2; clear Fila_min_inicial2; clear Columna_min_inicial2; clear Error_min_inicial2; if No_existe_error==0 disp(['No existe ningun error inferior al solicitado (',num2str(Error_max_deseado),'%) que elimine variables']); clear It_min_inicial2; break else % Crear matrices optimas [Fil Colum]=size(Columna_min); for q=1:Colum % Para el caso de que exista mas de un optimo Contador_eliminada(q)=0; for z=1:Columna_min(q) Valor_elim(q,z)=Neliminadafinal(Fila_min(q),z); if ne(Valor_elim(q,z),0) Contador_eliminada(q)=Contador_eliminada(q)+1; end; end; clear z; N=Nvariables; datos1=dat; contr1=controlN; for z=1:Columna_min(q) for c=1:N E=contr1(c); if E==Valor_elim(q,z); A=c; end; end; if ne(Valor_elim(q,z),0) if A==1 datos2=datos1(:,A+1:N); contr2=contr1(:,A+1:N); elseif A==N datos2=datos1(:,1:A-1); contr2=contr1(:,1:A-1);

Page 132: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 131

else datos2=datos1(:,1:A-1); datos2(:,A:N-1)=datos1(:,A+1:N); contr2=contr1(:,1:A-1); contr2(:,A:N-1)=contr1(:,A+1:N); end; N=N-1; datos1=datos2; contr1=contr2; end; clear A; clear c; clear E; end; Datos(q).datval=datos2; Var(q).controlNval=contr2; Targ(q).targetval=target; clear z; clear datos1; clear datos2; clear contr1; clear contr2; end; clear q; clear Fil; % Resultados for q=1:Colum disp(['El optimo con un error maximo deseado de ',num2str(Error_max_deseado),'% , se consigue eliminando ',num2str(Contador_eliminada(q)),' variables.']); disp('Quedandonos con las siguientes:'); Var(q).controlNval disp(['Con un Error(%) = ', num2str(Error_min(q)),' %']); end; clear q; end; Graf_contr=2; % Variable para saber que la Grafica_min.m es del del minimo elegido clear Contador_eliminada; clear No_existe_error;

Page 133: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 132

12.1.7 PROGRAMA “ELECCION_MIN_VARIABLES.M” % Busqueda de menos error con numero de variables deseado disp('Introducir nº de variables maximo deseado'); input('Variables_max_deseado= '); Variables_max_deseado=ans; % Inicializacion variables clear Fila_min; clear Columna_min; clear Error_min; clear Datos; clear Var; clear Targ; clear Valor_elim; % Girar tabla It-Ite It_t=Itfinal'; Ite_t=Itefinal'; % Minimo error deseado por Ti(columna)-empezando a contar por la ultima iteracion. No_existe_variables=0;%(Para el caso que no exista ninguno) % Extraer valores correspondientes con el numero de variables (It) [Fdeseada Cdeseada]=find(It_t==Variables_max_deseado); [Tamf Tamc]=size(Fdeseada); if Tamf>=1 No_existe_variables=1; % Bucle para no repetir valores de la misma repeticion Cdeseada1(1)=Cdeseada(1); Fdeseada1(1)=Fdeseada(1); v=2; Tamf1=0; for u=2:Tamf if ne(Cdeseada(u),Cdeseada(u-1)) Cdeseada1(v)=Cdeseada(u); Fdeseada1(v)=Fdeseada(u); v=v+1; Tamf1=Tamf1+1; end; end; clear v; for u=1:Tamf1 % Valores minimo error Error_min_inicial(u)=Ite_t(Fdeseada1(u),Cdeseada1(u)); end;

Page 134: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 133

clear u; Error_min_inicial1=min(Error_min_inicial); s=1; for u=1:Tamf1 % Extraccion Fila-Columna minima (De las Tablas originales) if Error_min_inicial(u)==Error_min_inicial1 Fila_min(s)=Cdeseada1(u); Columna_min(s)=Fdeseada1(u); Error_min(s)=Error_min_inicial1; s=s+1; end; end; end; % Limpiar variables clear u; clear s; clear Tamf; clear Tamc; clear Tamf1; clear Error_min_inicial; clear Error_min_inicial1; clear It_t; clear Ite_t; clear Cdeseada; clear Fdeseada; clear Cdeseada1; clear Fdeseada1; if No_existe_variables==0 disp(['No existe ningun error calculado para, ',num2str(Variables_max_deseado),' variables solicitadas']); break else % Crear matrices optimas [Fil Colum]=size(Columna_min); for q=1:Colum % Para el caso de que exista mas de un optimo Contador_eliminada(q)=0; for z=1:Columna_min(q) Valor_elim(q,z)=Neliminadafinal(Fila_min(q),z); if ne(Valor_elim(q,z),0) Contador_eliminada(q)=Contador_eliminada(q)+1; end; end; clear z; N=Nvariables; datos1=dat; contr1=controlN; for z=1:Columna_min(q)

Page 135: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 134

for c=1:N E=contr1(c); if E==Valor_elim(q,z); A=c; end; end; if ne(Valor_elim(q,z),0) if A==1 datos2=datos1(:,A+1:N); contr2=contr1(:,A+1:N); elseif A==N datos2=datos1(:,1:A-1); contr2=contr1(:,1:A-1); else datos2=datos1(:,1:A-1); datos2(:,A:N-1)=datos1(:,A+1:N); contr2=contr1(:,1:A-1); contr2(:,A:N-1)=contr1(:,A+1:N); end; N=N-1; datos1=datos2; contr1=contr2; end; clear A; clear c; clear E; end; Datos(q).datval=datos1; Var(q).controlNval=contr1; Targ(q).targetval=target; clear z; clear datos1; clear datos2; clear contr1; clear contr2; end; clear q; clear Fil; % Resultados for q=1:Colum disp(['El optimo con ',num2str(Variables_max_deseado),' variables solicitadas, se consigue eliminando ',num2str(Contador_eliminada(q)),' variables.']); disp('Quedandonos con las siguientes:'); Var(q).controlNval disp(['Con un Error(%) = ', num2str(Error_min(q)),' %']); end; clear q; end;

Page 136: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 135

Graf_contr=1; % Variable para saber que la Grafica_min.m es del del minimo elegido clear Contador_eliminada; clear No_existe_error;

Page 137: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 136

12.1.8 PROGRAMA “GUI_SA1.M” function varargout = GUI_SA1(varargin) % Este GUI tiene las siguientes funciones que se pueden ejecutar: % % - Cargar los datos % % - Ejecutar el metodo % % - Ejecutar sus Graficas % % - Buscar y mostrar el minimo optimo por pantalla (minimo error para el % minimo numero de variables) % % - Ejecutar su grafica de minimo % % - Seleccionar el maximo error deseado para buscar el minimo % optimo por pantalla % % - Ejecutar su grafica de minimo habiendo escogido el error maximo % % - Seleccionar el numero de variables para buscar el minimo optimo por % pantalla % % - Seleccionar su grafica de mnimo habiendo escogido el numero de % variables % % - Realizar el calculo del Error con el metodo de validacion cruzada de % orden uno: Esta opcion se podra eejcutar para cualquier Opcion anterior. warning off if nargin == 0 fig = openfig(mfilename,'reuse'); handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end elseif ischar(varargin{1}) try [varargout{1:nargout}] = feval(varargin{:}); catch disp(lasterr); end

Page 138: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 137

end % --- Executes on button press in Cargadatos. function Cargadatos_Callback(hObject, eventdata, handles) fdatos=[]; [filename,pathname]=uigetfile('*.*','Cargar fichero datos'); fdatos=[pathname,filename]; load(fdatos); save('C:\MATLAB6p5\work\dataini.mat'); % --- Executes on button press in Simulatedannealing. function Simulatedannealing_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini.mat'); run simulated_an1; save('C:\MATLAB6p5\work\dataini_totales.mat'); end % --- Executes on button press in Graficas. function Graficas_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_totales.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_totales.mat'); run Graficas1; end % --- Executes on button press in minimo. function minimo_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_totales.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_totales.mat'); run minimo; save('C:\MATLAB6p5\work\dataini_min.mat'); end % --- Executes on button press in Eleccionvariables. function Eleccionvariables_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_totales.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_totales.mat'); run Eleccion_minimo_variables; save('C:\MATLAB6p5\work\dataini_min.mat'); end

Page 139: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 138

% --- Executes on button press in Eleccionerror. function Eleccionerror_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_totales.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_totales.mat'); run Eleccion_minimo_error; save('C:\MATLAB6p5\work\dataini_min.mat'); end % --- Executes on button press in Graficamin. function Graficamin_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_min.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_min.mat'); run Grafica_min; end % --- Executes on button press in Validacion. function Validacion_Callback(hObject, eventdata, handles) a=exist('C:\MATLAB6p5\work\dataini_totales.mat'); if (a ~= 0) load('C:\MATLAB6p5\work\dataini_totales.mat'); run Valida_cruzada; end b=exist('C:\MATLAB6p5\work\dataini_min.mat'); if (b ~= 0) load('C:\MATLAB6p5\work\dataini_min.mat'); run Valida_cruzada; end

Page 140: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 139

12.2 GRÁFICOS DE LA EVOLUCIÓN DE DATOS 12.2.1 EVOLUCIÓN PRIMER FICHERO DATOS (5 CLASES) Para Tª =100º a 50º

Nota: Observar que la anotación (Pi) indica que la variable, pese a presentar un error mayor, se ha eliminado por Probabilidad.

Page 141: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 140

Page 142: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 141

Page 143: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 142

Page 144: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 143

Page 145: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 144

Page 146: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 145

Page 147: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 146

Para Tª =50º a 10º

Page 148: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 147

Page 149: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 148

Page 150: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 149

Page 151: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 150

Page 152: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 151

Page 153: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 152

Page 154: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 153

Para Tª =10º a 0º

Page 155: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 154

Page 156: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 155

Page 157: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 156

Page 158: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 157

Page 159: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 158

Page 160: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 159

Page 161: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 160

12.2.2 EVOLUCIÓN SEGUNDO FICHERO DATOS (6 CLASES) Para Tª =100º a 50º

Nota: Observar que la anotación (Pi) indica que la variable, pese a presentar un error mayor, se ha eliminado por Probabilidad

Page 162: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 161

Page 163: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 162

Page 164: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 163

Page 165: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 164

Page 166: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 165

Page 167: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 166

Page 168: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 167

Para Tª =50º a 10º

Page 169: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 168

Page 170: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 169

Page 171: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 170

Page 172: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 171

Page 173: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 172

Page 174: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 173

Page 175: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 174

Para Tª =10º a 0º

Page 176: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 175

Page 177: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 176

Page 178: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 177

Page 179: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 178

Page 180: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 179

Page 181: Implementación del algoritmo de selección de variables ...deeea.urv.cat/public/PROPOSTES/pub/pdf/702pub.pdf · conocido con el nombre de "Simulated Annealing" (Recocido Simulado)

Algoritmo de selección variables "Simulated Annealing"

Pág 180