domingo, 2 de noviembre de 2014

Mi primera Web.


Autor: Adiel Palominos F.

Competencia: Creatividad e Innovación.
Asignatura: Desarrollo de Apli. Cliente servidor.


Palabras Clave: Programación, Web, Venta, Óptica.


Descripción de la Actividad.-

El proyecto debe integrar las tecnologías revisadas en clases y puede ser en dos modalidades:

◦ Web: Un sistema creado en base a html, php, mysql y javascript.

◦ Aplicación: Un sistema creado en base a python o java, interfaces creadas en base a librerías gráficas de estos lenguajes y mysql.

Solución

   La idea fue realizar un sistema para venta y sugerencias de lentes, en este se contemplan la interfaz de inicio de la pagina, esta contenía un banner para que el usuario tuviera mas comodidad al estar en la pagina, y también constaba con un menú horizontal donde estaba la sección de productos, novedades, etc:

Interfaz de Inicio



Opciones desplegables



Perfil Productos



También esta pagina consto con un logín, y así mismo con un registro de usuarios, este registro es útil cuando el cliente quiere realizar una compra.

Logín usuario y administrador.-


Registro de Usuarios.-


Contáctenos.-



   El logín que se ve mas arriba tiene el mismo formato que el que utiliza el Administrador, mas las opciones que este tiene son distintas ya que el usuario administrador  tenía acceso a todas las tablas de la base de datos.

Menú de Administrador.-


Las tablas que se utilizaron fueron:

žTabla Administrador(Id_Administrador, Rut, Nombre, Clave);

Tabla Usuarios(Id_Usuario, Nombre, E-mail, Clave);

Tabla productos(Id_Producto, Tipo, Marca, Descripción, Precio, Cantidad, Descuento);

Tabla Ventas(Id_Usuario, Id_Producto, Cant_Venta);

Tabla Ingresos(Id_Producto, Ingresos);

Tabla Consultas(Id, Nombre, Teléfono, E-mail, Tipo_Mensaje,  Mensaje);




Reflexión.-

   Esta forma practica de aprender a programar en web, me facilitó enormemente desarrollar una estructura lógica de lo que es una pagina. Lo fui complementando con los aprendizajes de otros cursos de programación, siendo un gran aporte para ellos también.

Te invito a que compartas tus comentarios o consultas si requieres más información, o que profundice algún tema.


TAREA N°3

Autor: Adiel Palominos F.

Competencia: Aplica las Ciencias de la Ingeniería.

Asignatura: Programación II.



Palabras Clave: Programación, docentes, evaluación, notas.

Descripción de la actividad.-


   Esta actividad fue realizada en el lenguaje de programación de c++.

   El gobierno en su afán de proveer una mejor educación ha establecido una nueva evaluación docente a lo largo del país. Esta evaluación pretende medir cinco contextos fundamentales: expresión oral, expresión escrita, presentaciones, uso de TICs y metodología de evaluación. Este año fueron seleccionados 52000 docentes a los que se les aplicó la evaluación. El ministerio de educación a publicado los resultados en un archivo llamado resultados.csv el cual tiene en cada la línea la siguiente información:


N1, N2, A1, A2; p1: p2: p3: p4: p5

   Donde se almacena el nombre completo (N1, N2, A1, A2) y los valores de la evaluación (p1, p2, p3, p4, p5).

   De acuerdo a los antecedentes anteriores, se deben implementar funciones con distintas finalidades, como mostrar datos, llenar archivos nuevos, evaluar a los docentes, etc.

Descripción de desarrollo de solución.-

   Para dar solución al problema planteado primeramente se analizaron todos los objetivos de la actividad planteada para así dar claridad al objetivo principal.

   Se crearon distintas funciones las que son llamadas a través de una función principal main.

