Eksperyment "Reproduction" i język genetyczny f1 

W eksperymencie 'Reproduction' jest zapis stworzenia w języku ‘f1’:
ddGGGbblllfffX[0:2.420,2:-2,1 :-1][-1 :1,0:1,0:-1][-1:1](RRlllfffMMMX[|-1:-10]lllFFFMMMgggggX[|-2:-1],gggfffIXlllfffMMMsX[|6:10,3:-10](RRlllfffMMMIX[|-4:-10]lllFFFMMMIggggX[|-5:-1][Sf:1],,RRlllfffMMMIX[|-7:10]lllFFFMMMIgggX[|-8:-1][Sf:1]),RRlllfffMMMX[|-10:10]lllFFFMMMgggggX[|-11:-1.784])

ale w opisie języka ‘f1’ (w podr.Framsticks) nie ma opisu instrukcji d, G, b (są tylko: X, Rr, Qq, Cc, Ll, Ww, Ff, Aa, Ss, Mm, Ii, Ee) - czy jest gdzieś dostępny pełny opis języka ‘f1’ ?

Zanim zamienię sobie stosowanie w tym eksperymencie języka stworzeń z ‘f1’ na ‘f0’ (ten język wydaje mi się wygodniejszy – łatwiejszy do ‘zautomatyzowania’), chciałem lepiej zrozumieć to stworzenie w języku ’f1’.

Jedna metoda przetłumaczenia programu z ‘f1’ do ‘f0’, to użycie programu ‘convtest.exe’ (jest on sprzed wielu lat, ale język f1 nie zmienił się w tym czasie ?),
a druga metoda, to odczytanie zapisu stworzenia z takich pól, jak ‘f0genotype’ z obiektu ‘geno’ podczas wykonywania się eksperymentu ?

Wybrałem eksperyment 'Reproduction' dla spróbowania lepszego zrozumienia programów światów Framsticks dlatego, że właściwie nie używa pewnych sztucznych i niepotrzebnie komplikujących eksperyment obiektów, jak np. ‘Genepools’ (jest, co prawda, użyty z niego np. podprogram ‘getFromCreatureObject’, ale wynika to tylko z niewłaściwego przydzielenia go do ‘Genepools’, zamiast do ‘Genotype‘).

Maciej Komosinski's picture

w opisie języka ‘f1’ (w podr.Framsticks) nie ma opisu instrukcji d, G, b

Ale są opisane na stronie (podręcznik jest nieaktualny). To geny kolorów stworzone głównie do wersji mobilnej (w katalogu varia na www jest obrazek colorful; na razie można uznać że te geny nic nie robią).

Jedna metoda przetłumaczenia programu z ‘f1’ do ‘f0’, to użycie programu ‘convtest.exe’
a druga metoda, to odczytanie zapisu stworzenia z takich pól, jak ‘f0genotype’

convtest raczej nie warto, dużo lepiej odczytywać metodą skryptową, a w GUI jest też kategoria "Conversions" w drzewku w oknie genotypu.

jest, co prawda, użyty z niego np. podprogram ‘getFromCreatureObject’, ale wynika to tylko z niewłaściwego przydzielenia go do ‘GenePools’, zamiast do ‘Genotype’

Ta funkcja mogłaby być w różnych klasach, bowiem dotyczy zarówno genotypów jak i stworzeń. Jest akurat w GenePools, bowiem pobierany z Creature genotyp trafia do statycznego dodatkowego obiektu na liście genotypów w puli genów. Ten dodatkowy genotyp jest następnie zaznaczany (selected), więc może być dalej argumentem dla funkcji, które operują na zaznaczonym genotypie.

>> w opisie języka ‘f1’ (w podr.Framsticks) nie ma opisu (...)

> Ale są opisane na stronie (podręcznik jest nieaktualny)

W "http://www.framsticks.com/a/al_geno_f1.html" są opisane instrukcje
neuronów w f1, tzn.: „[ NeuronType, PropertyAndInputList ]” i przykład: „X[@,1:1.0][N]” ,
ale dalej jest tam podany przykład „X[|*:1,G:2]”, który nie zgadza się z podaną syntaktyką
i nie wiadomo też, co oznacza „*”.
- - - - - - - - - - - - - - - - - - -
Wśród stworzeń (dostarczanych z programem) spotkałem stworzenie
"One-Stick Wanderer": „ X[|1:-0.782][@G:-741.994][G:294.200]”.

To stworzenie ma tylko jedną kość (to chyba odpowiednia interpretacja dla 'X'
(zgodna ze zwierzętami ze świata rzeczywistego) ? )
i widać, że w swoim świecie się porusza - ale jak to jest możliwe ?
Poza tym ma ono syntaktykę niezgodna z opisem ‘f1’.

Ja strukturę tych stworzeń interpretowałem sobie tak, jak jest to
w świecie rzeczywistym (choć w sensie uproszczonego modelu), tzn:
; Każdy mięsień jest merytorycznie przyporządkowany do stawu i steruje
; tym stawem, czyli pewnym połączeniem pomiędzy dwoma kośćmi 'X'.
; Staw w ‘f1’ jest obiektem niejawnym, ale może być identyfikowany
; przez parę kości (podanie ich numerów) stykających się końcami.
; Mięsień ( "|" lub "@" ) oczywiście nie może bezpośrednio
; zginać stawu i poruszać kośćmi, a tylko wytwarza moment siły,
; który może spowodować zginanie stawu i ruch kości
; (tylko pod warunkiem, że nie są one przez coś zablokowane).
; Istnienie mięśnia nieprzyporządkowanego do stawu jest
; więc konstrukcyjnie bezsensowne, a pojedyncza kość
; nie mogłyby się sama poruszać (chyba żeby - ale to
; już w innym modelu - oba końce mięśnia były przyczepione
; do obu końców tej samej kości, a ta kość byłaby giętka
; i mogłaby się wyginać w łuk (lub nawet w okrąg).
;
Czy świecie FRAMSTICK są jakieś niezgodne z tym powyższym modelem
zasady i ja te sprawy źle rozumiem ?

Maciej Komosinski's picture

...dalej jest tam podany przykład „X[|*:1,G:2]”, który nie zgadza się z podaną syntaktyką...

Na owej stronie w ramce jest wyjaśniona "old, deprecated syntax" (stara, niezalecana składnia), i pod spodem są też wyjaśnione i opisane jej przykłady, wraz ze schematem.

...i nie wiadomo też, co oznacza „*”.

Wysyła sygnał o wartości 1. Opis neuronów jest w sekcji Documentation→Simulation.

Istnienie mięśnia nieprzyporządkowanego do stawu jest więc konstrukcyjnie bezsensowne, a pojedyncza kość nie mogłyby się sama poruszać

Ściśle rzecz biorąc, X[|] powinno tworzyć mięsień który nic nie robi – bo nie ma stawu z poprzednim stickiem, który mógłby się zginać. Jednak w rzeczywistości powstaje staw między punktem (Partem) początkowym a resztą sticka, i w efekcie mięsień obraca tym punktem. Punkt ma swój moment bezwładności i dlatego jego ruch wpływa na ruch reszty konstrukcji.