Saturday, August 7, 2010

Resultados mini-comptencia: "Feudalismo"


Bueno, terminó la primera mini-competencia de programación!

Hubieron 11 estrategias inscriptas, pertenecientes a 3 concursantes.

Acá está la tabla de posiciones luego de los 80 años de simulación:

  1. RunnerUpFeudalSimulation, con 10013.33 piezas de oro, de Santi
  2. FFBCPN1, con 7734.44 piezas de oro, de Esteban, empate con 3.
  3. ReallyPreventiveFeudalSimulation, con 7734.44 piezas de oro, de Santi
  4. FFBCPN3, con 7609.16 piezas de oro, de Esteban
  5. PreventiveFeudalSimulation con 7416.11 piezas de oro, de Santi
  6. FFBCPN4 con 7303.61 piezas de oro, de Esteban
  7. FFBCPN2 con 6943.88 piezas de oro, de Esteban
  8. Modadicto Aleatorio con 6743.33 piezas de oro, de Marcos
  9. FeudalSimulation, con 6526.11 piezas de oro, de Santi
  10. BaseFeudalSimulation, con 5987.77 piezas de oro, de Santi
  11. Modadicto, con 5987.77 piezas de oro, de Marcos
Y también les dejo el detalle de cuántas familias eligieron qué castillo en cada año. Felicitaciones y gracias a todos los participantes, y un fuerte aplauso para Santi, el indiscutido* ganador!


A mi me divirtió mucho hacer esto, espero que haya sido divertido para ustedes participar. Me hubiera gustado que hayan más participantes, pero bueno, esperemos que en el próximo haya mejor convocatoria. Además, sé de varias personas que llegaron a implementar una solución pero no la presentaron en el concurso. A ellos les digo: Anímense a presentarla! Ni que fuera algo importante este concurso!

* digo indiscutido porque de curiosidad corrí el torneo alrededor de 10 veces más, y en todas las corridas la estrategia ganadora fue RunnerUpFeudalSimulation. Una verdadera estrategia campeona!

Otro dato curioso: corrí varias simulaciones extra agregando una estrategia que elegía siempre una ciudad al azar, y salió siempre más o menos en el 5to o 6to puesto. Estos dos últimos análisis me sacaron la duda de que el problema sea demasiado librado al azar, y que dependiendo de la corrida los resultados pueden ser muy diferentes. Lo que queda a determinar es qué tanto depende el resultado de la cantidad de participantes, o de qué estrategias forman parte. Digamos, ¿qué tan caótico es el juego? Si se agrega UNA estrategia al sistema, los resultados cambian mucho?


Los que tengan ganas (especialmente los participantes) comenten dejando qué análisis hicieron del problema y todo lo que hayan descubierto que les parezca interesante. Gracias de nuevo a todos!

Saludos,
Manu

5 comments:

  1. Sería bueno ver las estrategias, sobretodo si usaron "mafias". No participé, pero creo que si hay muchas familias con conducta aleatoria se hace más difícil definir una estrategia determinística.

    Creo que se pueden lograr buenos resultados con 1 familia aleatoria + una mafia de 4 familias que elijan lo contrario a la primera (ocupando la misma semilla para el random).

    En todo caso buen concurso, me tuvo pensando bastante.

    ReplyDelete
  2. José: Buen análisis. Por suerte ninguno usó una técnica así. Con respecto a lo de ver las estrategias, hay link al código de cada una en la lista de posiciones!

    saludos!

    ReplyDelete
  3. Juaa, sabía q esa estrategia iba a ganar. Shame on me por lo ineficiente. Tendría q haber usado heapq (de la stdlib de Python) para sacar el máximo 2 veces. Igual, lo hice así nomás en poco tiempo y sólo es ineficiente para demasiados castillos... o sólo 2 castillos :P Porque las 5 estrategias que presenté estaban pensadas genéricamente para N castillos. (De hecho, recomiendo que vean el diseño OOP que hice para cambiar totalmente la estrategia overrideando la clase base con sólo un par de líneas extra.)

    Moraleja de la estrategia ganadora: Pensar diferente garpa (?). Hacer la movida predecible te llevaba al muere.

    ReplyDelete
  4. Ayer pensaba en el siguiente escenario: Compiten 10 familias, cada una de ellas con exactamente el mismo código que consiste en una estrategia tipo machine learning, es decir, trato de adivinar la estrategia de los otros.

    Una vez alcanzadas muchas iteraciones (ojalá mucho más que 80 para asegurar que los algoritmos ya aprendieron), qué pasa con la estrategia de ellas? Son iguales o optimizan su actuar diferenciando su comportamiento?

    ReplyDelete
  5. q lástima q no me enteré de esto =(

    ReplyDelete