Ok My 2c is going to go up to a quarter. Having discussed this a little more with a colleague, we realized that a sequential approach may not work so well, because in a finite region so many configurations would be inadmissible and and you would have to reject the whole thing, unless the density of disks is sparse. So this really is a yucky problem.
Nicholas On Fri, 28 May 2010 08:51 -0700, "Nicholas Lewin-Koh" <ni...@hailmail.net> wrote: > Hi, > I don't think the code exists, but I think that there are modifications > of the > algorithm Rolf described that may be much faster. I assume the > predetermined > set of marks is a set of distinct classes with different radii. > One thing that comes to mind is you may want to generate the marks first > and > then assign locations. So if you allocate the largest radii first, you > may be able to > sequentially eliminate whole regions of the space where the next disk > could be allocated > using a quad tree, and there by do fewer rejections of locations. There > may be some > divide and conquer type strategies that work as well. > > Thinking about this more, it seems like the most time consuming step > would be the > acceptance/rejection of new locations because of the search for adjacent > intersecting discs. > So as the plane fills up there will be more and more rejections, and the > search time will increase. > In fact for a finite area, there will be an upper bound on the number of > points depending on > the distribution of marks. Which suggest that one would want to first > generate the marks, and check that the > sum of the disks is less than the total area of your region. > > So as I am musing here, and probably getting less and less helpful, I am > thinking that > using the delaunay triangulation or the nearest neighbor graph might > help speed up the search. > I am also wondering if one could condition on the existing points more > efficiently, may > be using some sort of metropolis hastings type algorithm to ensure that > the next draw > is closer to the restricted space available. I am even guessing there > may be some percolation > model that would approximate this process and be faster to generate. > > Ok used up my 2c. Hope this helps > > Nicholas > > > > > > Date: Fri, 28 May 2010 10:00:35 +1200 > > From: Rolf Turner <r.tur...@auckland.ac.nz> > > To: Quets Jan <jan.qu...@ua.ac.be> > > Cc: "r-sig-geo@stat.math.ethz.ch" <r-sig-geo@stat.math.ethz.ch> > > Subject: Re: [R-sig-Geo] existance of a specific non-overlapping > > marked spatial model in spatstat or other R package? > > Message-ID: <b9268b92-b6f4-420c-af04-eee1da182...@auckland.ac.nz> > > Content-Type: text/plain; charset="us-ascii" > > > > > > On 28/05/2010, at 8:53 AM, Quets Jan wrote: > > > > > > > > Hi, > > > > > > I am looking for a specific non-overlapping marked spatial model for use > > > as a null model for monte carle simulations with use of the 'envelope' > > > function in spatstat. > > > > > > the specific marked spatial model should: > > > ----------------- > > > *generate a spatial random pattern with a predetermined number of points > > > (with conditions set below) > > > > > > *each point should be assigned a mark randomly out of a predetermined set > > > of marks > > > > > > *these marks represent the radia of circular discs which should be drawn > > > around these points (which act as centres) > > > > > > *no discs should overlap > > > ----------------- > > > > > > Does anybody has knowledge of a such a built in model in spatstat or > > > another R package? > > > > > > For now, I have built this model by myself, but it turns out to have a > > > very time-consuming running time, especially when used as a null model in > > > a monte carlo simulation. Also I have multiple monte carlo simulations to > > > perform. > > > > > > It will be of great help, > > > > The only way I can think of doing this is sequentially. I.e. select a > > radius, > > then repetitively select a point to add, rejecting the selected point if > > its > > circle (with the chosen radius) intersects any of the existing circles. > > If > > after ``giveup'' attempts the function has failed to find an acceptable > > point, > > it gives up (and throws an error). > > > > I cobbled together some code to effect this; it took one minute of user > > time > > to do 100 replications of choosing 100 points with non-overlapping > > circles > > in the unit square, with the radii selected uniform-randomly from > > (1:5)/100 > > and giveup=1000. > > > > I believe that it would require a lot of work and great cleverness to get > > anything substantially faster. Of course, I could be wrong --- I was > > once, > > back in 1968 when I thought I'd made a mistake and I hadn't. :-) > > > > cheers, > > > > Rolf Turner > > > > P. S. Let me know if you want my code. I suspect it's not much > > different > > from what you have built yourself. > > > > R. > > ###################################################################### > > Attention: > > This e-mail message is privileged and confidential. If you are not the > > intended recipient please delete the message and notify the sender. > > Any views or opinions presented are solely those of the author. > > > > This e-mail has been scanned and cleared by MailMarshal > > www.marshalsoftware.com > > ###################################################################### > > > > > > _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo