1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Maxima 5.47.0 Manual: Introduction to cobyla</title>
<meta name="description" content="Maxima 5.47.0 Manual: Introduction to cobyla">
<meta name="keywords" content="Maxima 5.47.0 Manual: Introduction to cobyla">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="maxima_toc.html#Top" rel="start" title="Top">
<link href="maxima_423.html#Function-and-Variable-Index" rel="index" title="Function and Variable Index">
<link href="maxima_toc.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="maxima_198.html#cobyla_002dpkg" rel="up" title="cobyla-pkg">
<link href="maxima_200.html#Functions-and-Variables-for-cobyla" rel="next" title="Functions and Variables for cobyla">
<link href="maxima_198.html#cobyla_002dpkg" rel="previous" title="cobyla-pkg">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
body {color: black; background: white; margin-left: 8%; margin-right: 13%;
font-family: "FreeSans", sans-serif}
h1 {font-size: 150%; font-family: "FreeSans", sans-serif}
h2 {font-size: 125%; font-family: "FreeSans", sans-serif}
h3 {font-size: 100%; font-family: "FreeSans", sans-serif}
a[href] {color: rgb(0,0,255); text-decoration: none;}
a[href]:hover {background: rgb(220,220,220);}
div.textbox {border: solid; border-width: thin; padding-top: 1em;
padding-bottom: 1em; padding-left: 2em; padding-right: 2em}
div.titlebox {border: none; padding-top: 1em; padding-bottom: 1em;
padding-left: 2em; padding-right: 2em; background: rgb(200,255,255);
font-family: sans-serif}
div.synopsisbox {
border: none; padding-top: 1em; padding-bottom: 1em; padding-left: 2em;
padding-right: 2em; background: rgb(255,220,255);}
pre.example {border: 1px solid rgb(180,180,180); padding-top: 1em;
padding-bottom: 1em; padding-left: 1em; padding-right: 1em;
background-color: rgb(238,238,255)}
div.spacerbox {border: none; padding-top: 2em; padding-bottom: 2em}
div.image {margin: 0; padding: 1em; text-align: center}
div.categorybox {border: 1px solid gray; padding-top: 1em; padding-bottom: 1em;
padding-left: 1em; padding-right: 1em; background: rgb(247,242,220)}
img {max-width:80%; max-height: 80%; display: block; margin-left: auto; margin-right: auto}
-->
</style>
<link rel="icon" href="figures/favicon.ico">
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6>"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Introduction-to-cobyla"></a>
<div class="header">
<p>
Next: <a href="maxima_200.html#Functions-and-Variables-for-cobyla" accesskey="n" rel="next">Functions and Variables for cobyla</a>, Previous: <a href="maxima_198.html#cobyla_002dpkg" accesskey="p" rel="previous">cobyla-pkg</a>, Up: <a href="maxima_198.html#cobyla_002dpkg" accesskey="u" rel="up">cobyla-pkg</a> [<a href="maxima_toc.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="maxima_423.html#Function-and-Variable-Index" title="Index" rel="index">Index</a>]</p>
</div>
<a name="Introduction-to-cobyla-1"></a>
<h3 class="section">47.1 Introduction to cobyla</h3>
<p><code>fmin_cobyla</code> is a Common Lisp translation (via <code>f2cl</code>) of the
Fortran constrained optimization routine COBYLA by Powell[1][2][3].
</p>
<p>COBYLA minimizes an objective function <em>F(X)</em> subject to <em>M</em> inequality
constraints of the form
\(g(X) \ge 0\) on <em>X</em>,
where <em>X</em> is a vector of variables that has <em>N</em> components.
</p>
<p>Equality constraints <em>g(X) = 0</em> can often be implemented by a pair of inequality
constraints
\(g(X) \ge 0\) and
\(-g(X) \ge 0.\) Maxima’s interface to COBYLA
allows equality constraints and internally converts the equality
constraints to a pair of inequality constraints.
</p>
<p>The algorithm employs linear approximations to the
objective and constraint functions, the approximations being formed by
linear interpolation at <em>N+1</em> points in the space of the variables.
The interpolation points are regarded as vertices of a simplex. The
parameter <var>RHO</var> controls the size of the simplex and it is reduced
automatically from <var>RHOBEG</var> to <var>RHOEND</var>. For each <var>RHO</var> the subroutine tries
to achieve a good vector of variables for the current size, and then
<var>RHO</var> is reduced until the value <var>RHOEND</var> is reached. Therefore, <var>RHOBEG</var> and
<var>RHOEND</var> should be set to reasonable initial changes to and the required
accuracy in the variables respectively, but this accuracy should be
viewed as a subject for experimentation because it is not guaranteed.
The routine treats each constraint individually when calculating
a change to the variables, rather than lumping the constraints together
into a single penalty function. The name of the subroutine is derived
from the phrase Constrained Optimization BY Linear Approximations.
</p>
<p>References:
</p>
<p>[1] Fortran Code is from <a href="http://plato.asu.edu/sub/nlores.html#general">http://plato.asu.edu/sub/nlores.html#general</a>
</p>
<p>[2] M. J. D. Powell, "A direct search optimization method that models the objective and constraint functions by linear interpolation," in Advances in Optimization and Numerical Analysis, eds. S. Gomez and J.-P. Hennart (Kluwer Academic: Dordrecht, 1994), p. 51-67.
</p>
<p>[3] M. J. D. Powell, "Direct search algorithms for optimization calculations," Acta Numerica 7, 287-336 (1998). Also available as University of Cambridge, Department of Applied Mathematics and Theoretical Physics, Numerical Analysis Group, Report NA1998/04 from <a href="http://www.damtp.cam.ac.uk/user/na/reports.html">http://www.damtp.cam.ac.uk/user/na/reports.html</a>
</p>
<div class=categorybox>
Categories:<a href="maxima_424.html#Category_003a-Numerical-methods">Numerical methods</a>
·<a href="maxima_424.html#Category_003a-Optimization">Optimization</a>
·<a href="maxima_424.html#Category_003a-Share-packages">Share packages</a>
·<a href="maxima_424.html#Category_003a-Package-cobyla">Package cobyla</a>
·</div>
<a name="Item_003a-cobyla_002fnode_002fFunctions-and-Variables-for-cobyla"></a><hr>
<div class="header">
<p>
Next: <a href="maxima_200.html#Functions-and-Variables-for-cobyla" accesskey="n" rel="next">Functions and Variables for cobyla</a>, Previous: <a href="maxima_198.html#cobyla_002dpkg" accesskey="p" rel="previous">cobyla-pkg</a>, Up: <a href="maxima_198.html#cobyla_002dpkg" accesskey="u" rel="up">cobyla-pkg</a> [<a href="maxima_toc.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="maxima_423.html#Function-and-Variable-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|