Sistemas Inteligentes: Reportes Finales 2012

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

Download "Sistemas Inteligentes: Reportes Finales 2012"


1 Reporte Tecnico Sistemas Inteligentes: Reportes Finales 2012 Gildardo Sanchez-Ante, Editor Tecnológico de Monterrey Campus Guadalajara in: Reporte Tecnico RT See also BibT E X entry below. BibT E Inteligentes: Reportes Finales 2012, author = {Gildardo Sanchez-Ante, Editor}, title = {Sistemas Inteligentes: Reportes Finales 2012}, journal = {Reporte Tecnico RT }, institution = {Tecnologico de Monterrey, Campus Guadalajara}, month = {Junio}, year = {2012} } copyright by the author(s) document created on: 21 de junio de 2012 created from file: RepFinalesEne2012.tex cover page automatically created with CoverPage.sty (available at your favourite CTAN mirror)

2 Prefacio Uno de los principales objetivos de cualquier universidad es la generación de conocimiento. Pero generar conocimiento no tiene mucho impacto si éste no es compartido. Es asi que en este documento presentamos por primera ocasión los resultados de los proyectos finales del curso de Sistemas Inteligentes de la Maestría en Ciencias Computacionales que se han desarrollado en el Tecnológico de Monterrey-Campus Guadalajara durante el semestre Enero-Mayo de En el documento el lector podrá encontrar aplicaciones de diversas técnicas y herramientas de la Inteligencia Artificial a problemas muy variados. En esta edición hay trabajos con un enfoque más bien teórico-empírico como la programación paralela de algoritmos para la resolución de problemas de SAT, hasta modelos de sistemas Multiagente en Videojuegos, pasando por modelado y predicción con redes neuronales del mercado de divisas, y varias otras interesantes aplicaciones. Idealmente cada año estaremos publicando un documento similar a éste y esperamos con ello desde el dar ideas de posibles trabajos futuros en estos temas, como también dejar constancia del crecimiento y madurez de nuestro programa de posgrado. A los alumnos que llevarán el curso más adelante, espero les sirva de motivación para desarrollar proyectos y reportes de los que se puedan sentir orgullosos. Junio 2012 Gildardo Sánchez-Ante Profesor

3 Índice general Sistemas Inteligentes Massive Epic Battles Priscila Cedillo, Leonardo de la Cerda, and Guillermo Hernández Implementación de GSAT y SASAT en computación paralela Ricardo Sansores, Oswaldo Rubio, and Julio Mata "Juego de la no vida": Autómata celular para representación de una infestación zombi Pablo de Jesus Orbe Rosas and Joel Xocotzin Granados Rueda Modelo para apoyar la toma de decisiones sobre la deserción estudiantil en una universidad usando cadenas de Markov Aldo Gutierrez, Jorge Mendez, and Alex Amaya Face recognition and identification using Open CV and Fast Artificial Neural Networks Hugo Enrique Arias Godoy and Hector Daniel Andrade Groppe Neural Networks as support in decision making on ForeX Trading Ricardo Rocha Dominó cubano Carlos Fernando de Santiago Ramírez and Jorge del Río Santiago

4 Massive Epic Battles Priscila Cedillo, Leonardo de la Cerda, and Guillermo Hernández Tecnológico de Monterrey, Campus Guadalajara Resumen Real-time strategy games make use of many artificial intelligence techniques in order to give these games a more autonomous behavior, enabling them to take decisions by themselves. In the case of massive epic battles, we make use of AI to built a mini game engine. This article introduce to some AI techniques that are now implemented in RTS field, and look for evaluate them by implementing them in a small strategy game. 1. Introduction This article puts in consideration some of artificial intelligence techniques employed in the field of Real Time Strategy games. It aims to introduce concepts like RTS, pathfinding, swarming behavior, and proper artificial intelligence techniques such as finite state machine. Then evaluate its implementation as part of the game logic of a strategy game like massive epic battles. Massive epic battles, aims to represent a mini game engine in which we can integrate some artificial intelligence techniques, described throughout this article. The road-map of this paper is as follows: In Section II, we formulate the problem, and we describe each one of the techniques we make use of. In Section III, we describe the experiments performed and their results. In Section IV. we discuss the pros and cons using the simulations result and finally, we expose our conclusions 2. Problem Definition Massive Epic Battles is a real-time strategy simulation game, that aims to exploit to the maximum each army s resources with the goal of defeating its opponent. In the game map exist two armies, each of one has to find a holy relic (known as the flag) that was stolen and it was placed in somewhere in enemy territory. To find the best route to its relic, each army has to implement a search method. In this case the army needs to implement searching algoritms, which allow to select the best route to a target within all possibles, from a designated spot as goal.

5 2 Priscila Cedillo et al. As soon as both armies find each other, a battle takes place. Each soldier has a finite amount of life and some actions that he can take given the current situation. Each army acts as a commander, like if there was a human playing, the army receives all the information of the game from its team members, and they can act as what we would call an intelligent behavior a swarm. Each army must be capable of performing a set of predetermined actions in response any situation that may arise. Everything happens in real time, so the AI must control all units and its knowledge appropriately to manage its army, and to think and react very fast Real Time Strategy game A Real-time Strategy (RTS) game is a game in which the players use resource gathering, base building, technological development and unit control in order to defeat its opponent(s), typically in some kind of war setting. The RTS game is not turn-based in contrast to board games such as Risk and Diplomacy. Instead, all decisions by all players have to be made in real-time.[2] Elements RTS games are composed of a number of elements. The first of them is the map, which has a limited size and can contain other elements such as: grass, water, mountains, etc. Some of them facilitate movement within the field and others are obstacles.[5] The second element are the characters, in the case of the analyzed game are represented by soldiers grouped in an RTS games there are a lot of different units which the player can choose to use in his army. Each unit type has different strengths and weaknesses and therefore, different game situations call for different unit types[4]. The last element in strategy games is buildings. There are often a lot of different buildings in RTS games which all have their own functionality, for example to train new military units, turn resources into money, supply your army with food or to research new technology. [4] ( see Fig. 1.) However, to simplify the problem, we will not include any buildings in this mini-engine. Figura 1: Real Time Strategy Games

6 Massive Epic Battles Path Finding Path finding in the contex [6]of real-time strategy games concerns the way in which a moving entity finds a path to a given goal, considering an area with obstacles.[9] Path finding is an expensive task that consumes significant amount of computing resources like CPU cycle and memory. So, an efficient and inexpensive approach is needed, otherwise the performance of the game may degrade.[1] For path finding, usually considered the field as divided by a superimposed grid, which is composed of tiles,which act as nodes in the pathfinding algorithm, as is the case of many real-time strategy games like: Ages of Empire, Alpha Centauri, and The Sims. Each step over a tile, has a cost. (Fig. 2.) [1] RTS games typically contain large areas of open terrain which is often relatively simple to find a route across it, although it is common that more than one unit travel simultaneously; this creates a different need, therefore more complex search algorithms are required to avoid traffic jams or when units come into contact with each other.[3] Figura 2: Path Finding 2.3. Swarm Behavior Swarming behavior is the collective behavior shown by animals of similar size, which remain together, possibly moving in the same place or move together toward a common goal.[10] The term swarming is applied particularly to insects, but can also be applied to any other entity that exhibits this behaviour. (Fig. 3) From the viewpoint of mathematical modeling, swarming behavior is an emergent behavior arising from simple rules that are followed by individuals but involving no central coordination. The first simulated of swarm behaviour on a computer was in 1986 with the simulation program boids. It simple agents (boids) that are allowed to move according to a set of basic rules.[11] Swarms generally represent individual entities as following three rules:

7 4 Priscila Cedillo et al. Figura 3: Swarm Behavior 1. Move in the same direction as your neighbors 2. Remain close to your neighbors 3. Avoid collisions with your neighbors Many current models use variations on these rules and implementing them through the concept of concentric zones around each entity. In the zone of repulsion, the central entity will try to distance itself from its neighbours to avoid collision. In the zone of alignment, the central entity will try to align its direction of motion with its neighbours. In the zone of attraction, the central entity will seek to move towards a neighbour.[11].(see Fig. 4) Figura 4: Concentric Zones 2.4. Fog of War Iis a very common characteristic of strategy games and means, that a unit only can see the part of the map where he currently has either allied units or visual sight [8]. The rest of the map will be covered by a fog that makes it impossible for the army to see what happens at those positions. Therefore it is important for a player or AI to continue to scout the map to see what to enemy is doing[4]. In our example, since there will be no real player but two AI armies, the fog of war is calculated by allied units. But the whole map is visible to the spectator (the user)

8 Massive Epic Battles Artificial Intelligence in strategy games There are a number of areas in strategy games that need to be controlled by AI, here are some different types of AI s that we can focus on [4]: Individual units behavior AI One of the basic roles of the AI in RTS is to control the behavior of individual units. This includes path finding and it also includes the behavior of units in a battle, for example make a unit fight back when it was attacked by enemy units, make a unit attack enemy units when ordered to attack enemy units in a given area and so on. How intelligent are the individual units varies from game to game.[5] Among the RTS games, AI can implement macromanagement or micromanagement, depending on the complexity of the game.micromanagement includes moving units to avoid enemy fire, making all units focus their fire on selected enemy units or surrounding enemy units so they cannot escape. Macromanagement, on the other hand, build up huge armies and then simply order the entire army to attack enemy units in a given area, without for example specifying specific targets. Therefore some balance of the individual units behaviour is needed that will be useful for both AI s implementing micromanagement and those preferring macromanagement. Medium-level strategic AI This AI is in control of 5-30 units [4] and is created when the higher level AI decides to for instance attack the enemy base. The primary role of this AI is to make sure that the attack takes all units strengths and weaknesses into consideration (both own and enemies) to make sure that the army is not wasted by for example letting an army of soldiers walk into a base defended by archers. [4]. Terrain Analysis AI Maps in strategy games can differ a lot from each other. Some might be open deserts or consist of islands. Therefore the AI needs to make an analysis of the terrain to be able to determine how to defend its base, how to attack the enemy. This analysis is normally done by sending cheap units out to explore the map and should be done continuously.[6] In our example we have different terrain, and each different terrain has a cost of traversing it. Omniscient or Cheating AI It could be chosen to let the AI be unaffected by the fog of war mentioned earlier. This would mean that the AI always was aware of what the opponents were doing and would therefore not need the reconnaissance component.[7] The main reason for choosing the possibility of letting the AI cheat is that it makes the development of the AI less complicated since a lot of the components

9 6 Priscila Cedillo et al. can be removed from it. Furthermore this is a way of making the AI put up a good fight against even very good human players.[8] In our example we do not have a cheating AI, but we have an omniscient instance that keeps track of what is happening with both armies and acts as an arbiter. State Machine A finite state machine is a commonly used technique for letting an object behave differently in different situations and can, if wanted, be implemented with a simple switch statement.[12] A state machine consists of four main elements [13] (see Fig. 5): states which define behavior, state transitions which are movement from one state to another, rules or conditions which must be met to allow a state transition, input events, which are either externally or internally generated, and which may possibly trigger rules. Figura 5: FSM Logic 3. Description of the experiments Massive epic battles in a simulation of a RTS game, it intended to test the techniques of artificial intelligence applied to strategy games and considering that real-time graphing is not the subject of analysis in this article; by which the characters and objects on the terrain, are not rendered in real time, they were created previously and are preloaded at startup. The game is develops in a 2D field, in which is randomly located two armies.

10 Massive Epic Battles Game structure The game consists of several entities working together, among which are the following: GameLogic It handles all the logic and game rules. It gives the action shifts to the armies and soldiers. Manages the rules of physics and collisions, every time that someone hits someone else, this damage is reported to the affected warriors and their respective armies. It also has knowledge of what comprises the field of view of each warrior and each army. World To represent the field and keep omniscient track of the game development, we implement the class Word. Logically the terrain is represented by a grid which contains Tiles, which are at the same time A* (a star) nodes, contributing to the implementation the search method that shares its name. It has knowledge of how the world is constituted and what objects live in it. PathFinding It provides the necessary tools to navigate the grid, and based on this, it finds the shortest path from one coordinate to another. It will be used for the warriors to travel and find their path across this world. Army it is an entity primarily oriented to handle the artificial intelligence of the game, which aims to coordinate the behavior of the army. It communicates overall goals and objectives to each warrior. It has knowledge of the damage received and the field of view of all the warriors in the army. Warriors There are 2 types of warriors: soldier and archer. The soldier specializes in short-range attacks, while the archer will have long range attacks. Each warrior will receive his goals from Army, while he will make the decisions about movement and attack by himself. From GameLogic he will also receive his viewing area (fog of war) and damage done to his body AI techniques used For handling the game Äôs artificial intelligence we implemented a state machine, which is based on the state of the army and the warriors, it has to take pre-established decisions and it must follow them rigorously. And it also considers: the warrior s life, proximity to other members of his army and proximity to the enemy. To find a path inside a zone from a point A to another point B, we use A* search. It finds the least-cost path from a given initial node to one goal node.

