evolutionary computation etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
evolutionary computation etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Eylül 2010 Perşembe

düğmesine basıversendi ya? | just copy it, then double-click

bütün gün parallel python (pp) ve psyco modüllerini birlikte çalıştırarak programımı ne kadar hızlandırabileceğimi anlamaya çalıştım. nihayetinde hayretle tüm çabama rağmen işlemleri diğer çekirdeklere yaymanın sonucu hızlandırmadığını gördüm. oysaki cpu kullanımını %25'ten %70ler seviyesine çekmiştim... alternatifler yöntemler düşündüm. sonra da aklıma geldi, ya şu dg3_exe.py dosyasını (çift tıklayınca programı çalıştıran dosya) kopyalayayım, biri çalışırken öbürsü de çalışsın dedim. hakikaten de çalıştı!!!? :] bi tane daha kopyaladım. o da çalıştı! e her biri de bir çekirdek kullandı. şimdi her bir dg3_exe.py'de arka arkaya seri olarak sıralanmış istediğim kadar süreç var. diyelim ki 10 tane. aynı anda da 4 exe kopyası çalıştırsam 40 tanesi bir gecede hallolacak. hey allahım ne revizyonlar yaptım, tüm gün uğraştım, bi de pp erorlar vermekte n'apacağımı şaşırdımdı, sonra da şu işe bak.. :].. her bir dg3_exe versiyonu için ayrı bir log dosyası ve klasör hazırlarsam hiçbir çakışma olmadan gayet güzel çalışıp gideceklerini sanıyorum... güzel oldu güzel... neyse pp'ye de giriş yapmış oldum o da lazım olur...

21 Eylül 2010 Salı

evrimsel hesaplamacılığımızın sorunları | problems of our evolutionary computing

algoritmanın istenen işi yapması için 1. uygun fitness fonksiyonu/fonksiyonları üretilmeli. sistem fitness fonksiyonlarının beğendiği yöne doğru bireyleri dönüştürüyor. sistemin istediğimiz işi üretmesi için fonksiyonların istediğimiz ürünü tanımlamasını sağlamak zorundayız. 2. doğru parametreler bulunmalı. bu parametreler çeşitli şekillerde bireylerin dönüşüm hızını tayin ediyor. sistem doğru parametrelerle çalıştırılmazsa istenen sonuçlara ulaşılamıyor. bir makina gibi hakikaten. doğru düzgün çalışmıyor ya.. süreç erken ya da geç "yakınsayabiliyor", yerel optimaya takılıp kalabiliyor, ilerlemiyor vd... zaman harcayan, moral bozucu süreçler bunlar... o zaman belirli fitness fonksiyonları, operatörler ve temsil tarzları üzerinden ulaşılabilecek en iyi sonuçlar da bilinemiyor. belki de fonksiyonlar doğru tanımlandı ama parametreler yanlıştı... 3. temsil ve operatörler: sürecin kısaltılması ama kısalırken de erken yakınsama sorununun ortadan kaldırılabilmesi için mutasyon operatörlerinin eldeki probleme özel, tercihan bilgi-içeren bir tarzda üretilmesi gerekiyor. bunlara ait parametrelerin ayarlanması da ayrı sorun.

şu anda 4 (+1) fitness için çalışan parametreler bulmuş durumdayım! oh ba. yaklaşık 5000 kuşakta bu 5 fitness için birden kabul edilebilir değerlere ulaşabiliyorum. bir 5000 kuşak daha devam edilirse de fitnessların bazıları için oldukça iyi değerlere varılıyor. ancak bir de kompaktlık fitnessi eklemem gerektiği görülüyor. çünkü verdiğim plan sınırları içinde boşluklar kalıyor. tabi kompaktlık fitness'ı diğer fitnessların ilerlemelerini bozabilir. belki de belli eşiklerde dışa-genişleme türünden bir operatör de eklemem gerekecek. yay metaforu kullanan bir örnek görmüştüm. plan birimleri sanki bir yayla birbirine bağlıymış gibi davranıyolar, bir genişleyip bir tekrar aynı noktaya toparlanarak aşama aşama uygun düzenlemeyi oluşturmaya çalışıyolar. periyodik dışa genişleme ve kompaktlık fitness'ı birlikte sürece eklenirse benzer bir etkisi olabilir diye umuyorum. bunlar zor işler değil. ölçek mutasyonu ve kompaktlık fitness'ı için birer örnek hazırlamıştım zaten.

