Nedeľa, 24. september, 2017 | Meniny má Ľuboš, Ľubor

Načítavam, moment...
Momentálne nie ste prihlásený

Vězení se mění... (Späť na článok)

Pridajte priamu reakciu k článku

1 2 3 > >>

Hodnoť:   mínus indicator plus

 

Z niekolkych zdrojov som sa docital ze najuspesnejsi algoritmus je TFT, som rad ze som sa dozvedel nieco nove. Diky za vynikajuci clanok!
 
Hodnoť:   mínus indicator plus

to je moc pěkný přehled, ne že tenhle blog zase časem zrušíš ..

jinak znáš knihu Matta Ridleyho Původ ctnosti? Tam se těmihle věcmi taky zabývá, hlavně z evolučního hlediska. Je to dost čtivé
 
Hodnoť:   mínus indicator plus

Zruším, nezruším...

budu se chovat podle toho co jsem psal a budu důsledně pragmatický. Jakmile zjistím, že se mi má spolupráce (="mít blog") nevyplatí, tak ho smažu. :)

Říkejte mi ArTFThur :)
 
Hodnoť:   mínus indicator plus

zkousel jsem to,

ale kousl jsem se do jazyka :-(
 
Hodnoť:   mínus indicator plus

Arthure díky

za vynikající seriál. Docela mě překvapilo, že skupina Velkých psů napadená 1 Malým psem se postupně přemění (přes občasné výskyty TFT) na Malé psy (i když to trvá hoooodně dlouho.
Asi by tam chtělo dodat, že Velký pes se naštve a Malého psa sežere :o)
Ještě jednou díky za tuhle sérii článků
 
Hodnoť:   mínus indicator plus

 

Coby majitel dobrmana mohu zodpovědně prohlásit: Velcí psi jsou dobrosrdeční troubové. Zatímco ho ti malí psíci obíhají a "oštěkávají", tak ten velký čučí a myslí si, že to je nějaká hra. A i když nakonec toho malého chytne, tak ho akorát oslintá a vyplivne :)
 
Hodnoť:   mínus indicator plus

Móóóc pěkné :-)

Díky. Zvlášť ten mutant je úžasný. Myslím, že si s tím budu dlouho hrát :-)
 
Hodnoť:   mínus indicator plus

Poker

Prave vcera som si pozeral popis algortimov pre Poker (Texas Hold'em). Tie najlespie algoritmy (okrem toho, ze reaguju na ostatnych superov a reaguju podla svojich kariet) sa snazia "precitat " superov. To znamena, ze sa snazia zistit podla akeho algoritmu hra kazdy jeden super a podla toho prisposobuju hru proti nemu. V Tvojom pripade by nejaky novy algoritmus sa snazil zistit algoritmus svojho supera a podla toho prisposoboval hru. Takze taky komplikovanejsi TFT.
.
Zrejme nefunguje proti algoritmu, ktory sa sprava nahodne - ale zas tak sa ludia nechovaju.
 
Hodnoť:   mínus indicator plus

 

Jistě, i to by šlo. Mým cílem ovšem nebylo vyvinout Nejlepší Možný algoritmus, ale spíš na příkladech simulovat chování určitých vyhraněných typů lidí ("Hipísák", "Humanista", "Oko za oko", "Křivák", "Polokřivák", "Pragmatik" apod.) a zjistit, zda mohou některé přežít, zda mohou utvořit stabilní společenství a zda má takové společenství homeostatickou "samočistící" schopnost. A druhým cílem bylo donutit lidi k zamyšlení nebo v nich vzbudit zájem, což se, jak vidím, povedlo. A to je dobře.

Ten algoritmus, který popisujete, je "metaalgoritmus", který nejprve během několika kroků odhaluje s jakým algoritmem hraje a pak proti němu vybere nejúčinnější protialgoritmus. Nedá se říct, že by to byl TFT, tedy "podraz za podraz", ale spíš "pozorovatel". Odhaduju, že by mohly stačit v té mé simulaci tři kroky na "přečtení" algoritmu...

Co by se ale stalo, když by proti sobě hráli samí takovíto "vychcánkové"? Co by o sobě zjistili během testování? Co by se z nich (ze všech) stalo po tom třetím kole? :)
 
Hodnoť:   mínus indicator plus

 

Ďakujem. Skvelé spracovanie.

A teraz je už len krôčik k tomu, aby bolo správanie zakódované do nejakej formy genómu a pustilo sa to mutáciami a kríženiami evolvovať k "dokonalému" algoritmu správania.

Obávam sa dopredu, že v PHP to nebude možné lebo tam treba oveľa väčšiu populáciu (tak 100-200) kvoli rôznorodosti genómou celej populácie a generácii bude treba rádovo asi stovky až tisíce. V každom prípade by to mohlo byť tiež zaujímavé. Ale nechcem zase spôsobiť nejakú veľkú časovú ujmu.
 
