3 research outputs found
CodeMaker : una nova forma de jugar al MasterMind
Mastermind és un joc de lògica per a dos jugadors, el qual consisteix en que un dels jugadors (el
CodeBreaker) intenta encertar una combinació secreta pensada per l’altre jugador (CodeMaker).
En aquest projecte s'han afegit dos noves normes al joc; la primera permet que el CodeMaker pugui
canviar la seva combinació secreta sempre que vulgui (però sense incomplir les anteriors respostes del
taulell); la segona consisteix en que només es conservin les tres últimes preguntes al taulell (després de
respondre la quarta, la més antiga s'elimina).
Per comprovar com afecten les normes al joc s’ha creat un sistema que juga partides de forma
automà tica per obtenir informació estadÃstica.
S'ha creat un algorisme que juga amb les noves normes, com també un algorisme de Machine Learning
que usa la mateixa lògica.
Per últim, s'ha implementat una aplicació mòbil que permet jugar en els dos rols existents contra les
diferents estratègies de la mà quina, o fer que dos estratègies juguin entre ells.Mastermind es un juego de lógica para dos jugadores, el cual consiste en que un jugador (CodeBreaker)
intenta acertar la combinación secreta pensada por el otro jugador (CodeMaker).
En este proyecto se han añadido dos nuevas reglas al juego; la primera permite que el CodeMaker
cambie la combinación secreta siempre que quiera (pero sin incumplir las respuestas de tablero); la
segunda consiste en que solo se conserven las tres ultimas preguntas del tablero (después de responder
la cuarta, la mas antigua se elimina).
Para comprobar como afectan las nuevas reglas al juego se ha creado un sistema que juegue partida de
forma automática para obtener información estadÃstica.
Se ha creado un algoritmo que juega con las nuevas reglas, como también un algoritmo de Machine
Learning que usa la misma lógica.
Por ultimo, se ha implementado una aplicación móvil que permite jugar en los dos roles existentes
contra las distintas estrategias de la maquina, o hacer que dos estrategias jueguen entre ellas.Mastermind is a logic game for two players. The first player (CodeBreaker) tries to answer the secret
code created by the other player (CodeMaker).
In this project we added two new rules; the first one enables the CodeMaker to change his secret code
whenever he wants (however, he has to respect the old guess on the board); the second rule says that
only the last three guesses are stored on the board (after answering the forth guesses, the last one is
deleted).
To check the impact of the new rules, we created a program that plays games automatically; therefore,
we will recollect a lot of statistical information.
We created an algorithm that plays with the new rules; moreover, we created a Machine Learning
algorithm that plays with this new logic.
Last but not least, we implemented a mobile application in which you can play in both roles
(CodeMaker and CodeBreaker) against a lot of machine’s algorithm; or you can see two algorithm
playing against
A new ant colony optimization model for complex graph-based problems
Tesis doctoral inédita leÃda en la Universidad Autónoma de Madrid. Escuela Politécnica Superior, Departamento de IngenierÃa Informática. Fecha de lectura: julio de 2014Nowadays, there is a huge number of problems that due to their complexity have
employed heuristic-based algorithms to search for near-to-optimal (or even optimal)
solutions. These problems are usually NP-complete, so classical algorithms are not
the best candidates to address these problems because they need a large amount of
computational resources, or they simply cannot find any solution when the problem
grows. Some classical examples of these kind of problems are the Travelling Salesman
Problem (TSP) or the N-Queens problem. It is also possible to find examples in real and
industrial domains related to the optimization of complex problems, like planning,
scheduling, Vehicle Routing Problems (VRP), WiFi network Design Problem (WiFiDP)
or behavioural pattern identification, among others.
Regarding to heuristic-based algorithms, two well-known paradigms are Swarm
Intelligence and Evolutionary Computation. Both paradigms belongs to a subfield
from Artificial Intelligence, named Computational Intelligence that also contains
Fuzzy Systems, Artificial Neural Networks and Artificial Immune Systems areas.
Swarm Intelligence (SI) algorithms are focused on the collective behaviour of selforganizing
systems. These algorithms are characterized by the generation of collective
intelligence from non-complex individual behaviour and the communication schemes
amongst them. Some examples of SI algorithms are particle swarm optimization, ant
colony optimization (ACO), bee colony optimization o bird flocking.
Ant Colony Optimization (ACO) are based on the foraging behaviour of these insects.
In these kind of algorithms, the ants take different decisions during their execution
that allows them to build their own solution to the problem. Once any ant has
finished its execution, the ant goes back through the followed path and it deposits,
in the environment, pheromones that contains information about the built solution.
These pheromones will influence the decision of future ants, so there is an indirect
communication through the environment called stigmergy.
When an ACO algorithm is applied to any of the optimization problems just described,
the problem is usually modelled into a graph. Nevertheless, the classical graph-based
representation is not the best one for the execution of ACO algorithms because it
presents some important pitfalls. The first one is related to the polynomial, or even
exponential, growth of the resulting graph. The second pitfall is related to those
problems that needs from real variables because these problems cannot be modelled
using the classical graph-based representation.
On the other hand, Evolutionary Computation (EC) are a set of population-based
algorithms based in the Darwinian evolutionary process. In this kind of algorithms
there is one (or more) population composed by different individuals that represent a
possible solution to the problem. For each iteration, the population evolves by the use
of evolutionary procedures which means that better individuals (i.e. better solutions)
are generated along the execution of the algorithm. Both kind of algorithms, EC
and SI, have been traditionally applied in previous NP-hard problems. Different
population-based strategies have been developed, compared and even combined to
design hybrid algorithms.
This thesis has been focused on the analysis of classical graph-based representations
and its application in ACO algorithms into complex problems, and the development of
a new ACO model that tries to take a step forward in this kind of algorithms. In this
new model, the problem is represented using a reduced graph that affects to the ants
behaviour, which becomes more complex. Also, this size reduction generates a fast
growth in the number of pheromones created. For this reason, a new metaheuristic
(called Oblivion Rate) has been designed to control the number of pheromones stored
in the graph.
In this thesis different metaheuristics have been designed for the proposed system
and their performance have been compared. One of these metaheuristics is the
Oblivion Rate, based on an exponential function that takes into account the number
of pheromones created in the system. Other Oblivion Rate function is based on a bioinspired
swarm algorithm that uses some concepts extracted from the evolutionary
algorithms. This bio-inspired swarm algorithm is called Coral Reef Opmization (CRO)
algorithm and it is based on the behaviour of the corals in a reef.
Finally, to test and validate the proposed model, different domains have been used
such as the N-Queens Problem, the Resource-Constraint Project Scheduling Problem,
the Path Finding problem in Video Games, or the Behavioural Pattern Identification
in users. In some of these domains, the performance of the proposed model has been
compared against a classical Genetic Algorithm to provide a comparative study and
perform an analytical comparison between both approaches.En la actualidad, existen un gran número de problemas que debido a su complejidad
necesitan algoritmos basados en heurÃsticas para la búsqueda de solucionas subóptimas
(o incluso óptimas). Normalmente, estos problemas presentan una complejidad
NP-completa, por lo que los algoritmos clásicos de búsqueda de soluciones no son
apropiados ya que necesitan una gran cantidad de recursos computacionales, o simplemente,
no son capaces de encontrar alguna solución cuando el problema crece. Ejemplos
clásicos de este tipo de problemas son el problema del vendedor viajero (o TSP
del inglés Travelling Salesman Problem) o el problema de las N-reinas. También se
pueden encontrar ejemplos en dominios reales o industriales que generalmente están
ligados a temas de optimización de sistemas complejos, como pueden ser problemas de
planificación, scheduling, problemas de enrutamiento de vehÃculos (o VRP del inglés
Vehicle Routing Problem), el diseño de redes Wifi abiertas (o WiFiDP del inglés WiFi
network Design Problem), o la identificación de patrones de comportamiento, entre
otros.
En lo referente a los algoritmos basados en heuristicas, dos paradigmas muy
conocidos son los algoritmos de enjambre (Swarm Intelligence) y la computación
evolutiva (Evolutionary Computation). Ambos paradigmas pertencen al subárea de la
Inteligencia Artificial denominada Inteligencia Computacional, que además contiene
los sistemas difusos, redes neuronales y sistemas inmunológicos artificiales.
Los algoritmos de inteligencia de enjambre, o Swarm Intelligence, se centran en
el comportamiento colectivo de sistemas auto-organizativos. Estos algoritmos se
caracterizan por la generación de inteligencia colectiva a partir del comportamiento,
no muy complejo, de los individuos y los esquemas de comunicación entre ellos.
Algunos ejemplos son particle swarm optimization, ant colony optimization (ACO),
bee colony optimization o bird flocking.
Los algoritmos de colonias de hormigas (o ACO del inglés Ant Colony Optimization)
se basan en el comportamiento de estos insectos en el proceso de recolección de
comida. En este tipo de algoritmos, las hormigas van tomando decisiones a lo largo
de la simulación que les permiten construir su propia solución al problema. Una
vez que una hormiga termina su ejecución, deshace el camino andado depositando en
el entorno feronomas que contienen información sobre la solución construida. Estas
feromonas influirán en las decisiones de futuras hormigas, por lo que produce una
comunicación indirecta utilizando el entorno. A este proceso se le llama estigmergia.
Cuando un algoritmo de hormigas se aplica a alguno de los problemas de optimización
descritos anteriormente, se suele modelar el problema como un grafo sobre el cual
se ejecutarán las hormigas. Sin embargo, la representación basada en grafos
clásica no parece ser la mejor para la ejecución de algoritmos de hormigas porque
presenta algunos problemas importantes. El primer problema está relacionado con
el crecimiento polinómico, o incluso expnomencial, del grafo resultante. El segundo
problema tiene que ver con los problemas que necesitan de variables reales, o de coma
flotante, porque estos problemas, con la representación tradicional basada en grafos,
no pueden ser modelados.
Por otro lado, los algoritmos evolutivos (o EC del inglés Evolutionary Computation)
son un tipo de algoritmos basados en población que están inspirados en el
proceso evolutivo propuesto por Darwin. En este tipo de algoritmos, hay una, o
varias, poblaciones compuestas por individuos diferentes que representan problems
solutiones al problema modelado. Por cada iteración, la población evoluciona mediante
el uso de procedimientos evolutivos, lo que significa que mejores individuos (mejores
soluciones) son creados a lo largo de la ejecución del algoritmo. Ambos tipos de
algorithmos, EC y SI, han sido tradicionalmente aplicados a los problemas NPcompletos
descritos anteriormente. Diferentes estrategias basadas en población han
sido desarrolladas, comparadas e incluso combinadas para el diseño de algoritmos
hÃbridos.
Esta tesis se ha centrado en el análisis de los modelos clásicos de representación
basada en grafos de problemas complejos para la posterior ejecución de algoritmos
de colonias de hormigas y el desarrollo de un nuevo modelo de hormigas que pretende
suponer un avance en este tipo de algoritmos. En este nuevo modelo, los problemas
son representados en un grafo más compacto que afecta al comportamiento de las
hormigas, el cual se vuelve más complejo. Además, esta reducción en el tamaño
del grafo genera un rápido crecimiento en el número de feronomas creadas. Por
esta razón, una nueva metaheurÃstica (llamada Oblivion Rate) ha sido diseñada para
controlar el número de feromonas almacenadas en el grafo.
En esta tesis, varias metaheuristicas han sido diseñadas para el sistema propuesto y
sus rendimientos han sido comparados. Una de estas metaheurÃsticas es la Oblivion
Rate basada en una función exponencial que tiene en cuenta el número de feromonas
creadas en el sistema. Otra Oblivion Rate está basada en un algoritmo de enjambre
bio-inspirado que usa algunos conceptos extraÃdos de la computación evolutiva. Este
algoritmo de enjambre bio-inspirado se llama Optimización de arrecifes de corales (o
CRO del inglés Coral Reef Optimization) y está basado en el comportamiento de los
corales en el arrecife.
Finalmente, para validar y testear el modelo propuesto, se han utilizado diversos
dominios de aplicación como son el problema de las N-reinas, problemas de
planificación de proyectos con restricciones de recursos, problemas de búsqueda de
caminos en entornos de videojuegos y la identificación de patrones de comportamiento
de usuarios. En algunos de estos dominios, el rendimiento del modelo propuesto
ha sido comparado contra un algoritmo genético clásico para realizar un estudio
comparativo, y analÃtico, entre ambos enfoques