int main (){}


   Esta función main: tiene un menú, este permite mayor interacción de manera eficiente entre el usuario y las funciones.


  • Función extra largo_archivo: Encargada explícitamente de retornar el valor a n, de esta manera se podría usar de una forma más global lo que le permitía ser llamada por todas las funciones.

int largo_archivo(char *nombrearchivo){}

  • Función cargar_datos: encargada de llenar el arreglo doc, esta permite que pueda ser mostrado los datos del arreglo doc.

void cargar_datos(char *nombrearchivo, Docentes *doc, int n, bool tipo){}

  • Función mostrar_docentes: Encargada de mostrar a cada docente con sus datos, este a diferencia del archivo los muestra de una manera más clara y ordenada gracias a su formato de salida.

void mostrar_docentes(Docentes *doc, int n){}

  • Función evaluar_docentes: Encargada de evaluar a cada docente utilizando una multiplicatoria, estos valores se ingresan en un arreglo ‘valores’ y se muestran con sus respectivos docentes.

void evaluar_docentes(Docentes *doc, float *valores, int m){}

  • Función listar_docentes: Encargada de listar los docentes según sus notas.

void listar_docentes(char *nombrearchivo, int num, char *tipo_calificacion){}

  • Función guardar_archivo: Encargada de guardar el archivo salida, este contendría los mismos datos del archivo original pero con otro formato de salida.

void guardar_en_archivo(Docentes *doc, char *salida, bool tipo, int n){}




Reflexión.-

   Este tipo de proyectos se ven muy complejos de realizar pero así mismo son una forma muy útil de poder ampliar el conocimiento de programación. Tras haber realizado el trabajo se puede destacar que resulta sumamente útil para comprender lo que realmente se puede lograr con un lenguaje de programación. Si bien para mi esta actividad me resulto un gran desafío ya que se tuvo que tener en cuenta varios conceptos aprendidos y complementarlos, sin embargo se logró realizar la actividad tras haber invertido un buen tiempo e investigando. Tras esto logre un conocimiento más amplio ya que se llevó a la práctica casi todo lo aprendido.

   Te invito a que compartas tus comentarios o consultas si requieres más información, o que profundice algún tema.
PROYECTO LIBRE: ROBOT EXPLORADOR


Autor: Adiel Palominos F.

Competencia: Trabajo en equipo.

Asignatura: Programación de Robots.


Palabras claves: Nxc, rebotica, ambiente. 


Descripción de la Actividad

   Cada grupo deberá contextualizar una situación de uso del robot NXT, donde la solución considere fuertemente el uso de arreglos y archivos.


Definición de la idea-

   Se nos ha encargado la tarea de programar un robot encargado de recolectar información acerca del entorno de un área específica para así conseguir las herramientas necesarias para su estudio posterior por un grupo humano. El robot deberá ser capaz de recorrer el lugar y generar informes en archivos sobre las condiciones del entorno por medio del uso de sus sensores durante el trayecto y en paradas programadas temporalmente, siendo capaz de predecir el tipo de lugar en que se encuentra y la factibilidad de recorrerlo posteriormente por seres humanos. El robot generara una matriz de con 10 sub arreglos que contendrán en cada uno el valor tomado por los sensores en las distintas generando un .txt con un informe de cada parada y un archivo final sobre una ‘posible’ descripción del entorno.

Implementación.-

   El lugar a explorar estará representado por la pista de competición con paredes, las cuales representaran posibles cerros o desniveles, y dentro de ella habrá puntos de color, que representarán focos de humedad.

Pista.-



   










Solución.-

   Primero, escribimos el pseudocódigo que cumpliera con nuestros objetivos:

  • Definición de variables.
  • sub escribir() //escribe el archivo.
  • sub display() //Imprimir el archivo de texto en la pantalla del nxt.
  • sub explorar() //avanza en el campo de juego durante 10 segundos, siempre y cuando el SensorUS no marque menos de 15.
  • sub parada() //para por un segundo cada vez que el tiempo marca 10 segundos, suma 10 puntos a walls e ingresa valores a las matrices  de acuerdo a condiciones.
  • task registro() //llama a subrutina parada.
  • task explore() //llama a subrutina explorar, escribir, display.



