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/