domingo, 2 de octubre de 2016

Cierre de reto José Rodrigo Narváez Berlanga

El reto fue una experiencia severamente enriquecedora ya que combinó el uso de un lenguaje de programación relativamente sencillo con un tema complejo y amplio como lo es la inteligencia artificial. El haber experimentado con videojuegos. buscar y desarrollar múltiples algoritmos que funcionaran para aumentar la probabilidad de éxito es un tema laborioso y requiere de un adecuado análisis. Además, la investigación sobre la teoría de juegos es muy interesante de conocer, así como su análisis para los programadores que buscan dedicarse a la rama de videojuegos.

Para quiénes están interesados recomendaría conocer adecuadamente el lenguaje de python y que sea de su agrado, para que la implementación de algoritmos sea un reto agradable. Tener cierta noción del significado de inteligencia artificial y que el desarrollo de videojuegos sea un tema que les interese.
Lo que más me agradó del reto fue la competencia de programación ya que en lo personal las competencias son severamente gratificantes y emocionantes, por lo tanto, también disfrute bastante el observar los resultados de los enfrentamientos entre los algoritmos de diferentes equipos para el juego de "oruga".

Para mejorar el reto yo sugeriría dar mayor tiempo a la explicación del framework que se va  a utilizar, así como mayor tiempo para el desarrollo del entregable, quizás ver la película sería ideal desde un principio para que sirviera como una motivación de arranque, de esa forma el final de la semana tendría como gran cierre la competencia de algoritmos y la premiación.

Cierre del reto Pablo Sánchez

•             ¿Qué aprendizajes personales se llevan del reto?
      En el reto aprendí muchas cosas, de las cuales considero las más importantes como: trabajar en equipo y trabajar bajo presión. En la semana tuvimos que pensar muchas veces nuestro algoritmo y la manera en la que íbamos a abordar el problema, pero ya que el tiempo fue limitado no había mucho margen para error. En lo técnico, aprendí sobre cómo funciona el algoritmo de minimax, también recordé y descubrí nuevos métodos y formas de usar Python, también en parte aprendí como implementar algunos algoritmos, pero considero que todavía me falta aprender mucho en ese aspecto.
•             ¿Qué recomendaciones le harían a un amigo que quisiera llevar este reto en un futuro?
      Le recomendaría que lea todo el blog desde el primer día y empiece a trabajar lo más pronto posible, ya que son muy pocos los días para trabajar y es un proyecto que requiere investigar las cosas que no se sepan.
•             ¿Qué actividad les gustó más del reto? 
      La actividad que me gustó más del reto fue al momento de probar todos los algoritmos y ver cómo quedaban los equipos. Otro momento que me agradó fue la competencia de programación ya que así pudimos ver con que nivel contaban nuestros compañeros.
•             ¿Qué actividad les gustó menos?
      El día que se nos capacitó para usar el framework, considero que se le dio mucha importancia. Considero que hubiera sido mejor enfocarnos en los algoritmos y maneras de implementarlos, así como fundamentos de como funciona la inteligencia artificial como tal.
•             ¿Qué cambios le harían a este reto para mejorarlo? 
      Lo que me gustaría ver para este reto en siguientes años, es un poco más de enfoque a cómo funciona la inteligencia artificial. En esa ocasión, habían 2 ejemplos antes del proyecto, pero considero que una explicación sobre cómo se aborda cada problema y como se pudieran utiliza los algoritmos hubiera sido mejor.


Cierre del reto Tomás Bravo Ortiz

Gracias a este reto logré adquirir los conocimientos básicos sobre la Inteligencia artificial, también pude poner en práctica lo aprendido en este reto junto con mi equipo para desarrollar un algoritmo y posteriormente poner la prueba contra el algoritmo de los demás equipos. De manera personal, lo aprendido en este curso me será de gran ayuda Ya que en un futuro podría estar interesado en trabajar en un área cómo esta.

Yo le recomendaría a este amigo que si en verdad está interesado en llevar a cabo este reto, desde un inicio haga su mejor esfuerzo ya que no es fácil entender ni de ponerlo en práctica. Ya que posteriormente si logra los resultados esperados Será muy grande su satisfacción y también muy amplios sus conocimientos adquiridos.

