In Polish: Framsticks, Sztuczna Inteligencja, Sztuczne Życie 

Dyskusje o sztucznym życiu, sztucznej inteligencji, projekcie Framsticks itp.
Jeśli znasz język angielski, zachęcamy do udziału w dyskusji na listach międzynarodowych.
Zainteresowanym polecamy portal <a href="http://www.alife.pl/" target="_blank">alife.pl</a>.

Małe osiągnięcie

Udało mi się stworzyć patyczaka o prędkości 0.037736 w wodzie.
Czy komuś się udało uzyskać lepszy wynik?

Mała charakterystyka jego:

Name: Ocolis Ohehehehu
Body
Starting energy: 3.23698
Body parts: 23
Body joints: 22
Brain size: 109
Brain connections: 56
Performance
#: 320578
Generation: 1532
Live span: 4999
Velocity: 0.037736
Distance: 188.642
Vertical velocity: 0.000169036
Vertical position: 9.20786

Nieudane krzyżowanie

wyskakuje okienko Messages z informacją

- GenMan-> CrossOver -> Tried 100x and filer: RLS|X..

- Script -> Message ->invalid genotype selected : Genoper_OPFAIL
pierwszy raz pokazały się gdy " # " wynosiło max około 10047

a potem co kilka minut przy prędkości steps: 2 000 000/s do 3 000 000/s

środowisko wodne

plik sim :

# created Thu May 08 11:40:11 2003
# by Framsticks 2.5
sim_params:
expdef:standard
usercode:
autosaveperiod:7177
overwrite:1
filecomm:1
createrr:0
importchk:0
loadchk:0
groupchk:0
world:
livelib:
genolib:
initialgen:X

pliki do sciagniecia

Daje wam do sciagniecia dwa pliki ktore dotycza sylmulacji o
parametrach(najwazniejsze)
Parameters
gene pool capacity :500
Delete genotypes : Only the worst
simulated creature : 10
world: water=15

Parameters: Fitness
Live span : 3
Velocity : 1
Distance : 3

plik : woda500g.rar zawiera plik z parametrami

moj cel:
stworzyc populacie genotypow o average distance: 500
now average distance : 339,5

file experiment state 15,4 KB
http://dzekjuzi.fm.interia.pl/framsticks/stare-woda500g.rar

file simulator parameters 764 B
http://dzekjuzi.fm.interia.pl/framsticks/woda500g.rar

Ewolucja wyższego stopnia

Witam,
Właśnie wpadł mi do głowy kolejny pomysł na "ulepszenie" patyczaków. Z tego
co widzę, choćby w korespondencji na listach dyskusyjnych, sedno problemu w
celu wykreowania całego wirtualnego ekosystemu, tkwi w doborze odpowiednich
parametrów ewolucyjnych.

Podobno, jak twierdzą uczeni w fizyce, przed naszym wszechświatem była
nieskończona liczba innych, które różniły się panującą w nich fizyką. Z tego
względu trwały zwykle ułamki sekund - natychmiast ulegały zniszczeniu.
Możemy jednak założyć, że nasz świat jest wynikiem wyjątkowo szczęśliwego

Maciej Komosinski's picture

symetria

> Czy byloby mozliwe zaimplementowanie funkcji , ktora spowodowalaby, ze
> mutacje zarowno struktury, jak i sieci neuronalnej bylyby symetryczne
> tzn. zarowno z lewej jak i z prawej strony framsticka. Chodzi o to, ze
> framsticki wykazujace taksje dodatnia w kierunku pokarmu po
> zaistnieniu
> mutacji strukturalnej zwykle kreca sie w kolko i gina, podczas gdy ta
> sama mutacja wystepujaca symetrycznie moglaby znacznie poprawic na
> przyklad ich mobilnosc. Wydaje mi sie ze funkcja taka nie bylaby az
> taka
> trudna do zaimplementowania, a znacznie podnioslaby wydajnosc ewolucji
> wolnej.

Istnieje mozliwosc zaprojektowania i zaimplementowania
takiej reprezentacji genetycznej, ktora z natury koduje
symetryczne struktury organizmow. Wtedy kazda modyfikacja
reprezentacji utrzyma powyzsze ograniczenie.

M.K.

Jakie one są duże?

Stosunek masy do objętości pozwala określić, jak duże są przeciętnie
wykreowane stworzenia. A zatem - gdybm chciał zrobić model takiego dajmy
pajączka - to jak byłby duży?

I po drugie - czy można zmieniać parametry świata fizycznego tak, aby
stworzenia były relatywnie mniejsze?
Dzięki temu mogłyby powstwać formy bardziej złożone...

pozdrawiam,
Marcin aka Borovik

problem z jedzeniem

Mam mały (a raczej duży) problem.
Tworze se zwierzaka a konkretnie:
MIX[S:1][G:1,-1:1](X[|-1:1][@-1:1],X[|-1:1][@-1:1])
i nie wiem jak zmusić go do szukania jedzenia.

Czy ktoś w grupie mi pomoże?