11 8 Priscila Cedillo et al. State Machine A soldier can have the states healthy, wounded and dead. If he is in the state healthy he will engage the enemy soldiers in battle without thinking too much about avoiding enemy fire. When his health drops below 50, he may flee. In this way the behavior of a soldier can be controlled. A* algorithm The tile class has some methods, through which the characters can find the best route between their current position and their goal. The general idea is that you start at the start node and look only at the adjacent nodes. Taking the cost to reach each of those nodes into account, the algorithm also uses a heuristic to get a best- guess estimate of how much it would cost to get to the goal from that node. A* can find a path across a grid with completely random obstacles Game Description Armies: There are 2 armies that fight each other to get their enemy flag. Each army is assigned a finite number of soldiers which can be: soldiers and archers The Army Class will have one general objective of the whole army and so notify all the warriors Warriors: There are 2 types of warriors: Soldiers and Archers. The Warrior behavior for computational purposes can be seen as a circle, with a direction of where he is looking at. Any attack that falls inside this circle will hurt the warrior. The warrior has another larger circle represents his attack s area. Contains an amount of HP (hit points), this number will acts as his life, it will drop as damage is received A third circle will indicate his line of sight, whereas more bigger is his line of sight, the warrior can view more objects in the world. Warrior s actions: All warriors handled the same programming. The difference is in the order of the actions, that each one can perform. There are five kinds orders that warriors can receive: attack, defend, move, findflag or rotate. Attack: A soldier can attack with his sword, computationally it is represented as a circle, where the center is the range of attack of the soldier. While an archer attacks directly with an arrow, but it will cause less damage the farther the target is. Defender: If in the warrior s vision field, he finds an enemy and this is in a radius R (defined) of the position was given to him, He ll walk to him and if him is in his attack range, the warrior will attack this enemy. If there is no enemy near the position received, The warrior will walk into that position.

12 Massive Epic Battles 9 Move: The warrior moves on his direction vector with a magnitude defined by his speed from the time between the last frames to the actual one. findflag: Each warrior walks with a random pattern. If he finds an enemy or a flag, has to reported it to the army entity, which will determine the action to be taken. Rotate: The warrior turns around its center, the direction vector changes this angle and the warrior is facing another direction. Victory of an army on the other: A flag will be positioned at randomly each time the application runs. Rule of victory 1: The goal of each army is to control the position of the flag for a time T. If an army accumulates this quantity of time, this army wins the game. Rule of victory 2: If an army is eliminated, wins the remaining army. After the simulation, the console will present the winner army Results For purposes of simulation of the game and implement the above concepts, two "behaviors. a re defined for the armies, while all the soldiers will have the same programming. Army 1 will performs a defensive posture. The soldiers will be looking for the flag, doing nothing. When the flag is found, all army members will protect this position at the expense of any enemy. FindFlag: Soldiers will be looking for the flag. This state is maintained until an army member finds the flag, and this event forces to the other warriors in the same army, to defend this position. ProtectFlag:After the flag was found, the army will have to maintain this position until the end of the game, and it continues ordering the warriors to defend his position. In the other hand, Army 2 attitude will be offensive. The soldiers will be looking for the flag, but if someone finds an enemy, the entire army has to attack and destroy him, risking the possibility of being the first to find the flag.the states to considered are: FindFlag and ProtectFlag. FindFlag: The warriors will be looking for the flag or an enemy. If he finds the flag the state will changed to ProtectFlag. If he finds an enemy the state is maintained, but ordered the entire army to attack this position, suspending the search for the flag. ProtectFlag: The warriors will advance in the direction of the flag, but if they seen an enemy regardless of their position, they have orders to attack him

13 10 Priscila Cedillo et al. As shown in Figure 6, at the beginning of the simulation each army takes a random position on the ground, opposite to his enemy position and taking into consideration the position of other elements; avoiding collisions with them. This is achieved by putting into practice the concepts of the elements of a RTS game and terrain analysis AI. Figura 6: Game Start On the other hand in Figure 7 shows the implementation of pathfinding mechanisms to search for the flag and the swarming behavior, the army moving in groups to look for his goal or goes around an obstacle without losing his formation. Figura 7: Armies movement After running the application several times, we observe that the army, whose had an offesive attitude, defeated his enemy by 60 % of the times that the simulation was run.

14 Massive Epic Battles 11 Figura 8: Armies looking for the flag Similarly, the execution of the simulation, a number significant of times, allowed us to establish the time possession of the flag in 30 seconds, while allowing to evaluate a victory and analyze the behavior of the army who seeks to recover the flag. Figura 9: Armies fighting for flag possession 4. Conclusions Many RTS games implement some artificial intelligence techniques, each of them give the game an autonomous behavior, but when implementing this kind of algorithms, it is essential to consider those that do not cause a waste of computational resources, or a lot of time, but rather to select those which improve response time, which is crucial in modern-day games. By doing some tests we could see that the big limitation of A* search is its memory requirement, as in the worst case it needs to remember an exponential number of points or nodes. For our simulation purposes it is an optimal search mechanism, as it fulfills its mission, but in the case of a real time strategy game

15 12 Priscila Cedillo et al. with all of its features, the developers have to consider to improve it or to develop a better algorithm. A problem we discovered with the Finite- State Machine technique, is that it might result in very predictable behavior. A solution could be to use a nondeterministic state machine, where transitions between states are less predictable. For example we can implement health percentages to warriors, according to which the warrior can take an offensive or defensive behavior: If his health drops below 50 % he should defended itself. In the other hand, if it exceeds 50 % he should attack, or probably make use of a randomized behavior. The swarming behavior allows the game to make use of a group strategy, to keep the units close and avoid the warriors to be dispersed throughout the field. We implemented a basic algorithm for this purpose an improvement could be to make use of its variations such as flocking, shoaling, and many more depending on the scope of the game. Referring strictly to conclusions regarding the execution of Massive Epic Battles, we can mention that the offending behavior given to one of the armies is more likely to dominate the game and get a victory over this who simply defends itself and tries to recover flag. It is important to mention certain limitations in the game that we should observe: the search for the flag algorithm does not take into account places that were already visited, so there is the posibility that the characters could be wandering around the terrain during a long period of time. Another limitation in our simulation is that there is no defined attack strategy, it acts more as a seek and destroy attack group. There may be occasions when the warriors come to obstruct the path of other warriors and this situation takes some time to be solved until the warriors will be unlocked. These limitations can be seen as further improvements in the development of a game engine, but in our use case it is a small simulation that has certain restrictions and aims to implement the artificial intelligence concepts mentioned above. Referencias 1. Ahmed, D.T.; Shirmohammadi, S.;, Ïntelligent path finding for avatars in Massively Multiplayer Online Games,Çomputational Intelligence in Virtual Environments, CIVE 09. IEEE Workshop on, vol., no., pp.61-65, March April J. Hagelback and S. J. Johansson. Using multi-agent potential Ô Åelds in realtime strategy games. In L. Padgham and D. Parkes, editors, Proceedings of the Seventh International Conference on Autonomous Agents and Multi-agent Systems (AAMAS), (2012, abril) Pathfinding-Wikipedia, free Encyclopedia. [Online]. 4. Brian Schwab, AI Game Engine Programming, Charles River Media; 1 edition(september 2004)

16 Massive Epic Battles Anders Walther, AI for real-time strategy games, Kim Steenstrup Pedersen, Ed. Copenhagen, Denmark: IT-University of Copenhagen, Design, Communication and Media, June Matt Buckland, AI techniques for game programing, Stacy L. Hiquet, Bob Scott, AI Game Programming Wisdom, Charles River Media 8. Todd Barron, Strategy Game Programming with DirectX 9.0, Wordware publishing inc, Vardhan, H.; Billenahalli, S.; Wanjun Huang; Razo, M.; Sivasankaran, A.; Limin Tang; Monti, P.; Tacca, M.; Fumagalli, A.;, "Finding a simple path with multiple must-include nodes,"modeling, Analysis & Simulation of Computer and Telecommunication Systems, MASCOTS 09. IEEE International Symposium on, vol., no., pp.1-3, Sept Patnaik, K.S.; Sahoo, G.; Peters, J.F.;, Çomparing behavior patterns of swarms that learn using tolerance perceptual near sets,çybernetic Intelligent Systems (CIS), 2010 IEEE 9th International Conference on, vol., no., pp.1-5, 1-2 Sept (2012, abril) Swarm Behaviour-Wikipedia, free Encyclopedia. [Online] (2012, abril) Finite-State Machine -Wikipedia, free Encyclopedia. [Online] (2012, abril) Finite-State Machine -Background. [Online].

17 Implementación de GSAT y SASAT en computación paralela Ricardo Sansores, Oswaldo Rubio, and Julio Mata Tecnológico de Monterrey, Campus Guadalajara Resumen Gran parte de los algoritmos no completos usados para resolver el problema de satisfactibilidad, comienzan con una asignación aleatoria de valores de verdad, para después moverlos mediante una heurística. Debido a que son algoritmos no completos, no podemos asegurar que la asignación aleatoria inicial conduzca a un resultado, por lo que la mayor parte de los algoritmos consideran reintentos. Dichos reintentos son completamente independientes uno de otro, lo que, en dado caso, permitiría ejecutarlos en paralelo, disminuyendo así el tiempo necesario para encontrar una solución. Hemos elegido el algoritmo GSAT para hacer este análisis. Nuestra hipótesis es que, entre mayor sea el número de reintentos necesarios para encontrar la solución utilizando la versión secuencial del problema, deberíamos de obtener mejores tiempos de ejecución utilizando su versión paralela. Una restricción a esto es que funciona mejor para problemas complejos, ya que el cambio de contexto entre hilos, cuando se trata de problemas pequeños, incide más en el tiempo de ejecución total. El presente documento exhibe una comparación entre los resultados obtenidos al resolver problemas de satisfactibilidad empleando algoritmos no completos tanto en sus versiones secuencial y paralela. Al final, compartimos nuestras observaciones y conclusiones al respecto. 1. Introducción El problema de satisfactibilidad (SAT) se origina con la pregunta: Dada una fórmula proposicional, tiene un modelo que la satisfaga? Usualmente el enfoque es en las fórmulas que están en forma clausal, esto es: donde las fórmulas son un conjunto de cláusulas, cada clásula es una disyunción de literales, y cada literal es una variable o su negación. Los problemas así representados, en fórmulas clausales, se identifican de la forma k-cnf, donde k es el número de literales. Los problemas del tipo 2-CNF se resuelven en tiempo polinomial; los del tipo 3-CNF son NP-completos; esto es, que no hay un algoritmo determinista que en tiempo real pueda resolver el problema. Ahora bien, cómo se pueden resolver SAT? Disponemos de los métodos sistemáticos, como las tablas de verdad y el procedimiento Davis Putnam; métodos de búsqueda local, como Greedy SAT (GSAT), WalkSAT, búsqueda en tabú; y métodos llamados exóticos, como algoritmos genéticos y computación cuántica.

18 Implementación de GSAT y SASAT en computación paralela 15 Los así llamados métodos exóticos la mayoría de las veces implican una complejidad innecesaria para resolver este tipo de problemas. Los métodos sistemáticos, como las tablas de verdad y el procedimiento Davis Putnam, son completos, pero su tiempo de ejecución para problemas grandes -o duros - es muy largo, lo que los vuelve impracticables la mayoría de las veces. Los métodos de búsqueda local como GSAT y WalkSAT convierten este tipo de problemas duros en otros más manejables, que pueden ser solucionados en un tiempo polinomial. En los últimos años el avance tecnológico ha permitido probar nuevas alternativas para resolver problemas de SAT de forma paralela. Los procesadores multicore [4] y la posibilidad de utilizarlos de forma distribuida nos ayudan a evaluar dichas técnicas. Con estas pruebas podemos evaluar qué técnica nos conviene mas para resolver un problema. Algunas de las pruebas utilizando procesadores de forma paralela incluyen grids [1] y plataformas que nos permiten conectar computadoras para compartir su poder de computo como BOINC [3], OpenMP y MPI [6]. Sin embargo una de las técnicas más símples que podemos usar para aprovechar un procesador multicore es mediante el uso de programación multihilo [2]. En principio podemos pensar que mientras más hilos tengamos corriendo, tendrémos un mejor resultado. Pero también tenemos que tomar en cuenta que el beneficio de la paralelización tiene un costo: existe un límite [7], conocido como Ley de Amdhal [5]. La Ley de Amdhal establece que a partir de cierto número de hilos, el desempeño no mejora sustancialmente. 2. Algoritmo implementado de forma paralela 2.1. Algoritmo GSAT El algoritmo de GSAT, propuesto originalmente por Selman et al. es un algoritmo que no es correcto, lo que significa que podría existir un modelo para la fórmula y que no fuera encontrado durante la ejecución de GSAT. Sin embargo, aún con ello, es un método interesante puesto que es muy eficiente computacionalmente. En GSAT se parte de una solución inicial generada aleatoriamente. Dada esta solución se comprueba si satisface la fórmula, en caso de ser así, ya hemos encontrado un modelo, en otro caso, cambiamos la solución que tenemos de forma que maximicemos el número de cláusulas resueltas. Este proceso se repite (tanto el de mejorar una solución dada como el de partir de una solución inicial aleatoria) hasta alcanzar un máximo de intentos fijados inicialmente Paralelización En nuestra implementación específica de estos algoritmos, se especifica el número de threads (hilos de ejecución) que corren paralelamente. Al correr el programa, se crea un conjunto de resolucionadores que ejecutan en paralelo cada implementación del algoritmo. Todos ellos comparten una variable que

