 Overview of the Optimization Package - Maple Programming Help

Home : Support : Online Help : Mathematics : Packages : Optimization

Overview of the Optimization Package

 Calling Sequence Optimization[command](arguments) command(arguments)

Description

 • The Optimization package is a collection of commands for numerically solving optimization problems, which involve finding the minimum or maximum of an objective function possibly subject to constraints.  The package takes advantage of built-in library routines provided by the Numerical Algorithms Group (NAG).
 • The package solves linear programs (LPs), quadratic programs (QPs), nonlinear programs (NLPs), and both linear and nonlinear least-squares problems.  Both constrained and unconstrained problems are accepted.  In general, variables are assumed to be continuous, and local solutions are computed for problems that are not convex.  However, the LPSolve command does accept integer programs and the NLPSolve command provides a global search algorithm for limited situations.
 • For an overview of the Optimization package and additional examples, see the Optimization Package Example Worksheet.
 • You can choose the easy-to-use Minimize and Maximize commands, the Interactive Maplet, or the specialized commands for the various problem classes.
 • Some commands support quantities with Units.  The Optimization/Units page provides more detail where and how units can be used with Optimization.
 • Some commands allow alternatives to the default method of specifying an optimization problem.  Matrix form, described on the Optimization/MatrixForm help page, is more complex but offers greater flexibility and efficiency. The Optimization/InputForms help page summarizes all the forms of input that the solvers in  the Optimization package allow.
 • For an overview of the Matrix input form and additional examples, see the Optimization Package Matrix Form Example Worksheet.
 • The Optimization/Options help page summarizes common options accepted by the commands in the Optimization package.  The Optimization/Methods help page summarizes methods used by the commands for solving optimization problems.
 • The solvers perform computations in either the hardware floating-point environment or the arbitrary-precision software floating-point environment. The Optimization/Computation help page describes the computation environment in more detail and offers suggestions on how to obtain the best performance from the solvers.

Accessing Optimization Package Commands

 • Each command in the Optimization package can be accessed by using either the long form or the short form of the command name in the command calling sequence.
 Because the underlying implementation of the Optimization package is a module, it is possible to use the form Optimization:-command to access a command from the package. For more information, see Module Members.

List of Optimization Package Commands

 • The following is a list of commands available in the Optimization package.

 To display the help page for a particular Optimization command, see Getting Help with a Command in a Package.
 • The LPSolve, LSSolve, NLPSolve, and QPSolve help pages describe the most commonly used forms of input.  Use with the more advanced Matrix form of input is described in the following pages.

Notes

 • To see additional information about the progress of the solver during the solution of an optimization problem, set infolevel[Optimization] to a positive integer.  More information is printed at higher infolevel settings.

Examples

 > $\mathrm{with}\left(\mathrm{Optimization}\right):$

Use the LPSolve command to solve a linear program.  The assume=nonnegative option specifies that the problem variables x and y are non-negative.  The solution consists of the final objective function value followed by the final values for x and y.

 > $\mathrm{LPSolve}\left(-x-y,\left\{y\le 3x+\frac{1}{2},y\le -5x+2\right\},\mathrm{assume}=\mathrm{nonnegative}\right)$
 $\left[{-1.25000000000000}{,}\left[{x}{=}{0.187500000000000}{,}{y}{=}{1.06250000000000}\right]\right]$ (1)

Use the NLPSolve command to find a local minimum, starting from a given initial point.

 > $\mathrm{NLPSolve}\left(\frac{\mathrm{sin}\left(x\right)}{x},x=1..15,\mathrm{initialpoint}=\left[x=7\right]\right)$
 $\left[{-0.0913252028230577}{,}\left[{x}{=}{10.9041216489198}\right]\right]$ (2)

The Minimize command automatically selects the most appropriate solver.

 > $\mathrm{Minimize}\left(2x+5y+3{x}^{2}+3xy+2{y}^{2},\left\{2\le x-y\right\},\mathrm{assume}=\mathrm{nonnegative}\right)$
 $\left[{16.}{,}\left[{x}{=}{2.}{,}{y}{=}{0.}\right]\right]$ (3)

Use the Matrix form of the LSSolve command to minimize the norm of $g-\mathrm{Cx}$ subject to $\mathrm{Ax}\le b$.

 > $g≔\mathrm{Vector}\left(\left[1.2,2.0,4.0\right],\mathrm{datatype}=\mathrm{float}\right):$
 > $C≔\mathrm{Matrix}\left(\left[\left[3.0,-2.0\right],\left[0.15,3.5\right],\left[3.8,4.0\right]\right],\mathrm{datatype}=\mathrm{float}\right):$
 > $A≔\mathrm{Matrix}\left(\left[\left[-1.0,3.0\right]\right],\mathrm{datatype}=\mathrm{float}\right):$
 > $b≔\mathrm{Vector}\left(\left[0.5\right],\mathrm{datatype}=\mathrm{float}\right):$
 > $\mathrm{LSSolve}\left(\left[g,C\right],\left[A,b\right]\right)$
 $\left[{0.148793339132595459}{,}\left[\begin{array}{c}{0.672673045855598}\\ {0.390891015285199}\end{array}\right]\right]$ (4)