Pozdrowienia

Maciej Komosinski's picture

nowe mozliwosci Framsticks v2. Wlasne eksperymenty.

Wstepne ogloszenie.
-------------------

Framsticks v2 - nowe możliwości

Najważniejsza nowość w świecie Framsticks to możliwość własnego
definiowania reguł, według których działa symulator.
Zlikwidowane zostały dotychczasowe sztywne zasady a ich zadanie przejął
skrypt zwany "Definicją eksperymentu", który określa zachowanie się
systemu na kilku powiązanych ze sobą obszarach:

1. Tworzenie obiektów w świecie

Od skryptu zależy, gdzie, kiedy i ile jakich obiektów powstanie. Przez
obiekt rozumiemy tu zarówno organizm biorący udział w ewolucji jak i
cząstkę pokarmu albo inne elementy świata wymyślone przez eksperymentatora.
Niektóre z możliwości, jakie otwiera nowy system to:
- pełna kontrola nad warunkami symulacji, możliwość zaplanowania z
góry ułożenia organizmów i np. pożywienia (a więc również powrzalność
warunków początkowych, jeżeli w naszym eksperymencie testujemy organizmy
jeden po drugim)
- świat może być bardziej skomplikowany i dynamiczny, np. pożywienie
lub przeszkody mogą pojawiać się, przemieszczać i znikać
- miejsce powstania nowego organizmu może być uzależnione od
lokalizacji "rodziców"

2. Interakcje pomiędzy obiektami

Kontakt obiektów może powodować zdefiniowaną przez nas reakcję.
przykładem z v1 byłoby pochłanianie energii, wzajemne odpychanie się lub
uszkodzenie organizmu.
Obecnie dzięki skryptowi możemy:
- zaimplementować te zachowania w inny sposób, np. uwzględnić
dodatkowe czynniki (organizm może wchłaniać energię lub niszczyć
przeciwnika jeżeli uruchomił efektory odpowiedzialne za te czynności)
- udostępnić organizmowi informację o zdarzeniu, np. tworząc receptor
informujący o trwającym procesie pochłaniania pożywienia
- reagować na zbliżanie się obiektów w zupełnie nowy sposób, być może
wpływający na ewolucję, tu narzuca się oczywiście krzyżowanie
organizmów, które spotkały się fizycznie

3. Zasady ewolucji

Dotychczasowy mechanizm ewolucji polegał zawsze na stopniowym
modyfikowaniu listy genotypów i ocenianiu przypadkowo wybranych
genotypów. W nowym modelu przechowywanie informacji o genotypach i
wykonywanie operacji genetycznych jest całkowicie pod kontrolą skryptu.
Można więc uzyskać chociażby takie, tryby pracy symulatora:
- uporządkowane ocenianie genotypów jeden po drugim i "synchroniczne"
(w odróżnieniu od obecnego, chaotycznego) tworzenie nowej populacji z
poprzedniej
- dowolnie wybrane metody selekcji, np. turnieje polegające na
ocenianiu symulowanych parami wszystkich genotypów z populacji
- utrzymywanie wielu pul genów i ich jednoczesna ewolucja, być może
według odmiennych kryteriów

Również kryteria oceny genotypów zależą całkowicie od zamysłu
eksperymentatora i nie muszą być w prostej zależności od osiągów w
rodzaju prędkość lub długość życia.
Ocena mogłaby zależeć między innymi od:
- czasu lub energii potrzebnej na wykonanie jakiegoś zadania
- stopnia wykonania zadania, zbliżenia się do celu

Architektura skryptu

Skrypt składa się z "procedur" przypisanych do zdarzeń zachodzących w
systemie.
Obecnie zdefiniwane są następujące zdarzenia:

- onExpDefLoad - załadowano definicję eksperymentu.
Zadaniem tej procedury jest przygotowanie środowiska, czyli utworzenie
odpowiednich grup genotypów i organizmów (grupa przechowuje obiekty tej
samej "klasy", np. organizmy podlegające ewolucji i pożywienie to dwie
odrębne grupy w eksperymencie naśladującym warunki symulatora v1). Po
tym zdarzeniu symulator nie musi zachowywać żadnych poprzednich danych.

- onExpInit - rozpoczęcie eksperymentu, czyli usunięcie starych
wyników, prawdopodobnie wyczyszczenie aktualnie obecnych w świecie
obiektów, zainicjowanie pól przechowujących stan eksperymentu, być może
zmiana stanu świata, utworzenie pewnych obiektów.

- onExpSave - żądanie zapisania stanu eksperymentu. W zależności od
konkretnego eksperymentu i przyjętej strategii można zapisać różną ilość
danych, w większości przypadków będą to co najmniej ustawienia
parametrów eksperymentu i zbiór lub zbiory genotypów podlegających ewolucji

- onExpLoad - żądanie wczytania stanu eksperymentu. Po tym zdarzeniu
użytkownik skryptu spodziewa się zastać symulator w stanie takim, jak
przed onExpSave, czasem może nie być to do końca spełnione, np. utracone
zostaną osiągi organizmów, które rozpoczęły życie w świecie ale nie
zakończyły go przed zapisaniem eksperymentu.

