Zugvögel

Zugvögel preview image

1 collaborator

Default-person Matthias Otto (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 5.1.0 • Viewed 261 times • Downloaded 15 times • Run 0 times
Download the 'Zugvögel' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Info tab cannot be displayed because of an encoding error

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;;==========================================================================================================================================================================================
;;===========================================================  Zugvogelmodell  =============================================================================================================
;;==========================================================================================================================================================================================

Globals [AnfangsRastEnergie            ;; Anlegen später gesetzer Variablen                    
         MomRastA                      ;;
         MomRastL                      ;;
         MomRast                       ;;
         weiterfliegen                 ;;
         RE                            ;;
         EnergieZuwachs                ;;
         LebendR1                      ;;
         LebendR2                      ;;
         LebendR3                      ;;
         Lebend                        ;;
         AufZiel                       ;;
         z                             ;;                            
         ]
         


breed [Rastplätze Rastplatz]           ;; Definieren von Singular und Plural der später verwendeten turtles
breed [Vögel Vogel]
breed [VögelR1 VogelR1]
breed [VögelR2 VogelR2]
breed [VögelR3 VogelR3]


VögelR1-own                            ;; Benennen der Eigenschaften der auf Route 1 fliegenden Vögel
[VogelEnergie                          ;;
 fliegt                                ;;
 lebt                                  ;;
 Route                                 ;;
 ZählerRoute                           ;;
 NächsteRast                           ;;
 ]

VögelR2-own                            ;; Benennen der Eigenschaften der auf Route 2 fliegenden Vögel 
[VogelEnergie
 fliegt
 lebt
 Route
 ZählerRoute
 NächsteRast
 ]

VögelR3-own                            ;; Benennen der Eigenschaften der auf Route 3 fliegenden Vögel 
 [VogelEnergie
  fliegt
  lebt
  Route
  ZählerRoute
  NächsteRast
 ]

Rastplätze-own                         ;; Benennen der Eigenschaften der Rastplätze
[RastEnergie]                          ;; 



;;=========== Ende der Deklaration ==========================================================================================================================================================

;;=========== Beginn der setup-Prozedur ===================================================================================================================================================== 

to setup 
  
  clear-all
  reset-ticks
  display-labels
  set EnergieZuwachs 1                                                            ;; Festlegen der Regeneration der Vögel während des Rastens (EnergieZuwachs pro tick)
  
   
  if file-exists? "/karte2.png" [import-pcolors-rgb "/karte2.png"]                ;; Importieren einer Europa-Karte als Hintergrund (bei Existenz des Dokuments)
 
  
  set-default-shape Rastplätze "circle"                                        
  Create-Rastplätze 11[                                                           ;; Erzeugen von 11 Rastplätzen mit den Nummern 0-10
                       set size 3                                                 ;; Festlegen der Größe der Rastplätze
                       set color green                                            ;; Bestimmen der Farbe der Rastplätze   
                       set RastEnergie AnfangsRastEnergie                         ;; Einstellen der Anfangsenergie der Rastplätze auf die auf die durch den Slider "AnfangsRastEnergie" festgelegten Werte
                      
                        ]
  ifelse Nummernanzeige-Rastplätze [ ask Rastplätze [ set label word who "   "]   ;; Anzeigen der Rastplatz-Nummern durch Einschalten des Switches "Nummernanzeige-Rastplätze" 
                                   ]
    [ask Rastplätze [ set label "" ]]
    
 
 
  ;;========== Versetzung der Rastplätze ======================================== 
  
  ask Rastplatz 0 [set xcor -12                                                   ;; Versetzen der Rastplätze auf festgelegten Koordinaten
                   set ycor  36]
  
  ask Rastplatz 1 [set xcor -17  
                   set ycor  16]
  
  ask Rastplatz 2 [set xcor -26  
                   set ycor  15]
  
  ask Rastplatz 3 [set xcor -49  
                   set ycor -7]
  
  ask Rastplatz 4 [set xcor -66  
                   set ycor -28]
  
  ask Rastplatz 5 [set xcor -87  
                   set ycor -42]
  
  ask Rastplatz 6 [set xcor -15  
                   set ycor  12]
  
  ask Rastplatz 7 [set xcor  25  
                   set ycor  30]
  
  ask Rastplatz 8 [set xcor  27  
                   set ycor -11]
  
  ask Rastplatz 9 [set xcor -25  
                   set ycor -10]
  
  ask Rastplatz 10 [set xcor 82  
                   set ycor -31]
      
  
  
  ;;=========== Einstellung der Startenergien der Rastplätze ====================
   
   
   ask Rastplatz 0  [set RastEnergie AnfangsEnergieStartplatz1]                   ;; Einstellen der RastEnergie des Rastplatzes 0 auf die durch den Slider "AnfangsEnergieStartplatz1" festgelegten Werte
   ask Rastplatz 7  [set RastEnergie AnfangsEnergieStartplatz2]
   ask Rastplatz 1  [set RastEnergie AnfangsEnergieRastplatz1]
   ask Rastplatz 2  [set RastEnergie AnfangsEnergieRastplatz2]
   ask Rastplatz 3  [set RastEnergie AnfangsEnergieRastplatz3]
   ask Rastplatz 4  [set RastEnergie AnfangsEnergieRastplatz4]
   ask Rastplatz 5  [set RastEnergie AnfangsEnergieRastplatz5]
   ask Rastplatz 6  [set RastEnergie AnfangsEnergieRastplatz6]
   ask Rastplatz 8  [set RastEnergie AnfangsEnergieRastplatz8]
   ask Rastplatz 9  [set RastEnergie AnfangsEnergieRastplatz9]
   ask Rastplatz 10 [set RastEnergie AnfangsEnergieRastplatz10]
   
  

  ;;=========== Erzeugung der Links für die Routen 1-3 ========================
  ;;=========== Erzeugung der Links für Route 1 ===============================

  
  ask Rastplatz 0 [create-link-to Rastplatz 1]                                    ;; Erzeugen von Route 1 durch Verbindung von je zwei Rastplätzen mittels Link
  ask link 0 1 [set color 15]                                                     ;; Bestimmen der Farbe des Links
  
  ask Rastplatz 1 [create-link-to Rastplatz 2]
  ask link 1 2 [set color 15]
  
  ask Rastplatz 2 [create-link-to Rastplatz 3]
  ask link 2 3 [set color 15]
  
  ask Rastplatz 3 [create-link-to Rastplatz 4]
  ask link 3 4 [set color 15]
  
  ask Rastplatz 4 [create-link-to Rastplatz 5]
  ask link 4 5 [set color 15]
  
  ;;========== Erzeugung der links für Route 2 ===============================
  
  ask Rastplatz 7 [create-link-to Rastplatz 6]                                    ;; Erzeugen von Route 2 durch Verbindung von je zwei Rastplätzen mittels Link
  ask link 7 6 [set color 114]                                                    ;; Bestimmen der Farbe des Links
  
  ask Rastplatz 6 [create-link-to Rastplatz 9]
  ask link 6 9 [set color 114]
  
  ask Rastplatz 9 [create-link-to Rastplatz 4]
  ask link 9 4 [set color 114]
  
  ask Rastplatz 4 [create-link-to Rastplatz 5]
   
  
  ;;=========== Erzeugung der links für Route 3 ===============================
  
  ask Rastplatz 7 [create-link-to Rastplatz 10]                                   ;; Erzeugen von Route 3 durch Verbindung von je zwei Rastplätzen mittels Link
  ask link 7 10 [set color 62]                                                     ;; Bestimmen der Farbe des Links
  
  ask Rastplatz 10 [create-link-to Rastplatz 8]
  ask link 10 8 [set color 62]
  
  ask Rastplatz 8 [create-link-to Rastplatz 4]
  ask link 8 4 [set color 62]
  
  ask Rastplatz 4 [create-link-to Rastplatz 5]

  
  
  ;;============ Erzeugen der Vögel für die Routen 1-3 =======================
  ;;============ Erzeugen der Vögel Routen 1 =================================
  
                                                                                                   
create-VögelR1 AnzahlVögelR1 [  set color 15                                      ;; Bestimmen der Farbe der auf Route 1 fliegenden Vögel                                                 
                                set size  3                                       ;; Festlegen der Größe der Vögel
                                set z random 25                                   ;;
                                set xcor -5 + z                                   ;; Versetzen und Verteilen  der Vögel oberhalb einer diagonalen Linie 
                                set ycor 45 + z * 0.8 + random 10                 ;; Versetzen und Verteilen  der Vögel oberhalb einer diagonalen Linie
                                set VogelEnergie AnfangsVogelR1Energie            ;; Einstellen der VogelEnergie auf die durch den Slider "AnfangsVogelR1Energie" festgelegten Werte                                        
                                set Route [0 1 2 3 4 5]                           ;; Angeben der Rastplatz Nummern die ein VögelR1 abfliegen soll
                                set ZählerRoute 0                                 ;; Setzen des Zählers auf 0 gibt später an auf welcher Position der Route ein Vogel ist
                                set fliegt 1                                      ;; Setzen der Eigenschaft fliegt auf den Wert 1 => Vogelgrundzustang in Bewegung
                                set lebt 1                                        ;; Einstellen der Eigenschaft lebt 1 => alle erzeugten Vögel leben
   ] 

  ;;============= Erzeugen Vögel Route 2===================================

create-VögelR2 AnzahlVögelR2 [  set color 114                                     ;; Bestimmen der Farbe der auf Route 2 fliegenden Vögel                            
                                set size  3                                       ;; Festlegen der Größe der Vögel
                                set xcor 50  - random 20                          ;; Versetzen und Verteilen  der Vögel in einem Rechteck 
                                set ycor 60 - random 20                           ;; Versetzen und Verteilen  der Vögel in einem Rechteck
                                set VogelEnergie AnfangsVogelR2Energie            ;; Einstellen der VogelEnergie auf die durch den Slider "AnfangsVogelR2Energie" festgelegten Werte                                           
                                set Route [7 6 9 4 5]                             ;; Angeben der Rastplatz Nummern die ein VögelR2 abfliegen soll 
                                set ZählerRoute 0                                 ;; Setzen des Zählers auf 0 gibt später an auf welcher Position der Route ein Vogel ist 
                                set fliegt 1                                      ;; Setzen der Eigenschaft fliegt auf den Wert 1 => Vogelgrundzustang in Bewegung 
                                set lebt 1                                        ;; Einstellen der Eigenschaft lebt 1 => alle erzeugten Vögel leben
  ]

  ;;============== Erzeugen Vögel Route 3================================

create-VögelR3 AnzahlVögelR3 [  set color 62                                      ;; Bestimmen der Farbe der auf Route 3 fliegenden Vögel                                 
                                set size  3                                       ;; Festlegen der Größe der Vögel
                                set xcor 50 + random 20                           ;; Versetzen und Verteilen  der Vögel in einem Rechteck
                                set ycor 40 - random 30                           ;; Versetzen und Verteilen  der Vögel in einem Rechteck
                                set VogelEnergie AnfangsVogelR3Energie            ;; Einstellen der VogelEnergie auf die durch den Slider "AnfangsVogelR3Energie" festgelegten Werte                                                                        
                                set Route [7 10 8 4 5]                            ;; Angeben der Rastplatz Nummern die ein VögelR3 abfliegen soll
                                set ZählerRoute 0                                 ;; Setzen des Zählers auf 0 gibt später an auf welcher Position der Route ein Vogel ist
                                set fliegt 1                                      ;; Setzen der Eigenschaft fliegt auf den Wert 1 => Vogelgrundzustang in Bewegung 
                                set lebt 1                                        ;; Einstellen der Eigenschaft lebt 1 => alle erzeugten Vögel leben
  ]
end 



;;================ Ende der setup-Prozedur ===================================================================================================================================================

;;============================================================================================================================================================================================

;;================ Beginn des Start-Prozesses ================================================================================================================================================

to Start
  
  tick                                                                                         ;; Starten und Zählen der ticks
  set AufZiel 0                                                                                 
  ask (turtle-set VögelR1 VögelR2 VögelR3)                                                     ;; Festlegen der turtles, für die die folgenden befehle auszuführen sind
  [set NächsteRast (item ZählerRoute Route)                                                    ;; Erfragen der Nummer des Nächsten Rastplatzes
   face Rastplatz NächsteRast
   
   set MomRastA (Rastplätze in-radius 1.5 )                                                    ;; Erstellen eines Agentsets des Rastplatzes, an dem der Vogel ist oder ein leeres Agentset (nobody)
   set MomRastL [who] of MomRastA;                                                             ;; Festlegen von MomRast als Liste mit einer Rastplatnummer oder eine leere Liste
    
   
   if (not (MomRastL = []))  [set MomRast (item 0 MomRastL)                                    ;; Entnehmen der Nummer des Rastplatzes aus MomRast, wenn MomRast nicht leer ist
     
                              if (MomRast = NächsteRast) and (ZählerRoute < length(Route) - 1) [set ZählerRoute (ZählerRoute + 1)
                                                                                                set fliegt 0]
                              
                              if (MomRast = 5) [set AufZiel (AufZiel + 1) ]                    ;; Zählen der an ihrem Ziel befindlichen Vögel 
                             ]
   
   
   
  ;; =========== Fall: Vogel fliegt ========================================================================================
                                                            
   if (fliegt = 1)  [forward 0.1 
                    set VogelEnergie (VogelEnergie - VogelVerbrauch)]
   if (fliegt = 1) and (not (MomRastL = [])) [set VogelEnergie (VogelEnergie + VogelVerbrauch) ]
   
   
   
  ;; =========== Fall: Vogel fliegt nicht ==================================================================================
 
   if (fliegt = 0) and (not (MomRastL = [])) [ask Rastplatz (item 0 MomRastL) [ifelse (RastEnergie <= 0) [set weiterfliegen 1] 
                                                                                                         [set weiterfliegen 0]
                                                                               
                                                                               if RastEnergie >= RastplatzVerbrauch and (not (MomRast = 5)) [
                                                                                                    set RastEnergie round (RastEnergie - RastplatzVerbrauch)  ] 
                                                                               set RE RastEnergie 
                                                                               ]
                                              if (weiterfliegen = 1 ) [set fliegt 1]
                                              if (RE > 0) [set VogelEnergie (VogelEnergie + EnergieZuwachs)] 
                                             ]        
   
                                                                        
   if (VogelEnergie >= 100) [set fliegt 1]                                                  ;; Festlegen, wann ein Vogel wieder losfliegen soll
   if (VogelEnergie <= 0 ) [set fliegt 0]                                                   ;; Festlegen, wann ein Vogel anhalten soll
   
   if (VogelEnergie <= 0) [set lebt 0]                                                      ;; Wann setzt ein Vögel seine Eigenschaft  lebt auf 0 => Vogel tot
   
  ]
  
  set LebendR1 sum ([lebt] of VögelR1)                                                      ;; Berechnen aller lebenden Vögel auf Route 1
  set LebendR2 sum ([lebt] of VögelR2)                                                      ;; Berechnen aller lebenden Vögel auf Route 2
  set LebendR3 sum ([lebt] of VögelR3)                                                      ;; Berechnen aller lebenden Vögel auf Route 3
  
  set Lebend (LebendR1 + LebendR2 + LebendR3)                                               ;; Berechnen aller lebender Vögel aller Routen
  if (Lebend = AufZiel) [stop]                                                              ;; Stoppen des Programms, wenn alle lebenden Vögel am Ziel sind
  
  display-labels                                                                            ;; Ausführen von display-labels 
end 


;;============== Ende des Start-Prozesses ====================================================================================================================================================

;;============================================================================================================================================================================================

;;============== Anzeige der Labels ==========================================================================================================================================================

to display-labels                                                                           ;; Anzeigen der gerundeten Energie-Labels von Rastplätzen und Vögeln
  ifelse Energieanzeige-Rastplätze [ 
    ask Rastplätze [set label word (round RastEnergie) "___" ]]                             ;; Abtrennen der Energien durch "___"  
    [ask Rastplätze [ set label "___" ]]

  ifelse Energieanzeige-VögelR1 [ 
    ask VögelR1 [set label word (round VogelEnergie) ""  ]]
   [ask VögelR1 [ set label "" ] ]
  
  ifelse Energieanzeige-VögelR2 
    [ask VögelR2 [set label word (round VogelEnergie) ""  ]]
   [ask VögelR2 [ set label "" ] ]
  
  ifelse Energieanzeige-VögelR3 
    [ask VögelR3 [set label word (round VogelEnergie) ""  ]]
   [ask VögelR3 [ set label "" ] ] 
end  

;;============== Ende Anzeigen der Labels=====================================================================================================================================================



;;============================================================================================================================================================================================
;;=============== Programm - Ende ============================================================================================================================================================
;;============================================================================================================================================================================================

; Copyright 2015 Christian Albrecht, Lara Brozio, Matthias Otto und Julia Sprengel.
; See Info tab for full copyright and license.

There is only one version of this model, created about 9 years ago by Matthias Otto.

Attached files

File Type Description Last updated
Zugvögel.png preview Preview for 'Zugvögel' about 9 years ago, by Matthias Otto Download

This model does not have any ancestors.

This model does not have any descendants.