Estrategia de trabajo:

Matías Salgado S: Responsable de la repartición de roles en el trabajo como jefe de grupo, así mismo fue el encargado de la mayor parte de la creación del código fuente, teniendo como resultado final, un robot que fuera capaz de ejecutar las órdenes solicitadas por los programadores.

Ignacio Fierro G: Responsable de filmar, editar y subir los materiales multimedia que se estimaron necesarios para nuestro proyecto, lo cual daría evidencia del resultado final logrado en clases, no obstante también ayudo para el reconocimiento del campo de juego donde nuestro robot se desenvolvería, y de la misma manera dejar claro el objetivo de nuestro proyecto.

Adiel Palominos F: Responsable de los reportes escritos que debía entregar el grupo y a la vez encargado de la mayor parte del informe,  lo que como fin tendría el objetivo de evidenciar todos los puntos que fueron piezas claves en la realización del proyecto, y así mismo dar a conocer todo en mayor profundidad.

   Gracias a los aportes mencionados anteriormente se le pudo dar una solución eficiente a un problema presentado, así mismo, ayudaron a aclarar el propósito y la finalidad que se tenía, teniendo como resultado el correcto cumplimiento del programa el que finalmente se presentaría.   


Reflexión.-

   En esta actividad se tuvieron que aplicar todos los conocimientos aprendidos en el ramo, tanto como lo fueron el uso de programación estructurada, ciclos, condicionales, Arrays en NXC, juntamente con el manejo de archivos. 

   Esta forma lúdica de aprender a programar nos facilitó como grupo enormemente a desarrollar una estructura lógica en el pensamiento. Y así mismo se puede decir que esto, nos ha enseñado a incrementar nuestra creatividad e innovación al momento de crear soluciones a problemas presentes de estos días.

   Te invito a que compartas tus comentarios o consultas si requieres más información, o que profundice algún tema.





Ensayo: experiencia personal.

Entré a la Universidad


Autor: Adiel Palominos F.

Competencia: Comunicación Oral y Escrita
Asignatura: Proyecto Cristiano




Descripción de la Actividad

   Dedicar un momento para recordar esas experiencias profundas que marcaron tu vida, Puede ser una experiencia positiva, negativa. Lo importante es que sea una experiencia que para ti haya sido significativa. 
   Recuerda los contextos de estas experiencias: lugares, tiempos, espacios, circunstancias que rodearon la experiencia. Conéctate con los sentimientos que experimentaste. Exprésalos. 
   Haz un breve análisis de estas experiencias: por una parte lo personal (cómo te han marcado, en qué han influido, qué ha cambiado en ti, etc.), y por otra, lo social (con quienes compartes la experiencia, qué significado tiene para la comunidad, etc.).

Solución (Ensayo).-