tabii parametre meselesinde nihai çözüm adaptif, hatta kendinden-adaptif süreçler kurgulamak. şimdilik bazı parametreleri adaptif hale getirdim. bu parametreler süreç boyunca dönüşüyorlar. bu parametrelerin bazıları tüm sürece ait, bazıları belirli bir fitness türüne özel... sürecin kendinden-adaptif olması için bu parametrelerin bireylere, hatta daha iyisi genlere (burda plan birimlerine) ait olmaları gerekiyor. aslında uygulaması o kadar zor değil. ancak nüfusu artırmak gerekeceğini tahmin ediyorum. teoriye göre (el kitabımın yazdığına göre) süreci kendinden-adaptif hale getirmek için harcanan ek mesaiye değiyor, süreç hem kısalacak hem de daha iyi ürünler verecekmiş. ki 8-10 fitness türü ve diyelim ki 15 türden 50 plan birimi ile yürütülecek bir süreçte verimlilik çok daha önemli hale gelecek. hadi biriki kere çalıştırmak sorun değil isterse 24 saat sürsün, ama bir de doğrulama aşaması olacak. süreci aynı parametrelerle diyelim ki 100 kere çalıştırıp ortalama başarımını tespit etmem gerekiyor ki sonucun tesadüf olmadığını gösterebileyim.

5000 kuşak yaklaşık 45-50 dakika sürüyor. yeni fitnessları eklediğimde (zannediyorum şimdilik 7 tane olacak) daha çok kuşak gerekecek. şimdilik bilgisayarın sadece tek çekirdeğini kullanabiliyorum. python'da diğer çekirdeklerin kullanılmasını engelleyen bir kilit varmış. global değişkenlerin durumu belirsiz kalacağı için. neyseki bu sorunu aşmayı sağlayan paralel hesaplama modulleri var. ilk işim değerlendirme ve mutasyon işlemlerini diğer çekirdeklere paylaştırmak olacak. bir de böcek var programda. 8-10 bin kuşakta bir program hata verip çöküyor. oysaki günlerce sorunsuz çalışabilmesi lazım (şu anda ben burdayken o evde çalışıyor mesela, ama eminim çoktan hata verdi, sonraki süreçten devam etmek için benim tamam dememi bekliyor :[ )

o zaman, işbaşı.

6 Eylül 2010 Pazartesi

parametre patlaması | parameter explosion

ikinci bir sorun parametrelerin belirlenmesi. diyelim ki bir evrimsel deney yapacaksınız. ve yine diyelim ki, işte nüfus büyüklüğü, tur sayısı, mutasyon oranları (kaç tane birey mutasyona uğrayacak ve kaç genleri mutasyona uğrayacak ve nasıl uğrayacak), eşeyleme oranları, seçim yaklaşımı (efenim en iyi bireyler sıralamasına göre mi? yoksa turnuva mı), fitness fonksiyonları, bu fonksiyonların parametreleri, e değerlendirmede kullanılacak karşılaştırma dizilerinin elde edilmesiyle ilgili parametreler ve daha niceleri, bu parametrelerin en uygun olanlarının bulunması gerekiyor. doğru parametrelerle çalıştırılmadığında süreçten düzgün sonuç alamıyoruz, en azından yöntemin potansiyellerini doğru değerlendiremiyoruz. diyelim ki 10 adet çok önemli parametre var ve bunların her biri için 10 adet olası değer belirledik (aslında bu olasılıklar bir çok durumda sonsuz sayıda, ama biz sürekli değişkenleri süreksiz adımlara bölüyoruz ve mümkün olduğunda üst ve alt sınırlar vermeye çalışıyoruz, yani 0-10 arasında herhangi bir değeri alabiliyormuş mesela, biz [0, 2, 4, 6, 8, 10] gibi 6 değeri deniyoruz), neyse ne yaparsak yapalım eğer bu parametre değerlerinin optimum bileşimini deneye deneye bulmak istersek 10**10 (pythoncada 10 üzeri 10) adet deneme yapmamız gerekiyor. 10 milyar mı eder? zaman alır :].