19 16 Ricardo Sansores et al. Algoritmo 1 Algoritmo GSAT Entrada: un arreglo A de cláusulas, MAXF LIP S y MAXT RIES Salida: un modelo (asignación de valores de verdad) que satisface A, si se encuentra cambiosrequeridos := 0 for i := 1 to MAXT RIES do V := Una asignación aleatoria de valores de verdad for j := 1 to MAXF LIP S do if V Es una solución válida then cambiosenultimointento := j intentosrequeridos := i cambiosrequeridos := cambiosrequeridos + j return V else if stopt hread then return falso end if cambiarvalorgreedy() end for end for return falso indica si se ha llegado a una solución; cuando se ha alcanzado, se detiene el proceso y se reportan los resultados. La implementación del código paralelo es la siguiente: Algoritmo 2 Código Paralelo Entrada: número de hilos t a ejecutar Salida: resultados de la ejecución t :=número de threads datos archivo de datos en forma CNF solvers :=arreglo de resolucionadores de tamaño t for i := 1 to t do Resolucionador s solvers[i] s.establecerp arametros(datos, MAXT RIES, MAXF LIP S) s.iniciar() end for Esperar hasta que los resolucionadores terminen intentos for i := 1 to t do Resolucionador s solvers[i] s.detener() end for Reportar tiempos return Solución encontrada

20 Implementación de GSAT y SASAT en computación paralela Parámetros a medir Los parámetros a considerar en la ejecución de los algoritmos son los siguientes: Tiempo de ejecución: Es el tiempo que tardan en ejecutarse ambos algoritmos; éstos están implementados en el mismo lenguaje de programación y utilizan métodos comunes, de manera que podemos afirmar que la diferencia en tiempo de ejecución entre ellos será debido a la naturaleza de cada uno. Número de intentos máximos: Ambos algoritmos tratan de llegar a un resultado, con distintos parámetros como delimitadores -flips en GSAT y T emperatura en SA-SAT-. éstos parámetros pueden detener la ejecución de cada algoritmo antes de obtener una respuesta -es por ello que son algoritmos no completos-; sin embargo, ambos algoritmos cuentan con un parámetro de reintentos. En caso de no obtener un resultado, se reintentará un número de veces definido. Número de flips totales: Aunque en el caso de GSAT el número de flips -veces que se cambia el valor de una propoción- es un delimitador, en el caso de SA-SAT también es usado éste parámetro pero únicamente como objeto de consulta. Número de flips en el último intento: A diferencia del número de flips totales, el número de flips en el último intento no es un parámetro acumulado durante la ejecución total del algoritmo. éste parámetro indica el número de flips que se requirieron en el último intento, antes de obtener una solución. Solución obtenida?: Indica si el algoritmo logró llegar a una solución -un modelo que satisfaga la formula-. Temperatura al momento de obtener el resultado: Parámetro que únicamente se utiliza el algoritmo SA-SAT, pero que puede ser útil para detectar si hay un patrón que indique a que temperatura se suele obtener la solución. 4. Hardware utilizado para las pruebas Para las pruebas utilizamos dos escenarios: Un cluster cuyo acceso fue proporcionado por Intel Guadalajara; este cluster está formado por 16 nodos (192 núcleos); cada nodo tiene dos procesadores Intel Xeon 5670 a 2.93GHz con seis núcleos -doce en total-, memoria RAM de 1 GB 1066 MHz DDR3 y dos discos duros de 300 GB. Un equipo de escritorio Intel i GHZ 5. Resultados A continuación mostramos los resultados tanto en el cluster como en el equipo. En el eje X va el número de hilos, en el eje Y la magnitud -ya sea tiempo,

21 18 Ricardo Sansores et al. Figura 1: Gráfica de tiempos en el cluster Figura 2: Gráfica de intentos en el cluster

22 Implementación de GSAT y SASAT en computación paralela 19 Figura 3: Gráfica de flips en el cluster intentos o cambios-, y cada serie representa un problema del conjunto de prueba de SATLIB. éstas son las gráficas del desempeño en el cluster: Como se puede apreciar en las gráficas del cluster, los valores van descendiendo conforme se aumenta el número de hilos. El resultado secuencial corresponderia al desempeño con un solo hilo. Y éstas las del desempeño en el equipo de escritorio: Figura 4: Gráfica de tiempos en el equipo

23 20 Ricardo Sansores et al. Figura 5: Gráfica de intentos en el equipo Figura 6: Gráfica de flips en el equipo

24 Implementación de GSAT y SASAT en computación paralela 21 En cambio, en el equipo de escritorio el desempeño es más bien errático, debido a que el poder de computación es mucho menor que el cluster. En 2001 [7] se hicieron pruebas similares utilizando algoritmos paralelos de SAT en un ambientes de computo de alto desempeño, obteniendo mejores resultados cuando son diseñados para ese tipo de ambientes. 6. Conclusiones Los resultados en el cluster nos muestran que, en general, el tiempo disminuye drásticamente hasta los diez hilos; de ahí en adelante el comportamiento comienza a ser más o menos semejante. Se ven en particular dos problemas, el 2 y el 19, que tienen un comportamiento muy diferente a los otros. Lo mismo sucede para los intentos y los cambios de valores. El hecho de que a partir de alrededor diez hilos el desempeño no mejore significativamente tiene qué ver con la ley de Amdahl [5], que indica que la concurrencia está limitada por la naturaleza de la aplicación; tiene que ver con el tiempo que se realiza tanto en forma secuencial como en paralela. Sean s la fracción de tiempo secuencial intrínseco, p el número de núcleos, t s el tiempo secuencial. El tiempo paralelo T p viene dado por: T p = st s + (1 s)ts p Una representación del tiempo serial y el tiempo paralelo puede apreciarse en la siguiente figura: Figura 7: Tiempos seriales y paralelos Lo que significa que siempre habrá un tiempo serial que, aunque se incremente el número de hilos, siempre se presentará. Es por eso que a partir de cierto número de hilos, el desempeño ya no aumenta, por más hilos que se agreguen al algoritmo. Finalmente si llegamos al enunciado de nuestra hipótesis, pero hay que tener en cuenta lo que establece la ley de Amdhal.

25 22 Ricardo Sansores et al. Referencias 1. W. Chrabakh, and R. Wolski, ÄúGridSAT: A Chaff-basedDistributed SAT Solver for the Grid Äù, Proceedings of the ACM/IEEE Conference on Supercomputing, Matthew Lewis, Tobias Schubert and Bernd Becker, "Multithreaded SAT Solving", Michael Black and Gregory Bard, "SAT over BOINC: An Application-Independent Volunteer Grid Project", GRIDIEEE (2011), p Alejandro Czutro, Bernd Becker and Ilia Polian, "Performance Evaluation of SAT- Based ATPG on Multi-Core Architectures", Architecture of Computing Systems (ARCS), nd International Conference. 5. Gene M. Amdahl, Validity of the single processor approach to achieving large scale computing capabilities, AFIPS spring joint computer conference, Daniel Singer and Alain Vagner, "Parallel resolution of the satisfiability problem (SAT) with OpenMP and MPI". In Proceedings of the 6th international conference on Parallel Processing and Applied Mathematics (PPAM 05). 7. Ying Zhao, Sharad Malik, Matthew Moskewicz and Connor Madigan,. A ccelerating Boolean Satisfiability through Application Specific Processing", System Synthesis, Holger H. Hoos and Thomas Stutzle: SATLIB: An Online Resource for Research on SAT. In: I.P.Gent, H.v.Maaren, T.Walsh, editors, SAT 2000, pp , IOS Press, 2000.

26 "Juego de la no vida": Autómata celular para representación de una infestación zombi Pablo de Jesus Orbe Rosas and Joel Xocotzin Granados Rueda Tecnológico de Monterrey, Campus Guadalajara 1. Introducción 1.1. Problema de plaga de zombis Estoy solo, de noche, la munición de mi arma esta agotada, escondido en las ruinas de lo que fue una estación de gasolina, cuando el silencio de la noche es interrumpido por los gemidos, ese ruido atroz que anuncia una embestida de una horda de zombis. Una multitud de mas de 200 zombis se agrupan para devorarme, no tengo salvación estoy completamente rodeado. Y una pregunta surge en mi mente - De dónde salió esta cantidad de zombis?- Pongo pausa al videojuego (Left 4 Dead 2), y analizamos esta situación. Lo primero que se tienen que preguntar es que tan real es una situacion de este tipo?, y realmente un ser vivo puede pasar a ser una criatura con funciones motoras basicas y con una hambre insasiable de carne humana. Y, si una infeccion de este tipo, Puede generar una cantidad tan grande de estos desagradables seres? Daremos un rapido vistaso a la realidad zombi, y tratar de contestar la primera pregunta, pero nos enfocaremos en profundizar un poco mas en la segunda pregunta: Puede generar una cantidad tan grande de estos desagradables seres? 1.2. Definición de zombi, Cuando veo tv soy zombi? Un zombi es, originalmente, una figura legendaria propia de las regiones donde se practica el culto vudú. Se trataría de un muerto resucitado por medios mágicos por un hechicero para convertirlo en su esclavo. Por extensión, ha pasado a la literatura fantástica como sinónimo de muerto viviente y al lenguaje común para designar en sentido figurado a quien hace las cosas mecánicamente como si estuviera privado de voluntad Los verdaderos zombis En 1982, el etnobotánico canadiense Wade Davis viajó a Haití para estudiar lo que pudiera haber de verdad en la leyenda de los zombis y llegó a la conclusión Äîpublicada en dos libros: The Serpent and the Rainbow (1985) y Passage of Darkness: The Ethnobiology of the Haitian Zombie (1988) Äî de que se podía convertir a alguien en zombi mediante el uso de dos sustancias en polvo. Con

