Java StarLogo 2.0 english `turtle` turtles-own [excitation countdown neighbors-light neighbor] to setup setc white seth random 360 fd sqrt random 80 set excitation 1 + random threshhold set countdown -1 end to go1 ifelse (excitation >= threshhold) or (countdown = 0) [setc green] [setc white] end to go2 ifelse (excitation >= threshhold) or (trigger < neighbors-light) [if (excitation >= (threshhold - buffer)) [set countdown threshhold - excitation] setexcitation 1] [set excitation excitation + 1] if countdown >= 0 [set countdown countdown - 1] end to tally-neighbors-light set neighbor 1 set neighbors-light 0 repeat (length flashing) [let [:partner item neighbor flashing] set neighbors-light neighbors-light + (100 / (1 + ((distance (xcor-of :partner) (ycor-of :partner)) ^ 2))) set neighbor neighbor + 1] end `observer` globals [current flashing] to setup ca crt number ask-turtles [setup] end to go ask-turtles [go1] tally-light ;; We do this with two ask-turtles to wait for all fireflies ;; to finish go1 before starting go2. ask-turtles [go2] end to tally-light ; build a list of green turtles into "flashing" set flashing [] ask-turtles [if (color = green) [set flashing fput who flashing]] ; each turtle computes its illumination from those that are flashing ask-turtles [tally-neighbors-light] end `information` WHAT IS IT? ----------- This program simulates the self-organized synchronization of firefly flashing. In the region from India east to the Philippines and New Guinea, enormous aggregations of fireflies gather in trees and flash in near-perfect synchrony. While different species have slightly different methods for flashing in rhythm, the behavior that is modeled here is governed by the following rules: - each firefly has an intrinsic flashing frequency, and when left alone it will flash at periodic intervals. - the flashes are timed by the progressive excitation of a chemical within each firefly; the excitation increases until it reaches a certain threshold, at which point a flash is emitted and the excitation is reset to zero. - if a firefly senses a certain amount of luminescence from its neighbors, it will reset its excitation to zero in order to flash simultaneously with those neighbors in the future; however, if the excitation is close enough to the flashing threshold, the flash has already been started and will proceed as planned even though the excitation is reset to zero. (The signal to flash is initiated when the excitation is 80% of the way to the threshold value.) HOW TO USE IT ------------- The SETUP button arranges the fireflies randomly within a circle, assigns them random excitation levels, configures the plot to monitor the flashing, and displays a color key. The GO button cycles through time, executing the rules stated above. The NUMBER slider controls the number of fireflies in the simulation. The THRESHOLD slider sets the excitation threshold at which point a firefly will flash and reset its excitation to zero. Because excitation is incremented once per time step, this slider also represents the number of time steps between flashes of an (uninfluenced) firefly. The TRIGGER slider controls the amount of luminescence required for a firefly to reset its excitation prematurely. Each firefly's flash is counted as 100 units of light, and the program assumes that perceived light decreases with the inverse square of the distance from source. The BUFFER slider controls how many time steps are necessary for the flashing signal to evolve and terminate in a flash; if a firefly is triggered to reset its excitation when the excitation is within "buffer" of the threshold, the flash will proceed as planned despite the resetting. THINGS TO NOTICE ---------------- The cluster of fireflies will often establish two phases of flashing before synchronizing completely; this phenomenon is also observed in the field. If there is a rift of empty space between the two groups (due to a random density differnece), they might never completely coordinate. However, when they do move to complete synchronization, the group flashing a step later often prevails because its flashes have been started by the time it perceives the other group's luminescence. Each of the slider variables affects the simulation; generally, faster synchronization is favored by high numbers, low thresholds, intermediate triggers, and low buffers. `interface` SLCanvas top-left 11 208 SLButton turtle-or-observer? observer top-left 76 13 width-height 67 30 name " go" line-to-run "go wait 0.05" forever? true button-number 3 show-name? true whichip 7 SLSlider top-left 107 105 width-height 90 25 name "slider2" variable "trigger" min-value 0 max-value 40 current-value 20 slider-number 2 show-name? false SLSlider top-left 31 103 width-height 90 25 name "slider0" variable "threshhold" min-value 0 max-value 50 current-value 31 slider-number 0 show-name? false SLSlider top-left 144 106 width-height 90 25 name "slider3" variable "buffer" min-value 0 max-value 5 current-value 2 slider-number 3 show-name? false SLSlider top-left 70 104 width-height 90 25 name "slider1" variable "number" min-value 0 max-value 99 current-value 50 slider-number 1 show-name? false SLButton turtle-or-observer? observer top-left 32 13 width-height 65 30 name "button1" line-to-run "setup" forever? false button-number 2 show-name? false whichip 8 `turtle shapes` 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 DhUAABUO2Q== `template` null `settings` patch-size 8 num-shapes 256 screen-half-width 23 screen-half-height 23 interface-window-xcor 403 interface-window-ycor 145 interface-window-size 601 412 output-window-xcor 0 output-window-ycor 0 output-window-width 300 output-window-height 219 info-window-xcor 204 info-window-ycor 199 info-window-width 500 info-window-height 419 control-center-xcor 42 control-center-ycor 132 control-center-width 345 control-center-height 465 turtle-command-center-height 140 observer-command-center-height 133 `string table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `symbol table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `double table` H4sIAAAAAAAAADXOMQ5AQBRF0V9agEIxhYhiIgqCMIKZ3qZsgx1YhS1ZgvCv25zq JU9ETMjk67rVINhhijNG2OKo+n+/oMMCPU6YYI4WK4xxwAZL7LFGg+umf8797XgA x8Sog+QAAAAAAADk `list table` H4sIAAAAAAAAAE1NQQ6AMAgrkC3uaOIu+ikf4cH/v0AYECGBAm0BwABApAmP1gBh 3WuetmfXWGw6DwK9ije5bxn51/XcJR93jDsKx5E5S7k16u3SV8x/e/Q9vBy8BNr8 rJ6mlrn+hk7SC8frAwDJBAQQAQAAAAABEA== `bytecodes` H4sIAAAAAAAAAJVU204bMRCd2Ws2t/UGQlClQlTy2krlkaeKX+gPhEAUKkUsapYH /pF+Uzu2x55ZCg9YWnv2zPH4+Hi9MFpvnrvtbXu3Pax/wIttfwCggvyw7Z4eKTQQ 2xd60Ie4ou40A0jsWw5Q2jEVrg0vCoDaJom2a6lfSL43L/t/XhlJb/Dzd9ZBGHU3 +/3z1/2v3X1HmZUQKx6Ruybhog3gfMp4AmgWjFeEHzOeAjYI+DnhdxLcpH7xOhER PZGFLNgTmYi3ZyKPfYW5iRLR0JT5qZJW0NMQNo6yghx7Hj4fatFKM+S44LH0mJOR Qbprv78pAmdDEeEKfxIRMZc6r9Cc874z8cZuIoVXeC54nbKI3Iq4JOTnx0SsQEQQ D82JEnIursQauZpTcD30Nd2cUXRIeAOuHVysvHvh0B0W6o8kl2h8rDRM1OlMVa1w irXiGqUtYI3Kz5Suo74uZ2wBc38THrZ0FTbt70O8E9fiM0rouvjBJNFewTK+AxXL +ibWRlkFcyY2/EtNbI2cgdgZLMw9F09A7FQYLkqx0wydjWhSZedE6ZyqtWrFMcqm im0qYXz91HXtw9VyuXS/qDHvbsC3OFikwnrIVQq/feJOY5VwtcNfoNfsL+ofhhMP gnMFAAAAAAVz `observer world` H4sIAAAAAAAAAGMQSMhPKk4tKkstUiguSSxJTXBggAMrBq6CnPyS8syU9NQSIJ+F gS0nNS+9JAPIFmBgB8kVpOaBlXKDNcNlOYCYiYE9ubSoKDWvBKyCIy0nsTgjMy8d yGaEYRgDAGHfiUOHAAAAAAAAhw== `patch world` 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 e+roY99TRx/7njr62PfUx/th3w9JX8BLeAWfwGv4FN7AZ/A5fAFfwlfwNXwD38J3 8D38AD/CT/Az/AK/wm/wO/wBf8Jf8De8hXfyftxj31NHH/ueOvrY99TRx76njj72 PXX0se+po499T328H/b9mPQFvIRX8Am8hk/hDXwGn8MX8CV8BV/DN/AtfAffww/w I/wEP8Mv8Cv8Br/DH/An/AV/w1t4J+/HPfY9dfSx76mjj31PHX3se+roY99TRx/7 njr62PfUx/th309JX8BLeAWfwGv4FN7AZ/A5fAFfwlfwNXwD38J38D38AD/CT/Az /AK/wm/wO/wBf8Jf8De8hXfyftxj31NHH/ueOvrY99TRx76njj72PXX0se+po499 T328H/b9nPQFvIRX8Am8hk/hDXwGn8MX8CV8BV/DN/AtfAffww/wI/wEP8Mv8Cv8 Br/DH/An/AV/w1t4J+/HPfY9dfSx76mjj31PHX3se+roY99TRx/7njr62PfUx/th 3y9JX8BLeAWfwGv4FN7AZ/A5fAFfwlfwNXwD38J38D38AD/CT/Az/AK/wm/wO/wB f8Jf8De8hXfyftxj31NHH/ueOvrY99TRx76njj72PXX0se+po499T328H/b9mvQF vIRX8Am8hk/hDXwGn8MX8CV8BV/DN/AtfAffww/wI/wEP8Mv8Cv8Br/DH/An/AV/ w1t4J+/HPfY9dfSx76mjj31PHX3se+roY99TRx/7njr62PfUx/th329JX8BLeAWf wGv4FN7AZ/A5fAFfwlfwNXwD38J38D38AD/CT/Az/AK/wm/wO/wBf8Jf8De8hXfy ftxj31NHH/ueOvrY99TRx76njj72PXX0se+po499T328H/b9nvQFvIRX8Am8hk/h DXwGn8MX8CV8BV/DN/AtfAffww/wI/wEP8Mv8Cv8Br/DH/An/AV/w1t4J+/HPfY9 dfSx76mjj31PHX3se+roY99TRx/7njr62PfUx/th3x9JX8BLeAWfwGv4FN7AZ/A5 fAFfwlfwNXwD38J38D38AD/CT/Az/AK/wm/wO/wBf8Jf8De8hXfyftxj31NHH/ue OvrY99TRx76njj72PXX0se+po499T328H/b9mfQFvIRX8Am8hk/hDXwGn8MX8CV8 BV/DN/AtfAffww/wI/wEP8Mv8Cv8Br/DH/An/AV/w1t4J+/HPfY9dfSx76mjj31P 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 `turtle world` H4sIAAAAAAAAAJ3We0xTVxgA8EPfD16lLfIoUlDEoWLFGYGp90OF6WSIGRpQNlto adGuLfTyUKcWUIebAYnGR6Yi8zGUzagxCybOHsWoWxBhGIfDLM00+EJAZxCJw12q M9nZPyeeJu35es/95Tvn3Pvdi/z1bEkxazVpnayBNekBvW31SGQ12cyshesvQMK8 YpPJyHXHI5nDamfLCo1mE8vF7yPxaOww2bggHgnz7VZ7MdfVIMGafG/PF8m9+Fst EUm44UZ7mc3BRQlI6LQYHCauG4cE5a/PESB+mcXuzUPktLwZOR2JLSaDsdBm5gKV d5TMVJ5fyOGFdpt3sDTfXmJjR2ku8EEBNlOh2ZJnL3ZOsXKd0Xx5SPLvn1zEHz3p Fde8iSA0DUTx6s4jBoDgcz3mCaHVkPx6NSAa/b/5cB/um+dlkY83eH1EB+ryWb/W dnmAlyw2/jDjPmRiGodHOFPdTxYqy/uj20GVtWvCx2ILlFA5fMKJdz+7Gd6O2hD4 p5ycNHIGQ0kmjSMgnCnARzF/zRRPxIpxO/rqdgggz0PjCAlnMg7Kfcw+H9yGQ9NS azzB52A1onFEhDMJy2QN9s/2at1Pnz3gpzv1YAcaR0w4ce7fV57Pe1GEcaSzXxPX fx8KqOZFOu9h+Y7FPQaDCxSilqgE6yVgA2kcCeFMdD/w+Sl6zyvM/M1e3jO5QA8l VA65X7EgSyrl+R/Xgp/Wr+X2aR2kIhpHSjgT3EOxXZuzNuiwOsCy6YakESyud3Fi mBcZhifdYwF4F9Mdi2IbIYUqHxnhjGc6zDVf3ZgGWHWhblXi3H1QoKVx5IQzjvn5 mPlazxkXBA/eSmOvqQBR5UNez9FYObutfcbsl6DZcn1dRY0WWD2N40s4UczgwQMF Gz/A7je/oPfQOH6Eo8W8Tcfk+h+zQdmt27hYlw7sAI3jTziRzKteeVERQsyF7trP Vy1BsNRF4wQQzljw/e6eYusn20FVqt/r3t8KKVQOWQ8jIOToimTJpu3uwZaiGR1X BiAH0zjkvmtAufP6kC7diMcsk1bV7Z4PBqp8AgknHItLO1F3bDMOy7k8seXEHiik csh8wkDrOR5TtSiB6TX0jm97qoWliMZREE4oDjt09P6U4H3ukRp+Z9ccBHaq9Qki nBAs1P0p2e0BCEv6MulR7QCUaGkcJeGMwRH3UhPKt3rczyH6wPq0THDoaBzy+gkG vyNbVvvl6twvHy2Zu3BnJnxKtT5k/VFjzW/yFcenbmNw+J11pm4XOKjuC/J+V0H4 TXbscoMFq5Ka+nKEzbDSReOQ9VnJXFytHVpcjXDgui+GjQLuuQM0Dvm+EYRDrjZV 3K7IxSJF49rDsQNgwzSOinAU4DMzIfzWWcDqjJBvkN9dyKdy1IQTCFLz4OBmXjko a/eHZem7AKjWh6yHAeBfpfZf+1iLNadS4prOtkI+onHIeuiPI9MSwu1bq3HAH83b G1MQ2PQ0TjDh+IFCuqjre3wJguY/fPRL80lIpZoXue++zB35rs0RiS4sqK8vy46T gNFD45D1Rw58ZfbFpsN6kKwqUD+sb4Z5VOszhnBkEFn19bYKjdY9mBy2Qe50QQ6V Q96nUohcG1Q55DzMdOzKmNxZB7CMyiHroQRrTGtmD5/PBVXDzt6o+FxwammcEMIR My3ZDQvWjEMQtWRl3/NJDmaAKh9y30VYtkXRMtOViCPnTM+6MnAXCvXvko8QB36k 0s/vzmXuHmr78KgQQ5GDxiHffwTkUMgCGoe8DvlY2bO0b0Spx6JhW0NeO1c3qNaH fF7wcETE6VLr1WYGz1sOp/YiyroaSjg+WDqrrvbbG4nu1lmp6yszuPp88F0cBPKO E/3DlQgrY5Qj1a0hkEc1r//U1X8ATkn4zR0PAAAAAA8d