UTgeNes - Framework para Implementación y Estudio de Algoritmos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "UTgeNes - Framework para Implementación y Estudio de Algoritmos"

Transcripción

1 UTgeNes - Framework para Implementación y Estudio de Algoritmos Genéticos Abstract UTgeNes es un framework para la implementación y estudio de algoritmos genéticos propuesto para la realización de trabajos prácticos por parte de los estudiantes de la asignatura Inteligencia Artificial. Su principal propósito es brindar una estrategia simple de construcción de soluciones mediante el aprovechamiento del paradigma orientado a objetos y las virtudes del lenguaje Java. Para ello, cuenta con todas las técnicas abordadas en el programa de la asignatura para que los estudiantes puedan comparar las distintas configuraciones y variantes de cada solución propuesta. Palabras Clave Algoritmos Genéticos. Computación Evolutiva. Framework. Inteligencia Artificial. Introducción Los Algoritmos Genéticos (AG) como estrategia para la resolución de problemas computacionales puede ser implementada mediante el uso de varios frameworks actualmente disponibles en lenguaje Java, tales como JGAP [1], EJC [2], EpochX [3] y WatchMaker [4]. Sin embargo, la curva de aprendizaje de cualquiera de estos frameworks ha de ser significativamente empinada para los estudiantes, no sólo por estar documentados e implementados en idioma inglés, sino porque modelar una posible solución requiere conocimiento de lenguaje de bajo nivel y representaciones binarias de las características de los individuos. Aunque la representación de cada característica de los individuos con segmentos de bits es el enfoque clásico propuesto por Holland en [5], esto suele generar complicaciones al momento de implementar la función de aptitud. En este contexto, el framework UTgeNes simplifica la resolución de problemas con algoritmos genéticos, tomando las ventajas del modelado orientado a objetos y las facilidades que brinda Java como lenguaje de programación. De esta forma, los conceptos de abstracción, herencia, polimorfismo, delegación, encapsulamiento y otros derivados de la programación orientada a objetos, son utilizados para que el usuario pueda ocuparse de la representación e implementación del problema a resolver y no en el desarrollo de elementos de bajo nivel. Funcionamiento básico de los Algoritmos Genéticos El esquema básico a alto nivel estudiado durante el curso de la asignatura Inteligencia Artificial plantea la estructura de los AG que se indica en la Figura 1. Figura 1: Diagrama de un algoritmo genético El algoritmo se inicia en la generación de una población de individuos, generalmente con atributos de valores aleatorios. Esta población inicial luego es introducida en el operador de selección para seleccionar o filtrar algunos de sus individuos (generalmente los más aptos según la utilidad de sus características), para acotar la muestra de individuos totales a un conjunto menor. De

2 esta forma, este conjunto está formado generalmente por los individuos más relevantes, la elite, de esa población. Sin embargo, debe tenerse en cuenta que algunos operadores (como es el caso del de Ruleta ) también seleccionan individuos no tan aptos para mantener así un nivel aceptable de diversidad. Los individuos que han sido seleccionados son combinados en una fase posterior, utilizando el operador de cruzamiento. Aquí se intercambian sus atributos para generar nuevos individuos y de esta forma generar nuevas posibles soluciones para el problema a resolver. Más tarde, con los individuos generados en el cruzamiento, se evalúa la posibilidad de que uno de esos individuos modifique alguna de sus características mediante el operador de mutación. Entonces, si la probabilidad de mutación es superior a una prefijada, se altera aleatoriamente alguno de los atributos de un individuo tomado al azar. Finalmente, se decide si el algoritmo debe finalizar su ejecución o continuar con un nuevo ciclo desde la selección de la población con los individuos disponibles luego de mutación. Debe notarse que para cada una de estos operadores, se proponen distintas técnicas que logran alterar el comportamiento del algoritmo para poder obtener mejores individuos soluciones en forma más óptima. Implementación del framework UTgeNes Para la implementación del algoritmo fue necesario diseñar e implementar: 1. Una clase que controle el funcionamiento general del algoritmo genético. 2. Una clase que contenga la configuración inicial definida para el algoritmo. 3. Una clase para definir de forma genérica a los individuos de la población que va a ser sometida al algoritmo junto con su función de aptitud. 4. Una clase para conservar el estado del algoritmo durante toda su ejecución. 5. Clases abstractas para modelar cada uno de los operadores: Selección, Cruzamiento, Mutación y Criterio de Finalización. A continuación se describen las características de cada una de estas clases: 1. Clase AlgoritmoGenetico Esta es la clase fundamental que controla la ejecución de todo el ciclo de resolución del problema y punto de entrada para la utilización del algoritmo. Según su configuración inicial, parametrizada cuando se instancia esta clase, es posible modificar la forma en que las poblaciones de individuos van evolucionar generación tras generación para generar así una población final que cuente con las características más aptas para la resolución del problema. El esquema general de esta clase se puede ver en la figura 2. Figura 2: Diagrama de la clase fundamental ejecutora del algoritmo genético. 2. Clase Configuración Esta clase permite al usuario definir los parámetros generales de configuración que serán utilizados durante la ejecución del algoritmo como son el criterio de paro, tamaño de la población inicial, y los métodos de selección, cruzamiento y mutación a ser utilizados. Para simplificar su uso, el framework cuenta con dos clases concretas que heredan de esta clase y que ya tienen definido parámetros de configuración por defecto. Estas clases son: ConfiguracionDefault: o Criterio de Paro: Cantidad de ciclos, 99 ciclos o Tamaño de la población inicial: 999 individuos o Método de Selección: Torneo o Método de Cruzamiento: Simple o Método de Mutación: Simple, con un 20% de probabilidad constante