Entré a la Universidad

   En el presente año 2014 ingrese a la universidad, este hecho me marco mucho, y así mismo creo que es una oportunidad que sin duda me ayudara a madurar, es un camino donde podré desempeñarme como un profesional, pero en especial creo que me ayudara a formarme como alguien importante para la sociedad.
   Según mi opinión la universidad no solo te hace alguien con una profesión, sino que también te ayuda a crecer como persona, un ejemplo de esto, un profesional analiza un problema desde su punto de vista para poder darle una solución, poniéndose en el lugar de la comunidad afectada. Estas experiencias ayudan a comprender a profundidad los diferentes problemas presentes en nuestra sociedad, la cual para muchos de nosotros son desconocidos cuando cursamos la media, no obstante cuando se ha tenido la oportunidad de estar en un ambiente superior universitario o técnico se pueden conocer muchos de estos, comenzando poco a poco a crear soluciones y a pensar como gente capacitada y madura frente a un tema. Con el tiempo y sin darnos cuenta vamos formando valores, quizás unos más que otros, no obstante esto dependerá de la dedicación que le demos al momento de ponerse a trabajar sobre un problema.
   Todo lo anterior son cosas de acuerdo a mi opinión personal, aun así lo que menciono es  algo que he ido experimentando con el tiempo, ya que problemas que uno veía como una persona normal y solo se quedaba sin hacer nada, las pasa a ver como algo que se debe solucionar, aplicando y poniendo en práctica los conocimientos obtenidos en el estudio, para la consiguiente solución del problema. Considero que la universidad es algo muy interesante ya que me ha abierto los ojos en muchos aspectos, empezamos a ver todo de una perspectiva del experto, el cual tiene el problema y la solución en sus manos, y a pesar de que es primera vez que estoy en una universidad y no es tanto el tiempo que llevo en ella, he pasado y obtenido muchas cosas importantes como las que he mencionado más arriba.
   En conclusión, el hecho de tener la oportunidad de estar estudiando en la enseñanza superior me ha cambiado y marcado profundamente, he ido madurando poco a poco muchas cosas que me hacían un niño en mi forma de pensar y también he podido experimentar muchas cosas nuevas, y espero seguir encontrándome con muchas más sorpresas, y esto último es porque aún queda un largo camino por delante y porque según yo nunca se termina de madurar en esta vida.


Reflexión.-

   Cada joven tiene sus propios puntos de vista sobre estos temas que parecen normales para muchos, no obstante algunos de estos hechos son importantes en la vida, ya que es un mundo con el que uno soñó alguna vez o no se espero estar en el cuando era pequeño.

   Te invito a que compartas tus comentarios o consultas si requieres más información, o que profundice algún tema.




domingo, 28 de septiembre de 2014

GNU /LINUX
INTERFACES GRÁFICAS

AUTOR: Adiel Palominos F.
COMPETENCIA: Gestión en TI.
ASIGNATURA: Mantención y Ad. de Sistemas.

Palabras claves: Interfaces, Sistema Operativo.

   Un entorno de escritorio es un conjunto de software para ofrecer al usuario de una computadora una interacción amigable y cómoda. 
   Es una implementación de interfaz gráfica de usuario que ofrece facilidades de acceso y configuración, como barras de herramientas e integración entre aplicaciones con habilidades como arrastrar y soltar. 
   Se tocaran los siguientes puntos, facilidades de uso, herramientas de gestión y rendimiento de cada una de estas interfaces.

Descripción de la actividad.-

   Instalar un sistema operativo GNU/Linux como estación de trabajo en una maquina virtual o nativamente en un computador.


INTERFAZ UNITY




Facilidades de uso:

   El primero de la lista es Ubuntu. Su entorno de escritorio es Unity, y su funcionamiento es bastante sencillo.
   En la parte izquierda tenemos el Launcher, en el están los accesos directos a algunas aplicaciones, podemos quitar y poner los que queramos. El primer icono de arriba da acceso al menú, en el cual tenemos todas las aplicaciones disponibles y algunas cosas más. En la parte superior tenemos una barra de lado a lado, ahí tenemos los indicadores del sistema, y algunos iconos que nos sirven para apagar el ordenador o ver el calendario entre otras cosas. 

Rendimiento: 

   Unity está caracterizado por su importante consumo de recursos a diferencia de
Gnome el que no consume tanto como Unity pero no es lo más recomendado para
ordenadores con pocos recursos.



INTERFAZ KDE


Facilidades de uso.

   Kubuntu, la derivada de Ubuntu que viene con KDE por defecto, este es un interfaz gráfico muy configurable y personificable, que quiere decir esto, prácticamente cualquier aspecto de él, puede ser configurado, de la manera que uno quiera. 
   Inicialmente tiene una barra en la parte inferior que podemos modificar a nuestro antojo. Tiene un botón con el que accedemos al menú donde encontraremos todas las aplicaciones. Podemos instalarle nuevos menús, según nuestros gustos o preferencias. 

