Optimization in Scilab
Scilab provides a high-level matrix language and allows to define complex mathematical models and to easily connect to existing libraries. That is why optimization is an important and practical topic in Scilab, which provides tools to solve linear and nonlinear optimization problems by a large collection of tools.
Overview of the industrial-grade solvers available in Scilab and the type of optimization problems which can be solved by Scilab.
Objective Linear Bounds y Equality l Inequalities l Problem size m m l l y Nonlinear s Gradient needed y n Solver linpro quapro qld qpsolve optim neldermead optim_ga fminsearch optim_sa lsqrsolve leastsq optim/"nd" optim_moga semidef lmisolve
Quadratic
y
l
l
s Nonlinear Least Squares Min-Max Multi-Obj. Semi-Def. y y l*
n
l m s l* l* l l
optional y n n
For the constraint columns, the letter "l" means linear, the letter "n" means nonlinear and "l*" means linear constraints in spectral sense. For the problem size column, the letters "s", "m" and "l" respectively mean small, medium and large.
Focus on nonlinear optimization w The optim function solves optimization problems with nonlinear objectives, with or without bound constraints on the unknowns. The quasi-Newton method optim/"qn" uses a Broyden-Fletcher-Goldfarb-Shanno formula to update the approximate Hessian matrix. The quasi-Newton method has a O(n²) memory requirement. The limited memory BFGS algorithm optim/"gc" is efficient for large size problems due to its memory requirement in O(n). Finally, the optim/"nd" algorithm is a bundle method which may be used to solve unconstrained, non-differentiable problems. For all these solvers, a function that computes the gradient g must be provided. That gradient can be computed using finite differences based on an optimal step with the derivative function, for example. w The fminsearch function is based on the simplex algorithm of Nelder and Mead (not