- onStep - wywoływane w każdym kroku symulacji.

- onBorn - wywoływane, gdy w świecie powstaje nowy organizm (przez
operacje samego skryptu lub interwencję użytkownika)

- onKill - wywoływane, gdy organizm zostaje zabity (przez operacje
skryptu, standardowy mechanizm upływu energii lub interwencję użytkownika)

- on[XXX]Collision - wywoływane w cyklu, w którym obiekt grupy [XXX]
doznał zetknięcia z innym obiektem.

Przykład:
Oto uproszczony skrypt naśladujący zachowanie się symulatora v1 (zapis w
pseudokodzie)

==========================================
:onExpDefLoad
utwórz jedna grupę genotypów "Genotypes"
i dwie grupy organizmów "Creatures" i "Food"

:onExpInit
wyczyść wszystkie grupy
umieść początkowy genotyp w "Genotypes"

:onStep
jeżeli ilość jedzenia jest za mała:
-> utwórz nowy obiekt "Food"
jeżeli ilość organizmów jest za małą:
-> wylosuj odpowiedniego przodka z "Genotypes"
użyj mutacji, krzyżowania lub kopiowania
z uzyskanego genotypu utwórz organizm w "Creatures"

:onBorn
przesuń obiekt w losowo wybrane miejsce na świecie
ustaw energię początkową zgodnie z typem obiektu

:onKill
jeżeli zakończył życie obiekt "Creatures"
-> zapisz informacje o jego ocenie w "Genotypes"
(być może tworząc nowy genotyp)
jeżeli liczba genotypów w "Genotypes" jest zbyt duża
-> usuń jeden z genotypów

:onFoodCollision
przekaż porcję energii z obiektu "Food" do "Creature"

==========================================

Ciekawe zjawisko

A ja mam ciekawe zjawisko.
Hoduje teraz cos co mozna nazwac "wezami ladowymi" - dlugie i
probujace pelzac. Od jakiegos czasu nie chca one juz przyspieszac. I
zeby bylo zabawniej, nie tylko nie przyspieszaja, ale nawet zwalniaja! I
to ten sam gatunek!
Mechanizm tego udalo mi sie odkryc dopiero po pewnym czasie, a
wyglada mniej wiecej tak.
Powstaje sobie gatunek X. Dajmy na to ze jego Distance maxymalny
wynosi 160. maksymalny oznacza ze tyle moze przejsc, ale, co wazne nie
musi. Po prostu czasem w ogole nie chce mu sie ruszyc i lezy sobie
spokojnie czekajac na lepsze czasy.
Pierwszy jego przedstawiciel akurat mial ochote i sie ruszyl - jego
Distance wyniosl 155. Dzieki czemu z miejsca awansowal na szczyt
rankingu. Drugi jego egzemplarz takze byl dosc ruchliwy, ale juz nie tak
bardzo. Distance 145. Stad srednia w rankingu 150. Potem znow byl 155,
potem 145, potem trafil sie jeden ktoremu sie bardzo nie chcialo - 20.
Efekt? Srednia = 124.
Potem wymutowal z niego inny waz, dajmy na to Y. Jego Distance
maxymalny tak naprawde byl mniejszy - 140. Ale pierwszy jego egzemplarz
byl dosc ruchliwy i wlasnie te 140 osiagnal. Dzieki czemu trafia na
pierwsze miejsce w rankingu i wydaje sie lepszy od Xa!
Do czasu oczywiscie. W miare jak Xow bedzie coraz wiecej ich srednia
predkosc bedzie... spadala. Poniewaz powyzej swojej maxymalnej nie
wyjda, a wystarczy raz na wiele przypadkow jeden "leniuch" by im srednia
gwaltownie zanizyc.
Y poczatkowo beda sie wydawaly silniejsze (choc tak naprawde sa
slabsze). Az do momentu gdy... ich liczebnosc zacznie zblizac sie do
Xow. Z rachunku prawdopodobienstwa wynika ze wtedy tez zacznie ich nekac
lenistwo niektorych przedstawicieli.
A z pubnktu hodowli wyglada to tak ze mamy fajny X. Potem X sie
troche psuje, ale pojawia sie jego fajna mutacja - Y. Rosnie ona w sile
(kosztem X) az do pewnego momentu, gdy sama zaczyna slabnac. Zapewne
wtedy pojawi sie mutacja Z, ktora moze w istocie byc prawie identyczna z
Xem. Ale przy odrobinie szczescia zagarnie ona przestrzen zyciowa Y i X,
choc tak naprawde nie poprawi "jakosci" hodowli. Gdy zagarnie ich
przestrzen sama zacznie slabnac, pojawi sie kolejna mutacja... i tak w
kolko.

pozdr.
Luster

Pages

Subscribe to RSS - In Polish: Framsticks, Sztuczna Inteligencja, Sztuczne Życie