» »

Digitalna evolucija

Digitalna evolucija

««
11 / 29
»»

Thomas ::

Pravzaprav to s šahom nima večje zveze, kot premikanje figur. Problem je, kako jih postaviti tako, da se med sabo čimbolj krijejo. Pokrivajo, kolikokrat se. Konj pač pokriva v L in trdnjava naravnost naprej, naza, levo desno.

To je en problem, ki ni tako preprost, precej časovno zahteven je, sploh če vneseš večje število figur.

To sem si zmislil in naredil okoli leto dni nazaj, ter dal v cirkulacijo console verzijo. No, ta je Windows in precej hitrejša.

Cel štos je pokazati, kako hiter je evolucijski algoritem.

Teh spin offs iz Critticalla imam še več, nekateri so tudi uporabni. Pa jih bom dal gor, ko bo kabel z mojim internet providerjem delal.

Zdej mi že 24 ur skoraj prijavlja "connection failed", kakor hitro kaj napol uploadam!

GRRRRR!

Lahko vneseš poljubno konfiguracijo figur, pa pogledaš kako se razporedijo. Kako crkava simetrija, čeprav si vnesel enako samo dveh figur ipd.
Man muss immer generalisieren - Carl Jacobi

BigWhale ::

Ze dolgo casa nisem tezil za Linux verzijo... ;)

Double_J ::

Jz probavam tak input dat, da se bo najbolj mučil. Ugotovil sem že, da je najbolje, da je čimmanj kraljic.:))
Dve šivanki...

Zgodovina sprememb…

  • spremenil: Double_J ()

DixieFlatline ::

Sm že dojel in poskušam čim bolj upočasniti proces :)
The sky above the port was the color of television, tuned to a dead channel.

Thomas ::

Tale zip sem le uspel uploadat!

Notri je exe, ki naredi učencem prijazno razporeditev izbirnih predmetov v osnovni šoli.

To pomeni optimizira zadevo. Spet evolucijski algoritem. Delujoči shareware.

No, ta naloga tudi ni trivialna, kot nalašč za EA.
Man muss immer generalisieren - Carl Jacobi

Zgodovina sprememb…

  • spremenil: Thomas ()

Marjan ::

> Tale zip sem le uspel uploadat!

Meni ne dela. Object not found!

Zgodovina sprememb…

  • spremenilo: Marjan ()

Thomas ::

Narobe nekaj z ISPjem. Bomo probal to rešiti ASAP.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Zdej bi moralo delat!
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Prerelease version. Windows help in setup.
Man muss immer generalisieren - Carl Jacobi

BigWhale ::

Linux Port? ;)

Ali pa vsaj source... ;>

Zgodovina sprememb…

  • spremenil: BigWhale ()

Thomas ::

Jo boš ti portal? Mislim resno.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

NOVO.

Popravki Helpa in se par malenkosti. Ni še release.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Spet nova verzija.

Ni še fertik ... še mau manjka do izdaje.
Man muss immer generalisieren - Carl Jacobi

snow ::

Kake izdaje to..? Kaj posebnega še pride v 'izdaji'?
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Thomas ::

Za tole prvo verzijo ne bo nič več posebno novega. Samo zakrpanje vseh potencialnih lukenj in še kakšen sample.

Ena luknja je ta, da pastanje iz helpa v Ultredit da Unix file - hehe.

Druga je ta, da v nekaterih primerih PRVIC ne najde hlp fajla ...

Mogoc je se kej takega.
Man muss immer generalisieren - Carl Jacobi

DixieFlatline ::

V zadnjem Scientific Americanu sem bral en zame zelo impresiven članek, kako je biološka koda zevolvirala skozi stoletja, se je pa razvila v to smer, da je error minimization zelo velika. Če se komu da dobit aprilski SCI-AM, nej si le prebere ta članek.

Tule je pa webpage od piscev tega članka.

Link
The sky above the port was the color of television, tuned to a dead channel.

Zgodovina sprememb…

DixieFlatline ::

Update:

Članek je na netu.

Članek:))
The sky above the port was the color of television, tuned to a dead channel.

Thomas ::

Off topic!

Sem dal Googlove oglase zraven, pa razmišljam če naj vržem proč to zadevo.

