Sistemas de optimización de recursos: Optimización de la

Anuncio
Sistemas de optimización de recursos:
Optimización de la base de maná en
“Magic: The Gathering©”
Juan González Adrados
Moisés Sanchez Solano
Universidad Carlos III de Madrid
Universidad Carlos III de Madrid
[email protected]
[email protected]
RESUMEN
una baraja (mazo) libremente de acuerdo a las reglas de cada tipo
de juego en particular.
En la presente memoria se describen las técnicas de realización
de un sistema de optimización del número de tierras de maná a
introducer en una baraja compuesta por unas determinados
hechizos.
A partir de un amplio elenco de cartas disponibles (unas 11.500
en el caso de Magic) cada jugador confecciona su propio mazo,
dando pie a una infinidad de estrategias y desarrollos de partidas,
las cuales, puede afirmarse que cada una es distinta.
Keywords
Magic, mana, tierras, optimización, búsqueda.
Logo de “Magic: The Gathering”
1.
INTRODUCCIÓN
El concepto de Juego de cartas coleccionable (JCC) nace en 1993
con Magic: The Gathering juego creado por Richard Garfield,
aunque anteriormente existían un tipo de juego de carta
predecesora denominada actualmente juego de baraja de
colección (JBC); las cuales presentaban reglas más simples y una
menor complejidad en comparación al JCC, jugándose a partir de
una baraja con cartas predefinidas y en el que cada carta traía
generalmente una imagen con un tema en específico según el tipo
de baraja y juego.
Richard Garfield
Juego de cartas coleccionables, es el término usado para referirse
a los juego de cartas no predefinidas y existentes en gran
cantidad y de variados tipos y características que le otorga
individualidad a cada carta; con las cuales pueden construirse
Los mazos se caracterizan por ser igualmente transportables
fácilmente, lo cual hace que pueda jugarse en cualquier lugar
contra cualquier persona, haciendo así un juego social que puede
practicarse con un variado número de jugadores, dando lugar a
tantas situaciones de partida que, aunque un mazo de un jugador
sea superior a un rival concreto, igualmente puede suceder que
este jugador se vea en serios aprietos contra otro. Los grandes
torneos reúnen a cientos y miles de jugadores, estando el récord
en 1300 jugadores.
La otra característica que le da nombre y las diferencia de los
naipes tradicionales es que son coleccionables. Así, las cartas se
dividen en frecuencias, habitualmente: Común, Infrecuente y
Rara, siendo de menos a más difícil de conseguir. Dichas cartas
se adquieren en sobres sellados cuyo contenido es aleatorio, con
lo que no se sabe exactamente que se obtiene en cada sobre. Por
ello, no se compran las cartas que deseamos, si no que se entra
en un mercado secundario de coleccionismo, donde las cartas
adquieren su valor por su frecuencia, antigüedad, estado y sobre
todo calidad y efectividad en partidas, obedeciendo a conceptos
de oferta y demanda.
Así, consecuentemente, tenemos la vertiente de juego y de
coleccionable, logrando la fórmula que ha logrado captar la
atención de miles de jugadores en todo el mundo y dando lugar a
tiendas especializadas donde pueden adquirirse tanto en formato
sellado como carta suelta, así como grandes comunidades de
Internet dedicadas a informar sobre el juego, estrategias y mazos
ganadores, e intercambio y valoración de cartas.
1.1
Suerte Vs. Habilidad
El Magic, como muchos otros juegos, combina azar y suerte con
habilidad y talento. Una queja común es, sin embargo, de que
hay mucha suerte involucrada con el recurso básico del juego: las
tierras. Muchas tierras o muy pocas (“Mana Flood” o “Mana
Screw” en la jerga del juego respectivamente) en el inicio del
juego principalmente, pueden arruinar la posibilidad de un
jugador de alcanzar la victoria sin que siquiera haya cometido un
error. Una respuesta común a esta queja es que la influencia de
la suerte en el juego puede ser minimizada armando
apropiadamente un mazo sólido que haya sido “testeado”
extensivamente. Una cantidad precisa de tierras y buenas
técnicas de mezclado del mazo pueden reducir la posibilidad de
cualquier problema de mana. (Ej: Un mazo con hechizos de un
solo color y de muy bajo coste necesita menos tierras que un
mazo de muchos colores y hechizos más costosos).
Sobre este punto precisamente es sobre el que nos centraremos
en el presente trabajo: la cantidad precisa de tierras necesarias
para optimizar los recursos de nuestra baraja. Para ello primero
debemos hacer una breve definición del sistema del juego.
2.
SISTEMA DE JUEGO
2.1
Estructura de la partida
Las habilidades de cada carta se activan pagando un coste, ya sea
con maná, sacrificando cartas permanentes o simplemente
girándolas, con esto último no se pueden volver a jugar hasta que
vuelvan a enderezarse, cosa que ocurre al principio del siguiente
turno del jugador, salvo que haya alguna carta que indique lo
contrario. Hay otro grupo de habilidades que solo pueden usarse
si se cumple una condición, como que el turno esté en el paso de
mantenimiento o que se hayan jugado alguna cantidad de
hechizos durante ese turno. Al primer grupo de habilidades se las
llama activadas, y al segundo disparadas.
El cementerio es la pila de cartas que han dejado la zona de
juego (cartas destruidas o sacrificadas) o de hechizos no
permanentes que ya se han resuelto.
En el mundo de Magic hay cinco colores, que se corresponden
con un tipo determinado de magia. Cada color tiene una filosofía
propia y puntos fuertes y débiles que se deben ponderar para
decidir el tipo de mazo que se va a construir. Cada Color es
representado por un bioma. En la parte de atrás de las cartas se
pueden ver cinco esferas de color ("el pentágono de colores") que
representan los cinco colores de Magic: según el sentido de las
agujas del reloj y empezando por arriba son blanco, azul, negro,
rojo y verde. Aparte de estos colores hay combinaciones de ellos,
como las cartas "híbridas" , que son de dos colores a la vez y su
coste se puede pagar con cualquiera de los dos colores; o bien
multicolores (también llamadas "Doradas"), que se bajan por
maná de dos o más colores.
Cada jugador debe derrotar a su enemigo usando sus poderes:
criaturas mágicas, artefactos, y encantamientos, extrayendo el
poder o maná de sus tierras, algunas también con sus propios
poderes. El juego fue ideado para jugar dos jugadores, aunque se
han agregado nuevas reglas para jugar con más participantes, casi
siempre en números pares ya que si es un número impar, por
ejemplo 3 jugadores, puede que 2 se alíen para derrotar al otro,
lo que constituye una práctica incorrecta.
Cada jugador empieza con 20 puntos de vida y un mazo
(biblioteca) de al menos 60 cartas (en algunos torneos especiales
está permitido usar mazos de 40), de las cuales aproximadamente
(por consideraciones estratégicas) un tercio son tierras
productoras de maná, la energía requerida para jugar las demás
cartas. Las cartas que no son tierras se pueden agrupar
colectivamente como hechizos. Requieren una determinada
cantidad de maná para ser jugadas, generalmente una
combinación de maná de un solo color e incoloro. Se dividen en
las cartas que generan un efecto permanente (criaturas,
encantamientos, artefactos e incluso las tierras son permanentes
existentes en juego) y las que van al cementerio (por norma
general) después de ser usadas (instantáneos y conjuros).
Un jugador pierde cuando se queda sin puntos de vida, cuando
intenta robar una carta y su biblioteca está vacía, o si la
condición de alguna carta así lo indica. El último jugador que
queda es el ganador, aunque existen cartas que indican nuevas
formas de ganar una vez que un jugador las pone en juego, como
ganar la partida si ese jugador consigue determinados puntos de
vida o si consigue tener en juego cierto número de criaturas,
también existen habilidades por las cuales un jugador no puede
perder el juego.
Cartas Magic de cada uno de los cinco colores e incolora
2.2
La base de maná
Como ya se ha visto en los apartados anteriores, uno de los
pilares fundamentales del juego es la relación maná/hechizos.
Para poder jugar hechizos es necesario disponer del maná
necesario para pagar su coste, por lo que sin maná no hay
hechizos y sin hechizos no hay victoria. El coste de un hechizo es
el número de manas necesarios para jugarlo, que se dividen en
coloreados, que deben ser pagados con el maná del color
correspondiente, o incoloros, que pueden ser pagados con
cualquier tipo de maná.
Dado que la creación de un sistema para la confección de barajas
es prácticamente inviable, ya que aunque se pueden discernir que
hace una baraja mejor que otra, ni las comunidades de
profesionales son capaces de ponerse de acuerdo sobre como
llegar hasta la mejor construcción. La inmensa cantidad de cartas
disponibles e interacciones entre ellas, factores imprevisibles
como el “metajuego” o distribución de tipos de barajas en un
torneo hacen que sea imposible asegurar que una determinada
construcción de baraja sea estrictamente mejor que otra.
Sin embargo, el estudio de la adecuación de la base de maná una
vez establecido el resto de la baraja es algo más asequible, ya
que podemos basarnos en un factor muy básico: si la
configuración nos permite jugar los hechizos deseados en los
turnos requeridos con una probabilidad aceptable.
Este es uno de los grandes problemas al que se enfrenta un
jugador a la hora de construir una baraja: maximizar las
posibilidades de jugar nuestros hechizos a través de la creación
de una base de maná adecuada. Casi todos los jugadores noveles
(y muchos de los no tan noveles) se centran en los hechizos
descuidando la base de maná. Es común ver entre los jugadores
que empiezan una distribución del tipo una tierra por cada dos
hechizos, sin tener en cuenta que los requisitos no son los
mismos para cada baraja, pues dependen de los costes.
Igualmente si la baraja es de dos colores se tiende a tomar la
decisión salomónica de usar la mitad de tierras de un tipo y la
mitad de otro con independencia de los requisitos de color de la
baraja.
Esta falta de consideración en la construcción de los mazos lleva
a problemas de disponibilidad de maná durante las partidas, lo
que constituye sin duda uno de las causas más frustrantes de
perder partidas: tener acceso a los hechizos y habilidades y no
poder usarlos por falta de maná (lo que se denomina “mana
screw”) o tener un exceso de productores de maná cuando los
que necesitamos son los recursos en los que gastarlos (“mana
flood”).
Para ello es necesario crear nuestra base de maná optimizando la
capacidad de jugar nuestros hechizos evitando generar más maná
del que podemos consumir.
2.3
Tipos de barajas
En Magic se distinguen básicamente tres tipos de barajas y las
combinaciones entre ellas: agresivas (agro), de control y de
combo (más agro-control, control-combo y agresivo con combo).
Aunque parezca que sólo los costes de los hechizos se deben
tener en cuenta a la hora de crear la base de maná, es también de
destacada importancia el estilo de la baraja:
2.3.1
Barajas agresivas
Las barajas agresivas intentan ganar mediante la reducción de las
vidas del oponente a 0. Para ello, deben de ser capaces de
generar amenazas para el rival lo más pronto posible, antes de
que el rival haga lo propio (si juega agro), controle la partida
(control) o directamente nos elimine (combo). Debido a esto es
necesario explotar los recursos desde el primer momento y
mantener una buena curva de maná (termino que se expondrá
más adelante).
2.3.2
Barajas de control
Los mazos de control se basan en eliminar las amenazas del rival
(disrupción). Su base es la ventaja de cartas (es decir, de
recursos), la que obtienen bien eliminando varias amenazas del
rival gastando un único hechizo o simplemente añadiendo formas
de robar más cartas. Su objetivo es llegar a un punto donde para
cada amenaza del rival cuenten con varias respuestas, usando
algún rematador con la seguridad de la partida controlada.
Requieren unas exigencias de maná más elevadas que las del
anterior tipo, ya que los hechizos que generan ventaja de cartas
suelen ser más caros de jugar, y como tienden a alargar la partida
tienen más tiempo para juntar productores y jugar hechizos de
elevado coste como amenazas.
2.3.3
Barajas agro-control
Mezclan las amenazas rápidas de una baraja agresiva con
elementos de disrupción de las de control. Su objetivo es jugar
una criatura pronto y mermar las vidas del rival mientras ganan
el tiempo necesario para sentenciar la partida con los hechizos de
disrupción. Son de las más difíciles de crear y jugar, ya que
aunque tienen recursos para todo, sus salidas son menos
explosivas que las de las agresivas y sus opciones de eliminar
amenazas más restringidas que las de las de control. Dado que
necesitan jugar amenazas rápidas necesitan una curva de maná
baja como las agresivas.
2.3.4
Barajas de combo e híbrido de combo
Los mazos de combo se basan en explotar la interacción de dos o
más cartas para crear un efecto beneficioso (sinergia). Aunque la
sinergia es necesaria en todas las barajas, las de combo explotan
combinaciones especiales con las que crear bucles o efectos
elevados. Es difícil hablar de ellas de manera general, dado que
dependiendo del tipo de interacción así será la construcción de la
baraja, pero por regla general se basan igual que las agresivas en
ser lo más rápidas posible, por lo que también optimizan al curva
de maná, aunque tienen ciertas variaciones de construcción no
relevantes a efectos de este trabajo.
Los híbridos de combo son rarísimos de ver y se suelen
caracterizar como el otro tipo, ya que los pocos que se han visto
son principalmente barajas agresivas con alguna interacción
especial que les permita ganar de golpe o barajas de control que
optan por usar alguno de pocas piezas a modo de rematador de
partida.
2.4
La curva de maná
En Magic se denomina curva de maná a la proporción de
hechizos de costes progresivos. Para limitar la capacidad de jugar
hechizos de costes altos (si no tenemos en cuenta los hechizos
que proporcionan maná) la única manera de agregar maná es a
través de las tierras, las cuales están limitadas poder jugarse a
razón de una por turno.
Por ello, en barajas de curva rápida como las agresivas, las de
combo y las de agro-controles imprescindible jugar un hechizo
en el turno uno, otro en el dos otro en el tres y a partir de ahí
seguir jugando amenazas continuadas sin tener un exceso de
tierras.
Dado que las barajas de control tienen costas más altos, y no solo
eso, sino que suelen llevar hechizos que les permitan robar cartas
o manipular al baraja, el estudio de sus estadísticas se presenta
excesivamente complejo de manera generalista, por lo que nos
centraremos en las barajas de curva rápida.
Análisis de una curva de maná.
2.5
Karoo: tierras que entran giradas y requieren devolver
una tierra que controles a tu mano, pero a cambio
producen más de un maná.

