2016-06-08 4 views
0

Ich arbeite an einem Predator-Prey model aber ich habe einen einzigartigen Laich Mechaniker, den ich versuche zu arbeiten.Wie modelliere ich das Laichen nach Kill/Miss im Predator-Prey-Modell in Netlogo? bereits

Die Idee, dass, wenn ein Wolf Schaf trifft, eine Wahrscheinlichkeit der Schafe dort entweichenden (I habe diesen Teil codiert). Wenn das Schaf getötet wird, n Anzahl der Lämmer werden erstellt. Wenn das Schaf flieht, k Anzahl der Lämmer werden erstellt. Nach t Perioden werden die Lämmer Beute. n, k und t werden Schieberegler auf der Schnittstellenseite sein.

Ich bin ziemlich neu in der Agent-basierten Modellierung und Netlogo-Programmierung, so dass jeder Ratschlag wirklich geschätzt werden würde.

Dies ist der aktuelle Code für die Jagd:

to catch-sheep ;; wolf procedure 
    let prey one-of sheep-here 
    if prey != nobody and random 100 < kill-probability 
     [ ask prey [ die ] 
+0

Und was ist Ihr aktuelles Problem mit dem von Ihnen bereitgestellten Code? –

+0

Oh nein, der Code, den ich für den Kill-Prob habe, funktioniert gut. Mein Problem ist, dass ich versuche, es hinzuzufügen. Ich möchte es so haben, dass jedes Mal, wenn sich ein Wolf und ein Schaf begegnen, abhängig davon, wie die Interaktion abläuft (töten oder verfehlen), eine Anzahl von Lämmern erschaffen wird. – Roger

Antwort

0

Vermutlich k> n, so dass Sie alle erwachsenen Schafe hatch n Lämmer haben kann, und dann catch-sheep, und haben dann alle übrigen erwachsenen Schafe Luke kn Lämmer . Dies erfordert die Unterscheidung zwischen Lämmern und Erwachsenen. Daher möchten Sie möglicherweise ein Attribut age hinzufügen.

Allerdings vermute ich, dass Sie auf die Wahrscheinlichkeit des Schlüpfens eines Lammes jede Zecke wechseln möchten, anstatt einer Anzahl von Lämmern, die jeden Tick schraffiert werden.

0

Verwenden Sie Ihren Code, um Code hinzuzufügen und um zu sehen, ob das für Sie funktioniert.

Wenn ein Schafe getötet wird eine zufällige Anzahl von neuen Schafen erstellen, in dem Code verwenden, unter der Folie Variable statt 10.

ich die primitive function hatch verwenden die ganze Arbeit zu tun.

to catch-sheep ;; wolf procedure 
    let prey one-of sheep-here 
    if prey != nobody and random 100 < kill-probability 
     [ ask prey [ die ] 
      ;;Here we create new sheeps upon prey death 
      let rd-num random 10 ;; 1 to 10 sheeps will appear 
      hatch-sheep rd-num [ set color blue 
           set xcor 9 ;; Initialize your new sheeps ] 
     ]   

Teilen Sie uns Ihre Fragen mit! Glückliche Kodierung.

+0

Das ist wirklich hilfreich, danke! Ich habe eine andere Frage. Gibt es einen Befehl, den ich hinzufügen kann, mit dem ich steuern kann, wie viele Ticks das neue Schaf braucht, um das System zu betreten? Wenn dies möglich ist, kann ich ihre Einreise auch davon abhängig machen, dass die Schafpopulation positiv ist? – Roger

+0

Um die Zunahme der Schafe in der Zeit zu kontrollieren, könntest du einfache Mathe verwenden, zum Beispiel, wenn du willst, dass ein Schaf alle 'k' Ticks auftaucht, kannst du irgendwo in deinem Code fragen, ob' tick mod k = 0' ist, wenn das wahr ist Erschaffe ein neues Schaf. Überprüfen Sie die Dokumentation [modulo] (https://cl.northwestern.edu/netlogo/docs/dictionary.html#mod) dazu. –

Verwandte Themen