En lo particular la actividad que más me gustó del reto fue la de concurso de programación. Ya que en este concurso tuve la oportunidad de poner a prueba todos los conocimientos adquiridos en el primer semestre de la carrera además de que junto con mi equipo logramos obtener el tercer lugar en esta competencia.

La actividad que menos me gustó fue la conferencia que se nos impartió el último día de la semana i. La persona que dio esta conferencia lo hizo muy bien sin embargo el tema no fue mucho de mi interés. De cualquier forma le agradezco mucho el habernos regalado un poco de su tiempo para venir a hablarnos de este tema.

En general considero que el reto está muy bien organizado y muy completo. Quizás Sería muy bueno extender tiempo del desarrollo del algoritmo un día más, para que de esta forma los equipos puedan desarrollar su algoritmo de una forma más estratégica y poder obtener mejores resultados al momento del torneo final.

Agradezco mucho a los profesores encargados por su gran esfuerzo y preparación de este reto.

viernes, 30 de septiembre de 2016

Ex Machina

1.      Is Nathan a reliable or unreliable narrator of his own motives and story?  What can we say with certainty that we know about him or his actions in the film?
Al contarle la historia a Caleb nunca le miente, pero habían otros intereses que Caleb no podía saber para que la prueba fuera exitosa.
2.      Does Caleb ever do anything we would consider truly unethical? Does he “deserve” his end?
Confió mucho en una máquina la cual no conocía. Opinamos que se merecía quedar encerrado por confiar demasiado en Ava.
3.      Speaking of the ending – how many legitimate storylines can you draft for the final scenes in the film? (“Legitimate” means the words and actions on screen as well as the previous scenes can support the storyline you suggest without breaking people’s expectations for story structure, honesty, or common sense.)
Que al final Ava ayude a Caleb porque demostró tener y sentir sentimientos hacia Caleb.
4.      Do you think there are any plot holes in the film?
Cuando Caleb se cortó y sangró, no entendimos muy bien porque lo hizo.
5.      Before Ava “puts on” the skin of the other robots, do you think she passes the Turing Test? In other words, is her sentience / conscious awareness enough to allow her to exist with humans, or must she also take on the form of humanity?
Según nosotros si, porque previamente demostró inteligencia y la capacidad de fingir ante Caleb, lo que provoca que pase como otra persona más.
6.      Kyoko is a disturbing character to watch. What do her interactions with the other characters show us about Nathan, Caleb, and Ava? And about herself?
Con respecto a Caleb, desde un inicio demostró actuar como un humano, y cuando le revela que es un robot, hace que se vuelva loco.
Con Ava se comunicaba bien, porque ambos eran robots.
Kyoko demostró inteligencia y actuar como humano ante Caleb.
Nathan solo la usaba como objeto sexual.
7.      If you say it fast enough, Bluebook sounds a lot like Google. The similarities were thinly veiled. What does the film say to us about the dangers of our technophilic world?
El peligro es la falta de privacidad y el alcance a la información que pueden llegar a tener las grandes empresas.



jueves, 29 de septiembre de 2016

El torneo de estrategias

En esta fase final del reto de inteligencia artificial, nos sentimos muy satisfechos ya que finalmente habíamos creado algún algoritmo competitivo. Después de 2 días de tantas pruebas, correcciones de errores y de mucho esfuerzo, logramos finalizar nuestro código.

Cuando iniciamos este reto, nuestro conocimientos sobre el tema eran casi nulos. Ahora que estuvimos en esta recta final, nos sentimos muy bien con nosotros mismos de haber entendido el tema y de haber desarrollado nuestro propio algoritmos para poder concursar contra los demás equipos. No fue fácil, pero por alguna razón nos encontramos estudiando esta carrera y decidimos tomar este reto.

El día de hoy fue un día de muchos nervios, ya que no sabíamos cual iba a ser nuestro resultado final en el torneo de competencias. Pero también teníamos mucha seguridad, porque teníamos certeza que nuestro algoritmo nos iba a traer resultados muy buenos.
Al inicio del torneo, el equipo se desanimó ligeramente, ya que nuestro algoritmo solo logró ganarle 68 partidas de 100 al jugador aleatorio. Posteriormente nos aproximamos a la emoción del enfrentamiento entre algoritmos de diferentes equipos, sabíamos que los resultados iban a cambiar por el hecho de que los algoritmos de la mayoría estaban diseñados para ganarle a un jugador aleatorio, nos sentimos muy bien ya que logramos superar a 7 equipos.

