16 feb 2011

Jugant amb algorismes genètics

No Comments Informàtica

Una de les dis­ci­pli­nes de la infor­mà­tica en què mai he apro­fun­dit però que em crida l’atenció des del dia que vaig estudiar-​​la a la uni­ver­si­tat és una branca de la intel·ligència arti­fi­cial ano­me­nada “algo­ris­mes genètics”.

Comencem pel prin­cipi: un algo­risme és un con­junt de pas­sos orga­nit­zats de tal manera que reso­len un pro­blema deter­mi­nat. Generalment és feina del pro­gra­ma­dor dis­se­nyar quins són aquests pas­sos i com s’han d’estructurar per tal que, com és d’esperar, apor­tin real­ment una solu­ció al pro­blema. Doncs resulta que aquesta branca de la intel·ligència arti­fi­cial pro­posa apli­car tèc­ni­ques prò­pies de la genè­tica i l’evolució per a tro­bar l’algorisme que bus­quem. La idea gene­ral, per no com­pli­car massa la qües­tió, és crear un algo­risme “ale­a­tori”; enfrontar-​​lo al pro­blema i assignar-​​li una pun­tu­a­ció (arbi­trà­ria però objec­tiva i com­pa­ra­ble) per a valo­rar com de bona (o de dolenta) és la reso­lu­ció que ha fet del problema.

Per ser més exac­tes (anem-​​nos acos­tant a la rea­li­tat de mica en mica) el que fem no és gene­rar un algo­risme ale­a­tori sinó que dis­se­nyem un algo­risme –diguem-​​ne– genè­ric amb un con­junt de vari­a­bles lliu­res del qual sabem que donarà la solu­ció al pro­blema (o una bona apro­xi­ma­ció) quan tro­bem els valors “òptims” per a totes les vari­a­bles. En el fons és una qües­tió d’optimització (o d’adaptació al medi, si fem ser­vir ter­mi­no­lo­gia evo­lu­tiva) o de resol­dre una equa­ció amb mol­tes incògnites.

El pro­ce­di­ment plan­te­jat per la intel·ligència arti­fi­cial és el següent: un cop defi­nits aquest algo­risme genè­ric i les vari­a­bles que el con­fi­gu­ren, pre­nem un valor a l’atzar per a cadas­cuna d’elles i ano­me­nem cro­mo­soma aquest con­junt de valors . Repetim el pro­cés fins a crear una pobla­ció de 10, 20, 100… 1000… cro­mo­so­mes. Anomenem gene­ra­ció aquesta pobla­ció de cro­mo­so­mes i enfron­tem cada cro­mo­soma al pro­blema, avaluant-​​ne amb una nota el grau d’aproximació a la solu­ció (segons el pro­blema això serà més o menys difí­cil) o com a mínim amb un indi­ca­dor que per­meti com­pa­rar si un cro­mo­soma ho ha fet millor que un altre o no.

Quan haguem ava­luat tota la gene­ra­ció, apli­ca­rem un pro­cés natu­ral d’evolució que con­sis­tirà en:

  1. Selecció natu­ral: eli­mi­na­rem els cro­mo­so­mes que pit­jors resul­tats hagin obtingut.
  2. Reproducció: farem com­bi­na­ci­ons entre els cro­mo­so­mes super­vi­vents cre­ant nous cro­mo­so­mes deri­vats fins a tenir una pobla­ció amb el mateix nom­bre d’individus que la original.
  3. Mutació: apli­ca­rem certa ale­a­to­ri­e­tat en els parà­me­tres dels cro­mo­so­mes que aca­bem de crear.

En aquest pro­cés hau­rem obtin­gut una segona gene­ra­ció, teò­ri­ca­ment una mica més adap­tada al medi que l’anterior. La muta­ció la fem per inten­tar reflec­tir la rea­li­tat (un fill no és mai una com­bi­na­ció lineal dels parà­me­tres del pare i de la mare; sinó que es pro­du­ei­xen muta­ci­ons “ale­a­tò­ries” en els seus gens) i de la mateixa manera podem rede­fi­nir lleu­ge­ra­ment altres pro­ces­sos. La selec­ció natu­ral, per exem­ple, pot dei­xar viu algun dels cro­mo­so­mes que –per dir-​​ho fina­ment– no se n’ha aca­bat de sor­tir i matar-​​ne algun dels bons; de la mateixa manera que no sem­pre el nyu més dèbil és el que cau a les urpes dels lle­ons ni el més fort té la segu­re­tat que arri­barà a la vellesa.

