Konfiguracja eksperymentu NetLogo

9

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.

Diesel
źródło
Odpowiedziałem za pomocą BehaviorSpace, ponieważ uważam, że będzie to najłatwiejsze. Ale nie ma problemu z utworzeniem pliku csv i dołączeniem każdej migawki podczas jej tworzenia. Oznacza to, że nie musisz mieć matrycy 100 x 6 i eksportować ją. Powodem, dla którego nie zalecam tego podejścia jest to, że mówisz także, że chcesz mieć kilkaset osobnych uruchomień, a to dałoby ci osobny plik csv dla każdego uruchomienia.
JenB,

Odpowiedzi:

3

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.

JenB
źródło
2

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ć.

globals your-1by6-matrix your-100by6-matrix

to setup
  ;reset your experiment
end

to run
  ;run your experiment
end

to run100times
  repeat 100[
    setup
    run
    ;save your 1by6matrix into your 100by6matrix
  ]
  ;use your 100by6matrix to plot or export
end
Jumboman
źródło