Herramientas de gestión.

General: Aquí se encuentran KFind, búsqueda de archivos, carpetas en el ordenador, Kicker, barra de tareas, Klnfocenter, reúne la información técnica del ordenador, Klipper, portapapeles avanzado, entre otros.

Administración: Aquí se encuentran KCron, planificador de tareas, KNetworkConf, herramienta de configuración de red, KPackage, gestor de paquetes KDE, KUser, administrador de usuarios, entre otros.

Grafismo: Aquí se encuentran KDVI, editor de colores, Kooka, visor de archivos PDF, KlconEdit, crea y edita íconos, KView, visor de imágenes, entre otros.

Multimedia: Aquí se encuentran Kaboodle, reproductor multimedia, KRadio, gestión de una radio, entre otros.
Redes e internet: Aquí se encuentran KGet, gestor de descargas, Kpf, servidor de archivos públicos, Krfb, comparte el escritorio, entre otras.

Organización: Aquí se encuentran Kandy, sincronizador de datos para telefonos móviles, KArm, cronometro de tareas, Kleopatra, gestor de claves, entre otros.

Entre otras…


Rendimiento.

   KDE consume más recursos que Gnome. Básicamente es así porque KDE es algo más, digamos refinado, en sus gráficos y animaciones y en todo lo relativo al aspecto visual del interfaz. En la práctica esto se traduce en que aquellas aplicaciones que pueden correr indistintamente en ambas plataformas gráficas, lo harán con más agilidad, y empleando un tiempo de respuesta más corto en Gnome.



INTERFAZ GNOME




Facilidades de uso.

  Este es un entorno completo, libre, además es muy configurable ya que se puede personalizar prácticamente cualquier cosa. Menús, iconos, tipos de letra, fondo de escritorio, pantalla, tema para las ventanas, sonido o la interacción con las ventanas entre otras.

Herramientas de gestión.

Cuentas de usuario y de grupo: Las GNOME System Tools, ofrecen herramientas útiles para los gestores Linux, incluyendo una herramienta para gestionar cuentas de usuario y de grupo. La herramienta GNOME para gestión de usuario y de grupo proporciona una interfaz simple para gestión de cuenta.

Administración de archivos y carpetas: Nautilus, es un gestor de archivos con un fuerte equipo de desarrollo y una amplia base de usuarios, es posible incluso intercambiarlo al modo de navegador, el cual le proporciona una sensación más similar a la de Windows Explorer. 

Supervisión del sistema: El GNOME System Monitor proporciona la misma funcionalidad. Si usted desea una vista de nivel superior del uso de los recursos de su computadora Linux, GNOME System Monitor puede proporcionar una captura rápida del sistema. 

Revisión de los archivos de registro: El GNOME System Log Viewer es 
comparable con el Visor de eventos de Windows. Bajo la superficie, Linux 
normalmente utiliza el mecanismo syslog, para generar archivos de registro para 
varias aplicaciones, servicios de servidor y mensajes de sistema. 

Entre otras…


Rendimiento.

  Consume menos recursos que Kde, en este las aplicaciones pueden correr de una forma más estable y posiblemente mejor que en Kde. En este punto, también es conveniente saber que existen aplicaciones para Gnome y aplicaciones para Kde que funcionan con las librerías QT y Gtk que utilizan respectivamente cada uno de estos entornos, y que si previamente no se configuran de forma adecuada, vía consola, podrían no funcionar fuera de su entorno gráfico nativo, no siendo 

posible su ejecución fuera de ese ámbito natural.



Reflexión.-

