RSpline Solver
This class represents an implementation of R-SPLINE from the paper:
H. Wang, R. Pasupathy, and B. W. Schmeiser, “Integer-Ordered Simulation Optimization using R-SPLINE: Retrospective Search with Piecewise-Linear Interpolation and Neighborhood Enumeration,” ACM Transactions on Modeling and Computer Simulation (TOMACS), vol. 23, no. 3, pp. 17–24, July 2013, doi: 10.1145/2499913.2499916.
The original algorithm used the total number of oracle calls as an approach to stopping the iterations. Matlab/R implementations did not use this approach, but had a limit on the total number of R-SPLINE iterations. The basic implementation of all solvers has such a limit via the maxIterations property. The theory of the approach indicates that each sample-path problem, P_k, is used to seed the next sample path problem. This causes the solutions to the P_k problems to eventually converge to some solution. The original paper does not provide much insight into how to compare solutions for stopping. The approach implemented here follows the suggestions found within the cross-entropy literature. The sequence of P_k calls will stop when a fixed number of the last produced solutions test for equality. The default here is to indicate that solutions are equal if they compare equal according to a confidence interval test and have the same input variable values. The confidence interval test is based on the penalized objective function value. The stopping criteria is controlled by the solutionChecker property. Users can supply their own checking procedure via this property and their own definition of equality via its solutionEqualityChecker property.
Parameters
the problem being solved.
The evaluator responsible for assessing the quality of solutions. Must implement the EvaluatorIfc interface.
The maximum number of iterations allowed for the solving process.
Strategy to determine the number of replications to perform for each evaluation.
Used when testing if solutions have converged for equality between solutions. The default is InputsAndConfidenceIntervalEquality, which checks if the inputs are the same and there is no statistical difference between the solutions
the random number stream number, defaults to 0, which means the next stream
the provider of random number streams, defaults to KSLRandom.DefaultRNStreamProvider
Optional name identifier for this instance of the solver.
Constructors
Creates an R-SPLINE solver with the specified parameters.
Types
Properties
This defines the growth schedule for the number of replications. In the original paper, this is the value of m_k.
The initial setting of the line search step-size. By default, this is 2.0
Since the number of SPLINE calls can grow as the algorithm proceeds, this variable provides the initial number of SPLINE calls to which the growth is applied. The default value is defaultInitialMaxSplineCalls.
This variable limits the number of permissible line-searches within the SPLINE step.
The multiplier that increases the line search step-size for each line search iteration. The default is 2.0
Since the number of SPLINE calls can grow as the algorithm proceeds, this variable provides the maximum number of calls that are permissible. The growth with not exceed this value. By default, this is defaultMaxSplineCallLimit.
The neighborhood finder for performing the neighborhood search. By default, this is a von Neumann neighborhood.
The amount of the perturbation for Algorithm 4 in the paper:
This variable tracks the current sample size for each SPLINE iteration. In the notation of the paper, this is m_k.
Used to check if the last set of solutions that were captured are the same.
This variable limits the number of permissible SPLI-searches within the SPLINE step.
The rate at which the permissible number of SPLINE calls grows. By default, this is defined by defaultSplineCallGrowthRate.
Since the number of SPLINE calls can grow as the algorithm proceeds, this variable represents the current number of permissible SPLINE calls. In the notation of the R-SPLINE paper, this is b_k.