NetLogo에서 "소셜 네트워크"를 구성하려고합니다. 링크로 연결된 여러 연령대의 사람들로 구성된 그룹입니다.다른 유형의 연결된 NetLogo 에이전트의 소셜 네트워크 만들기
NetLogo 구문의 일부분을 아직 완전히 익히지 않았기 때문에 함께 사용하는 데 문제가 있습니다. 나는 지난 주에 내 코드에서 품종 만 사용하기 시작했으나 아직 완전히 완성하지 못했습니다. 또는 나는 그들을 복잡하게 끝났습니다. 확실하지 않습니다.
관련 코드는 해당 기능이 "네트워크 생성"이라는 것과 관련하여 아래에 있습니다. 각 유형의 다른 에이전트를 일정량 연결 (각 에이전트가 가득 차 있지 않은 경우)하려면 각 에이전트 (총 약 800 개가 있음)에게 문의해야합니다. 거북이가 번식 유아의 경우 예를 들어 총 10 개의 링크가 있고 그 중 5 개는 다른 유아, 2 개는 어린이, 2 개는 성인, 1 ~ 45는 1 개의 링크입니다. 첫 번째 노드가 유아이고 성인과 연결하는 경우 성인 노드가 연결하려고 시도하는 유아의 수를 감축해야합니다.
현재 거북이에게 어떤 품종인지 묻는 법을 배울 수 없으므로 올바른 품종에 연결할 수 있습니다. 누군가가 나를 도울 수 있다면 나는 미친 듯이 감사 할 것입니다. 이것은 코드의 작은 부분 일 뿐이지 만, 지금 나를 미치게 만들었습니다.
내가 시도 할 때마다 오류가 발생하고 모든 아이디어와 의지가 살아납니다. 시간 내 미리 감사드립니다. 당신은 더 나은 알고리즘에 대한 어떤 생각을 가지고 있지만 내가 또한 기능 요원 사이에 "일시 중지"링크를 할 수 있을지 궁금하네요 너무
breed [toddlers toddler]
breed [children child]
breed [adults adult]
breed [over45s over45]
globals
[
num-nodes
]
toddlers-own
[
tod-total-connections
tod-tods
tod-children
tod-adults
tod-over45s
]
children-own
[
child-total-connections
child-tods
child-children
child-adults
child-over45s
]
adults-own
[
adult-total-connections
adult-tods
adult-children
adult-adults
adult-over45s
]
over45s-own
[
over45-total-connections
over45-tods
over45-children
over45-adults
over45-over45s
]
to generate
clear-all
create-toddlers num-toddlers
create-children num-children
create-adults num-adults
create-over45s num-over45
create-network
setup
reset-ticks
end
to setup
ask turtles
[reset-node]
ask links
[set color gray + 1.5]
ask adults
[set shape "circle"
set size 4]
ask toddlers
[set shape "face happy"
set size 4]
ask over45s
[set shape "triangle"
set size 4]
;;INITIALISE BREEDS
;;Initialise Toddlers
ask toddlers [set total-connections 10]
ask toddlers [set tod-tods 5]
ask toddlers [set tod-children 2]
ask toddlers [set tod-adults 2]
ask toddlers [set tod-over45s 1]
;;Initialise Children
ask children [set total-connections 17]
ask children [set child-tods 3]
ask children [set child-children 8]
ask children [set child-adults 5]
ask children [set child-over45s 1]
;;Initialise Adults
ask adults [set total-connections 13]
ask adults [set adult-tods 1]
ask adults [set adult-children 3]
ask adults [set adult-adults 6]
ask adults [set adult-over45s 3]
;;Initialise Over45s
ask over45s [set total-connections 12]
ask over45s [set over45-tods 1]
ask over45s [set over45-children 1]
ask over45s [set over45-adults 5]
ask over45s [set over45-over45s 5]
;; Layout turtles:
layout-circle (sort turtles) max-pxcor - 8
ask turtles
[
facexy 0 0
if who mod 2 = 0 [fd 4]
]
display
end
;; THIS IS THE PROBLEM FUNCTION
to create-network
let q 0
let n 0
while [q < count turtles]
[
let m 1
while [m < count turtles]
[
make-link-between turtle n
turtle ((n + m) mod count turtles)
set m m + 1
;;results in a fully connected network which I don't want
]
set n n + 1
set q q + 1
]
end
;; connects the two nodes
to make-link-between [node1 node2]
ask node1 [
create-link-with node2
[ set color gray + 1.5]
]
end
매우 환영받을 코드없는 경우에도 마찬가지입니다. 예를 들어 어린이들 사이의 링크를 모두 끄거나 끈다. 나는 링크가 타이 모드 속성을 가지고 있지만 이것이 이것을 할 수 있는지 확신하지 못한다. 내가 읽은 바로는 움직이는 요원들을 함께 모으는 것에 관한 것 같습니다. 링크를 해제하는 방법으로 untie를 사용할 수도 있지만 아직 링크를 해제 할 수 있습니까?
편집 : 링크 숨기기가 더 적절할 수 있습니다. 다음 일이 어떻게 올바른 링크를 숨기는 것입니다
http://groups.yahoo.com/group/netlogo-users/message/17116에서도이 질문을했습니다. 두 곳에서 질문을하면 (netlogo 사용자와 여기), 두 장소에서 모두 그렇게 말하면 예의 바르게 처리되므로 사람들은 이미 다른 장소에서 대답 된 한 곳에서 무언가에 답하는 노력을 낭비하지 않습니다. –
죄송 합니다만, 그 당시에 양쪽에 게시하는 것은 내 의도가 아니 었습니다. 나는 처음으로 야후 그룹에 올렸지 만 그룹에 게시하지 않는 대신 여기에 왔습니다. 그런 다음 나중에 야후 그룹에 게시되었음을 알게되었습니다. 나는 그것을 염두에두고 있습니다. – Steve