Shocklands: tierras que agregan maná de un color a
elegir entre dos, pero a cambio entran giradas a menos
que pagues dos vidas (por eso se les llama Shocklands,
por su semejanza con la carta "Shock", que hace dos
daños).

Fetchlands: estas tierras permiten buscar un tipo de
tierra concreto (indicado en la carta) a cambio de
girarla, sacrificarla y pagar una vida.

Taplands: tierras que agregan maná de un color a
elegir entre dos, pero a cambio entran giradas.

Painlands: estas tierras agregan o bien maná incoloro,
o maná a elegir entre dos colores a cambio de pagar
una vida. Hay una Painland especial llamada City of
Brass (Ciudad de bronce), que agrega maná de
cualquier color a cambio de perder 1 vida cada vez que
es girada.

Dual lands: tierras que pueden producir mána de dos
colores distintos y entran en juego enderezadas. Se
consideran tierras básicas según el color que producen.

Searchlands: son como las Fetchlands pero estas
entran en juego giradas y no te producen daño al
sacrificarlas.

Storagelands: estas tierras te permiten girarlas para
agregarles contadores de almacenamiento ,pueden
generar mana incoloro o puedes girarlas para extraerle
cualquier número de contadores y así generar una
cantidad de mana (de un determinado color o
combinaciones de color) igual al número de contadores
extraídos.

