The goal of this toolbox is to provide a fmincon function in Scilab. The fmincon function is a nonlinearily constrained optimization solver. Currently, we use ipopt for the actual solver of fmincon.
The current state of the function is experimental. Many features are yet to be implemented.
We provide upgraded versions of the optimset and optimget functions, which manage options which are required by fmincon.
The current implementation is able to manage the following use cases.
The initial guess is provided in the x0 input argument.
The nonlinear objective function and the nonlinear constraints are provided. The fun and nonlcon function can be customized to configure the nonlinear objective function and nonlinear constraints. In this case, we use order two finite differences with optimal step size in order to compute the gradient of the objective function and the gradient of the constraints.
The parameters are subject to bounds. The lb and ub parameters can be configure to set bounds on the parameters.
The objective function and constraints function can provide the exact gradients as additionnal output arguments of their function definition. The two "GradObj" and "GradConstr" options can be turned "on" for that purpose.
In all cases, we use a L-BFGS formula in order to compute an approximate of the Hessian of the Lagrangian.
Linear equalities and linear inequalities are not managed in the current version.
This toolbox requires the ipopt module to be installed. The ipopt module is available as an ATOMS module :
This toolbox requires the apifun module to be installed. The apifun module is available as an ATOMS module :
- TODO : describe the output arguments
- TODO : test with A, b
- TODO : test with Aeq, beq
- TODO : test with ceq
- TODO : avoid using global for ipopt_data
- TODO : implement Display option
- TODO : implement FinDiffType option
- TODO : implement MaxFunEvals option
- TODO : implement DerivativeCheck option
- TODO : implement MaxIter option
- TODO : implement OutputFcn option
- TODO : implement PlotFcns option
- TODO : implement TolFun option
- TODO : implement TolCon option
- TODO : implement TolX option
- TODO : implement Hessian option
- fmincon : Solves a nonlinearily constrained optimization problem.
Copyright (C) 2010 - DIGITEO - Michael Baudin
This toolbox is released under the CeCILL_V2 licence :
We thank Vincent Couvert for his feedback on this module.