Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
CONMINOptimizer Class Reference

Wrapper class for the CONMIN optimization library. More...

Inheritance diagram for CONMINOptimizer:
Optimizer Minimizer Iterator

List of all members.

Public Member Functions

 CONMINOptimizer (Model &model)
 standard constructor
 CONMINOptimizer (NoDBBaseConstructor, Model &model)
 alternate constructor
 ~CONMINOptimizer ()
 destructor
void find_optimum ()
 Used within the optimizer branch for computing the optimal solution. Redefines the run virtual function for the optimizer branch.

Protected Member Functions

void initialize_run ()
 performs run-time set up

Private Member Functions

void initialize ()
 Shared constructor code.
void allocate_workspace ()
 Allocates workspace for the optimizer.
void deallocate_workspace ()
 Releases workspace memory.
void allocate_constraints ()
 Allocates constraint mappings.

Private Attributes

int conminInfo
 INFO from CONMIN manual.
int printControl
 IPRINT from CONMIN manual (controls output verbosity)
int optimizationType
 MINMAX from DOT manual (minimize or maximize)
Real objFnValue
 value of the objective function passed to CONMIN
RealVector constraintValues
 array of nonlinear constraint values passed to CONMIN
int numConminNlnConstr
 total number of nonlinear constraints seen by CONMIN
int numConminLinConstr
 total number of linear constraints seen by CONMIN
int numConminConstr
 total number of linear and nonlinear constraints seen by CONMIN
SizetArray constraintMappingIndices
 a container of indices for referencing the corresponding Response constraints used in computing the CONMIN constraints.
RealArray constraintMappingMultipliers
 a container of multipliers for mapping the Response constraints to the CONMIN constraints.
RealArray constraintMappingOffsets
 a container of offsets for mapping the Response constraints to the CONMIN constraints.
int N1
 Size variable for CONMIN arrays. See CONMIN manual.
int N2
 Size variable for CONMIN arrays. See CONMIN manual.
int N3
 Size variable for CONMIN arrays. See CONMIN manual.
int N4
 Size variable for CONMIN arrays. See CONMIN manual.
int N5
 Size variable for CONMIN arrays. See CONMIN manual.
int NFDG
 Finite difference flag.
int IPRINT
 Flag to control amount of output data.
int ITMAX
 Flag to specify the maximum number of iterations.
double FDCH
 Relative finite difference step size.
double FDCHM
 Absolute finite difference step size.
double CT
 Constraint thickness parameter.
double CTMIN
 Minimum absolute value of CT used during optimization.
double CTL
 Constraint thickness parameter for linear and side constraints.
double CTLMIN
 Minimum value of CTL used during optimization.
double DELFUN
 Relative convergence criterion threshold.
double DABFUN
 Absolute convergence criterion threshold.
double * conminDesVars
 Array of design variables used by CONMIN (length N1 = numdv+2)
double * conminLowerBnds
 Array of lower bounds used by CONMIN (length N1 = numdv+2)
double * conminUpperBnds
 Array of upper bounds used by CONMIN (length N1 = numdv+2)
double * S
 Internal CONMIN array.
double * G1
 Internal CONMIN array.
double * G2
 Internal CONMIN array.
double * B
 Internal CONMIN array.
double * C
 Internal CONMIN array.
int * MS1
 Internal CONMIN array.
double * SCAL
 Internal CONMIN array.
double * DF
 Internal CONMIN array.
double * A
 Internal CONMIN array.
int * ISC
 Internal CONMIN array.
int * IC
 Internal CONMIN array.

Detailed Description

Wrapper class for the CONMIN optimization library.

The CONMINOptimizer class provides a wrapper for CONMIN, a Public-domain Fortran 77 optimization library written by Gary Vanderplaats under contract to NASA Ames Research Center. The CONMIN User's Manual is contained in NASA Technical Memorandum X-62282, 1978. CONMIN uses a reverse communication mode, which avoids the static member function issues that arise with function pointer designs (see NPSOLOptimizer and SNLLOptimizer).

The user input mappings are as follows: max_iterations is mapped into CONMIN's ITMAX parameter, max_function_evaluations is implemented directly in the find_optimum() loop since there is no CONMIN parameter equivalent, convergence_tolerance is mapped into CONMIN's DELFUN and DABFUN parameters, output verbosity is mapped into CONMIN's IPRINT parameter (verbose: IPRINT = 4; quiet: IPRINT = 2), gradient mode is mapped into CONMIN's NFDG parameter, and finite difference step size is mapped into CONMIN's FDCH and FDCHM parameters. Refer to [Vanderplaats, 1978] for additional information on CONMIN parameters.


Member Data Documentation

int conminInfo [private]

INFO from CONMIN manual.

Information requested by CONMIN: 1 = evaluate objective and constraints, 2 = evaluate gradients of objective and constraints.

Referenced by CONMINOptimizer::find_optimum(), and CONMINOptimizer::initialize().