Hodnoť:   mínus indicator plus

Na to už,

obávám se, nemám ani čas ani matematický vědomostní aparát. :) Ale je dobře že jste to zmínil, třeba se tu někdo najde...

Šel bych do toho ve volných chvílích sám, ale jak říkám - chybí mi ten matematický základ na to, abych věděl, jak "chování" zakódovat do "genomu" a jak nadefinovat mutace. Přeci jen to, čím se živím, je od matematických simulací dost daleko... :) Ale neříkám, že by mě to nezajímalo. Jen mít čas na studium!
 
Hodnoť:   mínus indicator plus

 

Možno by na začiatok stačil takýto jednoduchý reťazec definujúci správanie:

Každý bit by reprezentoval čo má za danej situácie urobiť. 0 podraz, 1 spolupráca.

Prvý bit určuje či má spolupracovať na začiatku.
Druhý čo spraviť ak bol v predchádzajúcom kole podrazený.
Druhý čo spraviť ak v predchádzajúcom kole súper spolupracoval.
Tretí čo ak bol 2x za sebou podrazený.
Štvrtý čo spraviť ak minule podrazil a podraz sa mu vyplatil.
Piaty čo spraviť spolupracoval a spolupráca sa vyplatila.
...

Asi by tam bolo treba dávať aj špeciálnu hodnotu NULL, keď napríklad pre Kavku je úplne jedno, že 2x spolupracovala a nevyplatilo sa to.

Mutácia je potom triviálna. Zmení sa náhodne s určitou pravdepodobnosťou bit genómu/reťazca. Väčšinou sa to dáva, tak aby šanca, že sa zmení práve jeden bit je 100%. Čiže 1/dĺžka reťazca.

Kríženie je jednobodové čiže sa zoberú dva reťazce, preseknú na určitej pozícii a vymenia časti tak aby prvá bola z pôvodného genómu a druhá z druhého. Toto sa myslím robí na úrovni 60-80%. Čiže šanca, že genóm sa bude krížiť je 60-80%.

Výber genómov do ďaľšej generácie sa robí rôzne. Najznámejšia je ruleta. Genómy ohodnotené bodmi získanými v hre sa vyberajú do ďaľšej generácie s pravdepodobnosťou (počet bodov genómu)/(počet bodov všetkých genómov).

To len tak pre zaujímavosť, keby mal niekto čas a chuť.
 
Hodnoť:   mínus indicator plus

 

Ehhhh... Člověče, až vás potkám, tak vás něčím praštím! :))) Víte že brzdíte rozvoj serveru Bloguje.cz tím, že odčerpáváte (a vyčerpáváte) jeho vývojáře takovými nápady? :)
 
Hodnoť:   mínus indicator plus

 

Môže to byť veľmi šikovný tah od konkurencie. Čo teraz? Spolupracovať alebo podraziť? :-)

Inak môžete sa vykašlať na to vykanie? Som na to ešte trochu mladý a cítim sa nesvoj, keď mi niekto vyká.

Mám otázku, ktorá ma vlastne delí od toho, aby som si to skúsil doma sám. Keď sa vyhodnocuje jedna generácia, tak hrá každý s každým?

Genetické algoritmy som už pár krát robil (stačí google a johno+ genóm) a tak by mi to asi netrvalo dlho kým by som to spravil.
 
Hodnoť:   mínus indicator plus

OK

Neznámým lidem vykám, je to jednodušší... :) Mohl jsi taky být profesor na univerzitě. :)

Ale jsem TF2T, takže je má volba jasná... :)

V každém kole hraje každý s každým. Při osmi hráčích je to tedy 28 utkání na kolo.
Každá hra má předem neznámý počet kol. Já je omezil na 20-30, mnohem reálnější by bylo 1-100 a pravděpodobností dle Gaussovy křivky.

A ta metoda... Hm. Hmmm... Líbí se mi to čím dál tím víc. :) Sice by to nebylo už tak zajímavé "pro oko", jako webová aplikace by to bylo zhruba tak interesantní jako sledovat lávovou lampu, ale dalo by se to použít jako zdroj algoritmů pro následné soupeření "v aréně simulátoru"...

Jen těch bitů by bylo velmi, velmi mnoho... Co třeba bit "Co udělat, pokud převažují (1,0) nad (0,1)"? Bit "Co když on převážně spolupracuje, ale jeho podrazy jsou pro mne velmi ztrátové, víc než moje pro něj?" apod. :)
 
Hodnoť:   mínus indicator plus

 

> Jen těch bitů by bylo velmi, velmi mnoho...

Koľkože to má ľudský genóm tých A-C-G-T aminokyselín či čoho?

Myslím, že keby sa zvolili rozumné "príznaky", tak by to mohlo byť celkom slušné.