Si hubiésemos tenido más tiempo para el desarrollo de nuestro algoritmo, habríamos mejorado nuestra técnica de minimax para lograr obtener mas niveles del árbol de opciones, o un método de lectura directo sobre el mejor movimiento posible del otro jugador y así desplazarnos adecuadamente. Muy probablemente con esa mejora hubiéramos obtenidos mejores resultados en el torneo de estrategias. Para el limitado tiempo que se tuvo para cumplir este reto, nos sentimos muy bien con nuestro logros obtenidos, sin embargo sabemos que pudimos esforzarnos más.

A pesar de que se presentaron algunas fallas técnicas, el torneo estuvo muy bien organizado. Hubo emociones de todo tipo en los equipos concursantes. En general nos agradó bastante el desarrollo que tuvo este torneo y consideramos muy adecuado el dar un puntaje extra a quien logró desarrollar un algoritmo efectivo y estratégico.

Agradecemos a nuestros profesores responsables de este reto por orientarnos desde un inicio, por su gran esfuerzo de desarrollar los 3 tipos de juegos y del torneo. No es fácil llevar a cabo este tipo de retos y ellos lo hicieron muy bien.


miércoles, 28 de septiembre de 2016

Programando un juego estratégico


El diseño de nuestro proyecto se basó en un algoritmo minimax, en el espacio máximo posible, es decir, 10x10. Implementando nodos que nos ayudaran a llegar al estado terminal del resultado.
Entre las dificultades podemos afirmar que la búsqueda por encontrar los movimientos disponibles una vez realizado un tiro nos resultó laboriosa, además, la implementación de una gran cantidad de nodos, forzaba un mayor uso de memoria y nuestro algoritmo rebasaba el tiempo permitido (2.0 segundos). Otra de las dificultades que se nos presento desde un inicio fue encontrar el mejor algoritmo para ganar el juego la mayoría de las veces.

Para resolver el problema relacionado con la implementación del árbol, le solicitamos ayuda al responsable de nuestro reto, a quien agradecemos su disposición y consejos para hacer de nuestro proyecto algo mucho más eficiente y óptimo. La colaboración en equipo también fue de gran importancia, ya que hubo apoyo entre miembros cuando se nos presentaba cualquier dificultad.
Nos agradó bastante el diseñar nuestro propio algoritmo que le ganara al jugador de estrategia aleatoria. Y de que nuestro profesor nos diera la oportunidad de obtener mas porcentaje si nuestro algoritmo le ganaba al menos un 70% al jugador aleatorio, nos motivaba más, ya que veíamos que muchos de nuestros equipos enemigos habían desarrollado estrategias muy buenas, casi imposibles de superar.

Desafortunadamente por motivos de tiempo el equipo no tenía listo en su totalidad el algoritmo fabricado para probarlo en el pre-torneo realizado el día de hoy y hacer un análisis de su efectividad.

Algo que nos gusto del proyecto, es que es algo diferente a los típicos trabajos de la universidad y que se aplica muy bien para poder entender la inteligencia artificial y poder crear nuestros propios algoritmos.


martes, 27 de septiembre de 2016

Teoría de juegos

La teoría de juegos abarca cualquier situación donde un individuo utiliza su raciocinio para realizar alguna interacción con algo que se lo permita o solicita, de manera óptima. En la vida cotidiana podemos encontrar que diariamente se nos presentan eventos donde utilizamos la teoría de juegos, ya que para la toma de decisión utilizamos, en su mayoría, una estrategia que nos permita aumentar la probabilidad de obtener los resultados que buscamos.

Ha sido relevante porque tiene como objetivo el estudio de los comportamientos de jugadores, obteniendo como resultado un análisis preciso de la toma de decisión en un entorno competitivo o de diferentes intereses, especialmente en el mundo de la computación donde existe la posibilidad de creación de jugadores con distintas estrategias para el apoyo del estudio o la creación del mismo.

La actividad del día de hoy puso en práctica la teoría de juegos, ya que al presentarnos diferentes escenarios de juego, donde era posible la actuación de jugadas basadas en alguna estrategia, se implementaron óptimas decisiones que el jugador virtual debía tomar con el fin de conseguir el objetivo con el mínimo riesgo de fracaso.

¿Qué fue lo que más les gustó del taller de hoy?
Fue muy interesante buscar estrategias óptimas para un juego, especialmente porque la utilización de la programación refuerza nuestras habilidades y facilita el análisis de comportamientos. Otra cosa que nos gusto mucho fue que nos dijeran que nuestro código de la estrategia que hagamos iba a competir con la de los demás equipos, lo que nos motiva a pensar muy  bien para conseguir los mejores resultados posibles.

¿Qué dificultades vislumbran en este momento sobre la elaboración de su proyecto del jugador estratégico para el juego de Orugas?
Es ligeramente complicado adaptarse al código que no es de nuestra autoría, poner en práctica los conocimientos adquiridos en un programa en el cual el alumno busca familiarizarse.

Referencias:

Martínez Ferreira Matías. (2005, febrero 2). Teoría de juegos. Recuperado de http://www.gestiopolis.com/teoria-de-juegos/

lunes, 26 de septiembre de 2016

Concurso de Programación



Experiencia durante el concurso de programación


Qué problemas se les hicieron más fáciles y/o más difíciles.


La multiplicación de binarios fue sencilla debido a que Python 2.7 facilita la conversión de bases sin el mayor problema, otro sencillo fue el bit de paridad ya que se basaba en contar la cantidad de veces que aparecía el dígito "1" en una cadena.

Se le dificultó al equipo el problema F ya que el tipo de fuente desajustaba el acomodo del resultado, debimos probarlo en un inicio desde consola.

Otro problema difícil fue el G ya que al momento de imprimir la moda, se imprimía el número de veces que se encontraba en la entrada original.

Qué fue lo que más les gustó y/o disgustó del concurso.

Al equipo le gustó que haya sido por elección libre sus integrantes y la claridad de los problemas presentados, el concurso fue fluido y muy agradable.

También otro buen punto es que el juez daba puntos dependiendo del número de casos que el programa lograba resolver.

Algo que nos disgustó es que éramos muchas personas en un salón y había mucho ruido, por lo que nos distraíamos demasiado, aparte de que no habían suficientes clavijas para conectar nuestras computadoras.

Qué aspectos o técnicas de programación necesitan mejorar o conocer más a fondo.


Conocer a fondo los distintos tipos de output y como usarlos adecuadamente.

Tenemos que practicar más las diferentes estructuras de datos y saber en que cases se pueden aplicar mejor para obtener los algoritmos de una manera más rápida.

Algo que se nos complicó es que ya estábamos acostumbrados a Java y tuvimos que recordar muchas de las funciones que nos enseñaron en Python.

Qué otros aprendizajes obtuvieron de esta actividad.

La colaboración en equipo es importante y debe de existir una distribución equitativa de roles, los miembros del equipo deben saber apoyarse el uno al otro cuando lo necesiten.


Presentación personal Tomás Bravo Ortiz

Mi nombre es Tomás Bravo Ortiz. Actualmente estudio el 3er semestre en la carrera de Ingeniería en Sistemas Computacionales, en el Tecnológico de Monterrey, Campus Estado de México.

Lo que espero de esta semana i, es adquirir los conocimientos básicos para el desarrollo de algoritmos de juegos, ya que en un futuro me gustaría mucho trabajar en un compañía que se dedique a desarrollar juegos en linea.

Uno de mis pasatiempos favoritos es jugar ajedrez, desde que iba en secundaría aprendí a jugarlo y me gusto mucho, ya que es un juego que te pone a analizar, hacer estrategias y pensar de manera lógica.
Otra de las cosas me encanta hacer es jugar en linea. Los juegos que mas he jugado son League of Legends y Overwatch. Me encanta esta modalidad de juegos porque te permite conocer a gente con tus mismos gustos, al mismo tiempo que puedes jugar con los amigos que ya conoces y tener un tema más de conversación.
También algo que me apasiona hacer es bailar salsa cubana. Es un estilo que aprendí hace un semestre y es un tipo de baile que ha empezado a agradarme mucho.

