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
|
<html lang="en">
<head>
<title>Additional parameters - optim_doc</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="optim_doc">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="prev" href="Parameter-structures.html#Parameter-structures" title="Parameter structures">
<link rel="next" href="Function-index.html#Function-index" title="Function index">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Additional documentation for the optim package for Octave.
Copyright (C) <Olaf Till <i7tiol@t-online.de>>
You can redistribute this documentation and/or modify it under the terms
of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any
later version.
This documentation is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along
with this documentation; if not, see <http://www.gnu.org/licenses/>.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<a name="Additional-parameters"></a>
<p>
Next: <a rel="next" accesskey="n" href="Function-index.html#Function-index">Function index</a>,
Previous: <a rel="previous" accesskey="p" href="Parameter-structures.html#Parameter-structures">Parameter structures</a>,
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
</div>
<h2 class="chapter">10 Passing additional parameters to user functions</h2>
<p><a name="index-additional-parameters-103"></a>
Optimizers often require the user to supply functions (<abbr>e.g.</abbr>
objective functions, model functions, constraint functions). The
interface of these functions — arguments and returned values — is
defined by the optimizer. Often, a user function needs additional
arguments, not covered by the defined interface, which are constant
throughout the optimization. These can be supplied by wrapping the user
function into an anonymous function. See <a href="../octave/Anonymous-Functions.html#Anonymous-Functions">Anonymous Functions</a>, for further explanation and examples.
<p>There are also some older optimizers in the optim package, written when
anonymous functions were not available in Octave. Some of these offer
an interface to user functions which is itself able to pass additional
constant variables in arbitrary argument positions. Newer optimizers
should not be written this way, since this is an unnecessary
complication.
<p>Though it is possible to use global variables to pass additional data to
user functions, this is not recommended since it introduces the
possibility of name conflicts within the pool of global variables.
<!-- -->
</body></html>
|