• Nie Znaleziono Wyników

8.3 Eksperyment obliczeniowy

9.1.3 Reakcje drugorzędowe

W opisywanym w niniejszej pracy doktorskiej modelu uwzględniany jest jeden typ reakcji drugorzędowej, tworzenie się kompleksu. Ponieważ reakcje drugorzędowe są zależne od położenia, dwie cząsteczki mogą ze sobą zareagować, jeśli znajdują się w odpowiednim promieniu reakcji (Pogson et al. 2006; Klann et al. 2011). Oznacza to, że zanim reakcja zajdzie, agenty muszą zbliżyć się do siebie na odpowiednią odległość.

W symulacji promień reakcji obliczany jest następująco:

𝒓𝒓𝒆𝒂𝒄𝒕𝒊𝒐𝒏= 𝒓𝒊+ 𝒓𝒋 (9.3)

gdzie 𝑟𝑖 oraz 𝑟𝑗 są promieniami okręgów reprezentujących agenty. Wzór 9.3 określa maksymalną odległość w jakiej dwie cząsteczki mogą się od siebie znajdować aby moż-liwe było zajście reakcji.

W praktyce, dla uproszenia, w ramach niniejszej pracy przyjęto, że agenty typu replikaz i pasożytów są tej samej wielkości. Dla każdego agenta, wszystkie agenty znaj-dujące się w odległości kolizyjnej 𝑟𝑟𝑒𝑎𝑐𝑡𝑖𝑜𝑛 tworzą zbiór jego sąsiadów 𝑁. Jeśli liczba sąsiadów jest większa niż dozwolona maksymalna liczba sąsiadów wyrażana przez pa-rametr 𝑁𝑚𝑎𝑥, wtedy agent ten jest usuwany z symulacji. Jest to wykonywane aby za-pewnić prawidłowe upakowanie środowiska reakcji.

W rzeczywistości niektóre zderzenia są elastyczne i nie wyzwalają reakcji. Pro-blem ten jest rozwiązywany przez wprowadzenie prawdopodobieństwa zajścia reakcji drugorzędowej 𝑃. Aby ograniczyć czas potrzebny na symulacje, do obliczania praw-dopodobieństw zajścia reakcji drugorzędowej przyjęta została prosta strategia zastoso-wana także w modelu opartym o automaty komórkowe (Rozdział 8.1) zaczerpnięta z prac Takeuchiego i Hogeweg (Takeuchi i Hogeweg 2009). Prawdopodobieństwo zaj-ścia reakcji drugorzędowej w każdym kroku dla agentów znajdujących się w promieniu reakcji jest obliczane w następujący sposób:

𝑷 = 𝒂(𝟏 − 𝒍) (9.4) gdzie wartości 𝑎 i 𝑙 są wartościami przechowywanymi przez agenta uznanego za matry-cę do replikacji. Przy tym, jeśli jeden z agentów jest pasożytem, wtedy jest on uznawa-ny za matrycę, a replikaza jest katalizatorem. Natomiast jeśli oba agenty są replikazami, wtedy za matrycę uznawana jest replikaza, która nie zainicjowała reakcji, druga replika-za pełni natomiast funkcję katalityczną.

Zatem reakcja między dwiema cząsteczkami zajdzie, jeśli dwie cząsteczki znaj-dują się w promieniu reakcji oraz losowa liczba 𝑋 z rozkładu wykładniczego z przedziału (0,1] jest mniejsza niż wartość 𝑃 wyrażona wzorem 9.4. Jeśli więcej niż jeden agent znajduje się w promieniu reakcji rozważanego agenta, wtedy wszystkie te agenty są sprawdzane w losowej kolejności na okoliczność zajścia reakcji, dopóki agent, który nie zareaguje nie zostanie znaleziony. Jeśli żaden z agentów znajdujących się w promieniu reakcji nie zareaguje, wtedy nic się nie dzieje, co oznacza, że wszystkie kolizje były elastyczne.

W tej sekcji zaprezentowany jest algorytm wieloagentowy używany do przeprowadzania symulacji modelu opisanego w sekcji poprzedniej. Przedstawiona tutaj wersja algorytmu zakłada brak rozpadu dla agentów skompleksowanych oraz zatrzymanie czasu życia agentów w czasie fazy skompleksowania (por. Reakcje pierwszorzędowe). Znajduje się tutaj także opis aspektów implementacyjnych i zastosowanych rozwiązań informatycznych.

9.2.1 Algorytm

Każda replikaza i pasożyt są reprezentowane osobno przez pojedynczego agenta w symulacji. Przez 𝑅 oznaczmy zbiór replikaz, którym przypisano konkretne pozycje, analogicznie przez 𝑃 oznaczmy zbiór pasożytów. Przez 𝑐(𝑎) oznaczmy agenta skom-pleksowanego z agentem 𝑎 lub ∅ jeśli taki agent nie istnieje, a przez 𝑑(𝑎, 𝑏) odległość pomiędzy agentem 𝑎 i 𝑏. Kiedy agent jest tworzony, jego czas życia RLT jest inicjali-zowany zgodnie z równaniem 9.2. Podczas każdej iteracji symulacji czas ten jest zmniejszany, chyba że rozpatrywany jest model z niedozwolonym rozpadem

skomplek-9.2 Algorytm i implementacja

sowanych agentów, wtedy dla agentów przebywających w kompleksie czas życia jest zatrzymywany.

W trakcie symulacji agenty wybierane są losowo i w zależności od stanu skom-pleksowania danego agenta oraz jego sąsiedztwa, przeprowadzane są odpowiednie akcje opisane w poprzedniej sekcji. Symulacja jest przeprowadzana tak długo, aż nie upłynie czas symulacji wyrażony w jednostkowych krokach symulacji (𝑡𝑠𝑦𝑚) lub wymrą wszystkie agenty typu R lub typu P (skompleksowane lub nie).

Poniżej w formie pseudokodu przedstawiono algorytmy wykorzystywane w trakcie przeprowadzania symulacji przy wykorzystaniu modelu wykorzystującego systemy wieloagentowe (algorytmy 9.1 – 9.3).

Algorytm 9.1 Pseudokod algorytmu symulacji wieloagentowej opracowany na podstawie modelu RP – Model z niedozwolonym rozpadem skompleksowanych

agentów.

1: Inicjalizacja symulacji:

2: Inicjalizacja liczby i rozmieszczenia agentów według ustawienia wczytanego z pliku lub losowo

Algorytm 9.2 Pseudokod algorytmu procedury opisującej dysocjację kompleksu

Algorytm 9.3 Pseudokod algorytmu procedury opisującej tworzenie kompleksu opracowany na podstawie modelu RP. ze względu na prostotę implementacji i modyfikacji algorytmów oraz potencjalną moż-liwość łatwego zrównoleglania algorytmów wbudowaną w język, która staje się waż-nym aspektem w przypadku tak skomplikowanych systemów złożonych z wielu oddzia-łujących ze sobą makrocząsteczek. Symulator umożliwia przeprowadzanie symulacji zarówno z linii poleceń zapisując wyniki do plików oraz w trybie umożliwiającym wi-zualizację zachowania systemu w trybie rzeczywistym. Na rysunku 9.1 i rysunku 9.2 pokazano wygląd interfejsu graficznego symulatora wieloagentowego, na listingu 9.1 przedstawiono przykład wywołania symulatora wieloagentowego z linii poleceń. Pełna lista argumentów używanych w trybie konsolowym znajduje się w tabeli 9.1. Graficzny interfejs użytkownika zaimplementowany został w języku angielskim, aby możliwe było przeprowadzanie przy jego pomocy symulacji przez użytkowników anglojęzycz-nych, a także aby zespół pracujący nad poruszanymi w niniejszej pracy zagadnieniami,

w szczególności nad symulatorem i algorytmem zaimplementowanym do przeprowa-dzania symulacji, mógł być potencjalnie rozszerzony o anglojęzycznych badaczy i pro-gramistów.

Ponieważ wyłaniające się wzorce są jednym z przedmiotów badań w niniejszej pracy, wizualizacja jest kluczowym aspektem dla zrozumienia dynamiki ewolucyjnej systemu. Dlatego w symulatorze, na podstawie symulacji możliwe jest stworzenie filmu obrazującego jej przebieg. Funkcjonalność ta jest realizowana za pomocą bibliotek FFmpeg, jednego z najpopularniejszych, darmowych, otwartych rozwiązań używanych w celu kompresowania plików wideo.

Rys. 9.1 Widok okna głównego symulatora wieloagentowego.

Rys. 9.2 Widok okna służącego do wprowadzania wartości parametrów dla symulacji przeprowadzanej w symulatorze wieloagentowym.

Tabela 9.1 Pełna lista argumentów używanych w trybie konsolowym symulatora wieloa-gentowego.

Parametr Opis

-h

--help Wypisuje na ekran szczegółową listę parametrów.

-s <numer>

--simulation <numer> Określa numer symulacji do przeprowadzenia. Parametr obowiązkowy

-t <ilość>

--steps <ilość> Określa maksymalną liczbę przeprowadzanych kroków symulacji. Domyślnie symulacja działa do momentu jej zakończenia w momencie wymarcia wszystkich pasoży-tów lub replikaz, lub jej ręcznego zakończenia przez użytkownika.