Cada escritorio es completo, según las necesidades de cada cual. 

   Unity es una interfaz amigable y sencilla que muchos conocemos, o solemos usar, este tiene muchas opciones de configuración y es muy amigable al momento de interactuar con el usuario.

 KDE es un entorno de escritorio muy bueno, como he dicho antes tiene muchas opciones de configuración, posiblemente será el entorno de escritorio más configurable.

 Gnome es para aquellos usuarios que se sientan atraídos por los nuevos retos e interfaces novedosas dirigidas especialmente a la tecnología táctil, a los que no les moleste hacer uso del teclado.

 Todos son buenos en lo que hacen, y cada uno de ellos responde a las necesidades de distintos tipos de usuarios. Si me preguntan a mí, yo me quedaría con Gnome.








TRABAJO PRACTICO EN PYTHON
SIMULACIÓN DE LA EVOLUCIÓN

AUTOR: Adiel Palominos F.

COMPETENCIA: Desarrollo de Software.
ASIGNATURA: Programación II.

Palabras claves: Programación, python, genética, simulación.

Descripción de la problemática.-

   La evolución de las especies presenta diversas formas de preservar sus características genéticas a través del tiempo. Una forma de hacerlo es representar un individuo mediante cadenas de genes. Una cadena de genes está constituida por un conjunto de genes de largo N. La presencia de un gen dentro de la cadena está indicada por un valor 1, en caso contrario un 0. Como se muestra en la figura 1.


La descendencia de generación en generación se logra por medio de combinación de cadenas genéticas (padres).  Dicha mezcla puede realizarse a través de los siguientes operadores genéticos.


Mutación: este operador se basa en el cambio de valor de un gen particular. En particular, se considera la mutación de M genes, los cuales son seleccionados de forma aleatoria. Como se muestra en la figura 2.



Cruzamiento: este operador consiste en el intercambio de material genético entre dos cadenas de genes. Se selecciona un punto de corte C y luego a partir de este se intercambian las colas entre dos cadenas. Como se muestra en la figura 3.




Teniendo en cuenta las descripciones anteriores, una población genética puede ser representada mediante una matriz, donde cada fila representa la información genética de un individuo particular dentro de la población.

La tarea consiste en simular la evolución de una población (cadenas genéticas) en el tiempo bajo las siguiente consideraciones empleando python como lenguaje de programación:

1.   Una población compuesta por 10 con diez individuos donde cada individuo posee 15 genes.
2.   La evolución debe estar entre 10 y 1000 generaciones.

3.   En cada iteración debe considerar que deben modificarse una cantidad aleatoria de individuos.

4.   Considere que los D individuos que deben modificarse en cada iteración, pueden ser conseguidos
aplicado mutación y cruzamiento de acuerdo a una probabilidad de selección, es decir, existe una probabilidad de   mutación y una probabilidad de cruzamiento, donde Así, en cada iteración por medio de una probabilidad (numero   aleatorio) se determina si se aplica mutación o cruzamiento. Por tanto, debe realizarse esto hasta completar el número de individuos D. Para la selección de esta probabilidad, considere lo siguiente:

1) Si probabilidad está en el intervalo [0,Pm]se aplicará un cruzamiento a dos individuo al azar, los cuales serán incorporados a la próxima generación.

2) Si probabilidad está en el intervalo[Pm,1]se aplicará una mutación a un individuo al azar.

5.En cada iteración debe mostrarse por pantalla la población completa, luego de haber realizar las modificaciones pertinentes de acuerdo al valor aleatorio D. Recuerde que la población original nunca varía, por lo que siempre habrán 10 individuos.

6.   Una correcta ejecución del programa es:

1) python ./ nombrealumno.py
2) Deben verificarse que los rangos de valores para cada parámetro sean correctos, en caso contrario, deberá indicarse cuál es el parámetro que se incorrecto y detener la ejecución del programa.

Solución.-

Para dar solución al problema planteado primeramente se analizaron todos los objetivos de la actividad planteada para así dar claridad al objetivo principal.

