Netlogo: Може ли Netlogo да настрои безкраен брой костенурки само за една конкретна корекция?

Може ли Netlogo да настрои безкраен брой костенурки само за една конкретна корекция? И кръпката е настройка на пътя. Тази връзка е изображението на тази конкретна корекция. https://i.stack.imgur.com/DdBF0.jpg И следното е примерният код. Това обаче не е завършено.

turtles-at 0 0 of patch min-pxcor 0 ; this is not compleated

person goodgest    schedule 26.07.2017    source източник
comment
Може ли малко повече подробности? Костенурките не заемат място, така че толкова, колкото са ви необходими, могат да се поберат на един пластир, но какво точно се опитвате да направите?   -  person Luke C    schedule 26.07.2017
comment
Съжалявам, най-добрият, все още не разбирам действителния проблем с кода - ако отговорът на Bryan не стигне до това, което се опитвате да направите, преструвайте се, че не знам нищо за теорията на опашките (или, не се преструвайте – наистина не го правя) и преформулирайте въпроса. Освен това @Alan е прав да посочи, че имате около 14 въпроса, за които не сте приели отговор (като щракнете върху отметката). Трябва да направите това, за да посочите, че на въпроса е отговорено успешно и така че бъдещите потребители с подобни въпроси да знаят дали решението е проработило.   -  person Luke C    schedule 26.07.2017
comment
@ Luke C Моделът, който имам, е по подразбиране настройка на пътя. Следователно изглежда, че само една костенурка може да бъде поставена в един пластир. Искам да задам кръпка, която е безкраен брой костенурки, които ще поставят в една конкретна кръпка (координатите са (0, 0)), като изображението. Бих искал да знам как да настроя корекцията да съдържа безкраен брой костенурки. Тази информация не беше написана никъде.   -  person goodgest    schedule 27.07.2017


Отговори (2)


Според отговора на Bryan, няма теоретично ограничение за броя на костенурките в един пач, въпреки че вашият компютър ще има ограничение – колкото повече костенурки във вашия модел (на който и да е пластир), толкова повече памет имате моделът ще използва. Така че краткият отговор е, доколкото ми е известно, няма начин просто да кажете на Netlogo: „Създай безкрайни костенурки на този пластир“.

Ако обаче с безкрайност наистина просто искате достатъчно костенурки, които да не ви свършат за конкретни взаимодействия, вероятно бихте могли да се справите или просто като хвърлите голям брой на тази кръпка, или просто като покълнете повече, ако е необходимо (мое предпочитание ).

За първия вариант можете да имате куп костенурки на един и същи пластир:

to setup
  ca
  reset-ticks
  ask patch 0 0 [
    sprout 10000
  ]
  ask patch 0 0 [
    print count turtles-here
  ]
end

Като алтернатива, ако вашите костенурки на пластира се изразходват или станат недостъпни по някакъв начин, просто дайте повече кълнове, колкото е необходимо, за да поддържате броя си достатъчно висок за това, което се опитвате да направите. Ето пример, в който червени костенурки отиват до петно ​​с "безкрайни" (1000) сини костенурки, свързват се с една от сините костенурки и ги отвеждат. Въпреки това, в края на всеки тик, "безкрайният" пач проверява дали има по-малко от 1000 turtles-here. Ако има, той ражда достатъчно костенурки, за да върне този брой обратно до 1000. Опитайте този код в нов файл:

to setup
  ca
  reset-ticks
  infinite-sprout
  source-sprout

end

to go

  ask turtles with [ color = red ] [
    fd 0.5
    if any? ( turtles-on patch-ahead 1 ) with [ color = blue ] [
      create-link-with one-of turtles-on patch-ahead 1 [
        tie
      ]        
      set color green        
    ]
  ]
  ask turtles with [color = green] [
    move-to patch-right-and-ahead 90 1
    if pycor = max-pycor [
      ask link-neighbors [ 
        die
      ]
      die
    ]
  ]

  infinite-sprout
  source-sprout
  tick

end


to source-sprout
  ask patch max-pxcor 0 [
    if not any? turtles-here and random 3 = 1 [
      sprout 1 [
        set shape "arrow"
        set color red
        set heading 270
      ]
    ]
  ]
end

to infinite-sprout
  ask patch 0 0 [
    if count turtles-here < 1000 [
      sprout ( 1000 - count turtles-here) [
        set shape "circle"
        set color blue
      ]
    ]
  ]
end

След това настройте интерфейса си по следния начин: въведете описание на изображението тук

Ако стартирате този модел за известно време, ще видите, че в края на всеки тик, count turtles на пач 0 0 се връща обратно до 1000, което на практика ви дава безкраен източник на костенурки, които можете да „използвате“. Това постига ли това, от което се нуждаете?

person Luke C    schedule 27.07.2017
comment
благодаря ти за съвета Отнема малко време, но ще го тествам с примерната програма. Имам нужда от данни за 1000 костенурки в един график. Така че ще добавя стоп синтаксис, за да отпечатам срива на компютъра. Благодаря ти много! - person goodgest; 27.07.2017

Не съм съвсем сигурен какво питате, но няма ограничение за броя на костенурките, които могат да бъдат върху кръпка (с изключение на ограничението, наложено от паметта на вашия компютър).

Освен това кодът, който вероятно търсите, е нещо като:

turtles-on patch 0 0

за левия пластир и

turtles-on patch 1 0

за правилния пластир.

person Bryan Head    schedule 26.07.2017