Ability lands: tierras que agregan incoloro, pero a
cambio tienen algún tipo de habilidad, por lo que
suelen consumir maná más que generarlo.
Productores de maná
Aunque a efectos de la intención de realizar una aplicación que
permita optimizar la base de maná sólo se tendrán en cuenta las
tierras, para la teoría en la que se basará dicha aplicación es
necesario saber que no sólo las tierras producen maná, sino que
también hay todo tipo de hechizos que lo producen. Estos se
dividirán en aquellos que una vez jugados producen maná de
forma constante y los que tienen un solo uso. Normalmente estas
cartas cumplen el rol de aceleradores de maná, ya que permiten
obtener más maná en un turno del que se hubiese obtenido al
ritmo de tierra por turno.
Como dato curioso cabe destacar que las cartas más caras del
juego, objetos de coleccionismo con una docena de años de
antigüedad y cuyo precio va desde los 250 a los 1500 euros, son
simples productores de maná, lo que viene a indicar lo
importante que es esta para el juego, aunque muchos de los
jugadores que oyen hablar de estas cartas se quedan altamente
sorprendidos de que pueda valer tanto algo que “sólo da maná”.
2.6

Tipos de tierras
Nuevamente, aunque para nuestro análisis posterior nos
centremos en las tierras básicas, es conveniente para entender al
teoría conocer los distintos tipos de tierras y que impacto tienen
sobre el juego.
Básicas: hay una por cada color. Entran enderezadas y agregan un
único maná. En esta categoría también se incluyen aquellas que
entran enderezadas y dan maná de un colora efectos de curvar.
Hay muchísimas más, con ventajas y desventajas dependiendo de
los objetivos de cada mazo, pero estas son las más jugadas en
barajas de forma general.
2.7
Reglas para la construcción de barajas
Antes de seguir hablando sobre como optimizar un baraja es
necesario exponer las dos restricciones que tiene la construcción
de barajas:
El mínimo de cartas de una baraja es de 40 para limitado
(formato en el que la baraja se hace con cartas obtenidas al azar)
y de 60 para construido (en el que la baraja es llevada por los
jugadores). Obviamente, cuanto más se aproxime la baraja a la
60 cartas más probabilidad hay de robar cada hechizo, y puesto
que el objetivo e robar los mejores, lo ideal es llevar 60 cartas
exactas.
A excepción de las tierras básicas, el límite es de cuatro copias
por cada carta igual.
3.
OPTIMIZACIÓN Y ESTADÍSTICA
Como todo juego de azar en el que se pueden establecer los
conjuntos de sucesos posibles la estadística ofrece la posibilidad
de predecir el comportamiento de una baraja., si bien no de
manera exacta, ya que para algo es aleatorio, por lo menos
establecer un comportamiento medio.
Dado que como se ha expuesto anteriormente este trabajo se va a
centrar en la distribución de la base de maná se presupondrá que
los hechizos incluidos están bien configurados.
Para el análisis de una baraja se usan de manera habitual el
cálculo de probabilidades simplificado y el análisis de George
Baxter, aunque correctos existen una escala de valoración
diseñada por Sean DeCoursey, que es la más completa en cuanto
a factores estudiados de la baraja.
3.1
Análisis de George Baxter
Probabilidades de robo
La manera a priori más sencilla de calcular la cantidad de tierras
que debe tener nuestra baraja es simplemente aplicar las
probabilidades de robo de tierras en función de las cartas robadas
y las necesidades de los hechizos.
3.3
Análisis de Sean DeCoursey
Se basa en el análisis en diversas variables que modelan los
diferentes aspectos del comportamiento de la baraja en lo que
respecta a la producción y uso del maná.
Para hacer estos cálculos se usan funciones estadísticas
aproximadas, por lo que los cálculos pueden no ser los mejores.
3.3.1
3.2
Se suma la cantidad total de maná que producen todas las cartas
de la baraja si llegasen a usarse simultáneamente. Este índice da
una idea de la capacidad de producir maná de al baraja en
general en partidas largas, por lo que es relevante en el caso de
barajas de tipo control.
Análisis de George Baxter
Una vez establecido el numero de tierras hay que analizar las
necesidades de color. Para ello, se siguen los siguientes pasos:
1.
Se determinan los cuantas cartas de cada color hay.
2.
Se determinan las cantidades de color que son
necesarias mirando el total de símbolos de color en las
cartas.
3.
Se asignan valores a las cartas según su importancia en
la baraja.
4.
Se pasan loa valores ponderados a porcentajes.
5.
Se multiplican los porcentajes por el número de fuentes
de maná.
Este análisis es el que usan algunos programas de los que
permiten
analizar
barajas,
como por
ejemplo el
MagicWorkstation.
3.3.2
Potencial de maná
Porcentaje de maná
Se suman todos los productores de maná y se le añaden aquellas
cartas capaces de localizar a las primeras, dividiendo el total
entre el número de cartas de la baraja. A diferencia del anterior,
con este se tienen en cuenta la capacidad de robar productores de
maná al principio. Es importante en el caso de las fetchlands, ya
que los primeros turnos darán las tierras que se necesiten para
producir maná, pero harán que avanzada la partida se despliegue
menos maná al haber ido extrayendo tierras de la baraja.
3.3.3
Aceleración
Se divide el número de cartas de la baraja entre el número de
aceleradores y se multiplica el total por el número de cartas que
se robarán hasta el turno donde se jugará el acelerador. Este
resultado se multiplica por las posibilidades de alcanzar el maná
suficiente como para jugar el acelerador en el turno adecuado,
para obtener el porcentaje de las veces que de media se llegará a
la aceleración en el turno esperado.
3.3.4
Curva de color
Por cada uno de los tres primeros turnos se multiplican las tierras
que permitan jugar los hechizos de costes uno, dos y tres por las
cartas que se robarán hasta ese punto y este resultado se divide
entre el número de cartas de la baraja. Esta medida indica las
posibilidades de cumplir con los requisitos de la curva de maná
para los tres primeros turnos y debe de ser optimizada en barajas
agresivas o de combo. Tener en cuenta el siguiente factor, ya que
es necesario llegar a una situación de compromiso entre el mana
screw (determinado por la curva de color) y el mana flood
(determinado por la densidad de maná).
3.3.5
Densidad de maná
Se calcula restando al porcentaje de maná: las fetchlands, los
costes de las tierras con funcionalidades añadidas y los costas de
las habilidades activadas. Este índice indica el nivel de
utilización de las tierras, ya que no es sólo importante conseguir
tener la mayor cantidad de tierras posibles si no sacarles el
máximo rendimiento. Cuanto más bajo sea este número, más
aprovechadas estarán las tierras a media partida cuando no hay
hechizos que jugar.
3.3.6
Índice de daños
Se multiplican los daños que causa la tierras por su probabilidad
de usarse en los primeros cuatro turnos, obteniendo el daño
medio. Por otro lado se suman todos los daños que producen las
tierras y se divide entre la media para obtener la varianza de
daños. Estos valores expresan los daños medios que se sufren
debido a las tierras y la variación que se puede esperar en el peor
caso, sumándola a la media.
4.
ALGORITMO DE OPTIMIZACIÓN
DE TIERRAS ELEGIDO
El objetivo de nuestro sistema se centra en buscar la mejor
combinación de tierras de maná a partir de cualquier baraja base
compuesta únicamente por hechizos.
Realizar un análisis exhaustivo de todas las posibles
combinaciones de tierras posibles incluyendo tierras especiales
así cómo todos los factores que pueden influir en la calidad de
cada solución requeriría una gran cantidad de recursos tanto
computacionales (no podemos tener en cuenta todas las
posibilidades en las que puede ordenarse una baraja) cómo
humanos, por lo que finalmente se ha optado por simplificar el
análisis mucho más de lo esperado en un principio.
La primera simplificación llevada a cabo fue suprimir la
posibilidad de utilizar tierras especiales, es decir, aquellas que
permiten utilizar más de un maná o elegir el color, en ocasiones
con algún inconveniente que hace que no resulten siempre
recomendables o bien menos apropiadas que otras, dependiendo
de la situación. Una posibilidad para modelar estas cartas podría
haber sido asignar un valor “calidad” a cada tierra especial, que a
través del cual decidir si utilizarla o no. No obstante, este factor
sería general y no tendría en cuenta las posibilidades de
combinar las ventajas e inconvenientes específicos de la carta
con las posibilidades que ofrece el resto de la baraja. Nuestra
baraja base estará compuesta por tanto únicamente por hechizos,
no dando la posibilidad de analizar el empleo de tierras
especiales.
En un principio se pensó en optimizar también el número total de
cartas a utilizar, lo cual es bastante sencillo, ya que el valor
óptimo es 60, por lo que eligiríamos el mínimo número de cartas
posible, pero sin llegar nunca a estar por debajo de 60 cartas (el
caso de juego de 40 cartas no se tiene en cuenta directamente ya
que suele emplearse en el juego en el que las cartas son
aleatorias por lo que no podríamos optimizar en función de
estas). Para ello, se pensó en que la baraja base de entrada
tuviese un número de cartas de hechizo superior a las
necesitadas, y cada hechizo tuviera una valoración. En función de
la valoración irían descartandose hechizos hasta que la suma
total de cartas (hechizos más número de tierras óptimo para
dichos hechizos) fuera inferior a 60, quedándonos con la baraja
elegida en la iteración anterior a la que nos dió un número total
de cartas inferior a 60.
Por tanto unicamente nos centraremos en la elección del número
de tierras básicas de cada uno de los cinco colores para una
batería de hechizos dada cómo base (almacenada en un fichero).
El algoritmo de optimización implementado para este objetivo lo
dividimos en dos fases:
4.1
Optimización del número de tierras de
cualquier color
En el algoritmo diseñado inicialmente para el cálculo de la
cantidad de tierras, se ha establecido la necesidad típica de las
barajas agresiva: de jugar tierra durante los tres primeros turnos
para jugar como mucho un par más durante el resto de la partida,
que desde el punto de vista del jugador agresivo no debería pasar
más allá del sexto-séptimo turno.
Para que se cumplan estos requisitos se calculan las
probabilidades de tener al menos una tierra en el turno uno, al
menos dos en el turno dos y el equivalente en el turno tres.
Obviamente con estas restricciones cualquier sistema experto
deducirá simplemente que cuantas más tierras mejor, en
contraposición a lo que se ha dicho anteriormente sobre la
necesidad de robar no sólo tierras (mana flood). Para ello se
añade una restricción más que será la probabilidad de no haber
robado más de cinco tierras para el turno octavo.
Ahora el sistema debe optimizar todas las probabilidades
haciendo los cálculos estadísticos pertinentes:

Probabilidad de robar al menos “x” cartas:
1 - ∑ probabilidad de robar exactamente 0,1,2 ... x-1

Probabilidad de robar menos de “x” cartas:
∑ probabilidades de robar exactamente o,1,2 ... x-1

Probabilidad de robar 0 cartas:
П probabilidad de cada robo

Probabilidad de cada robo:
numero de casos favorables
numero de casos posibles - numero de robos anteriores
Finalmente, dada la complejidad que ha supuesto realizar este
análisis de probabilidades, así cómo su integración en la
valoración de cada caso, se ha optado por calcular el número
óptimo total de tierras a la utilización de una función que
depende del número total de maná de cualquier color requerido
por todos los hechizos, así cómo el número de colores distintos
que componen los hechizos de la baraja:
Por tanto, con el algoritmo empleado en este paso, la solución
viene determinada directamente por una función que depende
directamente de las variables de entrada, por lo que no existe en
ningún caso un algoritmo de optimización mediante búsqueda.
Esta tarea se desarrollará por tanto exclusivamente en el
siguiente paso.
5.
XPRESS MP
En un principio se trató de hacer la optimización utilizando la
herramienta Xpress MP de la compañía Dashoptimization. Este
programa permite realizar la búsqueda de la solución óptima
para un determinado problema mediante la propia aplicación de
manera gráfica o utilizando el lenguaje Mosel, pero también
permite utilizar la resolución de problemas dentro de programas
realizados en otros lenguajes, incluyendo Java.
La implementación de la resolución del problema con Xpress en
Java es bastante sencilla. Tan sólo es necesario:

Crear las variables que componen el problema. En este
caso serían cinco, una para cada color de tierra. Es
importante tener en cuenta al definir estas variables
que se trata de números enteros y no reales (el número
de cartas debe de ser entero).

Definir un objetivo, es decir, una función a maximizar
para los distintos valores de las variables del problema.

Definir unas restricciones (constrains). En este caso
sería un número fijo que deben sumar todas las
variables, el número de tierras de cualquier color
calculado en el paso anterior.

Solucionar el problema. El propio programa se encarga
de buscar la solución óptima, siendo para el usuario
transparente el algoritmo de búsqueda empleada por el
programa, aunque debe tenerse en cuenta que
dependiendo de las restricciones asignadas la eficiencia
de la resolución puede variar.
El empleo de una fórmula directa es más sencillo en este caso
que en el siguiente, para el cual no se conocen funciones fiables.
4.2
Optimización del número de tierras de
cada color
En este segundo paso del algoritmo de optimización buscaremos
el número de tierras óptimo que deben de asignarse a cada color
a partir de un número total de tierras (de todos los colores)
calculado en el paso anterior.
El algoritmo elegido consiste en la búsqueda de la combinación
de tierras de cada color que maximiza una función de evaluación.
La dificultad se centra por tanto en la elección y cálculo de dicha
función de evaluación.
A continuación se muestra gráficamente la solución al problema
del ejemplo más sencillo. Aquél en que la función a maximizar
es un beneficio (profit), el cual depende de dos variables
(asignadas a cada eje) que representan recursos, y en el que
existen dos restricciones (dos rectas que definen el área de
soluciones válidas).
La función de evaluación elegida consiste en valorar la necesidad
de tierras de cada color para los primeros turnos. No se
consideran todos los turnos (aparte de por la gran necesidad de
recursos que necesaria) por el hecho de que cuando ya han
transcurrido una serie de turnos es de suponer que (salvo una
probabilidad extremadamente baja) se contará con una gran
cantidad de tierras de cada color, por lo que no será necesario
analizar estos casos.
Por tanto, el color de las tierras se asignará de forma que
ofrezcan una mayor probabilidad de disponer de cada color
cuanto más sea necesario dicho color. La función a maximizar
elegida es la suma de los productos de la necesidad de requerir
cada color por la probabilidad de disponer de este, evaluado para
un reducido número de turnos, es decir:
Cómo puede observarse, la solución óptima es tan sencilla cómo
asignar todos los recursos a una de las variables, tomando su
valor máximo, mientras que la otra variable tomaría el valor
cero. Dependiendo de la pendiente de la función del beneficio,
también podría darse el caso de que la solución sea asignar los
recursos a la otra variable (y ninguno a la primera), pasando por
las posibilidades de existir un rango de soluciones óptimas (que
serían dos lados del área de soluciones válidas) o bien una única
solución en la cual ambas variables tomarían valores no nulos y
que vendría dada por la otra esquina del área de regiones válidas.
A la hora de implementarlo con nuestro caso surge el problema
de que la función a maximizar (suma de los productos de la
probabilidad de disponer de tierras de cada color con la
probabilidad de requerirlo) no es lineal (la , ya que la
probabilidad de disponer de tierras de cada color no es
directamente proporcional al número de tierras disponibles de
cada color, sino que depende de la función (aproximada pero
prácticamente exacta):
El exponente número de cartas robadas indica (cómo todo
exponente) el número de veces que se ha de multiplicar dicha
expresión por sigo misma, sin embargo, en cada término de la
expresión el número de cartas totales disminuiría en una unidad,
por lo que esta formula no sería completamente exacta a pesar de
ser un muy buena aproximación.
En esta expresión la variable (en realidad variables) del
problema serían el número de tierras de cada color y cómo puede
observarse es un término con un gran exponente (el número de
cartas robadas serían 7 para el primer turno).
Con las librerías en Java de Xpress se pueden utilizar
expresiones de orden superior al lineal, pero no de orden
superior al cuadrático, pero no potencias de orden superior, cómo
resulta ser el caso. Si intentamos multiplicar dos expresiones de
orden cuadrático cuyo resultado es una expresión de orden
superior al cuadrático, el resultado es una excepción del tipo
java.lang.ArithmeticException.
Por ello se intentó modificar la expresión de la probabilidad de
disponer de un determinado color reduciéndola a una simple
aproximación: multiplicar la probabilidad de sacar una carta de
tierra de dicho color al sacar una única carta de la baraja, por el
número de cartas robadas (7 para el primer turno). De esa forma,
se supone que la probabilidad de que al sacar dos veces una carta
de toda la baraja sea una de las deseadas, es el doble que la
probabilidad de sacarla en un único intento, lo cual en realidad
es falso, pero en determinados casos se aproxima a la realidad.
La fórmula de probabilidad sería por tanto:
∑
Pr ob . requerirColor Pr ob . disponerColor =
colores
Pr ob . requerirColor numCartasRobadas
∑
colores numCartasTotales
numTierrasColor
Lo cual es una función completamente lineal, formada por la
suma de cada una de las variables del problema multiplicadas
por un determinado valor (el cual es calculado directamente sin
necesidad de optimización a partir de lo datos iniciales del
problema), del tipo:
N
A  x
i
i
i1
Por lo que es posible
Xpress. El código en
únicamente para el
significantemente más
Xpress) resultaría:
maximizarla muy fácilmente utilizando
Java para la función de maximización
primer turno (para sucesivos sería
larga la introducción de la fórmula en
import com.dashoptimization.*;
public class magic
{
public static void main(String[] args)
{
XPRB bcl;
/* Numero de tierras de cada color: */
XPRBvar xW, xB, xG, xU xR;
XPRBprob problema;
bcl = new XPRB();
/* Inicializar BCL */
problema = bcl.newProb("Magic"); /* Crear problema*/
/****VARIABLES****/
xW = problema.newVar("blanco");
xB = problema.newVar("negro");
xG = problema.newVar("verde");
xU = problema.newVar("azul");
xR = problema.newVar("rojo");
/* Asignar a las variables la condición de enteros */
xW.setType(XPRB.UI);
Lo cual es una expresión que depende linealmente del número de
tierras de cada color que añadamos a la baraja, por lo que se
podrá utilizar con Xpress.
Por tanto, la función a maximizar en esta implementación sería:
xB.setType(XPRB.UI);
xG.setType(XPRB.UI);
xU.setType(XPRB.UI);
xR.setType(XPRB.UI);
/****OBJETIVO****/
/* Función a maximizar */
problema.setObj(
xW.mul(pR(W)).add(
xB.mul(pR(B)).add(
xG.mul(pR(G)).add(
xU.mul(pR(U)).add(
xR.mul(pR(R)))))));
/****RESTRICCION(ES)****/
/* Definir número de cartas fijo */
problema.newCtr("numeroTierras",
xW.add(xB.add(xG.add(xU.add(xR))))
caso no disponemos de restricciones que puedan dar lugar a que
en algún caso se combinen valores de cada variable.
Por tanto, la función de maximización utilizada no sirve, debido
al error que se ha introducido al realizar la aproximación de la
función de probabilidad. La función de probabilidad aproximada
era lineal, por lo que cada vez que se incrementaba en un valor la
variable número de tierras de un color, la probabilidad crecía
siempre un valor fijo (llegando incluso a superar la probabilidad
de 1, lo cual en el caso real es imposible), por lo que a la hora de
asignar una nueva tierra a un determinado color siempre
resultaba mejor asignársela al color con mayor peso. Esto no
hubiera ocurrido si hubiéramos podido implementar la función
exacta, ya que si se fueran asignando las tierras una a una, al
principio se asignarían al color de mayor peso, pero conforme
hubiera un gran número de tierras de un color la probabilidad de
tener tierras de dicho color apenas se incrementaría por añadir
una tierra más, por lo que se añadirían a otros colores, resultando
un reparto de tierras entre todos los colores utilizados.
A continuación puede observarse una gráfica en la que se
compara la función aproximada (lineal) con la función exacta.
).eql(numTierras()) );
/****RESOLVER/MAXIMIZAR****/
problema.maxim("");
}
}
Debe tenerse en cuenta que aunque este es la parte del código
que interacciona con las funciones de Xpress, faltaría añadir
todas aquellas funciones que realizan calculos directos de
probabilidades en función de los datos de entrada (baraja). Cómo
puede observarse en el código, faltarían por implementar las
funciones:
numTierras(): Calcula directamente el número de tierras a
utilizar a partir de los datos de entrada.
pR(int i): Producto de la probabilidad de requerir el color “i” por
el número de cartas robadas en el primer turno (7) entre el
número de cartas totales de la baraja (incluyendo tierras).
Los valores resultantes de la optimización se extraerían después
de resolver el problema utilizando la función get.Sol(), invocada
sobre la variable.
A la hora de comprobar los resultados nos encontramos que los
valores no son los esperados, el número de tierras que se asignan
a cada color es cero para todos los colores excepto para aquél
cuya función “probabilidad de requerir el color por el número de
cartas robadas en el primer turno entre el número de cartas
totales de la baraja” es mayor, es decir, se le ha asignado más
peso en la función lineal a maximizar.
Esto se debe a que nos encontramos una función lineal cómo la
del ejemplo, en el cual observábamos los mismos resultados (una
variable valía cero y la otra el máximo), sin embargo en nuestro
En la gráfica puede observarse cómo para los primeros valores la
función aproximada se aproxima a la real, sin embargo, para muy
pocos valores. Y mientras que la función aproximada crece
linealmente, la función real cuantas más tierras añadamos, menos
crece la probabilidad, la cual nunca supera uno.
6.
IMPLEMENTACÍON
EXCLUSIVAMENTE EN JAVA
Dada la dificultad para implementar las formulas estadísticas
más complejas en Xpress MP se ha decidido crear una pequeña
aplicación en Java para demostrar algunos de los sistemas
anteriormente expuestos.
Cabe recordad que dicha aplicación se centra en el ajuste de
tierras para una baraja agresiva sin ningún tipo de acelerador y
contando sólo con tierras básicas. Aunque este ejemplo es muy
sencillo y no tiene prácticamente ninguna aplicación real, es
interesante para comprobar la manera de implementar un
optimizador.
http://www.it.uc3m.es/jvillena/irc/indice.html
La función utilizada para el cálculo del número de tierras óptimo
así cómo la función de evaluación empleada para calificar una
determinada combinación de número de tierras para cada color
son las descritas anteriormente.
[2] Página de Dash Optimization:
El algoritmo empleado para buscar los valores de las variables
(tierras de cada color) que maximiza la función ha sido el de
“búsqueda exhaustiva”. Es decir, probar todas las combinaciones
posibles.
El uso de dicho algoritmo se debe a que no existen otras
restricciones que condicionen dejar de explorar un determinado
camino, cómo podrían emplearse en algoritmos de vuelva atrás
(“backtracking”).
Una restricción que podría añadirse sería la posibilidad de evitar
aquellas combinaciones en las cuales se asignan tierras de
colores no utilizados por ningún hechizo de la baraja. Esto podría
añadirse simplemente en el momento de calcular la función de
evaluación y evitaría realizar este cálculo.
http://www.dashoptimization.com/home/downloads/pdf/embed.p
df
http://www.dashoptimization.com/home/secure/documentation/bc
l/dhtml/javadoc/index.html
http://www.dashoptimization.com/home/downloads/evalguide.pd
f
http://www.dashoptimization.com/home//cgi-bin/example.pl
[3] Aplicaciones de optimización con Xpress MP:
http://www.optiware.co.kr/filedown/books/book.pdf
[4] Estrategias de métrica de mana:
http://mtgsalvation.com/500-mtgsclassics-tmm2.html
[5] Página oficial de Magic: The Gathering:
http://www.magicthegathering.com
7.
CONCLUSIONES
Mediante sistemas de optimización se pueden conseguir calcular
las soluciones que maximizan determinadas funciones.
A la hora de diseñar dichos sistemas resulta vital la creación de
un modelo que sea lo suficientemente complejo cómo para poder
obtener unos resultados significativos pero siempre dentro de
nuestros propios límites y de las herramientas de cálculo.
Xpress MP es un programa que permite modelar estos sistemas
de optimización, así cómo realizar la resolución del problema a
partir del modelo que hayamos creado. Es una herramienta
bastante potente que, aparte de tener su propio lenguaje de
modelado y sus propias herramientas que muestren gráficamente
las soluciones, permite su integración en programas realizados
con otros lenguajes de programación. Sin embargo, es limitado y
no permite la utilización de expresiones de orden superior.
Dada la complejidad del análisis estadístico de este tipo de juego
los jugadores profesionales concluyen que la mejor manera de
probar la eficacia de una baraja así como las modificaciones que
necesita es a través de un testeo intensivo, es decir, jugar
numerosas partidas de prueba contra los posibles adversarios,
comprobando su eficacia a si como el efecto de las
modificaciones por el antiguo sistema del ensayo y error. Si bien
esto abre un nuevo abanico de posibilidades como la creación de
sistemas de testeo o de valoración de los resultados obtenidos, la
complejidad de estos sería incluso superior a la de los análisis
expuestos en esta memoria.
8.
BIBLIOGRAFÍA
[1] Material de la asignatura Inteligencia de Redes de
Comunicaciones:
[6] Programas analizadores de barajas:
http://www.magicworkstation.com
[7] Comunidad de jugadores de Magic:
http://www.starcitygames.com
[8] Foro sobre Magic: The Gathering:
http://www.ntgsalvation.com
Descargar