Abhishek Bhatia
Abhishek Bhatia

Reputation: 9796

Creating overlapping agents in a line

Using the below code I get agents are like this: Normal-view enter image description here

  to setup
          ask breadth-patches [sprout-walls wall-agents[set color 2]]
          ask length-patches [sprout-walls wall-agents[set color 2]]
          ask gap-patches [sprout-walls wall-agents[set color 2]]
          ask length-patches[align-inside-at-top]
          ask breadth-patches [align-inside-at-right-left]
          ask gap-patches[align-inside-at-top]
        end


to align-inside-at-top  ;; patch procedure
  let counter count walls-here ;; we will use this as a count-down, after using it in some calculations
  if counter > 0                 ;; could assume there are turtles, but we are not.
    [ let gap1 1 / counter          ;; size of turtles, gap between turtles
      let half-gap gap1 / 2         ;; half-size of turtles
      let ytop 0
      if-else(pycor < 0)[set ytop  pycor - .5 - half-gap]
      [set ytop  pycor + .5 - half-gap]
      let xleft pxcor - .5 - half-gap
      ask walls-here
      [ set size gap1       
        set ycor ytop
        set xcor xleft + gap1 * counter
        set counter counter - 1    ;; so we're placing them from right to left
                                   ; set ycor ycor + 0.125
      ]
    ]
end

to align-inside-at-right-left  ;; patch procedure
  let counter count turtles-here ;; we will use this as a count-down, after using it in some calculations
  if counter > 0                 ;; could assume there are turtles, but we are not.
    [ let gap1 1 / counter          ;; size of turtles, gap between turtles
      let half-gap gap1 / 2         ;; half-size of turtles
      let ytop  pycor + .5 +  half-gap
      let xleft 0
      if-else (pxcor < 0)[
        set xleft pxcor + .5 - half-gap]
      [     set xleft pxcor - .5 + half-gap
      ]
      ask  turtles-here
      [ set size gap1
        set ycor ytop - gap1 * counter
        set xcor xleft ;+ gap * counter
        set counter counter - 1    ;; so we're placing them from right to left
      ]
    ]
end

Note: The gap in the rectangle is due to the following code

 ask patches  with [pxcor > (gap * (-1)) and pxcor < gap and pycor =(breadthrec - 1)][ask walls-here[die]] 

Here, gap = 1 ,i.e, a width of 1 patch.

So the input parameter is the wall-agents which specifies the number of agents to created per patch along the length and breadth patches. I wish to change to create overlapping agents as in the figure below(Sorry the figure is not so perfect, but I hope it explains it). Please help on how to achieve this. enter image description here

Upvotes: 0

Views: 107

Answers (1)

Seth Tisue
Seth Tisue

Reputation: 30453

This is a lot of code to ask anybody to debug for you.

I would suggest solving a simpler version of the problem first. Do you have code that can create wall-agents turtles in a single patch, evenly spaced along a line? Once you had a working code that did that, then you could attempt to generalize it to your more complex problem.

If you run into trouble writing that simpler version, you'll have a smaller question to ask here on Stack Overflow that will be much easier for someone to answer than your current, very large question.

If you are able to write the simpler version, don't throw it away — keep it, so you can go back to it if you need to. Then tackle the bigger problem.

You might even be able to take the simpler version, put it into a procedure, and then call that procedure from your larger solution. Making small procedures that work, and then calling those smaller procedures from other ones, is often a good way to break a problem down into manageable parts.

Upvotes: 1

Related Questions