27 24 Pablo de Jesus Orbe et al. Figura 1: Horda zombi, Left for Dead 2 la primera, llamada coup de poudre (en francés, literalmente, golpe de polvo", un juego de palabras con coup de foudre, que significa golpe de rayo también flechazo. a moroso), se induciría a la víctima a un estado de muerte aparente. Sus parientes y amigos la darían por muerta y la enterrarían, y poco después sería desenterrada y revivida por el hechicero. En ese momento entrarían en acción los segundos polvos, una sustancia psicoactiva capaz de anular la voluntad de la víctima La abeja zombi En un estudio publicado en Plos One, los investigadores encargados del caso aseguran que hasta 13 larvas de esta mosca decapitadora (porque nacen por la cabeza) emergen de cada abeja de miel muerta. Las larvas se arrastran fuera de la abeja alrededor de siete días después de que los huevos fueron inyectados. Colonias de abejas están sujetas a numerosos agentes patógenos y parásitos. La interacción entre múltiples agentes patógenos y los parásitos son la causa propuesta de Colapso de Colonias Disorder (CCD), un síndrome caracterizado por las abejas obreras abandonan la colmena. A continuación presentamos la primera documentación que las moscas boreal phorid Apocephalus, anteriormente conocido como parásitos de abejorros, también infecta y mata a las abejas de miel con el tiempo y pueden representar una amenaza emergente para la apicultura del Norte de América. Las abejas de miel parasitados muestran un comportamiento colmena abandono, dejando a sus colmenas en la noche y muere poco

28 Autómata celular 25 después. En promedio, siete días más tarde hasta 13 larvas fóridas emergen de cada una abeja muerta y pupar lejos de la abeja. Uso de códigos de barras de ADN, que confirmó que parasitoides que emergieron de las abejas y abejorros son de la misma especie. Análisis de microarrays de abejas de la miel de las colmenas infectadas reveló que estas abejas a menudo se infectan con el virus de las alas deformadas y Nosema ceranae. Parasitoides de larvas y adultos, también dio positivo por estos patógenos, lo que implica la marcha como un vector potencial o reservorio de estos patógenos de abejas de miel. Parasitismo fóridas pueden afectar la viabilidad colmena desde el 77 % de los sitios muestreados en el área de San Francisco fueron infectadas por la mosca y el análisis de microarrays fóridos detectados en las colmenas comerciales en Dakota del Sur y Valle Central de California. Entender los detalles de la infección fóridas puede arrojar luz sobre comportamientos similares se observan en la colmena de abandono de la CLD. Figura 2: (A) Hembra adulta A. boreal. (B) Mujer A. boreal oviposición en el abdomen de una abeja de la miel de los trabajadores. (C) Dos final de las larvas de A. boreal de salir de un trabajador de abeja de la miel en la unión de la cabeza y el tórax [1] Zombi en los videojuegos Los zombis son conocidos, en los videojuegos, por ser aparentemente faltos en inteligencia, pero esto lo suplen con su tenacidad al pelear. Generalmente combaten cuerpo a cuerpo, aunque también usan armas pero con poca precisión. Esto sucede en casi todas los videojuegos y peliculas de zombies - una multitud de cadáveres reanimados caminan hacia la casa de campo, un centro comercial o en la base militar, donde los héroes se han atrincherado. Los zombies no están muertos, pero tampoco vivos. Son implacables y ajeno al dolor, y ellos siguen atacando incluso después de perder las extremidades. Por lo general, cualquier persona que muere o es atacado por los zombies se combierte en un zombi, por lo que rápidamente se convierten en una molestia a una plaga.

29 26 Pablo de Jesus Orbe et al Que tan grande puede ser una población de zombis? Supongamos la siguiente situacion: Tenemos 50 personas en un lugar de espacio abierto, una de estas personas por una razon desconocida, es infectada por un virus que lo convierte en zombi, y empieza a actuar con las siguientes caracteristicas: Reglas zombi: 1. siempre tienen hambre 2. solo come carne viva 3. le atrae el olor 4. le atrae el ruido 5. si no hay algo de interes, camina sin rumbo 6. come hasta satisfacer su hambre. Las personas sanas, no tiene forma de defenderse, solo pueden huir, por que si es atacado por un zombi, y no es comido en su totalidad por el zombi, la persona se convierte en zombi. reglas humanos: Reglas humanos: 1. si tiene zombi cerca huye en direccion contraria 2. si es atacado por zombi(mordido o arañado) se convierte en zombi. Entonces, el zombi ataca a la persona mas cercana, la persona atacada, tienen la posibilidad de huir del ataque, pero no se libro de una mordida, que termina convirtiendo a la persona en zombi, esto nos dejo con 2 zombis, y 48 personas, y seguimos asi, y llegamos al punto en que tenemos 5 zombis y 45 personas. Y llegamos al punto en que una persona es atacado por 5 zombis, la persona no tiene forma de escapar, el hambre de sus atacantes los llevan a desaparecer a la persona. Esto nos deja con 44 personas y 5 zombis. Esto nos permite suponer lo siguiente: Una infeccion de este tipo, auto controla su población, limitando el numero de infectados. Para analizar esta situación utilizaremos una variante de un Autómata celular, el muy popular juego de la vida, usaremos la idea de aplicar reglas simples, a çélulas", para que en grupo nos muestren un comportamiento ïnteligente".[1] 2. Autómata celular Los autómatas celulares fueron inventados a fines de los cuarenta por Stanislaw Ulam ( ) y John von Neumann ( ). Ulam fue principalmente matemático, inventó el método de simulación Monte Carlo y aportó importantes contribuciones a la teoría de los números y al análisis matemático. Junto con Eduard Teller inventó la bomba de hidrógeno. Von Neumann trabajó en los más variados campos. Colaboró en los fundamentos de la teoría de la mecánica cuántica, incursionó en economía y en la

30 Autómata celular 27 teoría de los juegos. Junto con Herman Goldstine diseñó la arquitectura lógica de la primer computadora electrónica. Tal es el tamaño de los padres de la criatura. En 1948, Von Neumann presentó a la comunidad científica un trabajo donde se preguntaba si una máquina podía realizar copias de si misma partir de elementos simples o si había algo mágicamente extramecánico en la autoreproducción (Feymann inició el debate en los sesenta y Drexler retomó la idea en los ochenta originando la fiebre de la nanotecnología). Von Neumann luego demostró matemáticamente que sí era posible la existencia de tales robots. Junto a Ulam, en Los álamos, desarrolló los primeros autómatas celulares para modelar el concepto. Ulam sugirió que en vez de piezas elementales se consideraran diferentes estados numéricos representando las distintas partes de la máquina autorreplicante. Los autómatas celulares estaban naciendo. Existen muchas variaciones de AC. Los más simples se desarrollan en una dimensión. Imaginen una fila de células, cada una evaluando constantemente a sus dos vecinas para decidir de qué color teñirse. Presentadas todas las generaciones en un mismo plano, el modelo puede evocar con eficacia ciertos patrones de pigmentación en caracoles. Figura 3: Autómatas celulares lineales. Los gráficos de la izquierda muestran el crecimiento, de arriba hacia abajo, originado a partir de una línea de datos aleatoria y para cuatro grupos de leyes distintas. Los gráficos de la derecha examinan las mismas leyes partiendo de una línea con un solo "1çentral Dando valores aleatorios a la primer generación se obtienen diversos patrones, aunque puede discernirse el estilo básico de cada grupo de leyes. Cuando estas

31 28 Pablo de Jesus Orbe et al. últimas cambian, los patrones obtenidos son radicalmente diferentes. Aunque se presenten en dos dimensiones, debe recordarse que sólo existe una generación o línea a la vez. La misma idea puede trasladarse al universo bidimensional. En los autómatas celulares de trama cuadriculada, cada célula se puede considerar como viviendo en un vecindario de cinco o nueve células, ella misma incluida. Esto según sean los vecinos que toman parte de la reunión de consorcio en la que se decide si el vecino del centro es echado o no de su departamento. Hay infinitas variaciones de estos vecindarios, que han ido creciendo en tamaño conforme al aumento de potencia computacional disponible. Figura 4: Vecindarios de celdas adyacentes examinadas por las leyes. Vecindario Von Neumann para cinco vecinos (a) y vecindario Moore para nueve (b) 2.1. El juego de la vida El juego de la vida es el mejor ejemplo de un autómata celular, diseñado por el matemático británico John Horton Conway en Hizo su primera aparición pública en el número de octubre de 1970 de la revista Scientific American, en la columna de juegos matemáticos de Martin Gardner. Desde un punto de vista teórico, es interesante porque es equivalente a una máquina universal de Turing, es decir, todo lo que se puede computar algorítmicamente se puede computar en el juego de la vida. Desde su publicación, ha atraído mucho interés debido a la gran variabilidad de la evolución de los patrones. Se considera que la vida es un buen ejemplo de emergencia y autoorganización. Es interesante para los científicos, matemáticos, economistas y otros observar cómo patrones complejos pueden provenir de la implementación de reglas muy sencillas. La vida tiene una variedad de patrones reconocidos que provienen de determinadas posiciones iniciales. Poco después de la publicación, se descubrieron el pentaminó R, el planeador o caminador (en inglés glider, conjunto de células que se desplazan) y el explosionador (células que parecen formar la onda expansiva de una explosión), lo que atrajo un mayor interés hacia el juego. Contribuyó a su popularidad el hecho de que se publicó justo cuando se estaba lanzando al mercado una nueva generación de miniordenadores baratos, lo que significaba que se podía jugar durante horas en máquinas que, por otro lado, no se utilizarían por la noche. Para muchos aficionados, el juego de la vida sólo era un desafío de programación y una manera

32 Autómata celular 29 divertida de usar ciclos de la CPU. Para otros, sin embargo, el juego adquirió más connotaciones filosóficas. Desarrolló un seguimiento casi fanático a lo largo de los años 1970 hasta mediados de los 80. El juego de la vida es en realidad un juego de cero jugadores, lo que quiere decir que su evolución está determinada por el estado inicial y no necesita ninguna entrada de datos posterior. El "tablero de juego. es una malla formada por cuadrados (çélulas") que se extiende por el infinito en todas las direcciones. Cada célula tiene 8 células vecinas, que son las que están próximas a ella, incluso en las diagonales. Las células tienen dos estados: están "vivas. o "muertas"(o. en cendidas. a pagadas"). El estado de la malla evoluciona a lo largo de unidades de tiempo discretas (se podría decir que por turnos). El estado de todas las células se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las células se actualizan simultáneamente. Las transiciones dependen del número de células vecinas vivas: Una célula muerta con exactamente 3 células vecinas vivas "nace"(al turno siguiente estará viva). Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por "soledad. o "superpoblación"). 2 Patrones basicos Existen numerosos tipos de patrones que pueden tener lugar en el juego de la vida, como patrones estáticos ("vidas estáticas", en inglés still lifes), patrones recurrentes (. o sciladores", un conjunto de vidas estáticas) y patrones que se trasladan por el tablero ("naves espaciales", spaceships). Los ejemplos más simples de estas tres clases de patrones se muestran abajo. Las células vivas se muestran en negro y las muertas en blanco. Los nombres son más conocidos en inglés, por lo que también se muestra el nombre de estas estructuras en dicho idioma [2]. Figura 5: Ejemplos de patrones Variantes del juego de la vida Desde la creación del juego se han desarrollado nuevas reglas. El juego estándar, en que nace una célula si tiene 3 células vecinas vivas, sigue viva si tiene 2 o 3 células vecinas vivas y muere en otro caso, se simboliza como "23/3". El primer número o lista de números es lo que requiere una célula para que siga viva, y el segundo es el requisito para su nacimiento. Así, "16/6"significa que üna célula nace si tiene 6 vecinas y vive siempre que haya 1 o 6

33 30 Pablo de Jesus Orbe et al. vecinas". HighLife (. A lta Vida") es 23/36, porque es similar al juego original 23/3 sólo que también nace una célula si tiene 6 vecinas vivas. HighLife es conocida sobre todo por sus replicantes. Se conocen muchas variaciones del juego de la vida, aunque casi todas son demasiado caóticas o demasiado desoladas. /3 (estable) casi todo es una chispa 5678/35678 (caótico) diamantes, catástrofes 1357/1357 (crece) todo son replicantes 1358/357 (caótico) un reino equilibrado de amebas 23/3 (caótico) "Juego de la Vida de Conway" 23/36 (caótico) "HighLife"(tiene replicante) /3678 (estable) mancha de tinta que se seca rápidamente 245/368 (estable) muerte, locomotoras y naves 34/34 (crece) "Vida 34" 51/346 (estable) "Larga vidaçasi todo son osciladores Parte de la lista que hay en Life32 Se han desarrollado variantes adicionales mediante la modificación de otros elementos del universo. Las variantes anteriores son para un universo bidimensional formado por cuadrados, pero también se han desarrollado variantes unidimensionales y tridimensionales, así como variantes 2-D donde la malla es hexagonal o triangular en lugar de cuadrada. 3. El juego de la vida zombi Después de una invesitgacion de el juego de la vida, procedemos a realizar modificaciones y generar nuestro autómata celular. modificando algunas de las características del juego de la vida. empezaremos por establecer dos tipos de células, las que llamaremos zombi y humano, tentativamente se planea integrar un tercer elemento que es muerto el cual representaría a un humano muerto por ataque de zombis Regla de Humano Son simples las reglas que un humano podrá realizar. 1. si tiene zombi cerca huye en direccion contraria. 2. si es atacado por zombi(mordido o arañado) se convierte en zombi. 3. si es atacado por zombis, y no tiene salida, el humano muere. Para el caso de huir de un zombi, el humano requiere conocer su entorno inmediato, Usaremos un algoritmo de busqueda limitado a la vecindad de Moore. La siguiente figura nos muestra la vecindad de Moore. Tomando en cuenta el vecindario de Moore, se pude establecer la siguiente formula para obtener, la direccion de un enemigo. x i = i x y j = j y

34 Autómata celular 31 Figura 6: vecindario Moore Si x i nos da un valor negatigo podemos determinar que el enemigo esta en el perfil izquierdo. si es positvo es el derecho. Si y j es negativo el enemigo se encuentra en nuestro norte, si es negativo en nuestro sur. Aplicamos el siguiente algoritmo para detectar, si existe un elemento en la vecindad. se trata de una busqueda primero en anchura con una adaptación para nuestro caso. Algoritmo 3 Algoritmo radar, para busqueda de elementos proximos a la vecindad, implementacion modificadad de primero en anchura. Entrada: celula cell mudo de busqueda celda. Salida: dirección en la que se ubica el elemento con respecto a mi celula ir x, ir y. 1: for i = (cell.x rango) hasta cell.x + rango do 2: for i = (cell.y rango) hasta cell.y + rango do 3: if cellda[i][j].stado == cell.enemigo then 4: return ir x = i; ir y = j; false 5: end if 6: end for 7: end for 8: return true El valor de ir x e ir y, nos permite determinar en que dirección se encuentra el enemigo, dentro del vecindario de Moore, nuestra entidad, esta limitada por un rango de visión, esto impide que la célula sepa que elementos están mas allá de sus posibilidades, y solo actuar con lo que tienen a su alcance. En el momento en que el humano es rodeado, su estado cambia a muerto Regla de Zombi Para el caso de un zombi, este caminara aleatoriamente, puesto que un zombi no esta vivo, no tienen las funciones de sus sentidos activas, no ve, no escucha,

35 32 Pablo de Jesus Orbe et al. no siente, esta parte depende de la situación y tipo de infección que se quiera simular. En el caso de que el zombi busque comida, aplicamos la función de radar, y en el caso de tener un humano a su alcancé, este se dirige a su encuentro Reglas zombi: 1. siempre tienen hambre 2. solo come carne viva 3. le atrae el olor 4. le atrae el ruido 5. si no hay algo de interes, camina sin rumbo 6. come hasta satisfacer su hambre. Algoritmo 4 Algoritmo caminar aleatorio Entrada: Salida: dirección en la que caminara, o no caminara salida tipo entera var ramdon : int = Math.floor(Math.random() * (max - min +1))-min; 2: switch(random) case0 : salida = 0; break; 4: case1 : salida = 1; break; case2 : salida = 1; break; 6: return salida Implemetamos esta funcion y generamos este otro algoritmo, donde el zombi caminara aleatoriamente. Algoritmo 5 Algoritmo caminar Entrada: ramx = caminaraleatorio(); ramy = caminaraleatorio(); if (cell.yy + ramy) <= anchomatriz then if (cell.xx + ramx) <= anchomatriz then 3: if (cell.xx + ramx) >= 0 then if (cell.yy + ram) >= 0 then if cells[cell.xx + ramx][cell.yy + ramy].state == 0 then 6: cells[cell.xx + ramx][cell.yy + ramy].state = cell.state; cells[x][y].state = 0; end if 9: end if end if end if 12: end if return NULL En el momento en que un Zombi ataca y su presa escapa, este es el algoritmo a ejecutar.

36 Autómata celular 33 Algoritmo 6 Algoritmo caminar aleatorio Entrada: celda celda Salida: modifica el estado de la celula atacada. if cells[cell.xx + ramx][cell.yy + ramy].state == this.enemigo then cells[cell.xx + ramx][cell.yy + ramy].state = this.state; 3: end if return salida 4. Resultados Al realizar multiples experimentos, ejecutando el automata celular, se llega al momento en que los zombis, su población no crece, sin embargo se recomienda ampliamente, aplicar reglas al zombi para poder encontrar una presa. Esto afectara el comportamiento de manera muy significativa. Figura 7: El humano (de Azul), es perseguido por zombis(de rojo) Como característica que se detecto y que no se tenia en cuenta, es que el espacio en que se desarrolla el desplazamiento de las células, afecta directamente a cual será la población máxima de zombis. Si la cantidad de zombis es mas del 50 % de la capacidad de el espacio, es seguro que los humanos serán muertos. Se pretende aplicar en una segunda etapa del proyecto, aplicar el sistema de radar a los zombis, con la intención de perseguir a los humanos. También se pretende aplicar una regla mas a los humanos para defenderse.

37 34 Pablo de Jesus Orbe et al. Figura 8: Humanos muertos(blanco) despues de ser atacados por varios zombis Figura 9: Si la población de humanos pequeña, combertida en zombis

38 Autómata celular 35 Figura 10: Una infección masiva Referencias 1. Core A, Runckel C, Ivers J, Quock C, Siapno T, et al. (2012) A New Threat to Honey Bees, the Parasitic Phorid Fly Apocephalus borealis. PLoS ONE 7(1): e doi: /journal.pone MATHEMATICAL GAMES, The fantastic combinations of John Conway s new solitaire game "life"by Martin Gardner, Scientific American 223 (October 1970):

39 Modelo para apoyar la toma de decisiones sobre la deserción estudiantil en una universidad usando cadenas de Markov Aldo Gutierrez, Jorge Mendez, and Alex Amaya Tecnológico de Monterrey, Campus Guadalajara Resumen Este artículo tiene como fin presentar un modelo que permita realizar un análisis predictivo con respecto a la deserción de los estudiantes de pregrado de una universidad, delimitado con un ejemplo para el programa de Economía, a partir de la información de matrículas desde 2008 hasta Primero se presenta una breve introducción sobre la problemática, otros casos que resuelvan problemas similares, luego se muestran los pasos que se siguieron para extraer la información relevante para el análisis y así poder plantear el modelo que permita en un paso posterior, analizar los resultados obtenidos. 1. Introducción El Estado y la sociedad en general ven con preocupación cómo a pesar de la amplia y variada oferta de carreras técnicas, tecnológicas y universitarias, el problema del abandono parcial o definitivo de los estudios por parte de nuestros estudiantes crece cada día más, alcanzando un promedio como el que se dió entre 1999 y 2004 de 52 % [6]. Esta problemática no es ajena a la Universidad, que ha venido adelantando diferentes estrategias entre las que se encuentran el apoyo financiero a los estudiantes, el programa de tutorías y la integración de información en una Bodega de Datos llamada Sistema de Información de Planeación (SIP) a partir de diferentes sistemas de información con el fin de poder detectar las posibles causas de deserción de los estudiantes de pregrado y poder tomar decisiones al respecto, con el SIP se pueden hacer diferentes análisis a partir de consultas o reportes; uno de los análisis de datos que se hace es el cambio de estado de los estudiantes de un semestre a otro. En este artículo proponemos una estrategia adicional para analizar los cambios de estado de los estudiantes entre un semestre y otro. En la industria se ha despertado el interés por realizar análisis de datos para soportar la toma de decisiones [12], estos datos generalmente se encuentran almacenados en Bodegas de Datos a partir de las cuales se pueden aplicar técnicas de Minería de Datos para encontrar nuevas tendencias de los clientes a partir de comportamientos anteriores [1]. Al igual que en el área de Inteligencia de Negocios donde existen diferentes métodos para analizar información, también hay otros métodos que permiten representar comportamientos futuros a partir de datos históricos, uno de ellos es el uso de valores previstos para el comportamiento competitivo [10], otro es

40 Cadenas de Markov 37 el método basado en la simulación [8], también modelos de atracción [11], o redes neuronales y algoritmos genéticos [9]. Estos modelos permiten separar el comportamiento de los consumidores a mediano y corto plazo con alta frecuencia, con el fin de reducir esta frecuencia se deben utilizar técnicas de movimiento promedio [2]. Un método para analizar los patrones de comportamiento de los clientes son las Cadenas de Markov [17], método que se ha venido extendiendo en los últimos 20 años y que ha permitido usar los resultados para analizar las estrategias de ventas en las compañías [4]. En el caso ÄúAplicaciones de Cadenas de Markov para predecir el número de aerolíneas en China Äù [20], se establece una serie de estados que se analizan entre diferentes periodos de tiempo para obtener una matriz de transición y realizar un análisis predictivo; otro ejemplo que utiliza este método es el del trabajo ÄúPredicción con n dimensiones para diagnósticos de fallas usando cadenas de Markov Äù [14], en el que se presenta un modelo para predecir la cantidad de concentración de elementos en lubricación de aceites con el fin de identificar posibles anomalías en la operación continua de un recipiente en una máquina marítima. Una de las ventajas de utilizar Cadenas de Markov es que puede llegar a tener en cuenta la deserción de los estudiantes a otras universidades [5], aunque no hace parte del alcance de este proyecto puede quedar planteado como un posible trabajo futuro, otra ventaja es que brinda la capacidad de analizar el crecimiento de la demanda de los clientes sobre un producto [21], en este caso de los alumnos potenciales sobre los programas académicos que ofrece la Universidad. 2. Método de Inferencia Para poder construir la matriz de transición a partir de la cual se realizará el análisis de información, se definió una serie de pasos ordenados que se explican a continuación: 2.1. Definición de Estados Un estudiante puede tener diferentes estados para un semestre dentro del programa que está cursando. Para realizar el análisis de deserción los estados relevantes son: matriculado: estudiante activo académicamente; no matriculado: estudiante que decidió cancelar el semestre; excluido: estudiante que queda inhabilitado para estudiar cierto programa en la Universidad; suspendido: estudiante que no puede estudiar durante el semestre por algún tipo de suspensión, esta puede durar uno o más semestres; graduado: estudiante que obtiene el título profesional Fuentes de Datos La información resumen de los datos académicos de la Universidad se encuentra en cinco diferentes sistemas de información y está integrada en el SIP [16]. Teniendo en cuenta que el análisis se realizará con base en los estados de

41 38 Aldo Gutierrez et al. los estudiantes entre un semestre y otro, se utilizó el SIP como fuente única de información Obtención de Datos Se extrajeron los datos con consultas por semestre con la información de identificación de los estudiantes desde 2007 para cada uno de los estados, es decir que para cada semestre se listaron los estudiantes que se encontraban matriculados, no matriculados, suspendidos y graduados. Es importante resaltar que no se tuvieron en cuenta para cada semestre los estudiantes nuevos en el programa, es decir que el análisis se realizará con una población constante. Con estos datos se hicieron los cruces de información entre un semestre y otro para calcular cuántos estudiantes cambiaban de un estado a otro cada semestre. Figura 1. Ejemplo de cambio de estados En la figura 1 se ve un ejemplo del resumen de los datos comparativos entre el primer semestre de 2007 (2007-1) y el segundo semestre de 2007 (2007-3), por ejemplo en donde está el valor 140, quiere decir que de los estudiantes que estaban matriculados en , 140 pasaron a estado matriculado en Unificación de Promedios Un vez definidos los estados y su relación, se construyó una matriz comparativa entre los semestres. Para obtener los datos se comparó el comportamiento de cada estudiante entre un semestre y otro y se resumió en una tabla para cada pareja de semestres. Figura 2. Promedio de cambio de estado

42 Cadenas de Markov Matriz de Transición Con los datos obtenidos en el paso cuatro, se construye la matriz de transición [3] para realizar los análisis posteriores. 3. Plantamiento del Modelo Una vez se han definido los estados que puede tener un estudiante dentro de un semestre se revisa la relación entre estos estados. Luego de realizar la extracción de datos se encontró que durante los semestres que se escogieron, nunca hubo un estudiante excluido, por tal razón se decidió quitar este estado del análisis. Figura 3. Diagrama de estados para un estudiante La figura 3 muestra el diagrama de posibles estados que puede tener un estudiante entre un semestre y otro, este diagrama de estados de transición [19] es de tiempo finito y tiempo discreto [15], un estudiante matriculado puede seguir matriculado, puede ser suspendido, puede graduarse o quedar no matriculado, un estudiante suspendido puede seguir suspendido o pasar a matriculado, un estudiante graduado se mantiene graduado y un estudiante no matriculado puede quedarse no matriculado o volver quedar matriculado. Definimos entonces las probabilidades de transición del estado i al estado j y a cada una se le asocia una probabilidad P(i,j) [13], de no ser posible el cambio de estado del estado i al estado j, entonces P(i,j)=0, por ejemplo un estudiante no puede pasar de estado

43 40 Aldo Gutierrez et al. suspendido a estado no matriculado, de otra parte si el estado i puede pasar solo al estado j, entonces P(i,j)=1, por ejemplo un estudiante que quede en estado graduado. Con este modelo podemos comenzar a trabajar con la matriz de datos promedio de cambio de estados de los estudiantes (figura 2) entre un semestre y otro, para obtener la matriz de transición. Figura 4. Matriz de transición La figura 4 es la matriz de transición a partir de la cual se realizarán los análisis predictivos, con base en la matriz promedio (figura 2) obtenida en el paso de la ÄúUnificación de Promedios Äù del método de inferencia. Con los valores de la matriz de transición podemos extraer porcentajes para realizar análisis independientes para cada cambio de estado entre un semestre y otro, por ejemplo si se quiere analizar el porcentaje de estudiantes no matriculados que retomaran sus estudios para el siguiente semestre, o sea que pasan a estado matriculado, podemos decir de acuerdo con la matriz de transición que el 5 % de los estudiantes que se encuentran no matriculados en se matricularán en Este análisis se puede realizar para cada uno de los estados. También se pueden hacer análisis con varias probabilidades; dado el propósito de este proyecto, podemos realizar un cálculo para saber cuál es el porcentaje de estudiantes que van a pasar a no matriculados para y así saber la tasa de deserción para el programa de Economía, ese calculo se obtiene multiplicando la probabilidad que tiene un estudiante de pasar de estado matriculado a no matriculado por la probabilidad de que un estudiante no matriculado continúe no matriculado, es decir P(Deserción) = * , que es igual a y corresponde al 26 %. Los resultados presentados en esta sección hacen referencia a la información que se espera para el primer semestre de 2011 (2011-1), para observar el comportamiento a lo largo del tiempo de estos cambios de estado se realizó una proyección para los siguientes 13 semestres apoyados en la herramienta Matlab [18] con la que se generaron los vectores de los estados que se espera lleguen a tener los estudiantes. Figura 5. Proyección de cambios de estado La figura 5, muestra el resultado de proyectar los cambios de estado que se esperan dentro de los siguientes 13 semestres para el conjunto de estudiantes que se decidieron analizar.