Riešenie na toto som mal pripravené ako ďaľší tromf v rukáve, ale keď predbiehaš tak aha: Volá sa to genetické programovanie. Proste sa genetickým algoritmom vyrába samotný algoritmus. V podstate vyrábaš vyhodnocovací strom, ktorý má prístup ku všetkým premenným a nejaké základné operátory a funkcie. Je to o dosť zložitejšia záležitosť, ale dá sa.

My sme tak v škole hľadali predpis pre neznámu funkciu zadanú len množinou bodov (x, y). http://johno.jsmf.net/bordel/school/ui/ga/

No, ale skôr ako sa budeš snažiť o niečo nové prečítal by som dostupné veci. http://www.google.com/search?q=prisoner+dilemma+genetic+algorithm
 
Hodnoť:   mínus indicator plus

 

Nukleotidy jsou čtyři. Což je "čtyřstavový bit". Kolik že je těch nukleotidů v každém genu? Každé tři nukleotidy tvoří triplet, který kóduje některou z aminokyselin... Kolik aminokyselin je na jeden gen? :)

A ad Google search - trošku odbočím: Mně v téhle věci nejde o POZNÁNÍ. Nepotřebuju VĚDĚT, jak to vymysleli matematici, já matematik nejsem a ta informace má pro mne mizivou hodnotu, asi jako informace o hmotnosti planet sluneční soustavy. Jde mi o POZNÁVÁNÍ, o radost z tvoření a z hry, radost z objevování věcí - byť jinými objevených... Kdybych chtěl POZNÁNÍ, tak si to přečtu a řeknu "hm". :) Takhle jsem si hezky pohrál, spojil jsem přitom programování s psychologií, sociologií a matematikou, napsal jsem o tom a udělalo mi radost, že to zaujalo i pár dalších lidí. Můj subjektivní zisk z takové "hry" je ale obrovský. Rozhodně větší než z googlení a ze čtení něčeho, co už někdo udělal. :)

Ale teď mě napadlo: Co třeba ty algoritmy nahradit jednoduchou tří, čtyřvrstvou neuronovou sítí? Mutace by pak představovaly změny váhy jednotlivých synapsí. Taková neuronová síť bez backpropagation, s vývojem genetickým, nikoli algoritmickým... Ta by mohla mít, řekněme, dvacet až třicet uzlů, na vstupu dejme tomu 10 trinárních uzlů (0 / 1 / NIC) pro posledních 5 kroků obou hráčů, v první mezivrstvě dalších 10 uzlů, v druhé 5, třetí je jeden jediný výstupní uzel (binární)? Pak by byl "algoritmus" popsán polem reálných čísel. Mít takových sítí mnoho a po hře vybírat úspěšné jedince...

Takové "šlechtění mozečků" by to bylo. Ale přišli bychom o křížení :) Tím zmizí nutnost genetického vytváření algoritmu... ;)
 
Hodnoť:   mínus indicator plus

 

O kríženie by sme neprišli lebo ten reťazec reálnych čísle sa dá tak isto krížiť a mutovať.

Neurónová sieť je tiež možnosť, ale tá má jednu hroznú chybu. Keď budeš mať natrénovanú už tú úplne najlepšiu, tak jej logiku nepochopíš lebo z tých 200 reálnych čísel si nič nevyčítaš. Aj keby si pozeral ako sa sieť aktivuje pri rôznych vstupoch, tak z toho múdry nebudeš.

Na druhej strane algoritmus zapísaný vyhodnocovacím stromom asi nebude tiež žiadna krása, ale dá sa pochopiť oveľa jednoduchšie.

Takže ja som stále skôr, za tie jednoduché príznaky správania.
 
Hodnoť:   mínus indicator plus

 

Otázka je: Proč algoritmus "algoritmický"? Pro to co potřebujeme (tedy vědět jak se rozhodnout při takovém či onakém stavu) je jedno, jestli to je IF-THEN, rovnice, diferenciální rovnice, matice nebo neuronová síť, ne? :)
 
Hodnoť:   mínus indicator plus

Bible

Jo, to je celý Johno! :-)

Na počátku lidské existence stál Ďábel ponoukající Boha myšlenkou, což takhle si napsat simulátor genomu a testovat algoritmy chování. Bůh nejprve namítal, že neví přesně, jak na to, jenže Ďábel se zmínil o nápadu s bity A C G T a Boha to naprosto uchvátilo. Tak si napsal Zemi a pak celé dva věky, namísto původně plánovaného rozpínání vesmíru, si hrál se simulátorem. Jak malej Jarda ;)
 

1 2 3 > >>

Prihláste sa

(?)
 


Ďalšie možnosti
Zoznam diskusií

Registrácia
Zabudnuté heslo
Kódex diskutujúceho

Najčítanejšie na SME