Sigui com vul­guem aquest pro­cés (aquí juguem a fer de Déu), repe­tint aquesta evo­lu­ció durant gene­ra­ci­ons i gene­ra­ci­ons en teo­ria obtin­drem una pobla­ció que cada vegada serà més bona enfrontant-​​se al pro­blema… No és fas­ci­nant? I el millor de tot és que fun­ci­ona! Vegem-​​ne un exemple:

BoxCar 2D

BoxCar 2D és un joc per a zero juga­dors que uti­litza algo­ris­mes genè­tics per a dis­se­nyar un vehi­cle capaç de superar els obs­ta­cles d’un ter­reny en dues dimen­si­ons. El dis­seny del cotxe (a la imatge supe­rior n’hi ha un exem­ple) par­teix d’una estruc­tura octo­go­nal en què cada vèr­tex està unit amb el cen­tre i és modi­fi­ca­ble segons els següents paràmetres:

  • Angle d’obertura (res­pecte el cen­tre) de cada parell de vèr­texs de l’octàgon
  • Distància de cadas­cun dels vèr­tex al centre
  • Existència (o no) d’una roda en cadas­cun dels 8 vèr­tex (pot haver-​​hi més d’una roda en el mateix vèr­tex però no més de 8 rodes)
  • Angle de l’eix de cada roda amb el seu vèrtex
  • Diàmetre de cada roda
  • Color de cada tri­an­gle for­mat pel cen­tre i dos vèrtexs
  • Color de cadas­cun dels eixos de les rodes

De manera que, en aquest cas, un cro­mo­soma (que és la defi­ni­ció del cotxe) consta de 8 angles i 8 dis­tàn­cies per a la car­ros­se­ria, 8 valors que indi­quen en quins dels vèr­tex situem cadas­cuna de les 8 pos­si­bles rodes, 8 angles per als eixos de les rodes, 8 dià­me­tres per a les rodes i 16 valors de colors (no en aquest ordre). És fàcil adonar-​​se que la quan­ti­tat de vehi­cles dife­rents que podem gene­rar és, a la pràc­tica, infi­nita. Vegeu un exem­ple de cotxe que he dis­se­nyat manu­al­ment i el seu cor­res­po­nent cro­mo­soma numè­ric:

1
2
3
4
5
6
7
8
9
10
11
12
<a href=“http://jordinebot.cat/blog/wp-content/uploads/2011/02/Captura-de-pantalla-2011–02-16-a-las-20.28.29.png”><img class=“alig­n­left size-​​full wp-​​image-​​3008″ title=“El meu cotxe” src=“http://jordinebot.cat/blog/wp-content/uploads/2011/02/Captura-de-pantalla-2011–02-16-a-las-20.28.29.png” alt=”” width=“172” height=“101” /​></​a>1,1.492,0.9335,1.84,0.867,2.101,0.9905,
2.797,0.3635,0.564,0.7245,0.622,
0.5630000000000001,0.941,0.9905,3,3,
0.9424777960769379,1.5,7,
2.199114857512855,1.1973478311672807,6,
2.0202854348261674,1.192,-1,2.3271512214521963,
0.94,-1,5.615403641975675,0.9525596981868147,
-1,4.075827107587588,0.2819843692705035,-1,5.063380270569343,
1.4500815817154944,-1,4.654724898535651,1.4973793599754572,
13054,13054,16321673,16321673,16321673,16321673,
16321673,16321673,16321673,16321673,16321673,
16321673,16321673,16321673,16321673,16321673,8

Quan comença el joc (tan bon punt obrim la pàgina) es crea una pista i una pobla­ció ini­cial de 20 vehi­cles a l’atzar (alguns no tenen ni rodes! XD) i es posen, d’un en un, sobre la pista. En aquest cas la nota que obté cada vehi­cle està for­mada per la dis­tàn­cia recor­re­guda i el temps emprat en com­ple­tar la pista. Si un vehi­cle no es mou de lloc durant 3 segons es passa al següent i, en qual­se­vol cas, no se’ls dóna més de 4 minuts a cadas­cun per a inten­tar arri­bar al final de la pista. Tant el dis­seny dels vehi­cles, com la com­po­si­ció dels cro­mo­so­mes, els pro­ces­sos de selec­ció, repro­duc­ció i muta­ció, etc. estan per­fec­ta­ment expli­cats a la pàgina de The Algorithm del joc.

A més a més, el joc inclou la pos­si­bi­li­tat de pro­var una sèrie de pis­tes no ale­a­tò­ries, crear el nos­tre propi vehi­cle i introduir-​​lo a la pobla­ció ini­cial per veure com evo­lu­ci­ona o modi­fi­car el grau de muta­ci­ons que hi haurà en cada canvi de gene­ra­ció. La veri­tat és que ho he tro­bat molt interes­sant, didàc­tic i diver­ti­dís­sim! De fet, hi ha pocs jocs de zero juga­dors, però m’encanten! :P