44 Cadenas de Markov Análisis de Resultados Teniendo en cuenta que un estudiante se considera Äúdesertor de programa Äù si abandona un programa académico durante dos períodos consecutivos y no se registra matricula en otro programa [7], se puede decir que para un grupo de estudiantes de Economía que se encuentran matriculados un semestre, el 26 % abandonarán este programa. Un estudiante que se encuentra matriculado en el programa tiene una probabilidad del 27 % de no matricularse el siguiente semestre, mientras que un estudiante que se encuentre no matriculado tiene una probabilidad del 95 % de mantenerse fuera del programa, este dato quiere decir que los estudiantes que abandonan sus estudios durante un semestre muy seguramente se convertirán en Äúdesertores de programa Äù. Se espera que para estudiantes se encuentren matriculados, 362 estén no matriculados, 30 estén suspendidos y se gradúen 73, es decir, que el comportamiento de los estudiantes es regular con respecto a los 7 semestres anteriores, y el porcentaje de deserción se mantiene. La Figura 6 muestra la tendencia de comportamiento de los cambios de estado de la población de estudiantes seleccionada para este ejercicio proyectada para los próximos 13 semestres, donde se ve que los estudiantes matriculados tienden a disminuir con el tiempo, bien se para graduarse o mantenerse no matriculados. También se ve que los estudiantes no matriculados van a aumentar durante los siguientes 3 años y de este conjunto algunos tienden a volver para graduarse. En

45 42 Aldo Gutierrez et al. resumen los indicadores de deserción para el programa de Economía tienden a mantenerse, sin embargo se deben tomar medidas con respecto a los estudiantes que abandonan sus estudios por primera vez, ya que es muy probable que no regresen la segunda vez, y por lo tanto se conviertan en Äúdesertores de programa Äù. Figura 6. Comportamiento futuro de estados 5. Conclusiones Las cadenas de Markov permiten brindar una herramienta poderosa como estrategia de análisis de información para el contexto de la Universidad, no sólo para el tema de deserción sino para otro tipo de análisis. El modelo predictivo presentado permite apoyar la toma de decisiones en la Secretaría de Planeación de la Universidad para dar un cumplimiento a sus objetivos como área estratégica de la Rectoría. En trabajos futuros se puede utilizar este modelo para tener en cuenta los posibles cambios de estado de los estudiantes dentro de un semestre con respecto a sus asignaturas, con el fin de realizar análisis más detallados al interior de los Departamentos que ofrecen los cursos en la Universidad. Con el resultado de los datos, podemos observar que todos los semestres presentan un comportamiento regular, entonces se podría plantear a futuro un modelo donde se tiene clara la oscilación de estudiantes entre un semestre y otro y además se incluyan los estudiantes nuevos. Referencias 1. Larissa T; Abai Majid, Data Strategy, R Bowerman, B; OConnell, Time Series Forecasting, Pierre Brémaud, Markov chains., 1999

46 Cadenas de Markov Ip Chen, Bocheng, School of Economics & Management,Tsinghua University, pages , Michael K Ching, Wai-Ki; Ng., Markov Decision Process for Customer Lifetime Value, Maria Eugenia Correa Olarte, El observatorio de la universidad colombiana, Ministerio de Educacion Nacional, Sistema de prevencion y analisis de la deserción en las instituciones de educación superior (spadies), P. H Fok, D; Ranses. Forecasting market shares for models sales International Journal of Forecasting, B. R Gruca, T. S; Klenz., Using neural networks to identify competitive market structures from aggregate market response data, omega International Journal of Management Science, H Klapper, D; Herwartz, Forecasting market share using predicted values of competitive behavior, International Journal of Forecasting, V Kumar, Forecasting market share using predicted values of competitive behavior. International Journal of Forecasting B Lipstein, The dynamics of brand loyalty and brand switching, Byron Morgan, Applied Stochastic Modelling, Honghai Morgan, Ian; Liu, Predicting future states with n-dimensional Markov chains for fault diagnosis IEEE TRANSACTIONS ON INDUSTRIAL ELECTRO- NICS, Wynn Morrell, Darryl, Straling. Decision directed estimation of the state sequence of an unknown markov chain. In Brigham Young University, editor, 26th Conference on Decision and Control, Pontificia Universidad, L; Hudek V Sokele, M; Moutinho University of Glasgow Advanced market share modelling based on markov chains., Inc. The MathWorks, Matlab - the language of technical computing, Alvaro Torres. Probabilidad, procesos estocásticos y confiabilidad en ingeniería eléctrica Yuanbiao; Weigang Jiang Xie, Jianwen; Zhang. An improved grey-markov chain method with an application to predict the number of chinese international airlines. In 2008 International Symposium on Information Science and Engineering, Gerald B; Matos Manuel Antonio Yu, Wang; Sheblé. Application of markov chain models for short term generation assets valuation. In 8th International Conference on Probabilistic Methods Applied to Power Systems, Iowa State University, 2004

47 Face recognition and identification using Open CV and Fast Artificial Neural Networks Hugo Enrique Arias Godoy and Hector Daniel Andrade Groppe Tecnológico de Monterrey, Campus Guadalajara Resumen Face recognition is a challenging endeavor within computer science as it requires the use of different tools and algorithms in order to effectively accomplish the task. We propose a method to identify individuals by identifying key features present in the majority of human faces, calculating the distance between such points, and feeding the distances to a neural network in order to determine the identify of an individual. By this method, a face is processed and the position for each point is obtained. The process goes on by calculating the distance between each point and generating a vector of six values that is used as the input vector for the neural network. 1. Introduction With technology present in every aspect of our lives, face recognition becomes not only feasible but also necessary in order to improve human-machin interfaces and create better products and tools that make our lives easier than before. One area of ongoing research is face recognition. Machines with the ability to identify individuals by merely analyzing information from an image can be extensively be used in the security industry, particularly, surveillance systems. 2. Definitions Throughout the paper the following definitions are used: 1. Face Recognition: finding a face within a picture. 2. Face Identification: identifying an individual by extracting key features present in the face. 3. Previous Work 3.1. Pattern Recognition Pattern recognition techniques share the same basic structure: 1. Data is collected and selected. 2. The data is processed and the hidden relationships are extracted.

48 Neural Networks Neural Networks Artificial Neural Networks (or ANNs for short) are powerful tools used in the artificial intelligence field. ANNs are modeled after the human brain and attempt to emulate the behavior of the natural neural networks. The outstanding features they possess are the intrinsic ability of parallel processing and the robustness of the information they can save. There are different types of ANNs: 1. Single-layer, feed-forward neural networks or Perceptrons 2. Multilayer, feed-forward neural networks 3. Multilayer, back-propagation neural networks Neural networks have a general structure and are composed of nodes called neurons that receive data from multiple inputs and generate a single output. Each input to a neuron is affected by a coefficient or weight. The activation function then sums the weighted inputs and an output is produced. 4. Tools We make use of the following programming languages and libraries: 1. C++ Chosen as both OpenCV and FANN include C++ bindings. 2. Python Used to facilitate batch-execution of the programs developed. Several Python programs were created to automate some processes. 3. OpenCV Open source computer vision library. Facilitates the manipulation of image and video data. 4. FANN Also open source, Fast Artificial Neural Network simplifies the process of creating, training, and testing ANNs. 5. Process workflow The process is composed of several stages: 1. FaceExtract Stage: A picture is first processed by the program FaceExtract whose only purpose is to find faces within the image and store them for further processing during the second stage. The output of FaceExtract is an image of 200 pixels wide and 200 pixels high containing what it identified as a face. 2. FaceFeature Stage: Each face obtained in the FaceExtract stage is then run through the program FaceFeature to identify points that ressemble eyes, nose, and mouth. In order to remove noise within the image and reduce false-positives we obscure portions of the image before applying the different filters. Since face features have a tendency to be located in the same image quadrants we do not need to full face to search for eyes, mouth or nose. One issue that presented itelf in this stage is the detection of multiple noses, eyes, or mouths as varying lighting conditions could confuse the classifier. The output is a file containing the amount of hits for each feature and the coordinates of each hit.

49 46 Hugo E. Arias et al. Figura 1: Overview of the complete process of face recognition and identification 3. DistCalc Stage: Each face processed in the previous stage is analyzed and compared to the admisibility criteria. In order for a face to be admissible to be fed to the neural network the feature recognition process must have identified exactly two eyes, one nose, and one mouth. We attempted to reduce the number of pictures that developed these issues by comparing each point to the average of the points but we were not able to reduce the variability of the process. Any face that does not meet this criteria is discarded and not considered for the training and test data sets. The distances between each feature is then calculated and an input vector is generated. A value between -1 and 1 is to each individual. This are the output values the neural network will be trained against. The output of this stage is a file that contains the input and output vectors that will be fed to the neural network for training or testing. 6. Experiments 6.1. Image collecting and processing Over 400 pictures were collected with faces of two individuals with various degrees of head-rotation or tilting (though the majority were frontal-facing).

50 Neural Networks 47 Figura 2: Overview of the process. A face is extracted from a picture and the coordinates are obtained in order to assemble the vector that will be fed to the neural network. A total of four control points are obtained and the distances between each point are calculated and ordered. Only 38 pictures of each individual were considered admissible and thus 25 pictures of each individual were randomly selected for training and the remaining 13 pictures were used to test the network Neural Network The input layer of the neural network takes 6 values and the output layer generates one value. We selected a back propagation neural network with the sigmoid as the activation function. This means that the results we can get are from -1 to 1. We trained several ANNs with various values for error and neurons in the hidden layer.

51 48 Hugo E. Arias et al. 7. Results The results of the tests run on the various ANNs that were trained are presented in the following table: Cuadro 1: Behavior of the artificial neural network, showing the difference between 5 neural networks with different amount of neurons and different error rate 8. Known Limitations During the course of the investigation we detected the following limitations: 1. Haar-like algorithm use rectangle-shaped classifiers for pattern recognition and as a result they are not effective against tilted-faces. 9. Further Work Further work is proposed in order to determine the minimum amount of features needed to identify an individual, improve the identification rate, and determine the flexibility of the method under different conditions such as headtilting, head-rotation, lighting, color, and age. Any further work would also require a bigger training data set and the refination of detection algorithms both developed and provided by the libraries.

52 Neural Networks Conclusions A high success rate in discerning between two individuals was not achieved and we attribute this to the following: 1. Converting each face image to numerical data that can be fed to the neural network to train and test. a) In order to increase the success rate we require less variability in the information we extract from each face image of an individual. b) Ideally an individual s faces in a sample of images would render data that has little variability. 2. The method of detection of features: a) The detection of facial features is highly dependent on image quality, illumination, head rotation and tilt. 3. The data extracted from faces was not enough or inadequate: a) Distances between eyes, mouth and nose are not neccesarily a fool proof way to identify an individual. Ideally we would also: 1) obtain more fine-grained information such as overall shape of the head, eyes, nose, and mouth 2) identify additional features such as ears, cheek, chin, eye cavity depth, nose width, hairline As we can notice from the table and the behavior described above, talking about the neural networks, there is a direct relationship betweeen the learning ability and the amount of neurons within the network. When we used less neurons (range between 40 and 60) the tendency of the network behavior was biased and shown a better success rate when recognizing one person. We assignedthe values -0.5 and 0.5 to each individual and used the as the expected result of the neural networik. After processing the input vector, the output value would be used to identify the individual. When the the neural network was trained with data belonging to just one individual, the success rate in identifying such individual was decisively higher. It was also observed that if the selected output value of the neural networks are not too far apart, the success rate tends to be higher and decreased as they are too far apart. Unfortunately, we came to this realization too late to attempt adjustments. Referencias 1. Schwartz, William Robson and Guo, Huimin and Davis, Larry S, A Robust and Scalable Approach to Face Identification 2. Pal, Sarbajit and Biswas, P K and Abraham, Ajith and Energy, Variable and Centre, Cyclotron and Saltlake, A F, Face Recognition Using Interpolated Bezier Curve Based Representation, Oravec, Miloš and Rozinaj, Gregor and Beszédeš, Marian, Speech Audio Image and Biomedical Signal Processing using Neural Networks, pages = , Studies in Computational Intelligence, Detection and Recognition of Human Faces and Facial Features, 2008