şöyle yapılıyor, belki tek tek, ayrı ayrı sadece birer parametreyi değiştirerek 10*10 (10 çarpı 10 yani 100) adet deneme yapıp, her bir parametre için diğerlerinden bağımsız olsaydı en iyi değer ne olurdu gibi bir değeri yaklaşık olarak bulmaya çalışıyoruz (ama esasında bilemeyiz, parametreler birbirinden bağımsız olmuyor genelde) daha sonra da bu parametrelerin süreçte o evrimin koşullarına göre değişmesini sağlayacak bir süreç kurguluyoruz. buna da adaptif evrimsel algoritma diyorlar. bir değer ile başlıyoruz, sonra süreç içinde o değer de evriliyor ve en uygun değerini kendisi bularak dönüşüyor. kulağa hoş geliyor. ama kaç parametreyi bir arada verimli biçimde evriltebiliriz, burda da sürecin verimsizleştiği bir eşik olabilir, buna göre popülasyon ya da tur sayısını nasıl değiştirmeliyiz? bunla ilgili bir malumat bulamadım daha, işte bir yöntemin derli toplu teorisi olursa bu tip sorulara hazır yanıtlar buluyor insan. olmaz ise deneyip görmek gereken pek çok husus oluyor. ama hangi biriyle uğraşılacak?

11 Aralık 2009 Cuma

the explosion in the laboratory | patladı

i was thinking that i was at the end of my focused-literature-research. so that i could expand towards a larger wave. and my extensive mapping seemed to me to be pretty complete; except one minor task. so i went on to that task. but it expanded, or rather, exploded. that particular area on my mapping was indeed quite loaded. that's evolutionary art. i think i will be posting on that topic during the following period.

it all started with a conference call (1), a few months ago. i had to respond to that call because the 'unit' wanted me to do some publishing (2) and i was feeling indebted (3). i responded with a project which combined several titles (4) and details (5) of my research, as well as some preparations for several prospective projects (6) that i was intending to follow after my phd! (7) (yea, the researcher always has plans, to study some stuff in the long term; i.e. it always postpones a lot of interesting projects.) hence the first prototype of design games which produces graphics (8) (i mean, graphics in a way). but there was a last, unproven graphic task of aslıhan for design games, it was 'the waves commission' (9) i was studying polinomials (10), conic sections (11) and elliptic curves (12) to carry out that task. and there exploded the evolutionary art section (13). i will, for sure, be scrutinizing the area for some time, for sheer joy of it (14). but what i want to say is, above i only indexed the very basic steps (narrated some steps in a discontinuous manner) of an ongoing design process (or research?)(or both?)(or no difference? difference but not that big? (feyerabend?)), and it will yield some results, or not (it can yield interesting results but this is not the issue), we could go on to fill minor steps in between the basic steps. and here the researcher wants to ask: how many steps, how many rather simple ingredients, and also how many types of steps, are needed for a full-fledged design process? or research? or a creative process in general? and what kinds of knowing, reasoning, calculating functioning, transforming or producing systems should be included in a design system?

10 Aralık 2009 Perşembe

evolvers

for those, who would like to see a demonstration of the power of artificial evolution, here are several interactive evolutionary systems on the net:

a-biomorph, imitates the seminal "biomorph" system of richard dawkins, which was an inspiration for most of the interactive systems generated afterwards. but following systems are also influenced by karl sims' work based on mathematical expressions. image breeder seems to be evolving patterns that are formed by simple algorithms, so that the jumps between generations are rather abrupt (but i liked its images). there is this living image project, where you can vote on evolutions for pictures. picbreeder evolves pictures, in a way similar to the living image, but these look like 'something'. e-volver is an interactive-experiment-exhibition (so we can't get involved via internet i suppose), the images produced are rather complex and varied. there's also breed, it evolves three dimensional shapes and produces them using a 3d printer. there's more: evolve (what a surprising name), this one distributes source code.. [and also there's a whole domain concerning 'artificial life', which has a lot to do with other seminal work of sims, but i won't go into that one now.]