{lang: «ca»}

26 gen 2011

Magic, el joc de cartes

No Comments Lleure i esport

El Magic: The Gathering™ –popu­lar­ment Màgic– és un joc de car­tes col·leccionables. Generalment enfronta dos juga­dors (tot i que poden jugar-​​se moda­li­tats amb més par­ti­ci­pants), cadas­cun dels quals dis­posa d’una bara­lla amb un mínim de 60 car­tes. En l’imaginari del joc, l’enfrontament dels juga­dors repre­senta una bata­lla entre mags. Les car­tes, a grans trets, són els encan­te­ris que uti­lit­zen i els éssers que invo­quen. Existeixen cinc colors per a cinc esco­les de màgia dife­rents: el blanc (ordre, pro­tec­ció, llum), el blau (conei­xe­ment, mani­pu­la­ció, il·lusió), el negre (fos­cor, ambi­ció, mort), el ver­mell (lli­ber­tat, emo­ció, impuls) i el verd (crei­xe­ment, ins­tint, natura) i, de cadas­cun d’aquests colors, car­tes de diver­sos tipus: sor­ti­le­gis, ins­tan­ta­nis, encan­ta­ments, cri­a­tu­res i cami­na­dors de plans (pla­neswalkers); a més de car­tes que no tenen color, com les ter­res (d’on els juga­dors extre­uen l’energia neces­sà­ria per a fer els encan­te­ris) i els artefactes.

Com que es tracta d’un joc col·leccionable, peri­ò­di­ca­ment es publi­quen noves edi­ci­ons i les seves cor­res­po­nents exten­si­ons amb car­tes inè­di­tes de manera que, a dia d’avui, la quan­ti­tat total de car­tes dife­rents supera les 10.000. Entre aquest extens catà­leg hi ha car­tes de diver­sos tipus segons la fre­qüèn­cia amb què apa­rei­xen en cada impres­sió. Així, tro­bem car­tes comuns, infre­qüents, rares, míti­ques i espe­ci­als que tenen, a la vegada, major o menor poder en el joc. No exis­teix una equi­va­lèn­cia directa entre la seva raresa i la seva uti­li­tat en el joc, si be és cert que les car­tes més ben valo­ra­des pels juga­dors acos­tu­men a ser rares (les míti­ques i les espe­ci­als sovint tenen més valor per als col·leccionistes que uti­li­tat en el joc). Hi ha car­tes que són molt útils per si matei­xes, car­tes que es com­bi­nen entre elles per a diver­ses estra­tè­gies, car­tes que es con­tra­res­ten, car­tes que són pràc­ti­ca­ment inú­tils en una par­tida, etc.

Per als juga­dors el punt de par­tida con­sis­teix a deci­dir qui­nes car­tes for­ma­ran part de la seva bara­lla. Sovint és un pro­cés llarg (cal anar acon­se­guint les car­tes: cambiant-​​les, comprant-​​les indi­vi­du­al­ment…), de pla­ni­fi­ca­ció de l’estratègia, de cor­rec­ci­ons fetes per assaig i error, d’intercanvis d’opinions amb altres juga­dors (Internet també és de gran ajuda, és clar)… però sobre­tot, és un pro­cés d’aprenentatge entre­tin­gut i diver­tit. Hi ha diver­sos for­mats de joc que clas­si­fi­quen les bara­lles segons les edi­ci­ons a les quals per­ta­nyen les seves car­tes, de tal manera que en els tor­ne­jos ofi­ci­als s’estableix un for­mat con­cret i només hi poden par­ti­ci­par juga­dors amb bara­lles d’aquell for­mat deter­mi­nat. Això suposa cer­tes limi­ta­ci­ons però també iguala les pos­si­bi­li­tats dels juga­dors d’aconseguir bara­lles com­pe­ti­ti­ves, ja que les car­tes més pode­ro­ses de les pri­me­res edi­ci­ons són cares… o molt cares! I poca broma, al cir­cuit Pro Tour de tor­ne­jos ofi­ci­als els pre­mis són espec­ta­cu­lars!