Creación de la población inicial.

   Determinada en el programa, una población  de 10 individuos, cada individuo fue representado por cadenas de genes.
   Para la creación de la población se creó una matriz con dos ciclos for, uno encargado de las filas y otro de las columnas.

        for i in range(f):
                Poblacion.append([])
                for x in range(c):
                    Poblacion[i].append(random.randint(0,1))

Cadena de genes.

   Una cadena de genes estaba constituida por un conjunto de genes de largo 15. La presencia de un gen dentro de la cadena está indicada por un valor 1, en caso contrario un 0.
   Para determinar los valores de la cadena genética, se utilizó un ‘for’ para poder crear sucesivamente de forma aleatoria cada cadena genética de numero 1 y 0.

Selección de individuo.

   Se programaron varios operadores que necesariamente necesitaban de una o dos cadenas genéticas para realizar su operación. Por ello la selección de una cadena genética es de forma aleatoria.
   Para llevar a cabo la selección aleatoria se utilizó ‘random’ que selecciono la posición de una o más cadenas genéticas según el operador que se usara, para posteriormente esa posición ser leída y obtener una cadena genética, posteriormente sería utilizada y procesada por el operador especifico.

Operador de mutación.

   Se realiza mutación sobre genes a los individuos seleccionados,      el individuo resultante de la mutación vuelve a la población mutado.
   Para llevar a cabo el operador de mutación se tomó el valor ‘M’ aleatoriamente, junto con la selección de genes. Se utilizó un ‘while’ para evitar la repetición de posiciones, la variable ‘M2’ determino la posición del número que sería invertido y así dar término a la mutación.

Operador de cruzamiento.

   Este operador consiste en el intercambio de material genético entre dos cadenas de genes. Se selecciona un punto de corte ‘C’ y luego a partir de este se intercambian las colas entre dos cadenas. Para llevar a cabo el operador de cruzamiento se tomó el punto de corte C aleatoriamente y luego se utilizó un for y 2 variables auxiliares para intercambiar las colas.


Descripción  de funcionalidad final.-

   La solución de este programa está estrictamente definido por números random, estos tenían la misión de dar distintos resultados en cada ejecución o iteración (W), así también los distintos operadores dependían de una probabilidad random la cual generaba distintos resultados en el programa.
   El ingreso estaba dado por paso de argumentos a través de la línea de comandos, esto fue posible con la ‘librería sys’, las condiciones de ingreso de datos fueron, que el usuario debía ingresar un numero entre 10 y 1000 para ‘W’, y así mismo una probabilidad de mutación (Pm) y cruzamiento (Pc) que sumaran 1 si no se respetaba una de estas condiciones el programa terminaría automáticamente.

Resultado final.

Como se puede ver en la imagen el resultado varía de acuerdo a una  probabilidad ‘N1’, este es mi número random, este decide sobre si se mutara o cruzara un cierto individuo aleatorio.

Matriz 1, generación 7












 Matriz 2, generación 8






















Como se puede observar en la generación 7 la mutación y el cruzamiento aplicados sobre está, modifican sus individuos (Cruz: 5 y 6, Mut: 7) en los dos casos se puede apreciar el individuo en el que se trabajara y a continuación el resultado (Generación 8) en base a las distintos cambios que estos sufrirán.


Reflexión.-

   Los Algoritmos Genéticos si bien se ven complejo de realizar son una forma muy útil de poder ampliar el conocimiento de programación.

   Tras haber realizado el trabajo se puede destacar que resulta sumamente útil para comprender lo que realmente se puede lograr con un lenguaje de programación. Si bien para mi esta actividad me resulto un gran desafío ya que se tuvo que tener en cuenta varios conceptos aprendidos y complementarlos, sin embargo se logró realizar la actividad tras haber invertido un buen tiempo e investigando. Tras esto logre un conocimiento más amplio ya que se llevó a la práctica casi todo lo aprendido.

   Te invito a que compartas tus comentarios o consultas si requieres más información, o que profundice algún tema.