53 50 Hugo E. Arias et al. 4. Eide, AAge and Jahren, Christer and Jorgensen, Stig and Lindblad, Thomas, Eye Identification for Face Recognition with Neural Networks 5. Bradski, Gary and Kaehler, Adrian, OReilly Media Inc, Loukides, Mike and Monaghan, Rachel, Learning OpenCV: Computer Vision with the OpenCV Library, Youyi, Jiang and Xiao, Li, 2010 Second WRI Global Congress on Intelligent Systems, A Method for Face Recognition Based on Wavelet Neural Network, Anam, Sarawat and Islam, Shohidul and Kashem, M A and Islam, M N and Islam, M R and Islam, M S, Face Recognition Using Genetic Algorithm and Back Propagation Neural Network, Singh, K, Proceedings of the First International Conference, An Improved Algorithm for Face Recognition using Wavelet and Facial Parameters, Spratling, MW, The Journal of Machine Learning Research,Learning Image Components for Object Recognition, Lagani, Robert, Pattern Recognition, Packt Publishing, OpenCV 2 Computer Vision Application Programming Cookbook, Kim, Kyungnam, Face Recognition using Principle Component Analysis. 12. Guohong, H and Zhihua, X, Control Conference, 2005, Face Recognition Based on Constructive Neural Networks Covering Learning Algorithm, Chen, L, Neural Networks, IJCNN 05. Proceedings, Pattern Classification by Assembling Small Neural Networks, Nakamura, K and Komatsu, N, SICE 97. Proceedings, RECOGNITION OF FACE POSITION AND SHAPE BY SPREAD PATTERN OF SPATIAL SPREADING ASSOCIATIVE NEURAL NETWORK, Zhang, H and Guan, J, Proceedings of the 30th annual Southeast, Artificial Neural Network-Based Image Pattern Recognition, Ghorpade, Santaji and Ghorpade, Jayshree and Mantri, Shamla and Ghorpade, Dhanaji, NEURAL NETWORKS FOR FACE RECOGNITION USING SOM,2010

54 Neural Networks as support in decision making on ForeX Trading Ricardo Rocha Tecnológico de Monterrey, Campus Guadalajara 1. Objective The project developed throughout the semester, and herein explained, will demonstrate the use of Artificial Neural Networks as a support in decision making on ForeX Trading. The goal is to prove that following a particular strategy to invest on ForeX, prediction from ANNs can yield to better results and a safer investment. Following, the sections explained in this document are: ForeX Trading Strategy Artificial Neural Networks Experiment Conclusions 2. ForeX Trading Strategy According to GAIN Capital Holdings, INC: ForeX Trading is the world?s most trading financial market in the world, having 4 trillion dollars worth of currencies traded across the globe in a single day This makes ForeX a good candidate for analysis. However, the explanation of all the process and workings of ForeX are beyond the scope of this experiment. Representation of a currency value, in respect to another, can be made of several forms, however the information that is needed typically is Open, High, Low, and Close value over a determined period of time which can go from 1 minute up to several days or months. Open: It is the value of the currency at the beginning of the specified period. High: It is the highest value the currency got during the specified period. Low: It is the lowest value the currency got during the specified period. Close: It is the value of the currency at the end of the specified period. *Please note that the values are always positive, since they represent a rate between both currencies. Other indicator that is of important impact in our strategy, is what is called the Stochastic Oscillator Technical Indicator which

55 52 Ricardo Rocha compares where a security?s price closed relative to its price range over a given time period. According to MetaQuotes. In other words, it will tell us when the price is more likely to rise/fall according to the previous Highs/Lows, therefore, we can adjust our strategy to BUY or SELL. The explanation on how to obtain this value is as well beyond the scope of this experiment. The strategy was suggested by Carlos Rocha, Master in EU Business and Law. And basically consists in the following statements/actions. 1. You only have 1 and only 1 active order at a time. 2. You can perform from the following actions or do nothing at all. VBO1 (Variable BUY Order 1): You should place a BUY order if the Stochastic Indicator is below 20 and the Current Price is higher than the previous? High value. VBO2 (Variable BUY Order 2): You should place a BUY order if the Current Price touches the Stop Loss when a Sell Order is Active. VSO1 (Variable SELL Order 1): You should place a SELL order if the Stochastic Indicator is above 80 and the Current Price is lower than the previous Low value. VSO2 (Variable SELL Order 2): You should place a SELL order if the Current Price touches the Stop Loss when a Buy Order is Active. 3. For the initial conditions, you should let the first data to arrive and the order should be placed according to its movement. This strategy is very common in the financial market and it was not developed nor created by the financial mentor of this experiment. 3. Artificial Neural Networks According to James Freeman, for problems that do not follow a linear sequence and that need to perform complex data translation which has no direct mapping (or those problems that need a "best guess") are good candidates to be solved by Backpropagation Artificial Neural Networks. (Freeman, 1992) An Artificial Neural Network is a computer program that borrow some features from the physiology of the human brain. It is composed of processing elements (nodes) connected by arcs (Freeman, 1992). Each node can be called a neuron, and the neurons can have inhibitory or excitatory weighted connections. The advantage that ANN have over other type of computer programs is its ability to learn, propagate and adapt to the problem (Freeman, 1992). Plus, it is targeted with a desired error, which is the learning element inside the ANN. The explanation on how the ANN works is beyond the scope of this document. The ANN is used in this project as a predictor of values to support the decision of a BUY or SELL operation.

56 Neural Networks: ForeX trading Experiment Due to the features that ANNs provide and the nature of the ForeX Market, it was decided that an ANN should be used to backup the decisions made by the ForeX Trading Strategy stated before. For our experiment, the rate between EUR and USD was used due to its impact to our local market, the MXN (Mexican Peso) and due to the fact that EUR/USD is one of the 5 exchange rates most used in the world. Data starting from 2000 was used, marking the origin of the EUR. Each set is taken on a 5 minute period. The experiment consists in 2 phases and it uses FANN as the framework for ANNs due to its simplicity in use and integration ANN Training For training purposes of the ANN, the following set of data was used. Inputs: The inputs to the ANN are composed of the data of 2 periods, the current and the immediate previous. It follows the following format: 1. Current Open 2. Current High 3. Current Low 4. Current Close 5. Previous Open 6. Previous High 7. Previous Low 8. Previous Close Output: The output from the ANN shows the prediction of the next value, and it should be taken with the following format: 1. Next Open 2. Next High 3. Next Low 4. Next Close Num layers: This is set to 3 due to an empirical process. Going further than 3 will make the CPU to return a floating point error. Num Neurons: This value is set to 20 due to an empirical process. Going further than 20 did not make a change in the Desired Error output. Desired Error: An error of is considered, due to limitations in the training. It was noted that in most of the times, the Error could not go way lower than this threshold. *Please note that over 447,257 inputs were used for Training the ANN ANN in Market Simulation The Market Simulation mainly consists of: 1. Initialization:

57 54 Ricardo Rocha Initial Money: $1,000 This is the amount of money that the account will have. This value can be modified. Standard Volume: 400 This is the amount of units that will be in the transaction. This value can be modified and the program tries to fulfill this wanted value if the amount of money allows it. Commission: $1.5. This is the amount of money that each transaction will cost as part of commission to the broker. This amount can be modified freely. Use ANN: 0-1 this will state if the ANN should be used as a backup in decisions or if the program should follow only the strategy. initial 2. Fetch data: The program uses an auxiliary function whose only purpose is to read from a text file the next input from the market. It will then pass it to the program in an array of 4 data following the same format as with the ANN. Around 8,000 data sets were used for the market simulation. 3. Calculate Stochastic and Output from ANN: The values fetched are fed to the ANN as stated before and the output generated is saved in an array for later use. The Stochastic follows the rule of the Fast Stochastic %K line, which was obtained from Forex-Indicators and is as follows: %KF ast(t) = 100 (C(t) LL(n)) HH(n) LL(n) Where (t) is current and (n) is typically Check for Strategy and implement it: Once we have calculated the predicted value, the stochastic, and got the new market value, we can proceed to check if we fall under any action according to its requisites. In here we add the Use_ANN conditional to check whether or not the ANN should be used as a backup. The program reports individual profit per unit and the total profit for the whole operation. 5. Repeat until all data has been processed or the account has reached bankrupt. *The simulation prints the outcome of each data fetch and the final outcome in the console, however, it can be redirected to a file using./f inance_test > f inance_log To compile the program, you will need the following command: gcc O3finance_test.corder_ops.cget_fx.c ofinance t est lfann lm (1) 5. Conclusions Running the experiment without ANN yields the following result: Current Cash: $