most of these systems utilize algorithms or mathematical expressions that yield a color value for a given canvas coordinate, thus define a picture pixel by pixel. these mathematical expressions [like: "grayness = y*sin(x)"] have the peculiar property of producing those regularities like curves, lines and subtle gradients (think about sinusoidal waves). starting with these expressions, systems continue by combining or modifying those expressions, so that children images carry some similarity to the initial patterns, but are different. it's easy to say that, you should rather have worked with a parametric approach in a more-straightforwardly-global-sense; if you wanted more control over the process (remember bitmap-vectoral pair here), like the animators do. that way you could go on manipulating an object and return to the original if you liked.

after all, we don't need these examples to be convinced about the power of artificial evolution. we eat products of artificial evolution everyday, and we feed them, and we read them and we think through them. evolutionary computation approach, therefore, is an attempt to have more control on this ongoing process and use the mechanism to obtain specifically-oriented (task-specific) and relevant (or useful) products, and much faster. indeed we need to know the amount of time needed to carry out each task.

5 Aralık 2009 Cumartesi

ikinci bir saldırı | another forage into evo-computation


a1. NURBS yüzeyleri

a2. tesadüfi ilk kuşak

a3. temel bileşenler, 5 eğri:
düz, basık, orta, yüksek, dik

b1. bir “aile benzerliği”ne
karşılık çeşitlilik / gürültü

b2.

b3.

c1.

c2.

c3.


[sanıyorum ekim sonlarına kadar bununla uğraşmaktaydım (uğraşılmaktaydı).... işte rapor:]

ikinci deney serisi: maya-mel ortamında 3 boyutlu deney: lokal kontrol, gürültü, sözel tanımlar ::

ikinci bir deney serisi ise daha gelişmiş bir uygulama üzerinden üç boyutlu yüzeylere yönelik olarak kurgulandı. bu deneyin de esas amacı scripting, 3 boyutlu geometri ve pratikte evrimsel hesaplamalara yönelik bilgi ve beceriyi geliştirmekti [bu da doğru, yannız, bu scripte baya zaman harcadım, boşa gitti o zaman, bikaçbin satır kod yazıp MEL ile ölesiye boğuştuktan sonra kodun çoğunun tekrar kullanılamayacağını farkettim.. ondan sonra dedim ki ya araştırmacı, git adam gibi bir dil kullan, doğru bütün bir program yaz, en azından temel bileşenleri sonraki her deneyinde kullanırsın, işe yarar veri yapıların olur, hazır kütüphaneleri elinin altına indirirsin...]. bu deney serisinde genotip temsil yaklaşımı geliştirilerek, “haritalama” ve “arama” aşamaları ayrıldı ve “çaprazlama” (crossover) gibi opsiyonlar da uygulamaya katıldı, ayrıca bir serinin sonuçlarının diğer seri için kolayca girdi oluşturabilmesi sağlandı.
deneyin ana teması önceden tanımlanmış bir seri eğri ile kontrol edilen yüzeylerde çeşitli yüzey özelliklerini oluştururken çeşitlilik ve gürültü düzeyini kaybetmemekti [bir baktım da janssen, bu projeye başlarken temel ilham kaynağım olan janssen, bu "aile benzerliğine rağmen çeşitlilik" hususunu yazmış satır aralarında]. oluşturulan bütün yüzeyler beş çeşit eğriden oluşuyordu. her bir eğrinin hem bir ismi hem de bir numarası bulunuyordu. İsimler kontrol mekanizmasını basitçe tanımlanabilir ve anlaşılır hale getirirken (1 : düz, 5 : dik, 2 : basık vd..) numaralar genotipin temel bileşenlerini (genler) oluşturuyordu. sonuç olarak ‘arama’ genotipte oluşan örüntülerin incelenmesi, bazı örüntülerin diğerlerine nazaran tercih edilmesi şeklinde gerçekleşti. sözgelimi bir ‘kromozom’da oluşan : { *, *, 1, 3, 1, 3, 1 } örüntüsü (bu örnekte ilk iki gen belirleyici değil) dalgalı bir yapıya karşılık geliyor. basit bir ’dalgalı’ yüzey araması {*, *, x, x+-a, x, x+-a, x} türünden bir sorgulamayla gerçekleştirilebilir. uygulamada daha ‘gürültülü’ aramalar tanımlandı. ‘artan’, ‘dalgalı’, ‘basık’ vd yüzey aramaları ve bunların çeşitli seri bileşimlerinden oluşan bileşik aramalar gerçekleştirildi.
örüntü aramasının ve bu aramaların insani dilde basitçe tarif edilebilir olmasının (semantik karşılıklar) genel olarak bütün araştırma boyunca önemli bir yer tutacağı görülüyor. arama/değerlendirme yaklaşımı ve üretim yaklaşımı bir ‘itme-çekme düzeneği’ oluşturuyor [araştırmacı mısın mimar mısın ba! itmeçekmeymiş...]. değerlendirme ve puanlama bir seçilim baskısı yaratarak ‘yönlendirme’ etkisi uygularken fenotipin ve arama uzayının tanımlanma ve mutasyonlar üzerinden dönüştürülme tarzı popülasyonun o yöne doğru dönüşebilmesini sağlıyor. İki yaklaşımın bir arada etkili kullanımı arama uzayının istenen yönde daraltılmasını ve bu daralmaya rağmen yeterince geniş, beklenmedik ürünler verebilecek bir durumda tutulabilmesini sağlayabilir. [raporlarda bi şekilde laubali olmayan bir dille anlatmak gerekiyordu, o kadar anlatmışken de burda silbaştan yazamadım... affola..]