-xv

--export-video Uaktywnia eksport pliku .avi z przebiegiem symulacji.

-xx

--export-excel Uaktywnia eksport raportu z przebiegu symulacji w formacie programu Microsoft Excel.

-xm

--export-mutation-data Uaktywnia eksport danych dotyczących mutacji agentów do pliku .txt.

-xo

--export-plot-output Uaktywnia eksport danych do wykresu w formacie pro-gramu GnuPlot

-xp

--export-plot Uaktywnia eksport wykresu w formacie .png przy uży-ciu narzędzia GnuPlot. Powoduje również włączenie opcji -xo.

-cp <tryb>

--color-parasites <tryb> Umożliwia wybór trybu kolorowania agentów typu pa-sożyt. 0 – stały kolor ustalony (opcja domyślna), 1 – kolorowanie według wartości parametru 𝑎𝑝, ), 2 –

kolo-Parametr Opis

rowanie według wartości parametru 𝑙𝑝.

-cr <tryb>

--color-replicase <tryb> Umożliwia wybór trybu kolorowania agentów typu re-plikaza. 0 – stały kolor ustalony (opcja domyślna), 1 – kolorowanie według wartości parametru 𝑎𝑅, ), 2 – kolo-rowanie według wartości parametru 𝑙𝑅.

-ce

--colour-everythiny Uaktywnia tworzenie czterech plików wideo dla symu-lacji, każdy z inną opcją kolorowania (odpowiednio według 𝑎𝑝, 𝑙𝑝, 𝑎𝑅, 𝑙𝑅). Gdy ta opcja jest aktywna, para-metry –cp, -cr oraz –xv są ignorowane.

-o <ścieżka>

--output <ścieżka> Określa ścieżkę katalogu wyjściowego symulacji. Do-myślnie używany jest katalog bieżący aplikacji.

-p <prefiks>

--prefiks <prefiks> Określa prefiks nazw plików wynikowych symulacji.

Domyślnie pozostawiony pusty.

-po <ścieżka>

--position <ścieżka> Określa ścieżkę pliku .png z układem początkowym symulacji. Domyślnie używane jest ustawienie losowe.

-pf <ścieżka>

--parametr-file <ścieżka> Określa ścieżkę pliku .xml z ustawieniami symulacji.

Domyślnie używane są wartości domyślne dla wybranej symulacji.

Listing 9.1 Przykład wywołania symulatora wieloagentowego z linii poleceń usuwającego wszystkie informacje testujące poprzez przekierowanie ich do strumienia pustego.

Debug\MASConsole.exe 2> NUL -s 2 -t 200000 -xx -xv -xm -cr 1 -pf po-prawne_przeliczone\mutacja_replikaz2.xml -o

wyni-ki_mutacja_replikaz_los2 -ce

9.2.3 Złożoność obliczeniowa

Zaprezentowany w tej sekcji algorytm wykonuje liczbę iteracji ograniczoną z gó-ry przez stałą. W czasie każdej iteracji wykonuje liczbę operacji wprost proporcjonalną do liczby agentów przemnożoną przez liczbę ich sąsiadów. Dla każdego agenta ko-nieczne było przechowanie stałej ilości danych. Dlatego zarówno złożoność oblicze-niowa, jak i pamięciowa zaproponowanego algorytmu jest wielomianowa.

Symulacja została zaimplementowana ze szczególną dbałością o jej wydajność w języku C#. Dodatkowo każda część kodu została sprawdzona z użyciem profilera i powtórnie zoptymalizowania. Należy jednak mieć na uwadze, że przeprowadzenie pojedynczej symulacji wymaga śledzenia nawet kilkudziesięciu tysięcy agentów przez kilkaset tysięcy kroków. W praktyce powoduje to, że pojedyncza symulacja wykonuje się przez kilka dni. Aby skrócić czas symulacji we współpracy z Uniwersytetem

Luk-semburskim podjęto kroki mające na celu zrównoleglenie wykonywanych obliczeń.

Praca ta jest jednak wciąż w toku i zostanie opublikowana już po napisaniu niniejszej pracy doktorskiej.

W ramach poruszanych w niniejszej pracy badań nad modelem RP wykorzystu-jącym systemy wieloagentowe, przeanalizowane zostały dwa różniące się szczegółami modele. Model z rozpadem skompleksowanych agentów oraz model z niedozwolonym rozpadem skompleksowanych agentów. W obu przypadkach natychmiast po replikacji kompleks jest poddawany dysocjacji.

W każdym eksperymencie opisanym w tym rozdziale, symulacje były inicjali-zowane poprzez zapełnienie planszy symulacyjnej pewną ilością agentów typu pasożyta lub replikazy, przy czym obie populacje miały tę samą wielkość. Analizowane były dwa sposoby początkowego rozmieszczenia agentów na płaszczyźnie. Ustawienie w którym pasożyty stanowiły połowę koła, a drugą połowę stanowiły replikazy, oraz rozmieszczenie losowe. Badaniom poddano przypadek kiedy tylko pasożyty mogły mutować podczas symulacji, analogicznie do eksperymentu wykorzystującego automaty komórkowe, opisanego w rozdziale 8.3, oraz przypadek gdy zarówno pasożyty jak i replikazy mogły mutować.

Co ciekawe po ustawieniu modelu z rozpadem skompleksowanych agentów i rozpoczęciu symulacji, niezależnie od ustawienia początkowego i typu eksperymentu który był przeprowadzany (opisane w rozdziale 9.3.1 eksperymenty 1 – 4) system szyb-ko wymiera. Wynik ten jest w opozycji do wyników uzyskanych w rozdziale 8.3 po-święconym automatom komórkowym. Może to być związane z odmiennością podejścia stosowanego w przypadku modelu opartego o automat komórkowy oraz dla modelu opartego o system wieloagentowy.

Rozważania nad odmiennością uzyskiwanych wyników doprowadziły do stwierdzenia, że w przypadku modelu z rozpadem skompleksowanych agentów opar-tego o system wieloagentowy, agenty umierają za szybko. W przypadku podejścia za-stosowanego w modelu RP opartym o automat komórkowy, w każdym kroku symula-cyjnym istnieje takie same prawdopodobieństwo rozpadu dla cząsteczki, modyfikowane ewentualnie o inne dostępne akcje, co tylko sprawia, że rozpad jest jeszcze mniej praw-dopodobny w danym kroku. Natomiast w rozważanym w niniejszym rozdziale modelu

9.3 Eksperyment obliczeniowy

opartym o system wieloagentowy, czas życia agentów jest obliczany dla cząsteczki w momencie gdy jest ona tworzona i gdy czas ten upłynie, cząsteczka rozpada się i jest usuwana z symulacji. Zatem podczas gdy w modelu CA zdarzenia są traktowane cał-kowicie losowe, w modelu MAS mamy do czynienia z bardziej deterministycznym traktowaniem czasu życia cząsteczek. To drugie podejście bardziej odpowiada rzeczy-wistemu zachowaniu cząsteczek.

Co więcej w przypadku modelu z niedozwolonym rozpadem skompleksowanych agentów, fakt chronienia skompleksowanych cząsteczek przed rozpadem jest również bardziej zbieżny z rzeczywiście obserwowanymi regułami dla cząsteczek biochemicz-nych (Rybarczyk et al. 2016). Gdy cząsteczki tworzą kompleks, wiązania wodorowe (w przypadku RNA), które tworzą się pomiędzy nimi stabilizują strukturę kompleksu i mogą zapewniać ochronę przed degradacją.

Biorąc pod uwagę, że dla modelu z rozpadem skompleksowanych agentów sy-mulacje nie pozwalały na uzyskanie stabilnej koegzystencji pomiędzy cząsteczkami typu replikaz i pasożytów, prezentowane w tym rozdziale wyniki dotyczą modelu z niedozwolonym rozpadem skompleksowanych agentów. Niezależnie od ustawienia początkowego, w szerokim zakresie testowanych parametrów system złożony z pasożytów i replikaz był w stanie przetrwać. Wyniki pokazują, że niezależnie od ewolucyjnej niestabilności systemu składającego się z replikaz i pasożytów, prezen-towany w tym rozdziale model jest w stanie zapewnić stabilną koegzystencję modelo-wanych typów cząsteczek.

Tabela 9.2 Wartości parametrów używanych w symulacjach wykonanych na podstawie modelu opartego o systemy wieloagentowe.

1024x1024 1024x1024 1024x1024 1024x1024 1024x1024

𝑎𝑅0 początkowe

nie dotyczy nie dotyczy nie dotyczy nie dotyczy 0,2

𝑅0 początkowa ilość

Parametr Opis

𝐾 stała szybkości replikacji 239800 239800 239800 239800 239800

𝐷 stała dyfuzji pojedynczej

nie dotyczy nie dotyczy nie dotyczy nie dotyczy 0,01

𝑑𝑒𝑙𝑡𝑎 zakres mutacji [-delta;delta]

0,05 0,05 0,05 0,05 0,05

𝑁𝑚𝑎𝑥 pojemność sąsiedztwa 8 8 8 8 8