Difference between revisions of "User talk:Xgubk00"

From Simulace.info
Jump to: navigation, search
(Definice problému)
(Výsledky)
Line 38: Line 38:
  
 
=Výsledky=
 
=Výsledky=
 +
[[Media:to do-fall  ;zasadni procedura padani mice
 +
 +
  let below patch-at 0 -1  ;definice patche pod aktualnim
 +
  let beside patches at-points [ [ -1 0 ] [ 1 0 ] ]  ;definice bocnich patchu
 +
  let above patch-at 0  1  ;definice patche nad aktualnim
 +
 
 +
 
 +
  ; pokud je pod misto, proste pada
 +
  ifelse [void?] of below = true
 +
  [ set void? true
 +
    set ycor ycor - 1
 +
    set void? false
 +
  ]
 +
 +
  ; jinak pokud je vlevo ci vpravo volno a pod je taky volno, tak si pujde i trochu do strany
 +
  [ set beside beside with [ void? = true and [void?] of patch-at 0 -1 = true ]
 +
    ifelse any? beside
 +
    [ set beside one-of beside
 +
      set void? true
 +
      set xcor [pxcor] of beside
 +
      set ycor pycor - 1
 +
      set void? false
 +
    ]
 +
 +
    ; pokud je nahore micek a na nejake strane je volno, vybere si tu stranu a utece tam
 +
    [ set beside beside with [ void? = true ]
 +
      ifelse ([void?] of above = false
 +
                and ([any? balls-here ] of above = true)
 +
                and (any? beside)
 +
              )
 +
        [ set beside one-of beside
 +
          set void? true
 +
          set xcor [pxcor] of beside
 +
          set void? false
 +
        ]
 +
 +
        ; pokud je nahore ucpano (treba grid) a je volna nejaka strana, uhne tam
 +
        [ if ([void?] of above = false
 +
              and ([ not any? balls-here ] of above = true)
 +
              and any? beside with [ void? = true ]
 +
              and any? beside with [ not void? = true ]
 +
              )
 +
          [ 
 +
            set beside one-of beside with [ void? = true ]
 +
            set void? true
 +
            set xcor [pxcor] of beside
 +
            set void? false
 +
          ]
 +
        ]
 +
      ]
 +
    ]
 +
end]]
  
 
=Závěr=
 
=Závěr=
  
 
=Kód=
 
=Kód=

Revision as of 18:44, 12 June 2013

Tato stránka slouží jako Výzkumná zpráva simulace "Přesýpací hodiny" k semestrálnímu projektu pro předmět 4IT495 Simulace systémů (LS 2012/2013) na Vysoké škole ekonomické v Praze.

Zadání

Název simulace: Přesýpací hodiny

Autor: Kristýna Gubišová

Předmět: 4IT495 Simulace systémů (LS 2012/2013)

Typ modelu: Multiagentní model

Nástroj modelu: Netlogo

Definice problému

Následující model by měl simulovat chování zrn písku v přesýpacích hodinách, které pro měření času využívají právě pohyb zrvn písku, která se vždy sypou dolů díky zemské přitažlivosti. Jak budou zrna spadávat?

Přesýpací hodiny se skládají ze dvou baněk (trychtýřů), které jsou spojené úzkým hrdlem. Zrna písku se postupně přesýpají z horní do spodní baňky. Jakmile je horní baňka prázdná, hodiny by mělo být možné obrátit, aby bylo možné pokračovat v měření dalšího časového úseku.

Jak se zrna písku zachovají nastane-li v hodinách nějaká překážka?

Metoda

Metoda vypracování: NetLogo

Jak model pracuje

Tlačítko Setup - při stisknutí dojde k počátečnímu nastavení pole a k vykreslení přesýpacích hodin.

Number of balls - umožní nám nastavit objem zrnek písku v přesýpacích hodinách.

Tlačítko Charge - při stisknutí se naplní přesýpací hodiny na požadovaný počet zrnek písku, který lze nastavit v number of balls. Po naplnění je potřeba tlačítko vypnout.

Tlačítko Go - stisknutí spustí padání zrnek písku

Tlačítko Turnover - při stiknutí dojde k přetočení přesýpacích hodin

Model

Model je vytvořen v prostředí NetLogo 5.0.1., jehož základem je svět ve tvaru čtverce o rozměru 41x41px (max. pxcor a pycor = 20) s centrem na souřadnicích 0;0, a vněmž máme červenou barvou vymezené dvě baňky spojené hrdlem, které tvoří hodiny.

Výsledky

[[Media:to do-fall  ;zasadni procedura padani mice

  let below patch-at 0 -1   ;definice patche pod aktualnim
  let beside patches at-points [ [ -1 0 ] [ 1 0 ] ]  ;definice bocnich patchu
  let above patch-at 0  1  ;definice patche nad aktualnim
  
  
  ; pokud je pod misto, proste pada
  ifelse [void?] of below = true
  [ set void? true
    set ycor ycor - 1
    set void? false
  ]
  ; jinak pokud je vlevo ci vpravo volno a pod je taky volno, tak si pujde i trochu do strany
  [ set beside beside with [ void? = true and [void?] of patch-at 0 -1 = true ]
    ifelse any? beside 
    [ set beside one-of beside
      set void? true
      set xcor [pxcor] of beside
      set ycor pycor - 1
      set void? false
    ]
    ; pokud je nahore micek a na nejake strane je volno, vybere si tu stranu a utece tam
    [ set beside beside with [ void? = true ]
      ifelse ([void?] of above = false
               and ([any? balls-here ] of above = true)
               and (any? beside)
             )
       [ set beside one-of beside 
         set void? true
         set xcor [pxcor] of beside
         set void? false
       ]

       ; pokud je nahore ucpano (treba grid) a je volna nejaka strana, uhne tam
       [ if ([void?] of above = false
              and ([ not any? balls-here ] of above = true)
              and any? beside with [ void? = true ]
              and any? beside with [ not void? = true ]
             )
         [  
           set beside one-of beside with [ void? = true ]
           set void? true
           set xcor [pxcor] of beside
           set void? false
         ]
       ]
     ]
   ] 

end]]

Závěr

Kód