NetLogo примеры

Материал из Letopisi.Ru — «Время вернуться домой»
(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 2: Строка 2:
  
 
<nowiki>
 
<nowiki>
Обращение к группе агентов (агенству)
+
Обращение к группе агентов (агенству)
ask patches [set pcolor pxcor]
+
ask patches [set pcolor pxcor]
  
ask patches [set pcolor (pcolor - 1)]     
+
ask patches [set pcolor (pcolor - 1)]     
  
Группа агентов, обладающих неким общим свойством
+
Группа агентов, обладающих неким общим свойством
ask turtles with [ycor > 0] [ fd 0.1 ]
+
ask turtles with [ycor > 0] [ fd 0.1 ]
 
+
Создание новых пород
+
  
 +
Создание новых пород
 
breeds [ boys girls ]
 
breeds [ boys girls ]
 
set-default-shape boys "boy-shape"
 
set-default-shape boys "boy-shape"

Версия 07:37, 14 февраля 2006

NetLogo в примерах и пояснениях на русском языке

Обращение к группе агентов (агенству) ask patches [set pcolor pxcor] ask patches [set pcolor (pcolor - 1)] Группа агентов, обладающих неким общим свойством ask turtles with [ycor > 0] [ fd 0.1 ] Создание новых пород breeds [ boys girls ] set-default-shape boys "boy-shape" create-boys boys-num to move-boys ask boys [fd 1] end to kill-boys ask boys [die] end -- IF if (color = red) [set pcolor black] IFELSE Использование равновероятных событий: ask turtles [ ifelse random 2 = 0 [set color yellow] [set color red] ] --- Случайный выбор одного из группы агентов: set message?-of random-one-of turtles true -- Пример на hatch – черепашка рождает новую и передает ей список команд к выполнению. Новая черепаха – той же породы to reproduce if (color = pink and random 5 = 0) [ hatch 1 [if random 10 > 0 [set color blue] set age 0] ] end -- Пример на sprout – пятно рождает черепашку и передает ей список команд ask random-n-of 200 (patches with [pcolor = black]) [ sprout 1 [ set color red ]] 200 случайных пятен среди тех, кто черного цвета рождают черепах -- Пример с соседними пятнами to paint-agents [agents] ask agents [ set pcolor color-of myself - 2 ] end to paint-in-radius clear-patches ask turtles [ paint-agents patches in-radius radius ] end Или to paint-neighbors4 clear-patches ask turtles [ paint-agents neighbors4 ] end -- Пример на myself to cluster locals [ closest-turtle ] set closest-turtle min-one-of turtles with [self != myself] [distance myself] set heading towards closest-turtle rt random-float 20 lt random-float 20 fd 1 end Нашли ближайшую черепашку и сдвинулись в ее направлении. Distance интересно используется. --- Обмен сообшениями с другими черепахами: turtles-own [message? other-turtle] to communicate ;;a turtle procedure set other-turtle random-one-of other-turtles-here ; get the ID of another turtle on your patch if(other-turtle != nobody) [if message?-of other-turtle [set message? true] ] end Другая черепаха выбирается из списка черепах в данной точке. Если есть эта другая черепаха и у нее есть сообщение, то и наша черепаха теперь имеет это сообщение. (Можно еще поиграться с текстом этого сообщения). Внимания заслуживает использование message?-of – message? Глобальная переменная свойственная черепашке. Может быть true or false -- Рисование стенок, отгораживающих пространство: to draw-walls ask patches with [abs pxcor = screen-edge-x] [ set pcolor blue ] ; право и лево ask patches with [abs pycor = screen-edge-y] [ set pcolor blue ] ; верх и низ end Отражение от стенок: to bounce ;; для черепашки if (abs pxcor-of patch-ahead 1 = screen-edge-x) [ set heading (- heading) ] if (abs pycor-of patch-ahead 1 = screen-edge-y) [ set heading (180 - heading) ] end Очень полезное и новое для Лого свойство – можно не лезть самому на стенку, а проверить свойства пятна впереди себя по ходу движения. (Сразу захотелось использовать в построении общего продукта, когда черепашки не только растят свой контент перед собой, но и проверяют связи с другим контентом и если он совпадает, то вяжут его со своим). --- Сходный пример на обход пятен голубого цвета ask turtles [ ifelse pcolor-of patch-ahead 1 = blue [ lt random-float 360 ] [ fd 1 ] ] (Может пригодиться при игре с GPS черепахами на карте.) -- Сходный пример на обход других черепах to go-if-empty-ahead ifelse not any? (turtles-on patch-ahead 1) with [self != myself] [ fd 1 ] [ rt random-float 360 ] end (Может пригодиться при игре с GPS черепахами на карте – нужно прописать общую версию в виде: to go-if-empty-ahead-and-color-good ifelse (not any? (turtles-on patch-ahead 1) with [self != myself]) AND (pcolor-of patch-ahead 1 = black) [ fd 1 ] [ rt random-float 360 ] end Пример на движение с While to go-until-empty-here fd 1 while [any? other-turtles-here][ fd 1 ] end -- Пример на поиск партнера ask turtles [ without-interruption [ if (partner = nobody) and (any? other-turtles-here with [partner = nobody]) [ set partner random-one-of other-turtles-here with [partner = nobody] set color red set partner-of partner self ; мы помечаем сразу пару партнеров - ВАЖНО set color-of partner red ] ] --- Примеры на координаты: to scatter1 ask turtles [setxy random-float screen-size-x random-float screen-size-y] end to scatter2 ask turtles [rt random-float 360 jump random-float screen-edge-x] end --- -- Пример на построение гистограмм to setup ca crt 500 setup-plot do-plot end to setup-plot set-current-plot "X Coordinates" set-plot-x-range (- screen-edge-x) screen-edge-x set-plot-y-range 0 count turtles set-histogram-num-bars 7 end to do-plot histogram-from turtles [ xcor ] ; using the default plot pen end -- Все объекты внутри среды описаны как строки текста. Т.е. модель передается как текст. @#$#@#$#@ default true 0 Polygon -7566196 true true 150 5 40 250 150 205 260 250 Или person false 0 Circle -7566196 true true 155 20 63 Rectangle -7566196 true true 158 79 217 164 Polygon -7566196 true true 158 81 110 129 131 143 158 109 165 110 Polygon -7566196 true true 216 83 267 123 248 143 215 107 Polygon -7566196 true true 167 163 145 234 183 234 183 163 Polygon -7566196 true true 195 163 195 233 227 233 206 159

Инструменты