3 Configuracion5Min: o Criterio de Paro: Tiempo transcurrido, finaliza en 5 minutos. o Tamaño de la población inicial: 999 individuos o Método de Selección: Torneo o Método de Cruzamiento: Simple o Método de Mutación: Simple, con un 20% de probabilidad constante Ambas configuraciones pueden ser utilizadas para implementarse en las ejecuciones del algoritmo, y a su vez, también pueden ser extendidas según se requiera. 3. Clase Individuo Esta clase es la que encapsula la representación de las posibles soluciones del problema que se desea resolver. Por lo que su definición es esencial para el funcionamiento del framework. Para ello, emula a cada individuo con su respectivo cromosoma (atributos) como solución potencial y la cuenta con métodos que permiten realizar la comparación entre individuos usando su aptitud. Su estructura se muestra en la Figura 5. Figura 3: Diagrama de la clase abstracta Individuo Cabe destacar que el único método que se debe definir es el de aptitud(). Este método cuantificará la medida en que cada individuo resuelve el problema de acuerdo a sus características. 4. Clase Estado Esta clase instancia un objeto que mantiene un estado general del algoritmo. Sus propiedades permiten acceder a las aptitudes promedio de los individuos cuales son los mejores y peores individuos de cada población, entre otras cosas. La razón de su existencia es facilitar el cálculo de los promedios de valores y la obtención de estadísticas históricas del algoritmo durante toda la corrida. Es decir, esta clase puede ser utilizada para visualizar los resultados que se van generando por cada ciclo de ejecución del framework. 5a. Clase Selección Los criterios de selección incluidos en UTgeNes se utilizan para discriminar y descartar a los individuos que no son candidatos a soluciones lo suficientemente buenas. Los individuos seleccionados recibirán una cantidad de copias de acuerdo al criterio de selección y su función de aptitud. Para mantener siempre el mismo tamaño de la población, se toma aleatoriamente a un individuo existente de la población y lo clona o elimina según sea el caso de necesitar más o menos individuos respectivamente. Las posibles instancias de esta clase se corresponden con distintas formas de realizar la selección de individuos. Estas instancias ya incluidos en el framework son: Torneo: Ejecuta la comparación de las funciones de aptitud de cada par de individuos y selecciona al más apto de ese par. Ranking: Selecciona sólo los n individuos más aptos. La cantidad de individuos seleccionados dependerá del parámetro inicial de configuración de esta clase. Una vez seleccionados los individuos, asigna una cantidad de copias de acuerdo a su función de aptitud para que a los mejores le correspondan más copias que a los peores. Ruleta: Asigna a cada individuo un rango de valores de un tamaño porcentual directamente proporcional a la función de aptitud de cada uno y luego de generar un valor aleatorio perteneciente a alguno de esos valores, selecciona al individuo cuyo rango encierre a ese valor. Este proceso se realiza sucesivas veces hasta que logre completar la cantidad requerida de individuos. ControlSobreNumeroEsperado: Calcula el promedio de las aptitudes de los individuos y comparar ese promedio contra cada uno de los individuos. A cada in-

4 dividuo le asigna un porcentaje de copias de acuerdo a la cantidad entera de veces que el valor de la aptitud de ese individuo supere el promedio total de aptitudes. Luego, con el resultado de la resta de esa cantidad entera y el promedio, obtendrá un valor decimal y con este valor, aplicará el método de Ruleta detallado anteriormente. 5b. Clase Cruzamiento Para realizar el intercambio de características de los individuos seleccionados, se pueden utilizar varias técnicas. Como todas estas pueden ser vistas como especializaciones del cruzamiento por máscara doble (la cual utiliza una máscara para determinar las características que son utilizadas de cada padre para generar cada hijo), las otras técnicas internamente invocan al método correspondiente de esta clase como se puede ver en la Figura 4. Figura 4: Diagrama de clases para la implementación del operador de cruzamiento. 5c. Clase Mutación Los mecanismos de mutación implementados en UTgeNes cumplen con el requisito de diversificar las características de los individuos establecido por los algoritmos genéticos. El mecanismo de mutación es el mismo para cualquier tipo de mutación: se genera un nuevo individuo de características aleatorias que se cruza con un individuo existente en la población seleccionado en forma aleatoria. Entonces la diferencia entre los diferentes formas de mutación radica en el cálculo de la probabilidad de mutación para determinar si corresponde mutar o no. Para ello el framework incluye las siguientes posibilidades: MutacionSimple: Permite definir en la configuración inicial una probabilidad que se mantendrá constante a lo largo de toda la corrida del algoritmo. MutacionAdaptativaPorConvergencia: Aumenta la probabilidad de mutación proporcionalmente de acuerdo a la diferencia haya entre la aptitud el mejor y el peor de los individuos. MutacionTemperaturaDescendente: La probabilidad de mutación es inversamente proporcional a la cantidad de ciclos ejecutados por el algoritmo. Entonces, la probabilidad de mutación disminuye con el transcurso del tiempo de ejecución del algoritmo. MutacionTemperaturaAscendente: La probabilidad de mutación es directamente proporcional a la cantidad de ciclos ejecutados por el algoritmo. Entonces, la probabilidad de mutación aumento con el transcurso del tiempo de ejecución del algoritmo. 5d. Clase Criterio de Finalización Los criterios de finalización definidos para en UTgeNes responden a distintos comportamientos validando una condición particular al analizar el estado del algoritmo: AptitudMinima: Evalúa si alguno de los individuos cumple con un valor de función de aptitud igual o mayor a un valor definido. Con esto asegura el cumplimiento de las expectativas mínimas de la solución. AptitudMinimaPromedio: Evalúa si el promedio de los valores de las aptitudes de todos los individuos de la población

5 es igual o mayor a un valor definido. Con esto asegura una población suficientemente buena, en promedio, como para garantizar que la solución será igual o mejor que ese promedio alcanzado. CantidadDeCiclos: Evalúa la cantidad de ciclos ejecutados por el algoritmo y finalizará la ejecución si esa cantidad de ciclos es igual o mayor a una cantidad de ciclos definida inicialmente. TiempoTranscurrido: Evalúa el tiempo transcurrido desde el inicio de la ejecución del algoritmo y lo comparará contra el tiempo inicialmente definido. Si se ha ejecutado el algoritmo durante la cantidad de horas, minutos y segundos definidos, el algoritmo finalizará. Cabe destacar que los criterios de finalización TiempoTranscurrido y Cantidad- DeCiclos, no tienen en cuenta los valores de la población final. Por lo cual, los individuos resultantes puede no ser lo suficientemente apto como se desea. Sin embargo, estos criterios son muy útiles cuando el tiempo de respuesta esperado para la ejecución del algoritmo es crucial en la implementación. Por otro lado, los criterios AptitudMinima y AptitudMinimaPromedio pueden ejecutar durante mucho más tiempo y hasta podrían llegar a provocar que el algoritmo nunca finalice. Teniendo en cuenta estas clases, para construir el algoritmo genético, se arma una red de objetos como se muestra en la Figura 5. El punto de entrada será la instancia de AlgoritmoGenetico que contendrá los operadores asignados a la configuración, el estado interno del algoritmo y los individuos definidos de acuerdo a la implementación requerida. Luego de la ejecución, el resultado final se encontrará en instancias de la clase Individuo. Todas las clases descriptas previamente se encuentran disponibles en [7] para su utilización. Figura 5: Diagrama de clases para la implementación del algoritmo genético. Caso de Estudio Para ilustrar la utilización del framework UTgeNes en la resolución de un problema se lo utilizará el problema descripto en [8] el cual consiste en encontrar el máximo de una función matemática que se indica en la Figura 6. Figura 6: Función del caso de estudio Esta función en el rango [0; 15] se puede representar en la figura 7 donde se puede ver que el máximo valor de la curva se encuentra en el rango (11; 11,5). Figura 7: Gráfica resultante del análisis del caso de estudio