Mau nej jih poklika kdor ma čas, da vidim če je kaj učinka. Če ni, hitro zabrišem proč.

Hvala lepa!

Aja link!
Man muss immer generalisieren - Carl Jacobi

Zgodovina sprememb…

  • spremenil: Thomas ()

Gandalfar ::

pomojem, da na taksno stran bannerji ne spadajo..

Marjan ::

Meni jih takoalitako blokira, tako, da ga ne vidim.

BigWhale ::

Opensourcaj zadevo, bos postal slaven in vabljen na vse pomembnejse dogodke po svetu... Boljs kot bannerji... ;)

Pa se Linux/Mac/PPC/... porte bos dobil, kar tko sam od sebe. :)

Ko bo nekdo zacel tole na IBMovih zverinah poganjat... ;)

Zgodovina sprememb…

  • spremenil: BigWhale ()

Thomas ::

Za slavo mi ni, za bogastvo sem se pa tegale sploh lotil.

Za slavo mi ni predvsem zato, da se ne bi preveč ljudi tako igralo, kot se jest. Zato točno kako delajo tele "selektivne simulacije" še precej let ne mislim izdati.

Kar se tiče oglasov so nekoliko bedni, priznam. Jih bom omejil na eno samo stran, samo en teden naj mi laufa statistika.
Man muss immer generalisieren - Carl Jacobi

BigWhale ::

Ma, jest ti ne bom delal porta, jest delam for good cause... ;)

Thomas ::

Jah jest tudi.

Samo da sem toliko realen, da vem, da precej dobrega se okalira skozi tržno ekonomijo. Pa da še največ ga pride skozi.

Tista reklama za jugurt Danone mi je všeč, ko se uni tipček naglas zadere: "U KAKO JE DOBRO!".

Škoda samo, da ni zares tako dobro. Še najprej bi pa tako kvaliteto dosegli z nadaljnjim razvijanjem trga. Mislim.
Man muss immer generalisieren - Carl Jacobi

attackiko ::

1. In kdaj računaš, da bo zadeva tako dobra da bo začela nosit zlata jajca?

2. A se je že kdo drug spravil kaj optimirat, tam na Critticallovi strani so sami tvoji primeri?

Thomas ::

> 1. In kdaj računaš, da bo zadeva tako dobra da bo začela nosit zlata jajca?

Tako dobra je že, razen da je morebiti še kakšen major bug, ki ga je treba uničiti. Ko bom 99% prepričan da ga ni, bom začel objavljati "breaking članke" povsod, kjer jih bodo hoteli objavljati. Nekaj "ground breaking" železov imam že v ognju.

> 2. A se je že kdo drug spravil kaj optimirat, tam na Critticallovi strani so sami tvoji primeri?

Kolikor vem, novega sorta ali kompresa s pomočjo Critticalla ni uspelo izumiti še nikomur. Upam da ne bom ostal "največji virtuoz" v njegovi uporabi, da ga bodo nekateri znali uporabljati bolje od mene. Kot znajo nekateri spretneje uporabljati Google, drugi pa učinkoviteje nastaviti Windowse, tretji spet boljše igrati Minesweeper. (Samo da za slednje nisem čisto prepričan. :D )

Trenutno se ukvarjamo tudi z "neprogramerskimi uporabami - IZBIRNI.EXE". Tam so nekateri uporabniki že spretnejši od avtorjev.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Moja platforma je naslednja:

ACGT proti DNA je kakor EA proti AI.

Pa seveda še to, da EA* implementiran v Critticallu je doslej najmočnejši.

-------------
* Evolucijski Algoritem
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

no, neki je pa že ;)
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

Well, the concept is proven. Naredili smo simulacijo dogajanja v svetu (osnovnih) C ukazov, podvrgli ta svet neusmiljeni Darvinistični evoluciji in ven je padlo nekaj, kar se zdi radikalno novo. Za kar bi naj bila lahko odgovorna kvečjemu človeška ingenioznost.

Na ta način smo dobili "mehanizirano človeško inovativnost", podobno kot je Pascal mehaniziral aritmetiko ali Fritz team šah.

Seveda pa Critticall zahteva precej rutinskega človeškega šaflanja, da v zameno ponudi nek doslej neznan sort. To pa (še) res.

Osvojitev trdnjave imenovane algoritmiranje, je en tak majhen psihološki korakec, kot je bil majhen korakec Edisonov fonograf. Da "mrtev stroj posnema človeški glas" ali pa da "neinteligenten PC najde algoritem ki ga ni v nobenem učbeniku" - se mi zdi prej enako.

Hvalabogu, vsak dober programer te trditve lahko sam preveri. 8-)
Man muss immer generalisieren - Carl Jacobi

Sergio ::

Erm... Malo več o konceptu, ki je bil dokazan?
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Thomas ::

Poglej na sajtu za Dijkstra algoritem in za njegovo izboljšavo.

Jo najdeš kjerkoli drugje na netu? V kakšni knjigi? Mogoče ne deluje?

No, obstaja sicer tudi teoretična možnost, da sem jo izboljšal kar sam, potem pa vgradil v source. Ampak potem sem pa edini Slovenec, ki je izboljšal kakšen znan algoritem. >:D

Baje nekateri niso hoteli iti v Menlo park gledat Edisonovega fonografa, ker so "itak vedeli, da to ni nemogoče".

Heheh ...
Man muss immer generalisieren - Carl Jacobi

Sergio ::

Sori, žal nimam časa dekodirat kodo. Zanima me samo (ce te nisem uzalil s tem, ker nisem sam pogledal), ce si zmanjsal casovno zahtevnost (kakrsno koli -- maksimalno, amortizirano, ...) za izracun Dijkstre nad grafom.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Thomas ::

Tukaj je Floydova koda za poti skozi graf.

Tega (odvisno od inputa, ki ga v kodi s te strani lahko spreminjaš) Critticall optimizira. Nekaj dobljenih rezultatov je "Dijsktra", drugi so kaj drugega. Tudi še ne videnega. Optimizacija po nišah pač.

Ampak zgoraj sem imel v mislih "next lexical". Poiskati naslednjo permutacijo po abecedi. To je pa tule!

Spodaj na strani je slika, kako ta algoritem dela. Kako rabi (tokrat) en korak manj kot originalni Dijkstrov algoritem.
Man muss immer generalisieren - Carl Jacobi

snow ::

A to na vseh permutacijah ali samo za dolocene primere.. v tem primeru?

tista slika...

pri critticall 2004 piše nekje : 1 0 4 3 2 1
tam na koncu bi morala bit 5ka.

pa druga vrstica pri dijkstri bi morala bit pofarbana? :)
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Thomas ::

V tabeli je kar lepo 1, ki je 5-ko prekrila. Ta je tačas v spremenljivki critticall1.

To začasno izginjanje nekaterih številk iz tabele imaš tudi že pri Dijkstru. To ni novum. Novum je samo bolj zvito premetavanje.

:)
Man muss immer generalisieren - Carl Jacobi

Thomas ::

p.s.

Od n! permutacij pri n elementih za večino in v povprečju Critticall algoritem delije hitreje (z manj koraki). Ne pa pri vseh. Pri "desno že poravnanih", katere so redke, Dijkstra dela enako. Critticallov algoritem to redkost izkorišča, pri njej zaštrika, zato pa v večini lahko dela hitreje.

Kar ingeniozno! :))
Man muss immer generalisieren - Carl Jacobi

Thomas ::

General Motors bo nabavu en hud supercomputer. IX klase.

Link.

Med drugim, simulirali bodo avto trke na njem, da bi tako izboljševali varnost. Se pravi, s simulacijami bodo zavtomatizirali inoviranje boljših (varnejših) oblik.

Moja mantra, po kateri je inteligenca enako simulacija, pa še tista, na pogled še bolj čudna ideja, da "(super)inteligenca je popolnoma nebogljena in nenevarna, ker je to samo simulacija", se počasi izkazuje za pravilno. Kakor čudno je že slišati to ljudem.

Ko enkrat simuliraš, pa hitro (naprimer z EA) hitro pregleduješ izsimulirane zanimive rezultate, si prišel z inteligenco tako daleč, kot inteligenca sploh more.

Kar je pa povsem dovolj daleč, da narediš čisto vse, kar je možno narediti.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Majhna demonstracija.

Gifa na dnu strani prikazujeta situacijo. "Umetni" sort dvakrat hitrejši od "najhitrejšega naravnega" za take primere.

Besides ... vidi se kako poteka.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

dobr ga nascije ;)
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

res deluje inteligentno :D
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

Na tej strani je pa posnetek delovanja QuickSorta in DoctoredQuickSorta, kateri je po Critticallu popravljen navaden QS.

Vidi se, da skakanje sem in tja po datoteki, ki je tako značilno za QuickSort, ni tako dobra ideja. "Podoktoriran" sort dela od zgoraj navzdol kontinuirano - in zmaga!
Man muss immer generalisieren - Carl Jacobi

Zgodovina sprememb…

  • spremenil: Thomas ()

Thomas ::

Še en "muviček". TwoUnique proti Quicku.
Man muss immer generalisieren - Carl Jacobi

Gizm0 ::

Če se števila zelo ponavljajo, postane Quicksort-ova časovna zahtevnost O(n^2).
Naredi primerjavo med BucketSort-om in SeveralUniqeSort-om. BucketSort ima časovno zahtevnost O(n), vendar pa porabi več pomnilnika.

Sam sem malce probaval to implementacijo (java) in je bila hitrejša od SeveralUniqeSort-a, tudi če se števila zelo ponavljajo. Deluje pa samo s pozitivnimi števili.

Dobra stran z demonstracijami sortiranja je tudi http://www.cs.ubc.ca/spider/harrison/Java/sorting-demo.html. Si že poskusil, če je DoctoredQuickSort hitrejši od FastQuickSorta?

Thomas ::

Kar se tiče Bucketa, ki ga preizkušaš na 0 in 1, ga moraš soočiti z TwoUnique sortom: Tule, drugi listing. Optimizacija za dve vrednosti.

Ampak kolikor sem že gledal, Bucket nima možnosti. Razen kolikor ga Critticall izboljša v (neko nepredvidljivo smer).

First thing tomorrow morning!

Iz tegale sortiranja bomo napravili še nekaj strani, že vidim. Tudi pri QuickSortih je še marsikaj za pogledat in povedat.

Vsekakor pa zelo relevanten post, Gizmo. Thnx!
Man muss immer generalisieren - Carl Jacobi

Gizm0 ::

Sem se pravkar malce igral z meritvami.
Urediti sem dal 5 milijonov cifer (0 in 1). Rezultati so naslednji:

bucketSort 46.0 ms
severalUniqueSort 78.0 ms
twoUniqueSort 63.0 ms

BucketSort deluje po zelo preprostem algoritmu:
bucket[0]=število vseh ničel (x)
bucket[1]=število vseh enic (y)
Ko gre zanka prvič čez vse cifre, sta oba "vedra" napolnjena.
Nato samo še na prvih x mest prilepi ničle, na drugih y mest pa enice. Dokler ne zmanjka pomnilnika, je vse v redu :))

Thomas ::

Te lahko prosim, da pastaš source?
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Heh Gizmo, kaj ti počneš?!

TwoUnique zadevo (5 milijonov rekordov) posorta prej kot v pol sekunde. C++ od MSja.

Tvoje meritve so za več kot 100 krat narobe in zato povsem irelevantne. Bomo tukaj naredili jutri čisto prave.

Je pa tvoje opozorilo vseeno zdravo. One can't be too carefull! :D
Man muss immer generalisieren - Carl Jacobi

OwcA ::

Em, saj ima rezultat v ms.
Razlike je potemtakem za en velikostni red, kar je lahko posledica HW.
Otroška radovednost - gonilo napredka.

Thomas ::

Ja res je, se opravičujem. V ms so rezultati. ... Checking ...
Man muss immer generalisieren - Carl Jacobi
««
11 / 29
»»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Najhitrejši programski jezik? (strani: 1 2 )

Oddelek: Programiranje
758054 (5874) Senitel
»

Funkcija z logičnimi operaterji.... (strani: 1 2 )

Oddelek: Programiranje
905927 (5273) CaqKa
»

Petaflopsu naproti (strani: 1 2 3 )

Oddelek: Novice / Procesorji
1059576 (9576) Marjan
»

cene permutacij help please

Oddelek: Programiranje
262184 (1791) Sergio
»

kako definirtati prastevilo

Oddelek: Programiranje
143907 (3712) ooux

Več podobnih tem