Mis películas favoritas son: Piratas del Caribe, las películas de Marvel y una en especial que se llama Lucy. En general me atraen mucho las películas que sea de acción, de cómics o simplemente alguna película que tenga una muy buena historia.
En relación a la música, me gusta mucho la electrónica. Y últimamente también me ha empezado a gustar la música de salsa,

Me gusta mucho también la comida, en especial la mexicana. Pero también la comida italiana es una de mis favoritas.
Uno de mis más grandes sueños es poder viajar a París, ya que me parece una ciudad muy linda y además estuve estudiando francés durante tres años, así que seria muy buena oportunidad para practicar el idioma.



Presentación personal Pablo Sánchez

Soy Pablo Alejandro Sánchez Tadeo y estoy estudiando 3° semestre de la carrera de Ingeniería en Sistemas Computacionales.

De la semana i espero comprender y aplicar los conceptos básicos sobre la inteligencia artificial, ya que es un tema relevante que va a tener más importancia en un futuro, también espero mejorar mis habilidades de trabajo en equipo y mi capacidad de trabajar bajo presión. Espero que la competencia sea saludable y con grandes proyectos que nos hagan llegar más allá de lo que nos creemos capaces de hacer.

El área de las computadoras me ha llamado la atención desde secundaria, más especificamente, los sistemas operativos. Desde que tuve mi primer computadora, me ha asombrado lo complejos y a la vez sencillos que pueden llegar a ser estos sistemas. Me gusta ver más allá de lo que se puede hacer con estos sistemas, que tantas cosas se les pueden hacer y/o hacer con ellos. En los últimos años el sistema que me ha llamado más la atención es Android, ya que debido a que es de código abierto, se pueden hacer infinidad de modificaciones e instalar sistemas personalizados, lo cual me agrada bastante ya que no me gusta que las cosas sean igual por demasiado tiempo.

Soy una persona tranquila y bastante tímida cuando no conozco a alguien, pero me llevo bastante bien con las personas que ya me conocen. Me gustan demasiado los autos e investigar sobre ellos, estuve a punto de estudiar ingeniería en sistemas automotrices por esto, pero descubrí que el desarrollo de software es mi verdadera pasión. También me gusta tocar la guitarra.

No soy una persona que vea muchas películas o series, pero definitivamente una de mis películas favoritas es Back to the Future. En cuanto a música, soy muy abierto, mis géneros favoritos siempre han sido Hard Rock y Blues, últimamente escucho un poco más de música electrónica.

Presentación personal Rodrigo Narváez

José Rodrigo Narváez Berlanga

A01377566

Ingeniero en Sistemas Computacionales

Soy Rodrigo, vivo actualmente en el Estado de México y espero que en este reto pueda poner en práctica mis conocimientos en Python 2.7 y mejorar mis habilidades. Además, espero que esta experiencia de introducción a la inteligencia artificial sea severamente enriquecedora y que mi calificación sea resultado del gran esfuerzo que como integrante realizaré. Espero de mi equipo una gran colaboración y apoyo mutuo, así como de una convivencia basada en el respeto.
He encontrado muy atractiva e interesante la programación, puedo pasar largos periodos de tiempo aprendiendo o tratando de descifrar un problema sin sentir el tiempo pasar, aprender nuevos lenguajes es un reto muy agradable. Siempre me ha gustado mucho el hardware, me gusta investigar de los nuevos componentes que puedan mejorar el desempeño de mi laptop, así como de su forma de actuar.
Entre mis pasatiempos podemos encontrar principalmente los videojuegos que son mi mayor fuente de entretenimiento cuando tengo tiempo libre, especialmente los de rol, o shooters en primera persona, también práctico algunos deportes como lo es la natación y el tenis, ambas son actividades físicas muy completas.
Me interesa enfocarme en ambientes de seguridad computacional o de inteligencia artificial, me agrada leer libros de personajes importantes que puedan compartir lecciones de vida y me aporten conocimientos en la toma de decisión, de preferencia que inspiren al crecimiento. Aunque también puedo leer obras de ciencia ficción que exploten mi imaginación. 
Actualmente disfruté mucho ver la última temporada de Game of Thrones por la inigualable calidad de su producción así como de su atractiva historia, el guión muy serio en un mundo tan ficticio. En cuanto a gustos musicales puedo afirmar que me gusta mucho la electrónica he intento ir a conciertos cuando se me presenta la oportunidad, el ambiente es agradable.