6 Preparación del framework Para resolver este problema, se requiere definir las características de cada individuo y la función de aptitud que evalúe el valor máximo. o Para cada individuo se debe poseer un atributo capaz de tomar cualquier valor real en el rango [0; 15]. Este valor se identificará con la variable x. o La función de aptitud evalúa el valor de la función consigna y destaca a los individuos cuyo valor de retorno de esta función es mayor. Los pasos para generar el código para implementar esta solución son los siguientes: 1. Se extiende la clase Individuo desde la clase X. 2. Se declara un atributo x de tipo Doble. 3. Se define la función de aptitud donde se ejecuta la función a analizar y se retorna el valor resultante. Si el valor del atributo x se encuentra fuera del rango permitido se retorna una valor bajo para que ese individuo sea descartado en la selección. 4. Se declaran los métodos correspondientes para acceder al atributo x. En otras palabras se genera el siguiente código: 1. public class X extends Individuo { 2. private Double x; public double aptitud() { if (this.x < 0 this.x > 15) { return 0; return Math.abs((this.x - 5) / (2 + Math.sin(this.x))); 4. public Double getx() { return x; public void setx(double x) { this.x = x; 5. Luego se crea una nueva instancia de la clase AlgoritmoGenetico con la configuración predefinida indicada por la clase ConfiguracionDefault. 6. Finalmente se ejecutar esa instancia para obtener el individuo solución que más se adapte a las condiciones del problema. public static void main(string[] args) { AlgoritmoGenetico max = new AlgoritmoGenetico(new ConfiguracionDefault(), X.class); 6. Individuo x = max.ejecutar();... Análisis del comportamiento del algoritmo Al ejecutar el algoritmo planteado anteriormente, se extrajeron los resultados de cada ciclo y se calculó la función de aptitud para el mejor y el peor individuo, además de un promedio de los valores de todos los individuos resultantes de la población como se puede ver en la Figura 8. Figura 8: Gráfica resultante de una ejecución particular del caso de estudio. En las celdas resaltadas con color rojo, se puede observar que un muy buen individuo fue generado en la población inicial y se mantuvo a lo largo de 54 iteraciones. Sin embargo, en la iteración 55, se generó un nuevo individuo más apto. Éste último individuo se mantuvo como el mejor de todas las generaciones futuras hasta finalizar la corrida. En la figura del costado se representa mediante curvas el valor de la función de aptitud del mejor individuo de la población en cada iteración (curva superior), el promedio de todos los individuos (curva del medio) y del peor individuo (curva inferior).

7 Para la aptitud del mejor individuo se puede ver existe un salto en la iteración número 55 donde el mejor individuo surge con un nuevo valor en su función de aptitud. Para el promedio de todos los individuos de la población de cada iteración, se ve un crecimiento rápido de esta curva en las primeras iteraciones del algoritmo ya que la población inicial generó muchos individuos no válidos con aptitud cero y el promedio de todas las aptitudes fue relativamente bajo. Luego, al evolucionar la población, el algoritmo fue descartando los individuos poco aptos y generando individuos resultantes con funciones de aptitud bastante similares a la mejor manteniendo este promedio. Finalmente la curva de la aptitud de los peores individuos tiene un comportamiento bastante caótico. Esto se produce por las mutaciones que generan nuevos individuos con función de aptitud de valor cero (cada raíz de esta curva). Cabe destacar que el valor del mejor individuo de toda la corrida del algoritmo, es menos que el esperado, sin embargo, se acerca significativamente. Luego de realizar 10 diferentes ejecuciones del framework con esta configuración, se obtuvieron los siguientes resultados que se indican en la tabla 1. En dicha tabla, se puede observar un porcentaje promedio de un 20% de mutaciones en relación al total de ciclos de cada corrida del algoritmo tal y como lo establece el parámetro de configuración de la mutación, cómo los individuos no válidos se rechazan y cómo los valores de la solución oscilan cerca del valor óptimo buscado. Por otro lado, luego se ha probado resolver este mismo problema aplicando diferentes configuraciones del algoritmo como se puede ver en la tabla 2. Esta tabla contiene los resultados obtenidos para varias corridas del mismo algoritmo utilizando la configuración indicada. Analizando estos resultados, se demuestra que las soluciones obtenidas para cada caso, convergen a un resultado similar y siempre con una aproximación apropiada al resultado óptimo esperado. # Mejor Individuo Valor / Aptitud x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = Peor Individuo Valor / Aptitud x = x = x = x = x = x = x = x = x = x = Tabla 1: Resultados de 10 ejecuciones Configuración Selección: Ranking ( 30 ) Cruzamiento: Binomial Azar Mutación: Adaptativa por Convergencia Selección: Ruleta Cruzamiento: Binomial Azar Complemento Mutación: Temperatura Ascendente Selección: Control Sobre Numero Esperado Cruzamiento: Simple Punto Fijo ( Punto=1 ) Mutación: Temperatura Descendente Selección: Ruleta Cruzamiento: Binomial Mascara Complemento ( Mascara="X" ) Mutación: Simple ( 90% ) Mejor Individuo Valor / Aptitud x = / f(x) = x = / f(x) = x = / f(x) = x = / f(x) = Tabla 2: Ejecuciones con distintas configuraciones

8 Discusión de los Resultados Comparando los resultados de las ejecuciones del algoritmo genético se puede afirmar que entre todos los casos este método de resolución de problemas tiene un resultado promedio de 11,11665 y el promedio de valores de la función de aptitud es de 5,7195. El porcentaje de margen de error entre el valor óptimo que se calcula matemáticamente y el valor calculado por el algoritmo genético es menor al 5% por lo cual, se puede concluir que el método de obtención del máximo de esta función es 95% efectivo. De esta manera, queda demostrada, una de las múltiples variantes de utilización del framework para la resolución de problemas y su porcentaje de exactitud con respecto al método óptimo matemático. Conclusión La simplicidad y practicidad de la implementación del problema ejemplo en el código y sus características de orientación a objetos expuestas a lo largo de este documento avalan la utilización de UTgeNes como framework para resolver problemas mediante la técnica de algoritmos genéticos. Se destacan sus características de versatilidad y consistencia para cualquier cambio en la configuración de operadores que se requieran utilizar en cada caso. Además de los operadores y mecanismos propuestos, gracias a la orientación a objetos, UTgeNes puede ser extendido en cualquiera de sus características manteniendo el mismo comportamiento y estabilidad para la resolución de problemas, logrando así, gran flexibilidad y adaptación a las necesidades de cada implementación. Con UTgeNes se logra abstraer al programador de la implementación a bajo nivel del algoritmo genético dejando en sus manos sólo la definición de algunas variantes de configuración necesarias y la implementación de un Individuo focalizándolo en el modelado de las características y función de aptitud que requiere el problema a resolver. Agradecimientos Al a cátedra de Inteligencia Artificial de la UTN- FRBA y a sus profesores por la oportunidad: Mg María Florencia Pollo-Cattaneo, Ing Cinthia Vegega y Mg Pablo Pytel. A Mg Pablo Pytel por sus correciones y guía en el presente trabajo. A la Ingeniera María Cecilia Vallejos por su paciencia y ayuda durante la elaboración del presente trabajo. Referencias [1]. JGAP [2]. ECJ - sistema de investigación EC y GP codificado en Java. [3]. EpochX - framework de algoritmos genéticos. [4]. The Watchmaker - framework de algoritmos genéticos. [5]. Holland, John H. Adaptation in natural and artificial systems: An introductory analysis with applications to biology, control, and artificial intelligence. U Michigan Press, [7]. Juhal, G. F. UTgeNes. https://github.com/gooznt/utgenes [8]. Algoritmos Genéticos Ejemplo. Datos de Contacto Gustavo Francisco Juhal. Universidad Tecnológica Nacional. Facultad Regional de Buenos Aires.

Desarrollo de un sistema capaz de optimizar rutas de entrega utilizando algoritmos genéticos

Desarrollo de un sistema capaz de optimizar rutas de entrega utilizando algoritmos genéticos MT 6 Desarrollo de un sistema capaz de optimizar rutas de entrega utilizando algoritmos genéticos Rosario Baltazar 1 Judith Esquivel Vázquez 2 Andrea Rada 3 Claudia Díaz 4 Resumen Durante los últimos 15

Más detalles

Algoritmos genéticos como métodos de aproximación analítica y búsqueda de óptimos locales

Algoritmos genéticos como métodos de aproximación analítica y búsqueda de óptimos locales Algoritmos genéticos como métodos de aproximación analítica y búsqueda de óptimos locales Jorge Salas Chacón A03804 Rubén Jiménez Goñi A93212 Juan Camilo Carrillo Casas A91369 Marco Vinicio Artavia Quesada

Más detalles

ALGORITMOS GENÉTICOS

ALGORITMOS GENÉTICOS Arranz de la Peña, Jorge Universidad Carlos III 100025106@alumnos.uc3m.es ALGORITMOS GENÉTICOS Parra Truyol, Antonio Universidad Carlos III 100023822@alumnos.uc3m.es En este documento se pretende analizar

Más detalles

Introducción a los Algoritmos Genéticos

Introducción a los Algoritmos Genéticos Introducción a los Algoritmos Genéticos Francisco José Ribadas Pena INTELIGENCIA ARTIFICIAL 5 Informática ribadas@uvigo.es 17 de octubre de 2005 c FJRP 2005 ccia IA Métodos de 8 < : 1 Introducción 9 =

Más detalles

FORMULACIÓN DE UN ALGORITMO GENÉTICO PARA EL PROBLEMA DE PROGRAMACIÓN DE ÓRDENES DE TRABAJO DE UNA EMPRESA DE ARTES GRÁFICAS

FORMULACIÓN DE UN ALGORITMO GENÉTICO PARA EL PROBLEMA DE PROGRAMACIÓN DE ÓRDENES DE TRABAJO DE UNA EMPRESA DE ARTES GRÁFICAS FORMULACIÓN DE UN ALGORITMO GENÉTICO PARA EL PROBLEMA DE PROGRAMACIÓN DE ÓRDENES DE TRABAJO DE UNA EMPRESA DE ARTES GRÁFICAS PROYECTO DE GRADO Javier mauricio gamboa salgado Código: 544004 John alexander

Más detalles

Algoritmos Genéticos

Algoritmos Genéticos Introducción a la Computación Evolutiva Tercera Clase: Algoritmos Genéticos Algoritmos Genéticos Desarrollados en USA durante los años 70 Autores principales: J. Holland, K. DeJong, D. Goldberg Aplicados

Más detalles

Algoritmos Genéticos. Algoritmos Genéticos. Introducción a la Computación Evolutiva. Tercera Clase: Algoritmos Genéticos

Algoritmos Genéticos. Algoritmos Genéticos. Introducción a la Computación Evolutiva. Tercera Clase: Algoritmos Genéticos Introducción a la Computación Evolutiva Tercera Clase: Algoritmos Genéticos Algoritmos Genéticos Desarrollados en USA durante los años 70 Autores principales: J. Holland, K. DeJong, D. Goldberg Aplicados

Más detalles

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS CURSO: JAVA BASICO PROFESOR: EMERSON CASTAÑEDA SANABRIA TEMA: Programación Orientada a Objetos OBJETIVOS: Familiarizarse con la Programación

Más detalles

Algoritmos Genéticos. Introduccion a la Robótica Inteligente

Algoritmos Genéticos. Introduccion a la Robótica Inteligente Algoritmos Genéticos Introduccion a la Robótica Inteligente 7 Marzo 2014 (IRIN) AGs 7/03/2014 1 / 43 Índice 1 Introducción 2 Algoritmos Genéticos 3 Algunos Fundamentos Matemáticos 4 Conclusiones (IRIN)

Más detalles

Introducción a la Computación Evolutiva

Introducción a la Computación Evolutiva Introducción a la Computación Evolutiva Sección de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: ccoello@cs.cinvestav.mx http: //delta.cs.cinvestav.mx/~ccoello

Más detalles

Prácticas de Programación

Prácticas de Programación Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 2. Clases y objetos Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad

Más detalles

Introducción a los Algoritmos Genéticos. Tomás Arredondo Vidal 17/4/09

Introducción a los Algoritmos Genéticos. Tomás Arredondo Vidal 17/4/09 Introducción a los Algoritmos Genéticos Tomás Arredondo Vidal 17/4/09 Esta charla trata de lo siguiente: Introducción a algunos aspectos de los algoritmos genéticos. Introducción a algunas aplicaciones

Más detalles

PROYECTO FIGURAS DIAGRAMA DE FLUJO

PROYECTO FIGURAS DIAGRAMA DE FLUJO FIGURAS JAVA ~ 1 ~ PROYECTO FIGURAS 1. Crear una clase Figura, abstracta 2. Añadirle los métodos vacíos a. CalcularPerimetro() public Devolver double b. Calcular() public Devolver double 3. Crear la clase

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

Algoritmos Genéticos Y

Algoritmos Genéticos Y Algoritmos Genéticos Y Optimización n Heurística Dr. Adrian Will Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán awill@herrera.unt.edu.ar Operadores de Mutación El operador

Más detalles

Un algoritmo genético híbrido para resolver el EternityII. Rico, Martin; Ros, Rodrigo Directora: Prof. Dra. Irene Loiseau

Un algoritmo genético híbrido para resolver el EternityII. Rico, Martin; Ros, Rodrigo Directora: Prof. Dra. Irene Loiseau Un algoritmo genético híbrido para resolver el EternityII Rico, Martin; Ros, Rodrigo Directora: Prof. Dra. Irene Loiseau Temas Temas Introducción Eternity II Historia Descripción Demo Metaheurísticas Algoritmos

Más detalles

Temario III Algoritmos Combinatorios y Metaheurísticas

Temario III Algoritmos Combinatorios y Metaheurísticas Temario III Algoritmos Combinatorios y Metaheurísticas Verificación y Validación de Software UNCo 1 Contenidos Combinación de Datos de Test Algoritmos Combinatorios Metaheurísticas Búsqueda Tabú Algoritmos

Más detalles

Algoritmos Genéticos.

Algoritmos Genéticos. Algoritmos Genéticos. Miguel Cárdenas Montes, Antonio Gómez Iglesias Centro de Investigaciones Energéticas Medioambientales y Tecnológicas, Madrid, Spain miguel.cardenas@ciemat.es 15-19 de Octubre de 2011

Más detalles

Computación Evolutiva: Técnicas de Selección

Computación Evolutiva: Técnicas de Selección Computación Evolutiva: Técnicas de Selección Dr. Gregorio Toscano Pulido Laboratorio de Tecnologías de Información Centro de Investigación y de Estudios Avanzados del IPN Cinvestav-Tamaulipas Dr. Gregorio

Más detalles

Computación Evolutiva. Inteligencia Computacional Dra. Maricela Bravo

Computación Evolutiva. Inteligencia Computacional Dra. Maricela Bravo Computación Evolutiva Inteligencia Computacional Dra. Maricela Bravo Introducción - Evolución La evolución es un proceso de optimización con el objetivo de mejorar la habilidad de un organismo o sistema

Más detalles

Analizar, diseñar, desarrollar e implementar soluciones orientadas a objetos utilizando encapsulamiento, herencia, polimorfismo y archivos.

Analizar, diseñar, desarrollar e implementar soluciones orientadas a objetos utilizando encapsulamiento, herencia, polimorfismo y archivos. Nombre de la asignatura: Programación Orientada a Objetos Créditos: 2-3- 5 Aportación al perfil Desarrollar, implementar y administrar software de sistemas o de aplicación que cumpla con los estándares

Más detalles

Procesamiento Digital de Imágenes. Pablo Roncagliolo B. Nº 22. Algoritmos Genéticos. prb@2007 2

Procesamiento Digital de Imágenes. Pablo Roncagliolo B. Nº 22. Algoritmos Genéticos. prb@2007 2 Procesamiento Digital de Imágenes Pablo Roncagliolo B. Nº 22 prb@2007 2 1 El núcleo de cada célula humana contiene una base de datos química. Esta base de datos contiene todas las instrucciones que la

Más detalles

Búsqueda Local. cbea (LSI-FIB-UPC) Inteligencia Artificial Curso 2011/2012 1 / 33

Búsqueda Local. cbea (LSI-FIB-UPC) Inteligencia Artificial Curso 2011/2012 1 / 33 Introducción Búsqueda Local A veces el camino para llegar a la solución no nos importa, buscamos en el espacio de soluciones Queremos la mejor de entre las soluciones posibles alcanzable en un tiempo razonable

Más detalles

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos 2.1. Principios básicos del Modelado de Objetos UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos Hoy en día muchos de los procesos que intervienen en un negocio o empresa y que resuelven

Más detalles

PROGRAMACION ORIENTADA A OBJETOS CON PHP

PROGRAMACION ORIENTADA A OBJETOS CON PHP PROGRAMACION ORIENTADA A OBJETOS CON PHP COMO SE DEFINE EN PHP La programación orientada a objetos es una metodología de programación avanzada y bastante extendida, en la que los sistemas se modelan creando

Más detalles

Tema 1. Introducción a los TAD

Tema 1. Introducción a los TAD Tema 1. Introducción a los TAD Objetivos En este tema nos ocupamos inicialmente del concepto de abstracción, dedicando la mayor atención a la abstracción de datos, estudiando aspectos relacionados con

Más detalles

Algoritmos Genéticos Y

Algoritmos Genéticos Y Algoritmos Genéticos Y Optimización n Heurística Dr. Adrian Will Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán awill@herrera.unt.edu.ar Algoritmos Genéticos - Operadores

Más detalles

Introducción a los Tipos Abstractos de Datos

Introducción a los Tipos Abstractos de Datos Página 1 de 8 Introducción a los Tipos Abstractos de Datos Introducción: Concepto de abstracción Abstracción funcional y abstracción de datos Construcción de tipos abstractos de datos Especificación de

Más detalles

ECJ GENETIC. A Java-based Evolutionary Computation and Genetic Programming Research System. Néstor Arias (naariasm@unal.edu.co)

ECJ GENETIC. A Java-based Evolutionary Computation and Genetic Programming Research System. Néstor Arias (naariasm@unal.edu.co) ECJ GENETIC A Java-based Evolutionary Computation and Genetic Programming Research System Néstor Arias (naariasm@unal.edu.co) CONTENIDO Qué es ECJ? Características Generales. Características de GP. Proceso

Más detalles

SIMULACIÓN CAPITULO 3 LECTURA 6.3. SIMULACIÓN Y ANÁLISIS DE MODELOS ESTOCÁSTICOS Azarang M., Garcia E. Mc. Graw Hill. México 3.

SIMULACIÓN CAPITULO 3 LECTURA 6.3. SIMULACIÓN Y ANÁLISIS DE MODELOS ESTOCÁSTICOS Azarang M., Garcia E. Mc. Graw Hill. México 3. LECTURA 6.3 SIMULACIÓN Y ANÁLISIS DE MODELOS ESTOCÁSTICOS Azarang M., Garcia E. Mc. Graw Hill. México CAPITULO 3 SIMULACIÓN 3.1 INTRODUCCIÓN Simulación es el desarrollo de un modelo lógico-matemático de

Más detalles

2.1. Introducción al lenguaje Java

2.1. Introducción al lenguaje Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

Desarrollo de una aplicación para la implementación de Algoritmos Genéticos

Desarrollo de una aplicación para la implementación de Algoritmos Genéticos Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Desarrollo de una aplicación para la implementación de Algoritmos Genéticos Trabajo Especial de Grado Presentado ante la Ilustre

Más detalles

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Iván Medrano Valencia ANALISIS DE ALGORITMOS Un algoritmo es un

Más detalles

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1

www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 www.aprendoencasa.com Curso Introducción JAVA Pág.: 1 Introducción Java es un lenguaje basado en la programación orientada a objetos (POO), este tipo de programación va más allá del tipo de programación

Más detalles

Selección usando Algoritmos

Selección usando Algoritmos Capítulo 3 Selección usando Algoritmos Genéticos 3.1. Introducción En esta sección se aborda el uso de Algoritmos Genéticos (GA del inglés Genetic Algorithms) para selección de características. Así como

Más detalles

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores Ever Mitta Flores Índice 1. Clase @Principal...3 2. Comentarios...3 3. Definición de Atributos...3 4. Definición de Métodos...4 5. Declaración de Variables...4 6. Asignación de Valores...5 7. Definición

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Procesamiento Digital de Imágenes. Compresión de imágenes

Procesamiento Digital de Imágenes. Compresión de imágenes FICH, UNL - Departamento de Informática - Ingeniería Informática Procesamiento Digital de Imágenes Guía de Trabajos Prácticos 8 Compresión de imágenes 2010 1. Objetivos Analizar las características y el

Más detalles

Métodos evolutivos de Optimización. Prof. Cesar de Prada Dpto. Ingeneiria de Sitemas y Automática Universidad de Valladolid

Métodos evolutivos de Optimización. Prof. Cesar de Prada Dpto. Ingeneiria de Sitemas y Automática Universidad de Valladolid Métodos evolutivos de Optimización Prof. Cesar de Prada Dpto. Ingeneiria de Sitemas y Automática Universidad de Valladolid Indice Introducción Método de Montecarlo Algoritmos genéticos Tabú Search Simulated

Más detalles

Introducción a los Algoritmos Genéticos

Introducción a los Algoritmos Genéticos Marcos Gestal Pose Depto. Tecnologías de la Información y las Comunicaciones Universidade da Coruña http://sabia.tic.udc.es/ mgestal mgestal@udc.es Índice 1. Introducción 2 2. Orígenes 2 3. Bases Biológicas

Más detalles

CAPÍTULO 5 ANÁLISIS DE CONVERGENCIA DEL MÉTODO BINOMIAL AL MODELO DE BLACK & SCHOLES

CAPÍTULO 5 ANÁLISIS DE CONVERGENCIA DEL MÉTODO BINOMIAL AL MODELO DE BLACK & SCHOLES CAPÍTULO 5 ANÁLISIS DE CONVERGENCIA DEL MÉTODO BINOMIAL AL MODELO DE BLACK & SCHOLES Para la valuación de opciones hay dos modelos ampliamente reconocidos como son el modelo binomial y el modelo de Black

Más detalles

I.E.S.MEDITERRÁNEO CURSO 2015 2016 DPTO DE MATEMÁTICAS PROGRAMA DE RECUPERACIÓN DE LOS APRENDIZAJES NO ADQUIRIDOS EN MATEMÁTICAS DE 3º DE E.S.O.

I.E.S.MEDITERRÁNEO CURSO 2015 2016 DPTO DE MATEMÁTICAS PROGRAMA DE RECUPERACIÓN DE LOS APRENDIZAJES NO ADQUIRIDOS EN MATEMÁTICAS DE 3º DE E.S.O. PROGRAMA DE RECUPERACIÓN DE LOS APRENDIZAJES NO ADQUIRIDOS EN MATEMÁTICAS DE 3º DE E.S.O. Este programa está destinado a los alumnos que han promocionado a cursos superiores sin haber superado esta materia.

Más detalles

POLIMORFISMO "una interfaz, múltiples métodos".

POLIMORFISMO una interfaz, múltiples métodos. "una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)

Más detalles

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.

Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación. Unidad II Metodología de Solución de Problemas 2.1 Descripción del problema (enunciado). Este aspecto nos indica describir de manera objetiva la realidad del problema que se esta investigando. En la descripción

Más detalles

Capítulo II. Arquitectura del Software

Capítulo II. Arquitectura del Software Capítulo II. Arquitectura del Software Después de un cuidadoso análisis de los objetivos del proyecto, se determinó que la mejor manera de estructurar el sistema era haciendo uso del muy famoso patrón

Más detalles

10550 Programming in Visual Basic with Microsoft Visual Studio 2010

10550 Programming in Visual Basic with Microsoft Visual Studio 2010 10550 Programming in Visual Basic with Microsoft Visual Studio 2010 Introducción Este curso le enseña sintaxis de lenguaje Visual Basic, estructura de programa e implementación al utilizar Microsoft Visual

Más detalles

00352.3 KW x hora. on/off

00352.3 KW x hora. on/off Proyecto HomeControl. Se desea controlar la temperatura de una oficina con un computador de forma que se consiga el máximo ahorro energético y el confort de sus ocupantes. La oficina tiene actualmente

Más detalles

Capítulo 10. Subtipos y Herencia.

Capítulo 10. Subtipos y Herencia. Capítulo 10. Subtipos y Herencia. Lenguajes de Programación Carlos Ureña Almagro Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad de Granada Curso 2009-10 Autor:

Más detalles

ESCUELA POLITÉCNICA NACIONAL

ESCUELA POLITÉCNICA NACIONAL ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA OPTIMIZACIÓN DE CONTROLADORES DIGITALES PID EN SISTEMAS DINÁMICOS USANDO ALGORITMOS GENÉTICOS PROYECTO PREVIO A LA OBTENCIÓN

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

Herencia e Interfaces

Herencia e Interfaces Herencia Introducción En C# cualquier dato es un objeto porque todos los tipos derivan implícitamente de este tipo, y heredan los métodos y campos definidos en dicha clase. Cada nuevo tipo tiene todo lo

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

Generador de casos de prueba genético

Generador de casos de prueba genético Generador de casos de prueba genético Álvaro Galán Piñero Ingeniería Técnica en Informática de Sistemas, Universidad de Cádiz 24 de Septiembre 2012 1 / 42 Índice 1 Motivación y contexto 2 Planificación

Más detalles

Estructuras de Control - Diagrama de Flujo

Estructuras de Control - Diagrama de Flujo RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS Ingeniería en Computación Ingeniería en Informática UNIVERSIDAD NACIONAL DE SAN LUIS DEPARTAMENTO DE INFORMÁTICA AÑO 2015 Índice 1. Programación estructurada 2 1.1.

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

Curso a distancia: INTRODUCCIÓN AL DISEÑO LÓGICO PROGRAMABLE CON VHDL. Capítulo 3. Codificadores

Curso a distancia: INTRODUCCIÓN AL DISEÑO LÓGICO PROGRAMABLE CON VHDL. Capítulo 3. Codificadores Curso a distancia: INTRODUCCIÓN AL DISEÑO LÓGICO PROGRAMABLE CON VHDL Capítulo 3 Codificadores Codificadores binarios y codificadores de prioridad. Codificadores de 3 a 2 líneas y de 4 a dos líneas. Detector

Más detalles

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA

CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIPLATAFORMA PROGRAMACIÓN DIDACTICA ANUAL Parte específica del módulo: 0485. Programación Departamento de Familia Profesional de Informática Curso: 2014-15

Más detalles

Java: Clases Abstractas e Interfaces

Java: Clases Abstractas e Interfaces Clases abstractas e interfaces Java: Clases Abstractas e Interfaces Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl A nivel conceptual,

Más detalles

A L G O R I T M O S E VO L U T I VO S A P L I C A D O S A L A G E N E R AC I Ó N D E H O R A R I O S PA R A C O L E G I O

A L G O R I T M O S E VO L U T I VO S A P L I C A D O S A L A G E N E R AC I Ó N D E H O R A R I O S PA R A C O L E G I O E S C U E L A P O L I T É C N I C A N A C I O N A L F A C U L T A D D E C I E N C I A S D E P A R T A M E N T O D E M A T E M Á T I C A S A L G O R I T M O S E VO L U T I VO S A P L I C A D O S A L A G

Más detalles

Aplicación Java para distribución de código en R

Aplicación Java para distribución de código en R rolgalan@gmail.com Huesca - 24 de noviembre de 2009 Implementación Descripción problema Existen muchos problemas, cuya resolución informática requiere de un enorme tiempo de cómputo. En la actualidad,

Más detalles

Ingeniería Energética E-ISSN: 1815-5901 orestes@cipel.ispjae.edu.cu. Instituto Superior Politécnico José Antonio Echeverría. Cuba

Ingeniería Energética E-ISSN: 1815-5901 orestes@cipel.ispjae.edu.cu. Instituto Superior Politécnico José Antonio Echeverría. Cuba Ingeniería Energética E-ISSN: 1815-5901 orestes@cipel.ispjae.edu.cu Instituto Superior Politécnico José Antonio Echeverría Cuba Carvajal- Pérez, Raúl Nicolás Un Algoritmo Genético Especializado en Planeamiento

Más detalles

1. Qué tipos de relación hay entre las siguientes clases?

1. Qué tipos de relación hay entre las siguientes clases? Ejercicios Tema 8: Herencia 1. Qué tipos de relación hay entre las siguientes clases? Personal de la Universidad PAS Profesor 1 n Estudiante a) herencia y asociación b) herencia y dependencia c) dependencia

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación Estructuras de datos y algoritmos Facultad de Informática curso 2008-2009 Introducción El objetivo de esta práctica consiste en

Más detalles

Segunda práctica de Programación 2

Segunda práctica de Programación 2 Segunda práctica de Programación 2 La segunda práctica consistirá en el diseño y posterior implementación como proyecto de Netbeans de dos versiones sobre el mismo problema. El tema central de ambas versiones

Más detalles

Tema: Patrones de Diseño.

Tema: Patrones de Diseño. Programación II. Guía 13 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Patrones de Diseño. Objetivos Específicos Implementar la aplicación de patrones de diseño como herramientas

Más detalles

Librería de Algoritmos Genéticos para Arquitectura (LAGA)

Librería de Algoritmos Genéticos para Arquitectura (LAGA) Librería de Algoritmos Genéticos para Arquitectura (LAGA) Genetic Algorithms Architectural Library Carlos Ignacio de la Barrera Poblete designemergente.com, Chile - España cidelab@gmail.com Abstract LAGA

Más detalles

Programación orientada a

Programación orientada a Programación orientada a objetos con Java Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Presentar los conceptos de la programación

Más detalles

ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA

ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA Versión 1.3 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario Servicio

Más detalles

FACULTAD DE INGENIERÍA

FACULTAD DE INGENIERÍA NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Variables y Tipos de Datos PRÁCTICA NÚM. [ 1 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje

Más detalles

CARTA DESCRIPTIVA (FORMATO MODELO EDUCATIVO UACJ VISIÓN 2020)

CARTA DESCRIPTIVA (FORMATO MODELO EDUCATIVO UACJ VISIÓN 2020) CARTA DESCRIPTIVA (FORMATO MODELO EDUCATIVO UACJ VISIÓN 2020) I. Identificadores de la asignatura Instituto: IIT Modalidad: Presencial Departamento: Materia: Eléctrica y Computación Programación II Créditos:

Más detalles

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA Introducción Qué es programar? Idear y ordenar las acciones necesarias para realizar un proyecto (R.A.E) En nuestro contexto: Resolver problemas, Automatizar

Más detalles

Apuntes de Matemática Discreta 7. Relaciones de Orden

Apuntes de Matemática Discreta 7. Relaciones de Orden Apuntes de Matemática Discreta 7. Relaciones de Orden Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 7 Relaciones de Orden Contenido

Más detalles

Tareas 20% Primer Examen Parcial 20% Segundo Examen Parcial 20% Proyecto Final 25% Examen Final 15%

Tareas 20% Primer Examen Parcial 20% Segundo Examen Parcial 20% Proyecto Final 25% Examen Final 15% Introducción a la Computación Evolutiva Dr. Carlos Artemio Coello Coello CINVESTAV-IPN Departamento de Computación Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D.F. 07360

Más detalles

CONTENIDOS. 2. Entidades primitivas para el desarrollo de algoritmos.

CONTENIDOS. 2. Entidades primitivas para el desarrollo de algoritmos. Introducción a la ciencia de la computación y a la programación 1. La computadora CONTENIDOS 2. Entidades primitivas para el desarrollo de algoritmos. 3. Metodología a seguir para la resolución de problemas

Más detalles

Algoritmos genéticos para generación de protocolos incondicinalmente seguros

Algoritmos genéticos para generación de protocolos incondicinalmente seguros Algoritmos genéticos para generación de protocolos incondicinalmente seguros 9 Ignacio Hernández Antón Fernando Soler Toscano 9.1. Introducción Podemos definir protocolos que no dependen de la complejidad

Más detalles

Ejercicios de evaluación de fundamentos de programación en Java

Ejercicios de evaluación de fundamentos de programación en Java Ejercicios de evaluación de fundamentos de programación en Java Jorge Martínez Ladrón de Guevara Editorial EME ISBN 978-84-96285-40-8 Contenido 1. Introducción a Java... 1 Test de evaluación...1 Ejercicios...4

Más detalles

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática Tema 1 Introducción. Arquitectura básica y Sistemas Operativos Fundamentos de Informática Índice Descripción de un ordenador Concepto básico de Sistema Operativo Codificación de la información 2 1 Descripción

Más detalles

Framework basado en Colonias de Hormigas artificiales para la resolución de problemas de optimización

Framework basado en Colonias de Hormigas artificiales para la resolución de problemas de optimización Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Laboratorio de Inteligencia Artificial Framework basado en Colonias de Hormigas artificiales para la resolución de problemas

Más detalles

Caso práctico Alquiler de películas en un vídeo-club

Caso práctico Alquiler de películas en un vídeo-club Caso práctico Alquiler de películas en un vídeo-club Adaptado de Refactoring Martin Fowler, 2000 Supongamos que tenemos que desarrollar una aplicación que gestione los alquileres de DVDs en un vídeo-club.

Más detalles

Segmentación Recursiva de Proyectos Software para la Estimación del Esfuerzo de Desarrollo Software

Segmentación Recursiva de Proyectos Software para la Estimación del Esfuerzo de Desarrollo Software Segmentación Recursiva de Proyectos Software para la Estimación del Esfuerzo de Desarrollo Software J. Cuadrado Gallego 1, Miguel Ángel Sicilia 1, Miguel Garre Rubio 1 1 Dpto de Ciencias de la Computación,

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes

Más detalles

Clases abstractas e interfaces

Clases abstractas e interfaces Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus

Más detalles

Algoritmos Genéticos aplicados a la resolución de problemas de optimización

Algoritmos Genéticos aplicados a la resolución de problemas de optimización 1 Algoritmos Genéticos aplicados a la resolución de problemas de optimización Luis Marco Giménez lmarcogimenez@gmail.com http://www.luismarco.nom.es RESUMEN Los Algoritmos Genéticos, como paradigma principal

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Universidad de Cantabria corcuerp@unican.es

Universidad de Cantabria corcuerp@unican.es Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una

Más detalles

Estructuras de Control - Diagrama de Flujo

Estructuras de Control - Diagrama de Flujo Introducción a la Programación - Introducción a la Computación - Fundamentos de la Informática Ing. Electrónica - T.U.G. - T.U.E. - T.U.R. - T.U.W.- Prof. Tec. Elect. - T.U.T - T.U.M Área de Servicios

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia

Más detalles

? 50 30 20 20 emplear NA 0,788 0,367879 se queda s a 150 275 70-125 se pone s en s a 15 58 200-43 se pone s en s a

? 50 30 20 20 emplear NA 0,788 0,367879 se queda s a 150 275 70-125 se pone s en s a 15 58 200-43 se pone s en s a 350 MR Versión 1 1 Prueba Parcial 1/5 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA: INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación Evolutiva CÓDIGO: 350 MOMENTO: Primera Parcial VERSIÓN:

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

MODELADO DE OBJETOS. {brossi,pbritos,rgm}@itba.edu.ar

MODELADO DE OBJETOS. {brossi,pbritos,rgm}@itba.edu.ar MODELADO DE OBJETOS Bibiana ROSSI, Paola BRITOS y Ramón GARCIA MARTINEZ, CAPIS - Centro de Actualizacion Permanente en Ingeniería de Software Escuela de Posgrado. ITBA. 0. INTRODUCCION {brossi,pbritos,rgm}@itba.edu.ar

Más detalles

Hebras y Sincronización en Java

Hebras y Sincronización en Java Hebras y Sincronización en Java Jonathan Makuc http://jmakuc.ublog.cl Noviembre 2008 Tópicos: 1. Introducción a hebras en Java...2 2. Hebras a través del clase Thread...3 3. Hebras a través de la interfaz

Más detalles

Estimación de parámetros, validación de modelos y análisis de sensibilidad

Estimación de parámetros, validación de modelos y análisis de sensibilidad Tema 6 Estimación de parámetros, validación de modelos y análisis de sensibilidad 6.1 Calibración Una vez que se ha identificado el modelo y se ha programado, necesitamos aplicarlo al problema concreto

Más detalles

APLICABILIDAD DE MÉTODOS DE INTELIGENCIA ARTIFICIAL A LA CALIBRACIÓN DE REDES DE ACUEDUCTO

APLICABILIDAD DE MÉTODOS DE INTELIGENCIA ARTIFICIAL A LA CALIBRACIÓN DE REDES DE ACUEDUCTO APLICABILIDAD DE MÉTODOS DE INTELIGENCIA ARTIFICIAL A LA CALIBRACIÓN DE REDES DE ACUEDUCTO Juan Guillermo Saldarriga Valderrama * Profesor Titular del Departamento de Ingeniería Civil y Ambiental de la

Más detalles