|
5.1 Space-Filling Designs
At this point an analogy may be helpful to explain the coverage criterion. Suppose that you are charged with locating a fixed number of convenience stores in a city. Given a particular set of store locations each resident will have a store that is closest to their home. Out of all the residents, find the one who is the farthest to their nearest store. This is the maximum over the nearest neighbor distances and a good design for the stores makes this criterion as small as possible. In words, one seeks to minimize the distance the residents must travel to their closest convenience store. The result is referred to as the minimax design. The cover.design function has two approximations. The minimax criterion is approximated by a smoother criterion based on L_p norms. These are the P and Q arguments in the call. The defaults P=Q=32 appear to yield a good approximation to the minimax designs. The other approximation is that the coverage criterion is minimized by updating one design point at a time. For each design point one checks whether a swap with a candidate point will yield a smaller coverage criterion. If such a swap is found the swap is made: the new point is adopted as part of the design and the old design point is moved into the candidate set. This process continues until no more productive swaps can be made or the number of iterations is exceeded. This algorithm is not guaranteed to give a global minimum and so one may not obtain the optimal design solution. However, we have found this algorithm to give useful designs even if they are not the global minimizer. In general, the global minimum is difficult to find and has questionable added value over good approximate solutions. There are several important features of the cover.design function related to the algorithm for finding the design. One can fix some points in the design. These are simply points that are not allowed to be swapped out. This is useful if one wants to build up a sequence of designs of increasing size with the smaller designs being subsets of the larger ones. The default is to use Euclidean metric to measure distance between points. Any S function that is a metric can be substituted for this choice. See the help file for an example. Finally the swapping algorithm may only consider swapping candidate points that are near neighbors of the design point. This is helpful when the candidate set is large. Here is a simple example to thin out a random set of 2-d locations and shows how the fixed point option works. Create 200 locations uniformly distributed in the unit square. set.seed( 123) cand <- matrix( runif( 200*2), ncol=2) Now find a coverage design of 10 points cover.design(cand, 10)-> design10 The component design10$design is the best design and design10$best.id gives the row numbers of the candidate set matrix that comprise the best design. Check it out plot( design10) summary( design10) Now add 20 more points for a total of 30 cover.design( cand, 30, fixed=design$best.id) Here is what happened: plot( cand, pch=".") points( design10$design, pch="x", col=2) points( design30$design, pch="o", col=3) |