Я пытаюсь создать сеть, которая движется в окружающей среде как «статическая» единица, т.е. ничего в симуляции не меняется, кроме положения и ориентации целого, положения и ориентации отдельных черепах относительно друг друга.фиксируется по их ссылкам.Черепахи связаны через ненаправленные ссылки, которые связаны и установлены в режим связи «исправлено».
Проблема в том, что в определенных ситуациях ссылки не могут оставаться фиксированными, и длина ссылок начинает меняться.Первоначально я заметил, что, когда средняя степень сети относительно низкая или сеть представляет собой полный граф, примитив связи работает.Однако, когда ссылки были созданы для создания графика, который умеренно связан, длина ссылок между черепахами начинает меняться.После дальнейших экспериментов я могу создать сеть с тем же количеством ссылок и черепах, но с разными конфигурациями, то есть структура сети различна, которая иногда поддерживает позиции и длины линий, но в других ситуациях это не удается сделать.
Как я могу заставить сеть двигаться как единое целое, независимо от того, как подключена сеть или какова конфигурация сети?Посмотрите пример кода ниже, я добавил код в конце, где вы можете запустить несколько конфигураций сети с 6 черепахами и 6 ссылками, чтобы увидеть проблему самостоятельно, попробуйте выполнить по крайней мере полдюжины итераций.Спасибо!
это создает сеть, которая перемещается как единое целое.
to setup
create-turtles 10
ask turtles [fd 2]
ask turtles [create-links-with other turtles [tie] ]
ask links [set tie-mode "fixed"]
reset-ticks
create-turtles 10
ask turtles [fd 2]
ask turtles [create-links-with other turtles [tie] ]
ask links [set tie-mode "fixed"]
reset-ticks
end
to go
ask turtles [lt 1 fd 1]
end
Это создает сеть, чьи ссылки все еще связаны и установлены в "фиксированный" режим связи, но меняются их ссылки.длины.Чем больше ссылок умирает, тем больше изменяется длина ссылки.
to setup
clear-all
create-turtles 10
ask turtles [fd 2]
ask turtles [create-links-with other turtles [tie] ]
ask links [set tie-mode "fixed"]
ask one-of links [die]
reset-ticks
end
to go
ask turtles [lt 1 fd 1]
end
Вот дополнительный код, показывающий конкретный случай изменения длины ссылки.Пожалуйста, введите seed 659269695 при появлении запроса на кнопку «use-seed-from-user».Извиняюсь, если код неуклюжий, впервые используя random-seed.Кнопка «Длина печати» служит для подтверждения изменения длины.
;USE seed: 659269695
to use-new-seed
let my-seed new-seed ;; generate a new seed
output-print word "Generated seed: " my-seed ;; print it out
random-seed my-seed ;; use the new seed
reset-ticks
end
;; Use a seed entered by the user
to use-seed-from-user
loop [
let my-seed user-input "Enter a random seed (an integer):"
carefully [ set my-seed read-from-string my-seed ] [ ]
ifelse is-number? my-seed and round my-seed = my-seed [
random-seed my-seed ;; use the new seed
output-print word "User-entered seed: " my-seed ;; print it out
reset-ticks
stop
] [
user-message "Please enter an integer."
]
]
end
to setup
clear-all
create-turtles 6
ask turtles [
fd 5
set shape "circle"
set size 1
set color yellow
if count links < 7 [ask one-of turtles [create-link-with one-of other turtles
[tie]]]]
reset-ticks
end
to go
ask turtles [lt 1 fd 1]
end
to print-lengths
print sort-by < [precision link-length 2] of links
end