Black Lotus, la carta més famosa i més cara de MagicI per què explico tot això? Resulta que fa temps jo havia jugat a Magic. Devia ser cap a l’any 1994 o 1995, si fa o no fa, i a aque­lla època els juga­dors de Magic man­re­sans es reu­nien els diven­dres a la tarda al bar de Els Carlins per xer­rar, can­viar car­tes, fer unes quan­tes par­ti­des i pas­sar la tarda. Uns quants amics i jo, no recordo exac­ta­ment com (qui ens en devia par­lar?) vam aficionar-​​nos al Magic i durant una bona tem­po­rada vam ser assi­dus a les tar­des de Els Carlins. Comprovant a Card Kingdom les edi­ci­ons de les car­tes que teníem, cal­culo que devíem jugar durant un any i mig o dos. Després les meves car­tes van anar a parar a una capsa de saba­tes i allí s’han estat, uns quants anys… fins la set­mana pas­sada. Un amic em va comen­tar que jugava a Magic i em va venir de gust treure la pols a la meva antiga bara­lla per enfrontar-​​la a la seva, amb car­tes molt més noves. Vam com­par­tir unes cer­ve­ses tot escol­tant Radiohead i Tom Waits men­tre jugà­vem  3 o 4 par­ti­des i la veri­tat és que m’ho vaig pas­sar de conya.

En aque­lla època en què jo jugava a Magic Internet era una altra cosa i, és clar… he fli­pat bas­tant amb tot el con­tin­gut que hi ha, fòrums, boti­gues on-​​line espe­ci­a­lit­za­des, etc. de fet, he de con­fes­sar que no m’he pogut resis­tir a com­prar 8 o 10 car­tes (de les bara­tes, eh!) que em fal­ta­ven per pulir la bara­lla… és clar que ara ja he des­co­bert que hi ha alter­na­ti­ves millors en edi­ci­ons més noves… ja l’hem feta bona!

{lang: «ca»}

05 mar 2010

El joc perfecte

2 Comments Internet


D’un temps ençà, el feno­men dels jocs Flash ha pres una nova dimen­sió grà­cies a Facebook. A la punta de l’iceberg hi ha el Farm Ville amb uns 80 mili­ons de juga­dor actius el més pas­sat –que aviat és dit!

Fins ara me n’havia man­tin­gut al marge; no dels jocs Flash (n’hi ha hagut més d’un que m’ha dei­xat ben engan­xat), però sí dels jocs al Facebook. No sé si tot­hom és cons­ci­ent que quan instal·la una apli­ca­ció de ter­cers a Facebook per­met als desen­vo­lu­pa­dors l’accés a tota la infor­ma­ció del seu per­fil, fotos, etc. que, en gene­ral, no és poca cosa. Sigui com sigui el joc que m’ha fet caure es diu Jungle Jewels. És el clàs­sic joc de for­mar grups (horit­zon­tals o ver­ti­cals) de 3 o més pedres del mateix color. El joc està molt ben pen­sat: és àgil, la música i els efec­tes són per­fec­tes per fomentar-​​ne l’addicció (estil escu­ra­but­xa­ques…), les par­ti­des són ràpi­des i gens can­sa­des. Tot està pen­sat per­què con­ti­nuïs, con­ti­nuïs, continuïs…

El joc només té 4 nivells que s’han de superar, con­jun­ta­ment, en un temps deter­mi­nat. Si per­dem molt de temps al pri­mer en queda menys pels altres. La pun­tu­a­ció màxima sem­bla que ronda els 160.000 punts si mirem el ràn­quing glo­bal a Facebook. El vídeo que adjunto demos­tra que el joc es pot superar en el temps esta­blert, però la pun­tu­a­ció –108950– queda força allu­nyada del record. I aquí hi ha la clau de tot plegat:

Al prin­cipi del joc dis­po­sem d’uns diners vir­tu­als (jun­gle cash) que ens per­me­ten pau­sar el joc (per explo­rar pos­si­bi­li­tats sense per­dre el temps), repe­tir un dels nivells (man­te­nint la pun­tu­a­ció dels ante­ri­ors) o com­prar 60″ extra. Sens dubte, la millor inver­sió per al jun­gle cash és el temps extra. El pro­blema? Aquests diners vir­tu­als són finits (no recordo de quin import dis­po­ses al prin­cipi) i quan comen­ces a jugar no ho saps i els mal­gas­tes. De manera que quan has entès per­fec­ta­ment com fun­ci­ona el joc ja no et que­den diners… i, si en vols més, la única manera d’aconseguir-los és comprar-​​los ¡amb diners de debò!

Ja tenim el joc per­fecte mun­tat: gra­tuït i alta­ment addic­tiu, ràpid, estres­sant, ni massa fàcil ni massa difí­cil… en el qual, si estàs ben engan­xat i vols tenir pos­si­bi­li­tats de fer la màxima pun­tu­a­ció, molt pro­ba­ble­ment hau­ràs d’acabar com­prant jun­gle cash

Per sort, encara no sé a quant va la divisa…

{lang: «ca»}