int printControl [private]

IPRINT from CONMIN manual (controls output verbosity)

Values range from 0 (nothing) to 4 (most output). 0 = nothing, 1 = initial and final function information, 2 = all of #1 plus function value and design vars at each iteration, 3 = all of #2 plus constraint values and direction vectors, 4 = all of #3 plus gradients of the objective function and constraints, 5 = all of #4 plus proposed design vector, plus objective and constraint functions from the 1-D search

Referenced by CONMINOptimizer::initialize().

int optimizationType [private]

MINMAX from DOT manual (minimize or maximize)

Values of 0 or -1 (minimize) or 1 (maximize).

RealVector constraintValues [private]

array of nonlinear constraint values passed to CONMIN

This array must be of nonzero length and must contain only one-sided inequality constraints which are <= 0 (which requires a transformation from 2-sided inequalities and equalities).

Referenced by CONMINOptimizer::allocate_workspace(), and CONMINOptimizer::find_optimum().

SizetArray constraintMappingIndices [private]

a container of indices for referencing the corresponding Response constraints used in computing the CONMIN constraints.

The length of the container corresponds to the number of CONMIN constraints, and each entry in the container points to the corresponding DAKOTA constraint.

Referenced by CONMINOptimizer::allocate_constraints(), and CONMINOptimizer::find_optimum().

RealArray constraintMappingMultipliers [private]

a container of multipliers for mapping the Response constraints to the CONMIN constraints.

The length of the container corresponds to the number of CONMIN constraints, and each entry in the container stores a multiplier for the DAKOTA constraint identified with constraintMappingIndices. These multipliers are currently +1 or -1.

Referenced by CONMINOptimizer::allocate_constraints(), and CONMINOptimizer::find_optimum().

RealArray constraintMappingOffsets [private]

a container of offsets for mapping the Response constraints to the CONMIN constraints.

The length of the container corresponds to the number of CONMIN constraints, and each entry in the container stores an offset for the DAKOTA constraint identified with constraintMappingIndices. These offsets involve inequality bounds or equality targets, since CONMIN assumes constraint allowables = 0.

Referenced by CONMINOptimizer::allocate_constraints(), and CONMINOptimizer::find_optimum().

int N1 [private]

Size variable for CONMIN arrays. See CONMIN manual.

N1 = number of variables + 2

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::find_optimum(), and CONMINOptimizer::initialize_run().

int N2 [private]

Size variable for CONMIN arrays. See CONMIN manual.

N2 = number of constraints + 2*(number of variables)

Referenced by CONMINOptimizer::allocate_workspace(), and CONMINOptimizer::find_optimum().

int N3 [private]

Size variable for CONMIN arrays. See CONMIN manual.

N3 = Maximum possible number of active constraints.

Referenced by CONMINOptimizer::allocate_workspace(), and CONMINOptimizer::find_optimum().

int N4 [private]

Size variable for CONMIN arrays. See CONMIN manual.

N4 = Maximum(N3,number of variables)

Referenced by CONMINOptimizer::allocate_workspace(), and CONMINOptimizer::find_optimum().

int N5 [private]

Size variable for CONMIN arrays. See CONMIN manual.

N5 = 2*(N4)

Referenced by CONMINOptimizer::allocate_workspace(), and CONMINOptimizer::find_optimum().

double CT [private]

Constraint thickness parameter.

The value of CT decreases in magnitude during optimization.

Referenced by CONMINOptimizer::find_optimum(), and CONMINOptimizer::initialize().

double* S [private]

Internal CONMIN array.

Move direction in N-dimensional space.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* G1 [private]

Internal CONMIN array.

Temporary storage of constraint values.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* G2 [private]

Internal CONMIN array.

Temporary storage of constraint values.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* B [private]

Internal CONMIN array.

Temporary storage for computations involving array S.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* C [private]

Internal CONMIN array.

Temporary storage for use with arrays B and S.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

int* MS1 [private]

Internal CONMIN array.

Temporary storage for use with arrays B and S.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* SCAL [private]

Internal CONMIN array.

Vector of scaling parameters for design parameter values.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* DF [private]

Internal CONMIN array.

Temporary storage for analytic gradient data.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

double* A [private]

Internal CONMIN array.

Temporary 2-D array for storage of constraint gradients.

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), and CONMINOptimizer::find_optimum().

int* ISC [private]

Internal CONMIN array.

Array of flags to identify linear constraints. (not used in this implementation of CONMIN)

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), CONMINOptimizer::find_optimum(), and CONMINOptimizer::initialize_run().

int* IC [private]

Internal CONMIN array.

Array of flags to identify active and violated constraints

Referenced by CONMINOptimizer::allocate_workspace(), CONMINOptimizer::deallocate_workspace(), CONMINOptimizer::find_optimum(), and CONMINOptimizer::initialize_run().


The documentation for this class was generated from the following files: