K. Crawford
K. Crawford

Reputation: 23

netlogo: have patches calculate influence value using reporter

I'm modeling a cityscape for looking at movement, where patches equate to buildings and have different influence values. I need to use a reporter function that calculates the value of each patch with something like:

 (its own influence) plus (the influence of neighbors) divided by the 
 distance to a specific turtle (max-one-of distance myself) 

The turtle will then move towards the patch with the highest influence value, but along a defined street.

I'm new to using netlogo and have gotten completely stuck.

I've included a portion of what I have so far, but I can't figure out how to write the reporter function that will compute each patches influence value (in-cone) so that the turtles can then move towards the best option.

to setup-influence-field
  ask patches with [pcolor = green] [set influence commercial-influence]
  ask patches with [pcolor = orange] [set influence production-influence]
  ask patches with [pcolor = yellow] [set influence domestic-influence]
  ask patches with [pcolor = pink] [set influence religious-influence]
  ask patches with [pcolor = blue] [set influence public-influence]
end

to go
  move-serapis
end

to move-serapis
  ask serapis [set-procession-heading]   
  repeat 2 [ ask serapis [ fd .25 ] display ]
  tick
end

;;;;; the reporter values are need for this part of the code so that the turtles (serapis) can move towards the patches with the highest influence value;;;;
   to set-procession-heading
      let direction patches in-cone 4 40 with [influence-field > 0]
      if any? influence-field   
          [face max-one-of influence-field] ;;;; face towards the highest computed influence value 
      ifelse any? patches with [pcolor = black] in-cone 1 25
      [process]
    end

Any help would be greatly appreciated!

Upvotes: 0

Views: 140

Answers (1)

JenB
JenB

Reputation: 17678

I don't think this is completely correct and I can't test it, but it should start you off and maybe someone here can fix it if you let us know the errors.

to set-procession-heading
  let direction-targets patches in-cone 4 40 with [influence-field > 0]
  if any? direction-targets   
  [ face max-one-of direction-targets [ influence-amount self ] ]
end

to-report influence-amount [ target-node ]
  report ( [ influence-field ] + sum [ influence-field] of neighbors ) / distance target-node 
end

What I have done is set up a separate procedure to report the results of your calculation. That procedure takes an argument (named target-node) because you need to be able to pass the identity of the turtle being influenced. Once you have that procedure, then you can simply pass the agent-set of potential directions to the calculation procedure and pick the one with the largest value.

Upvotes: 1

Related Questions