Copy the link breed variable in the patch below

无人久伴 提交于 2019-12-25 00:21:39

问题


I have a network of nodes and links. This figure

is a capture of the world. The graph represents streets of a city. I have imported a shapefile with the gis extension. The gray lines are links, black dots are nodes and red dots represent people. The people move heading to the next node. In a street corner, the red dot chooses next street by examining the variable popularity owned by the link.

The links breed has a variable, popularity, whose value I would like to copy in the patches that are below.

If I try, for example, something like this to access patches under links will produce an error

ask links [show [(list pxcor pycor)] of patch-here]

Another approach can be to access links variable popularity from patches, but I do not know how to do it.

The reason why I want this is because I want to write in a file a matrix of popularity values and its position in the matrix should correspond with the position of the link in the world. Thus, the patches below the links would give me the matrix form. I have a procedure that for each patch writes the value of the patch in a file. However, I do not know how to pass the popularityvalue from the link to the patch below it.

Is there any way to copy a link owned variable to its patch?

Regards


回答1:


If someone has a better way of doing this (or can simplify my code), feel free. Here is a complete working example. Copy it into an empty NetLogo model and run it to see it work.

The setup procedure just creates some nodes and links with appropriate test values and then calls the transfer-link-values procedure, which does what I think you want. The setup procedure then puts the values into the patch labels to display them and see the results.

The way the transfer-link-values procedure works is to create a turtle at one end of the link, and that turtle moves toward the other end of the link transferring the value as it goes. When it gets to the other end, the turtle dies.

patches-own [patch-popularity]
links-own [link-popularity]

to setup
  clear-all
  create-turtles 10 [ setxy random-xcor random-ycor]
  while [ any? turtles with [not any? my-links] ]
  [ let to-pair turtles with [not any? my-links]
    let thisNode one-of to-pair
    ask thisNode
    [ create-link-with one-of other to-pair
      [ set link-popularity 5 + random 5 ]
    ]
  ]

  transfer-link-values
  ask patches [ if patch-popularity != 0 [set plabel patch-popularity ] ]
end

to transfer-link-values
  ask links
  [ let start-node one-of both-ends
    let this-link self
    let end-node nobody
    ask start-node [ set end-node [other-end] of this-link ]
    let transfer-value link-popularity
    ask start-node
    [ hatch 1
      [ face end-node
        if transfer-value > patch-popularity
          [ ask patch-here [ set patch-popularity transfer-value ] ]
        while [ not member? end-node turtles-here ]
        [ forward 1
          if transfer-value > patch-popularity
            [ ask patch-here [ set patch-popularity transfer-value ] ]
        ]
        if transfer-value > patch-popularity
            [ ask patch-here [ set patch-popularity transfer-value ] ]
        die
      ]
    ]
  ]
end


来源:https://stackoverflow.com/questions/49565308/copy-the-link-breed-variable-in-the-patch-below

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!