MinConNonlin
has been replaced by MinConNLP
.public class MinConNonlin extends Object implements Serializable, Cloneable
MinConNonlin
is based on the following FORTRAN subroutines
licensed from Prof. Dr. K. Schittkowski (1986) by agreement dated 12/2/1985:
NLPQL
, NLPQL
, MERIT
, LINSEA
,
QL
, LDL
. More recent versions on these routines
are available from Dr. Schittkowski.
$$\mathop {\min }\limits_{x\; \in \;R^n } f\left( x \right)$$
subject to
$${\rm{ }}g_j \left( x \right) = 0, {\rm{for}} \,\, j = 1,\; \ldots ,\;m_e$$
$$g_j \left( x \right) \ge 0, \rm{for} \,\, {j = m_e + 1,\; \ldots ,\;m}$$
$$x_l \le x \le x_u$$
where all problem functions are assumed to be continuously differentiable. The method, based on the iterative formulation and solution of quadratic programming (QP) subproblems, obtains these subproblems by using a quadratic approximation of the Lagrangian and by linearizing the constraints. That is,
$$\mathop {\min }\limits_{x\; \in \;R^n } \frac{1}{2}d^T B_k d + \nabla f\left( {x_k } \right)^T d$$
subject to
$$\nabla g_j \left( {x_k } \right)^T d + g_j \left( {x_k } \right) = 0,{\rm{for}} \,\, j = 1,\; \ldots ,\;m_e$$
$$\nabla g_j \left( {x_k } \right)^T d + g_j \left( {x_k } \right) \ge 0, {\rm{for}} \,\, j = m_e + 1,\; \ldots ,\;m$$
$$x_l - x_k \le d \le x_u - x_k$$
where \(B_k\) is a positive definite approximation of the Hessian, and \(x_k\) is the current iterate. Let \(d_k\) be the solution of the subproblem. A line search is used to find a new point \(x_{k+1}\),
$$x_{k + 1} = x_k + \lambda d_k \,\,\,\,\lambda \in \left( {0,1} \right]$$
such that a "merit function" will have a lower function value at the new point. Here, the augmented Lagrange function (Schittkowski 1986) is used as the merit function.
When optimality is not achieved, \(B_k\) is updated according to the modified BFGS formula (Powell 1978). Note that this algorithm may generate infeasible points during the solution process. Therefore, if feasibility must be maintained for intermediate points, this function may not be suitable. For more theoretical and practical details, see Stoer (1985), Schittkowski (1980, 1983, 1986) and Gill et al. (1985).
Modifier and Type | Class and Description |
---|---|
static interface |
MinConNonlin.Function
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static interface |
MinConNonlin.Gradient
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static class |
MinConNonlin.LineSearchException
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static class |
MinConNonlin.QPConstraintsException
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static class |
MinConNonlin.TooManyIterationsException
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static class |
MinConNonlin.UphillSearchCalcException
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
static class |
MinConNonlin.ZeroSearchDirectionException
Deprecated.
MinConNonlin has been replaced by MinConNLP . |
Constructor and Description |
---|
MinConNonlin(int mTotalConstraints,
int mEqualityConstraints,
int nVariables)
Deprecated.
Nonlinear programming solver constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
setAccuracy(double acc)
Deprecated.
Set the final accuracy.
|
void |
setGuess(double[] xguess)
Deprecated.
Set the initial guess of the minimum point of the input function.
|
void |
setMaxIterations(int maxIterations)
Deprecated.
Set the maximum number of iterations allowed.
|
void |
setScalingVariable(double scbnd)
Deprecated.
Set the scaling variable for the problem function.
|
void |
setXlowerBound(double[] xlb)
Deprecated.
Set the lower bounds on the variables.
|
void |
setXscale(double[] xscale)
Deprecated.
Set the diagonal scaling matrix for the variables.
|
void |
setXupperBound(double[] xub)
Deprecated.
Set the upper bounds on the variables.
|
double[] |
solve(MinConNonlin.Function F)
Deprecated.
Solve a general nonlinear programming problem using the successive
quadratic programming algorithm with a finite-difference gradient or
with a user-supplied gradient.
|
public MinConNonlin(int mTotalConstraints, int mEqualityConstraints, int nVariables) throws IllegalArgumentException
mTotalConstraints
- An int
scalar value which defines the total
number of constraintsmEqualityConstraints
- An int
scalar value which defines the number
of equality constraintsnVariables
- An int
scalar value which defines the number
of variables.IllegalArgumentException
public double[] solve(MinConNonlin.Function F) throws MinConNonlin.UphillSearchCalcException, MinConNonlin.LineSearchException, MinConNonlin.TooManyIterationsException, MinConNonlin.ZeroSearchDirectionException, MinConNonlin.QPConstraintsException
F
- defines the user-supplied function to evaluate the function
at a given point. F can be used to supply a gradient of the function.
If F implements Gradient
the user-supplied
gradient is used. Otherwise,an attempt to solve the problem is made
using a finite-difference gradient.double
array containing the solution of the
nonlinear programming problem.MinConNonlin.UphillSearchCalcException
MinConNonlin.LineSearchException
MinConNonlin.TooManyIterationsException
MinConNonlin.ZeroSearchDirectionException
MinConNonlin.QPConstraintsException
public void setGuess(double[] xguess)
xguess
- a double
array specifying the initial guess of the
minimum point of the input functionpublic void setXscale(double[] xscale)
xscale
- a double
array specifying the diagonal scaling matrix
for the variablesIllegalArgumentException
- is thrown if any of the elements
of xscale is less than or equal to 0public void setXlowerBound(double[] xlb)
xlb
- a double
array specifying the lower bounds
on the variablespublic void setXupperBound(double[] xub)
xub
- a double
array specifying the upper bounds
on the variablespublic void setAccuracy(double acc)
acc
- a double
scalar value specifying the final accuracy.IllegalArgumentException
- is thrown if acc is less than or equal to 0.0public void setScalingVariable(double scbnd)
scbnd
- a double
scalar value specifying the scaling variable for the problem function.IllegalArgumentException
- is thrown if scbnd is less than or equal to 0.0public void setMaxIterations(int maxIterations)
maxIterations
- an int
specifying the maximum number of
iterations allowedIllegalArgumentException
- is thrown if maxIterations
is less than or equal to 0Copyright © 2020 Rogue Wave Software. All rights reserved.