Pracuję nad modelem w Netlogo i mam problem ze zrozumieniem, jak skonfigurować „eksperyment”. W moim modelu mam matrycę, która ma wszystkie wartości, które mnie interesują (w sumie 6), a matryca jest aktualizowana za każdym razem, gdy spełniony jest warunek (za każdym razem, gdy zabijane są żółwie X), po prostu rejestrując migawkę model w tym momencie. Poprzednie wartości w macierzy są usuwane, więc macierz jest macierzą 1x6, a nie 10000x6, a tylko jedna linia jest aktualizowana dla każdej migawki.
Chciałbym przeprowadzić eksperyment, aby uruchomić mój model kilkaset razy, zbierając tę macierz za każdym razem dla pierwszej liczby migawek X lub do momentu pojawienia się tyknięć Y. Ale nie widzę sposobu na zrobienie tego w konfiguracji eksperymentu?
Czy to możliwe, czy też muszę utworzyć 100x6 (100 migawek), a następnie po prostu wyeksportować tę matrycę do pliku CSV?
Nigdy nie przeprowadzałem eksperymentu w Netlogo, więc może to być bardzo łatwe do wykonania lub po prostu całkowicie niemożliwe.
Odpowiedzi:
Jeśli dobrze rozumiem twoje pytanie, to chcesz, aby 6 wartości były zgłaszane przy określonych tyknięciach podczas biegu. Te kleszcze są wybierane przez spełnienie warunku, a nie przez określoną liczbę kleszczy. NetLogo ma narzędzie do zarządzania eksperymentami o nazwie BehaviorSpace. Łatwo jest skonfigurować kilkaset przebiegów (potencjalnie z różnymi wartościami dla dowolnych danych wejściowych na suwakach itp.). Nie jest to takie proste, aby generować tylko w przypadku niektórych tyknięć.
W oknie dialogowym BehaviorSpace znajduje się znacznik wyboru dla każdego tiku lub tylko na końcu. Jeśli masz ustawione na każdy tik, możesz automatycznie wyeksportować sześć liczb co tik. W twoim przypadku łatwiej jest to zrobić niż próbować i generować tylko okazjonalnie. Możesz dodać siódmy reporter, który ma wartość true / false dla tego, czy matryca jest resetowana dla tego tiku. Następnie wszystko, co musisz zrobić w przetwarzaniu końcowym, to wybrać wiersze, w których ten siódmy reporter jest prawdziwy.
Jeśli chcesz uruchomić model dla dokładnie N migawek, musisz także ustawić zmienną globalną, która jest zwiększana w każdym punkcie migawki. Twoje ustawienia BehaviourSpace użyją tego licznika jako warunku zatrzymania.
źródło
Nie jestem pewien, czy rozumiem twoje pytanie, ale zwykle będziesz mieć funkcję Setup i Run, prawda? Zgaduję, że poniższa struktura kodu powinna być czymś, czego szukasz. Od jakiegoś czasu nie używałem netlogo, więc dokładny kod macierzy musisz sam wymyślić.
źródło