ilk evrimsel sikriptlerim bunla meşguldü | my first evo-scripts were occupied with these


a1. tipik bir ilk kuşak (10 noktadan oluşan NURBS çizgileri)

a2. ortogonal, son jenerasyon

a3. ortogonal

b1. ortogonal (yerel optimaya takılmış)

b2. ortogonal

b3. ortogonal

c1. poligonal (500. jenerasyon)

c2. poligonal (1000. jenerasyon)

c3. ortogonal + poligonal (hibrit)

imajlar iyi görünmüyorsa (ki görünmüyor) bu linki takip...

[bunlar da raporuma (birinci tekil şahıs hiç varolmamışçasına) yazdıklarım:]

ilk deney serisi: maya-mel ortamında 2 boyutlu deney: lokal, açısal kontrol-kontrolsüzlük

ilk “deney” olarak maya-mel scripting ortamında basit bir evrimsel algoritma kodlandı. başlangıçta rastgele oluşturulan bir seri lineer iki boyutlu düzenlemenin her kontrol noktasında oluşan lokal açısal ilişkiler [o noktada kesişen vektörlerin arasındaki açıları ölçtüm demek istiyorum] incelenerek açıların toplamı istenen kriterlerle karşılaştırıldı [kriter dediğim de 90'ın katları mı gibi basit bir soru]. deneyin esas amacı basit bir evrimsel algoritma oluşturarak scripting becerilerini geliştirmek ve evrimsel hesaplamalar uygulamalarına giriş yapmaktı [doğru bu], ancak sonuçlar global ve lokal değerlendirmeler konusunda bir takım fikirler de sağlıyor [her musibetten...].

değerlendirme kriterleri kuvvetli, sade ve tek yönlü olunca sistemin popülasyonu istenen açısal ilişkileri taşıyan bireylere doğru kolayca “evrilttiği” gözleniyor (b3’e kadar örnekler). ancak sadece açıların toplamına yönelik puanlama yapıldığı için görece düzenli ve basit evrimler gerçekleşiyor ve sistem önceden kolayca öngörülemeyen “eğilimler” veya “tercihler” gösteriyor. dolayısıyla böyle bir sistem belirli hedeflere yönelik olarak kullanılacaksa daha güçlü kontrol sağlayan yaklaşımların kullanılması gerekiyor.

takip eden deneyde hem açıların toplamına hem de global bazı özelliklere yönelik puanlamalar yapıldı [aslında hesaplarda hata yapmışım :]], ortaya çıkan sonuçların ilk bakışta çok daha kaotik bir görünüm arzettiği söylenebilir (c1, c2) [neden acaba..], ancak esasında çoğu “birey” aranan özellikleri bir ölçüde taşıyor [yanlışlıkla aranan...]. fakat daha “anlamlı” ve kolay tanınır biçimsel düzenlemelere ulaşmak için sadece “lokal” düzeyde işleyen değerlendirmelerin yeterli olmadığı, “global” biçime yönelik daha güçlü seçim kriterleri uygulamak gerekeceği anlaşılıyor.

