Solve constrained nonlinear minimization problem. An alternative R interface
1 2 3 4 5 6 7 8 
start 
parameter vector(vector object). 
fun 
the objective function to be minimized. Currently, 
par.lower, par.upper 
upper and lower bounds for parameter vector,
respectively. Their length must equal to

eqA, ineqA 
the matrix objects that represents linear constraints. Its
columns must be equal to 
eqA.bound 
equality bounds for linear constraints, respectively. Their length must equal to the number of linear constraints. 
ineqA.lower, ineqA.upper 
upper and lower bounds for linear constraints, respectively. Their length must equal to the number of linear constraints. 
eqFun 
list object whose elements are functions that represents nonlinear equality constraints. 
eqFun.bound 
equality bounds for nonlinear constraints, respectively. 
ineqFun 
list object whose elements are functions that represents nonlinear lower and upper constraints. 
ineqFun.lower, ineqFun.upper 
lower and upper bounds for nonlinear constraints, respectively. 
control 
list of control parameters that define the behaviour of the
solver. See 
An alternative interface which may be suite better for portfolio
optimization compared with the default interface function
donlp2
.
A list with following elements:
opt 
a list of information on the optimal solution as returned by
the function 
solution 
a numeric vector, the optimal solution. 
objective 
a numeric value, the value at the optimal solution 
status 
not used, returns NA. 
message 
a character string, the convergence message. 
solver 
a character string, the name of the solver. 
version 
a character string, the convergence message. 
Peter Speluccihas has written the original solver code, S. Schoeffert has translated donlp2 from f77 to the ANSI C version, K. S. Cove has added dynamic memory allocation, Christoph Bergmeier has added passing objecive and constraints as external pointer, Ryuichi Tamura has written the original Rdonlp2 interface, Diethelm Wuertz has written the current Rdonlp2 interface.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  ## Example:
# Feasible Start Solution:
start < c(10, 10)
# Objective Function: x^2 + y^2
fun < function(x) sum(x^2)
# Bounds: 100 <= x,y <= 100
par.lower < c(100, 100)
par.upper < c(100, 100)
# Equality Constraints: x*y = 2
eqFun < list(function(x) x[1]*x[2])
eqFun.bound < 2
# Solution: x = c(sqrt(2), sqrt(2)), f(x) = 4
donlp2NLP(start = start, fun = fun,
par.lower = par.lower, par.upper = par.upper,
eqFun = eqFun, eqFun.bound = eqFun.bound)[1]

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.