58 Neural Networks: ForeX trading 55 Current Order Type: 1 Current Order Volume: 400 Current Order Price: $ Current Money in Order: $ Total Money: $ Net Profit: $ Profit percent: While the experiment using ANN yields the following result: Current Cash: $ Current Order Type: 2 Current Order Volume: 400 Current Order Price: $ Current Money in Order: $ Total Money: $ Net Profit: $ Profit percent: This result explains that the ANN helped with the strategy to get a better result. Unfortunately, the final outcome of this period was that money was lost in the overall operation. However, this does not mean that the ANN is bad for this situations, but it throws that a reshape in the strategy should take place. It can be seen that the amount of money lost is way less when ANN is being used, around 5 %. As a personal comment, the ANN helped to make better decisions thanks to its predictions made to the future market value. The experiment also drives to think that an analysis should be done with the strategy, since the account is losing money for each transaction that is being made and because the strategy is prepared for rise/fall tendencies and not to lateral movements. (Not rising/falling enough as to make a significant profit.

59 56 Ricardo Rocha 6. References Forex Indicators. "Stochastic Indicator", Freeman, James. "Neural Networks. Algorithms, Applications, and Programming Techniques. Addison-Wesley Publishing Company.1992 GAIN Capital Holdings, INC "What is Forex?", Metaquotes. "Stochastic Oscillator", 2005, 7. Financial Mentor Carlos Rocha, Master in EU business and law. 2012

60 Dominó cubano Carlos Fernando de Santiago Ramírez and Jorge del Río Santiago Tecnológico de Monterrey, Campus Guadalajara Resumen Este documento presenta la creación de un agente inteligente capaz de jugar dominó cubano haciendo uso del algoritmo de búsqueda Depth first. Muestra la justificación del uso del algoritmo y las heurísticas utilizadas, así como los resultados obtenidos. 1. Introducción A lo largo del curso de sistemas inteligentes, se estudiaron y analizaron diferentes técnicas para lograr darle la capacidad de actuar racionalmente a una computadora o agente, así que con el fin de demostrar los conocimientos adqueridos en el curso, se decidió realizar este proyecto. El objetivo es lograr la creación de un agente inteligente que juegue dominó cubano de la mejor manera posible, tomando en cuenta las fichas en el tablero y las fichas que tiene para jugar. Se analizaron varias técnicas que utilizan los jugadores de este juego y se programó al agente inteligente con la mejor técnica. La técnica que se utiliza para aumentar las probabilidades en el dominó cubano de ganar es la de crear un camino lo más largo posible con las fichas que se tienen para jugar, es decir que si se se tienen 11 fichas y se logra formar un camino utilizandolas todas, la probabilidad de ganar aumentan. El agente inteligente se programó utilizando el algoritmo de búsqueda depth first, con este algoritmo, el agente busca por el camino más largo, es decir, el camino en el cual pueda poner el mayor número de fichas en el trablero. En caso de que el agente encontrara varios caminos con la misma longitud, se utiliza la heurística de tomar el camino que pese más, es decir, que elige el camino donde la suma total de los valores de cada ficha sea mayor. 2. Creación del Arbol El agente inteligente recibe un conjunto de fichas en las cuales puede jugar sus fichas, con estas fichas genera un árbol de búsqueda para posteriormente elegir el mejor camino. El árbol de búsqueda toma como raíces el conjunto de fichas que recibe inicialmente, después, busca entre las fichas que tiene disponibles para jugar y pone la primera que encuentra con algún valor que haga juego con alguna de las raíces. Este proceso se repite hasta que todas las posibles ramas son creadas. Una vez que el árbol está completo, se elige la mejor rama a jugar. Ejemplo:

61 58 Carlos F. de Santiago et al. Figura 1: Ejemplo de domintó cubano El agente inteligente tiene las siguientes fichas a jugar: En el tablero est án las siguientes fichas en las cuales se puede jugar: Todas las ramas del árbol generado son presentadas en las figuras 2 a 9: Figura 2: Primera Rama 3. Pseudocódigo Depth first public void f i n d B e s t P a t h ( i n t l e v e l, i n t s c o r e ) { / / A c t u a l i z a e l m e j o r c a m i n o s i s e h a e n c o n t r a d o a l g o m e j o r

62 Dominó cubano 59 Figura 3: Segunda Rama Figura 4: Tercera Rama Figura 5: Cuarta Rama updatebranch ( score ) ; / / R e c o r r e t o d a s l a s p i e z a s f o r ( S i m p l e P i e c e b o a r d P i e c e : b o a r d P i e c e s A r r a y ) { f o r ( S i m pl e P i ec e p l a y e r P i e c e : p l a y e r P i e c e s A r r a y ) { / / S i no h a y un l a d o q u e s e p u e d a a c o m o d a r, i g n o r a r l a s p i e z a s i f (! i s E q u a l S i d e T o P l a y ( boardpiece, p l a y e r P i e c e ) ) continue ; / / E s t a b l e c e r q u e q u e r e m o s r e a l i z a r e l m o v i m i e n t o p l a y e r P i e c e. s e t S i d e T o P l a y ( b o a r d P i e c e ) ; / / R e m o v e r l a p i e z a d e l t r a b l e r o, y a g r e g a r l a p i e z a j u g a d a a l t a b l e r o boardpieces. remove ( boardpiece ) ;


IntroducciónaDataMining IntroducciónaDataMining Data Mining como un conjunto de técnicas estadísticas No existe una única definición del término Data Mining (DM). Se puede decir que DM se refiere a un conjunto de métodos estadísticos

Más detalles


UNIVERSIDAD DE MURCIA UNIVERSIDAD DE MURCIA FACULTAD DE INFORMÁTICA Enhancing User-Centric Identity Management Systems with Reputation Models in Distributed Environments Mejora de Sistemas de Gestión de Identidades Centrados

Más detalles

Desarrollo de videojuegos 2012


Más detalles

A Constraint-based Job-Shop Scheduling Model for Software Development Planning

A Constraint-based Job-Shop Scheduling Model for Software Development Planning A Constraint-based Job-Shop Scheduling Model for Software Development Planning Irene Barba, Carmelo Del Valle, and Diana Borrego Dpto. Lenguajes y Sistemas Informáticos, Universidad de Sevilla, Spain {irenebr,carmelo,dianabn}

Más detalles

Tópicos Selectos de Ingeniería. Pedro Solares. Gobierno de tecnología de Información ECORFAN

Tópicos Selectos de Ingeniería. Pedro Solares. Gobierno de tecnología de Información ECORFAN Tópicos Selectos de Ingeniería Pedro Solares Elena Romero Directores Gobierno de tecnología de Información ECORFAN Tópicos Selectos de Ingeniería Volumen I Para futuros volúmenes:

Más detalles

Template courtesy of (

Template courtesy of ( Editor: Beatriz Barros Executive Editor: Inés Méndez Assistant Edition: Ana Rodríguez Place of edition: Málaga Publishing Entity: Departamento de Lenguajes y Ciencias de la Computación de la Universidad

Más detalles

La metodología del Data Mining. Una aplicación al consumo de alcohol en adolescentes

La metodología del Data Mining. Una aplicación al consumo de alcohol en adolescentes La metodología del Data Mining. Una aplicación al consumo de alcohol en adolescentes The methodology of Data Mining. An application to alcohol consumption in teenagers Elena Gervilla García*, Rafael Jiménez

Más detalles

Human Computer Interaction for people with motor disabilities using a Wiimote device

Human Computer Interaction for people with motor disabilities using a Wiimote device Human Computer Interaction for people with motor disabilities using a Wiimote device Brian Emmanuel Magario 1, Matias Nicolás Selzer 1,Martín L. Larrea 1, Cristina Manresa-Yee 2, Ramón Mas-Sansó 2. 1 Laboratorio

Más detalles

Deployment of Computational Electromagnetics Applications On Large Scale Architectures

Deployment of Computational Electromagnetics Applications On Large Scale Architectures ORALES Deployment of Computational Electromagnetics Applications On Large Scale Architectures Carlos-Jaime BARRIOS-HERNÁNDEZ (1,2), Fadi KHALIL (3), Yves DENNEULIN (2), Hervé AUBERT (3), Fabio COCCETTI

Más detalles

Practical Data Mining. Tutorial 1: Introduction to the WEKA Explorer

Practical Data Mining. Tutorial 1: Introduction to the WEKA Explorer Practical Data Mining Tutorial 1: Introduction to the WEKA Explorer Mark Hall, Eibe Frank and Ian H. Witten May 5, 2011 c 2006-2012 University of Waikato 1 Getting started This tutorial introduces the

Más detalles

Autorizada la entrega del proyecto de la alumna: Teresa Jover Sanz-Pastor EL DIRECTOR DEL PROYECTO. Francisco José Cesteros García

Autorizada la entrega del proyecto de la alumna: Teresa Jover Sanz-Pastor EL DIRECTOR DEL PROYECTO. Francisco José Cesteros García Autorizada la entrega del proyecto de la alumna: Teresa Jover Sanz-Pastor EL DIRECTOR DEL PROYECTO Francisco José Cesteros García Fdo.: Fecha: / / Vº Bº del Coordinador de Proyectos David Contreras Bárcena

Más detalles

Generación automática de datos de prueba mediante un enfoque que combina Búsqueda Dispersa y Búsqueda Local

Generación automática de datos de prueba mediante un enfoque que combina Búsqueda Dispersa y Búsqueda Local Generación automática de datos de prueba mediante un enfoque que combina Búsqueda Dispersa y Búsqueda Local Raquel Blanco 1, Javier Tuya 1 y Belarmino Adenso-Díaz 2 1 Departamento de Informática 2 Departamento

Más detalles

Ontology Matching based On Class Context: to solve interoperability problem at Semantic Web. Defended by Isaac Lera

Ontology Matching based On Class Context: to solve interoperability problem at Semantic Web. Defended by Isaac Lera Ontology Matching based On Class Context: to solve interoperability problem at Semantic Web Defended by Isaac Lera A thesis submitted to Departament de Ciències Matemàtiques i Informàtica of the University

Más detalles


QUALITY METRICS FOR BUSINESS PROCESSES KEYNOTE QUALITY METRICS FOR BUSINESS PROCESSES Jorge Cardoso Departamento de Matemática e Engenharias University of Madeira 9100-390, Portugal Abstract In a competitive e-commerce and e-business

Más detalles

la sociedad de la información RESUMEN EJECUTIVO / EXECUTIVE SUMMARY

la sociedad de la información RESUMEN EJECUTIVO / EXECUTIVE SUMMARY RESUMEN_SIE_OK.qxd 06/02/2006 19:15 PÆgina 3 la sociedad de la información en España RESUMEN EJECUTIVO / EXECUTIVE SUMMARY El informe "La Sociedad de la Información en España 2005" ha sido elaborado por

Más detalles

Modelo de Interoperabilidad para Plataformas de Cloud Computing basado en Tecnologías del Conocimiento

Modelo de Interoperabilidad para Plataformas de Cloud Computing basado en Tecnologías del Conocimiento Universidad Carlos III de Madrid Doctorado en Ciencia y Tecnología Informática Modelo de Interoperabilidad para Plataformas de Cloud Computing basado en Tecnologías del Conocimiento AUTOR: ENRIQUE JIMÉNEZ

Más detalles



Más detalles



Más detalles

Contenidos. Modelo en Cascada. Ingeniería de Software. Usability Engineering. Proceso de Diseño de Interfaces

Contenidos. Modelo en Cascada. Ingeniería de Software. Usability Engineering. Proceso de Diseño de Interfaces Contenidos Introducción a Human-Computer Interaction Análisis, Diseño y Construcción Prof. Dra. Silvia Schiaffino Prof. Mg. Alfredo Teyseyre ISISTAN

Más detalles

Prólogo. Actas de los Talleres de las Jornadas de Ingeniería del Software y Bases de Datos, Vol. 3, No. 3, 2009 ISSN 1988-3455 SISTEDES, 2009 I

Prólogo. Actas de los Talleres de las Jornadas de Ingeniería del Software y Bases de Datos, Vol. 3, No. 3, 2009 ISSN 1988-3455 SISTEDES, 2009 I Prólogo Los procesos de negocio están tomando un necesario protagonismo en el campo de la ingeniería del software debido a que los sistemas software son, cada vez más, piezas para dar soporte de automatización

Más detalles



Más detalles

La RFID como tecnología habilitadora de la Internet de las Cosas

La RFID como tecnología habilitadora de la Internet de las Cosas Diego Lz. de Ipiña Glz. de Artaza Ana Ayerbe Fernández-Cuesta Juan Ignacio Vázquez Gómez et al. La RFID como tecnología habilitadora de la Internet de las Cosas Actas de las 3as Jornadas Científicas sobre

Más detalles

Augmented Virtual Realities for Social Development. Realidades virtuales aumentadas para el desarrollo social

Augmented Virtual Realities for Social Development. Realidades virtuales aumentadas para el desarrollo social Augmented Virtual Realities for Social Development Realidades virtuales aumentadas para el desarrollo social ALFA-GAVIOTA Coordination Coordinación European Union Coordination Coordinación

Más detalles

juntos por la salud mental

juntos por la salud mental avanzamos! juntos por la salud mental Edición No. 16 Exploramos prácticas terapéuticas no tradicionales Exploring Non-traditional Healing Practices Adentro: El teatro, la música y otras prácticas que apoyan

Más detalles

Integración de Kerberos con servicios Cloud (OpenStack)

Integración de Kerberos con servicios Cloud (OpenStack) Universidad de Murcia Facultad de Informática Integración de Kerberos con servicios Cloud (OpenStack) Trabajo Fin de Grado Autor: Víctor Manuel Ruiz Sánchez Tutores: Gabriel López

Más detalles

easymahout Entorno de ejecución de algoritmos inteligentes de Mahout para Hadoop y Big Data

easymahout Entorno de ejecución de algoritmos inteligentes de Mahout para Hadoop y Big Data easymahout Entorno de ejecución de algoritmos inteligentes de Mahout para Hadoop y Big Data PROYECTO DE SISTEMAS INFORMÁTICOS FACULTAD DE INFORMÁTICA DEPARTAMENTO DE INGENIERÍA DEL SOFTWARE E INTELIGENCIA

Más detalles

RISCE Revista Internacional de Sistemas Computacionales y Electrónicos. A ñ. NOVIEMBRE 2010 Número 6, Volumen 2, Año 2. A l e j a n d r o [

RISCE Revista Internacional de Sistemas Computacionales y Electrónicos. A ñ. NOVIEMBRE 2010 Número 6, Volumen 2, Año 2. A l e j a n d r o [ [ RISCE Revista Internacional de Sistemas Computacionales y Electrónicos A ñ NOVIEMBRE 2010 Número 6, Volumen 2, Año 2 A l e j a n d r o [ RISCE Revista Internacional de Sistemas Computacionales y Electrónicos;

Más detalles

Intersemestral de Arquitectura de Computadoras II. AGPS. 2005-2006

Intersemestral de Arquitectura de Computadoras II. AGPS. 2005-2006 TEMARIO 1. FUNDAMENTOS TEÓRICOS DEL CÓMPUTO PARALELO. 1.1. Antecedentes. 1.1.1. Historia del cómputo paralelo 1.1.2. Ventajas 1.1.3. Taxonomía 1.2. Paradigmas del cómputo paralelo 1.2.1. Paradigmas del

Más detalles

Programación en Entornos Cliente/Servidor Ingeniería Informática Curso 2011/2012 Encuesta de Fin de Curso

Programación en Entornos Cliente/Servidor Ingeniería Informática Curso 2011/2012 Encuesta de Fin de Curso Programación en Entornos Cliente/Servidor Ingeniería Informática Curso 2011/2012 Encuesta de Fin de Curso La asignatura me ha gustado Creo que la asignatura puede servirme en mi profesión. El temario es

Más detalles

TRABAJO FIN DE GRADO. Título: Diseño y desarrollo de un sistema de detección de NATS para un monitor de tráfico residencial

TRABAJO FIN DE GRADO. Título: Diseño y desarrollo de un sistema de detección de NATS para un monitor de tráfico residencial TRABAJO FIN DE GRADO Título: Diseño y desarrollo de un sistema de detección de NATS para un monitor de tráfico residencial Autor: Álvaro Fernández Rojas Titulación: Grado en Ingeniería Informática Tutor:

Más detalles