üçüncü olarak bir tür evrimin diğer bir tür evrim için girdi oluşturduğu iki aşamalı sistemler ise beklenmedik, anlaşılabilir ve düzgün sonuçlar verebiliyor (c3). bunun sebebi ilk iki deneyden farklı olarak ikinci aşamada evrime daha iyi tanımlanmış, daha homojen bir ilk jenerasyonla (başlangıç kütüphanesi) başlanıyor olması olabilir.

ilk deney serisinin sonuçları evrimsel algoritmalarla istenen bir biçimsel düzenleme evriltebilmek/üretebilmek için, bir ya da birden çok aşamada ama her durumda farklı ‘düzey’lerde, hiyerarşik olarak işleyen kriter kümeleri ve değerlendirme yaklaşımları kullanılmasının etkili olabileceğini düşündürüyor. [hmm]

3 Aralık 2009 Perşembe

"design games" çalışma hayatına böyle başladı (yavrucak) | thus started the toil of the "design games"

these are selected from the first tests, the only tool is color area tool, and is used randomly, as you can see, but what is a tool?



a tool is one of the four atomic elements of design games system (or also framework). another one is the character. tools do, charcters direct. but in fact the separation is far than clear cut. all the atoms, ultimately, are meant to be interchangeable. so that, from the very beginning, a clear cut separation is neither possible, nor desired. and there are also objects, or individuals, in evolutionary terms. they are the alternative products, or designs that are worked on.

and? the games. a game is a compound [come on what kind of atom is it!?] but it could also be interchangeable with the others [possibly self referential?], let's calm down, right now all atoms are discrete and they are not implemented as interchangeable. a game is formed when a character directs a tool and an action is performed on an object.

and these things are produced, the following are also almost random products of the first runs to obtain a desktop icon for design games itself, but i sincerely don't remember which ones were last generation (i.e: evolved, designed) and which are byproducts of the process:



after a thousand runs i started to identify the defects of the system (it's a continuous refining and re-doing process) and then i conducted another series of runs with better character definitions and larger resolution, following are the designs of design games for itself:




the bright colors are not surprising, our character loved them, and it wanted several color areas and it got them. utilized tools were, pattern stamp, gradient, color area and text (i.e. all of them) so we moved on to another task, producing (or designing if you like) a desktop wallpaper for my laptop. again we started with very low resolution trials, these are collected amongst the byproducts, meaning that the poor evaluation capabilities of the systems or coded likings of the characters (by me) prevented their identification as 'fine':



if you didn't notice the images that were produced on previous runs were fed as patterns into these new runs, and only tool was the pattern stamp. and following are the designed ones, look at the differences between these two sets (you can only see it if you go to their pages):



so we went on and on for nights, i was sleeping and design games was working, as appropriate. check the following, they are collected from the garbage of the final runs for a high-resolution desktop wallpaper, different high resolution patterns are added to the system, and that's all:




end the evolved ones: (i really worked hard to find something fine amongst the evolved ones, there were faults in some analysis mechanisms and character definitions were apparently awful, but these are fine, i like them:)




OK, enough for now. there are other stuff to come. but they will wait for a bit. i have to have some break, and do other stuff, like blogging.