optimPPL(points, candi, iterations = 100, lags = 7,
lags.type = "exponential", lags.base = 2, cutoff,
criterion = "distribution", distri, pairs = FALSE, x.max, x.min, y.max,
y.min, acceptance = list(initial = 0.99, cooling = iterations/10),
stopping = list(max.count = iterations/10), plotit = FALSE,
track = FALSE, boundary, progress = TRUE, verbose = FALSE,
greedy = FALSE, weights = NULL, nadir = NULL, utopia = NULL)objPPL(points, candi, lags = 7, lags.type = "exponential", lags.base = 2,
cutoff, distri, criterion = "distribution", pairs = FALSE, x.max, x.min,
y.max, y.min)
countPPL(points, candi, lags = 7, lags.type = "exponential",
lags.base = 2, cutoff, pairs = FALSE, x.max, x.min, y.max, y.min)
points
is an integer value, it defines the number of points that
should be randomly sampled from candi
to form the starting system
configuration. If points
is acandi
must have two columns in the following
order: [, "x"]
the projected x-coordinates, and [, "y"]
the
projected y-coordinates.iterations = 100
.lags = 7
."equidistant"
and "exponential"
. Defaults to
lags.type = "exponential"
.lags.type = "exponential"
. Defaults to lags.base = 2
.lags
is an integer value."minimum"
and
"distribution"
. Defaults to objective = "distribution"
.criterion = "distribution"
. Defaults to a uniform
distribution.pairs = FALSE
.initial
--
numeric value between 0 and 1 defining the initial acceptance probability,
and cooling
-- a numeric value defining the exponential factor by
which the acceptance probability decreasesmax.count
--
integer value defining the maximum allowable number of iterations without
improvement of the objective function value. Defaults to
stopping = list(max.count = iterations / 10)
.track = FALSE
(the default), only the starting and ending energy state
values are returned with the result.candi
.progress = TRUE
.verbose = FALSE
.greedy = FALSE
. (experimental)sim
-- the number of simulations that should be used to estimate
the nadir point, and seeds
-- vector defining the random seeds for
each simulation; 2) user
user
-- a list of user-defined values named after the respective
objective function to which they apply; 2) abs
-- logical for
calculating the utopia point internally (optimPPL
returns a matrix: the optimized sample configuration.objPPL
returns a numeric value: the energy state of the sample
configuration - the objective function value.
countPPL
returns a data.frame with three columns: a) the lower and b)
upper limits of each lag-distance class, and c) the number of points or
point-pairs per lag-distance class.
The second method consists of using a finite set of candidate
locations for the perturbed points. A finite set of candidate locations is
created by discretizing the spatial domain, that is, creating a fine grid of
points that serve as candidate locations for the perturbed points. This is
the only method currently implemented in the
Using a finite set of candidate locations has one important inconvenience.
When a point is selected to be jittered, it may be that the new location
already is occupied by another point. If this happens, another location is
iteratively sought for as many times as there are points in points
.
Because the more points there are in points
, the more likely it is
that the new location already is occupied by another point. If a solution is
not found, the point selected to be jittered point is kept in its original
location.
A more elegant method can be defined using a finite set of candidate
locations coupled with a form of two-stage random sampling as
implemented in spsample
. Because the candidate
locations are placed on a finite regular grid, they can be seen as being the
centre nodes of a finite set of grid cells (or pixels of a raster image). In
the first stage, one of the
The weighted sum method is affected by the relative magnitude of the
different function values. The objective functions implemented in the
A solution to avoid the numerical dominance is to transform the objective
functions so that they are constrained to the same approximate range of
values. Several function-transformation methods can be used and the
Using the upper-bound approach requires the user to inform only the nadir point, while the utopia point is set to zero. The upper-bound approach for transformation aims at equalizing only the upper bounds of the objective functions. The resulting function values will always be smaller than or equal to 1.
Sometimes, the absolute maximum and minimum values of an objective function
can be calculated exactly. This seems not to be the case of the objective
functions implemented in the
The upper-lower-bound approach with the Pareto maximum and minimum values is the most elegant solution to transform the objective functions. However, it is the most time consuming. It works as follows:
For example, consider that a MOOP is composed of two objective functions (A and B). The minimum absolute value for function A is obtained when the sample configuration is optimized with respect to function A. This is the Pareto minimum of function A. Consequently, the maximum absolute value for function A is obtained when the sample configuration is optimized regarding function B. This is the Pareto maximum of function A. The same logic applies for function B.
lags.type = "equidistant"
). They are created by
simply dividing the distance interval from 0.0001 to cutoff
by the
required number of lags. The minimum value of 0.0001 guarantees that a
point does not form a pair with itself. The second type of lags is defined by
exponential spacings (lags.type = "exponential"
). The spacings are
defined by the base $b$ of the exponential expression $b^n$, where
$n$ is the required number of lags. The base is defined using the
argument lags.base
.Using the default uniform distribution means that the
number of point-pairs per lag-distance class (pairs = TRUE
) is equal
to $n \times (n - 1) / (2 \times lag)$, where $n$ is the total number
of points and $lag$ is the number of lags. If pairs = FALSE
, then
it means that the number of points per lag is equal to the total number of
points. This is the same as expecting that each point contributes to every
lag. Distributions other than the available options can be easily
implemented changing the arguments lags
and distri
.
There are two optimizing criteria implemented. The first is called
using criterion = "distribution"
and is used to minimize the
sum of the absolute differences between a pre-specified distribution and the
observed distribution of points or point-pairs per lag-distance class. The
second criterion is called using criterion = "minimum"
. It corresponds
to maximizing the minimum number of points or point-pairs observed over all
lag-distance classes.
variogram
intamap
package. R
package version 1.1-10.van Groenigen, J.-W. Constrained optimization of spatial sampling: a geostatistical approach. Wageningen: Wageningen University, p. 148, 1999.
Arora, J. Introduction to optimum design. Waltham: Academic Press, p. 896, 2011.
Marler, R. T.; Arora, J. S. Survey of multi-objective optimization methods for engineering. Structural and Multidisciplinary Optimization, v. 26, p. 369-395, 2004.
Marler, R. T.; Arora, J. S. Function-transformation methods for multi-objective optimization. Engineering Optimization, v. 37, p. 551-570, 2005.
Marler, R. T.; Arora, J. S. The weighted sum method for multi-objective optimization: new insights. Structural and Multidisciplinary Optimization, v. 41, p. 853-862, 2009.
Bresler, E.; Green, R. E. Soil parameters and sampling scheme for characterizing soil hydraulic properties of a watershed. Honolulu: University of Hawaii at Manoa, p. 42, 1982.
Pettitt, A. N. & McBratney, A. B. Sampling designs for estimating spatial variance components. Applied Statistics. v. 42, p. 185, 1993.
Russo, D. Design of an optimal sampling network for estimating the variogram. Soil Science Society of America Journal. v. 48, p. 708-716, 1984.
Truong, P. N.; Heuvelink, G. B. M.; Gosling, J. P. Web-based tool for expert elicitation of the variogram. Computers and Geosciences. v. 51, p. 390-399, 2013.
Warrick, A. W.; Myers, D. E. Optimization of sampling locations for variogram calculations. Water Resources Research. v. 23, p. 496-500, 1987.
# This example takes more than 5 seconds to run!
require(sp)
data(meuse.grid)
candi <- meuse.grid[, 1:2]
set.seed(2001)
res <- optimPPL(points = 100, candi = candi)
objSPSANN(res) # 160
objPPL(points = res, candi = candi)
countPPL(points = res, candi = candi)
Run the code above in your browser using DataLab