diff options
author | Michael Baudin <michael.baudin@scilab.org> | 2010-04-21 14:36:23 +0200 |
---|---|---|
committer | Michael Baudin <michael.baudin@scilab.org> | 2010-04-21 14:36:23 +0200 |
commit | faf679e0fcd1f1a78cf140e584d737e0561def0b (patch) | |
tree | a000f9f13faca7b34fc98423a9e5475371f7fee9 /scilab_doc | |
parent | 0e47449e28a13005b74fcec7058d606b57ec5654 (diff) | |
download | scilab-faf679e0fcd1f1a78cf140e584d737e0561def0b.zip scilab-faf679e0fcd1f1a78cf140e584d737e0561def0b.tar.gz |
Move to the forge
Change-Id: I71483f9a571441ec592ea57ca2a76afb6a525b62
Diffstat (limited to 'scilab_doc')
111 files changed, 0 insertions, 38346 deletions
diff --git a/scilab_doc/neldermead/Makefile b/scilab_doc/neldermead/Makefile deleted file mode 100644 index 437e9cd..0000000 --- a/scilab_doc/neldermead/Makefile +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | RAPPORT = neldermead | ||
4 | |||
5 | pdf: | ||
6 | pdflatex ${RAPPORT} | ||
7 | #bibtex ${RAPPORT} | ||
8 | #pdflatex ${RAPPORT} | ||
9 | #pdflatex ${RAPPORT} | ||
10 | |||
11 | dvi: | ||
12 | latex ${RAPPORT} | ||
13 | bibtex ${RAPPORT} | ||
14 | latex ${RAPPORT} | ||
15 | |||
16 | clean: | ||
17 | rm -f *.aux | ||
18 | rm -f *.bbl | ||
19 | rm -f *.blg | ||
20 | rm -f *.log | ||
21 | rm -f *.out | ||
22 | rm -f *.toc | ||
23 | rm -f *.idx | ||
24 | |||
25 | ortho: | ||
26 | ispell -t ${RAPPORT}.tex | ||
27 | |||
28 | distclean: | ||
29 | make clean | ||
30 | rm -f ${RAPPORT}.pdf | ||
31 | rm -f ${RAPPORT}.dvi | ||
32 | |||
diff --git a/scilab_doc/neldermead/acknowledgments.tex b/scilab_doc/neldermead/acknowledgments.tex deleted file mode 100644 index 8629c40..0000000 --- a/scilab_doc/neldermead/acknowledgments.tex +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | \chapter{Acknowledgments} | ||
2 | |||
3 | I would like to thank Vincent Couvert, | ||
4 | the team manager for Scilab releases, for his support | ||
5 | during the development of this software. I would like to thank | ||
6 | Serge Steer, INRIA researcher, for his comments and the discussions | ||
7 | on this subject. Professor Han, Associate Professor of Mathematics in the | ||
8 | University of Michigan-Flint University was kind enough to send me a copy | ||
9 | of his Phd and I would like to thank him for that. | ||
10 | My colleagues Allan Cornet and Yann Collette helped me in many | ||
11 | steps in the long process from the initial idea to the final | ||
12 | release of the tool and I would like to thank them for their | ||
13 | their time. | ||
14 | |||
diff --git a/scilab_doc/neldermead/chapter-notations.tex b/scilab_doc/neldermead/chapter-notations.tex deleted file mode 100644 index 0e42ab2..0000000 --- a/scilab_doc/neldermead/chapter-notations.tex +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | \chapter*{Notations} | ||
2 | |||
3 | |||
4 | \begin{figure}[h] | ||
5 | \begin{center} | ||
6 | \begin{tabular}{|l|l|} | ||
7 | \hline | ||
8 | $n$ & number of variables\\ | ||
9 | $\bx=(x_1,x_2,\ldots,x_n)^T \in\RR^n$ & the unknown\\ | ||
10 | $\bx_0\in\RR^n$ & the initial guess\\ | ||
11 | $\bv\in\RR^n$ & a vertex\\ | ||
12 | $S=\{\bv_i\}_{i=1,m}$ & a complex, where $m\geq n+1$ is the number of vertices\\ | ||
13 | $S=\{\bv_i\}_{i=1,n+1}$ & a simplex (with $n+1$ vertices)\\ | ||
14 | $(\bv_i)_j$ & the $j$-th component of the $i$-th vertex\\ | ||
15 | $S_0$& the initial simplex\\ | ||
16 | $S_k$& the simplex at iteration $k$\\ | ||
17 | $\bv_i^{(k)}$& the vertex $i$ at iteration $k$\\ | ||
18 | $f^k_i = f\left( \bv_i^(k) \right)$& the function value of the vertex $i$ at iteration $k$\\ | ||
19 | $f:\RR^n\rightarrow\RR$& the cost function\\ | ||
20 | \hline | ||
21 | \end{tabular} | ||
22 | \end{center} | ||
23 | \caption{Notations used in this document} | ||
24 | \label{fig-notations} | ||
25 | \end{figure} | ||
diff --git a/scilab_doc/neldermead/conclusion.tex b/scilab_doc/neldermead/conclusion.tex deleted file mode 100644 index e9880a9..0000000 --- a/scilab_doc/neldermead/conclusion.tex +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | \chapter{Conclusion} | ||
2 | |||
3 | That tool might be extended in future releases so that it provides the following features : | ||
4 | \begin{itemize} | ||
5 | \item Kelley restart based on simplex gradient [9], | ||
6 | \item C-based implementation (a prototype is provided in appendix B), | ||
7 | \item parallel implementation of the DIRECT algorithm, | ||
8 | \item implementation of the Hook-Jeeves and Multidimensional Search methods [9] | ||
9 | \item parallel implementation of the Nelder-Mead algorithm. See for example [21]. | ||
10 | ?This paper generalizes the widely used Nelder and Mead (Comput J | ||
11 | 7:308?313, 1965) simplex algorithm to parallel processors. Unlike most | ||
12 | previous parallelization methods, which are based on parallelizing the | ||
13 | tasks required to compute a specific objective function given a vector | ||
14 | of parameters, our parallel simplex algorithm uses parallelization at | ||
15 | the parameter level. Our parallel simplex algorithm assigns to each | ||
16 | processor a separate vector of parameters corresponding to a point on a | ||
17 | simplex. The processors then conduct the simplex search steps for an | ||
18 | improved point, communicate the results, and a new simplex is formed. | ||
19 | The advantage of this method is that our algorithm is generic and can be | ||
20 | applied, without re-writing computer code, to any optimization problem | ||
21 | which the non-parallel Nelder?Mead is applicable. The method is also | ||
22 | easily scalable to any degree of parallelization up to the number of | ||
23 | parameters. In a series of Monte Carlo experiments, we show that this | ||
24 | parallel simplex method yields computational savings in some experiments | ||
25 | up to three times the number of processors.? | ||
26 | \end{itemize} | ||
27 | |||
diff --git a/scilab_doc/neldermead/fminsearch-so.pdf b/scilab_doc/neldermead/fminsearch-so.pdf deleted file mode 100644 index f966125..0000000 --- a/scilab_doc/neldermead/fminsearch-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch-so.tex b/scilab_doc/neldermead/fminsearch-so.tex deleted file mode 100644 index 708c090..0000000 --- a/scilab_doc/neldermead/fminsearch-so.tex +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | \documentclass[12pt]{report} | ||
2 | |||
3 | \include{macros} | ||
4 | |||
5 | \begin{document} | ||
6 | %% User defined page headers | ||
7 | \pagestyle{fancyplain} | ||
8 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
9 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
10 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
11 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
12 | \cfoot{} | ||
13 | |||
14 | %% User defined figure legends | ||
15 | \makeatletter | ||
16 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
17 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
18 | \let\fnum@figure\f@ffrench% | ||
19 | \let\captionORI\caption | ||
20 | \def\caption#1{\captionORI{\rm\small #1}} | ||
21 | \makeatother | ||
22 | |||
23 | %% First page | ||
24 | \thispagestyle{empty} | ||
25 | { | ||
26 | \begin{center} | ||
27 | %% Comment for DVI | ||
28 | \includegraphics[height=40mm]{scilab_logo} | ||
29 | \vskip2cm | ||
30 | |||
31 | %% Empty space between the box and the text | ||
32 | \fboxsep6mm | ||
33 | %% Box thickness | ||
34 | \fboxrule1.3pt | ||
35 | \Huge | ||
36 | $$\fbox{$ | ||
37 | \begin{array}{c} | ||
38 | \textbf{Nelder-Mead}\\ | ||
39 | \textbf{User's Manual}\\ | ||
40 | \textbf{-- The Fminsearch Function --}\\ | ||
41 | \end{array} | ||
42 | $} | ||
43 | $$ | ||
44 | \end{center} | ||
45 | |||
46 | \vskip1cm | ||
47 | |||
48 | \begin{center} | ||
49 | \begin{large} | ||
50 | Micha\"el BAUDIN | ||
51 | \end{large} | ||
52 | \end{center} | ||
53 | |||
54 | \vskip2cm | ||
55 | |||
56 | |||
57 | \vskip1cm | ||
58 | |||
59 | |||
60 | \begin{flushright} | ||
61 | Version 0.3 \\ | ||
62 | September 2009 | ||
63 | \end{flushright} | ||
64 | |||
65 | |||
66 | |||
67 | \clearpage | ||
68 | |||
69 | |||
70 | \tableofcontents | ||
71 | |||
72 | \include{fminsearch/fminsearch} | ||
73 | |||
74 | \clearpage | ||
75 | |||
76 | %% Bibliography | ||
77 | |||
78 | \addcontentsline{toc}{chapter}{Bibliography} | ||
79 | \bibliographystyle{plain} | ||
80 | \bibliography{neldermead} | ||
81 | |||
82 | % Index | ||
83 | \addcontentsline{toc}{chapter}{Index} | ||
84 | \printindex | ||
85 | |||
86 | \end{document} | ||
87 | |||
diff --git a/scilab_doc/neldermead/fminsearch/fminsearch.tex b/scilab_doc/neldermead/fminsearch/fminsearch.tex deleted file mode 100644 index c0d954a..0000000 --- a/scilab_doc/neldermead/fminsearch/fminsearch.tex +++ /dev/null | |||
@@ -1,782 +0,0 @@ | |||
1 | \chapter{The \scifunction{fminsearch} function} | ||
2 | \index{fminsearch} | ||
3 | |||
4 | In this chapter, we analyze the implementation of the \scifunction{fminsearch} | ||
5 | which is provided in Scilab. In the first part, we describe the specific | ||
6 | choices of this implementation with respect to the Nelder-Mead algorithm. | ||
7 | In the second part, we present some numerical experiments which | ||
8 | allows to check that the feature is behaving as expected, by comparison | ||
9 | to Matlab's \scifunction{fminsearch}. | ||
10 | |||
11 | \section{\scifunction{fminsearch}'s algorithm} | ||
12 | |||
13 | In this section, we analyse the specific choices used in | ||
14 | \scifunction{fminsearch}'s algorithm. We detail what specific variant | ||
15 | of the Nelder-Mead algorithm is performed, what initial simplex is used, | ||
16 | the default number of iterations and the termination criteria. | ||
17 | |||
18 | \subsection{The algorithm} | ||
19 | |||
20 | The algorithm used is the Nelder-Mead algorithm. This corresponds to the | ||
21 | "variable" value of the "-method" option of the \scifunction{neldermead}. | ||
22 | The "non greedy" version is used, that is, the expansion point is | ||
23 | accepted only if it improves over the reflection point. | ||
24 | |||
25 | \subsection{The initial simplex} | ||
26 | \index{Pfeffer, L.} | ||
27 | \index{Fan, Ellen} | ||
28 | |||
29 | The fminsearch algorithm uses a special initial simplex, which is an | ||
30 | heuristic depending on the initial guess. The strategy chosen by | ||
31 | fminsearch corresponds to the -simplex0method flag of the neldermead | ||
32 | component, with the "pfeffer" method. It is associated with the - | ||
33 | simplex0deltausual = 0.05 and -simplex0deltazero = 0.0075 parameters. | ||
34 | Pfeffer's method is an heuristic which is presented in "Global | ||
35 | Optimization Of Lennard-Jones Atomic Clusters" by Ellen Fan \cite{Fan2002}. | ||
36 | It is due to L. Pfeffer at Stanford. See in the help of optimsimplex for more | ||
37 | details. | ||
38 | |||
39 | \subsection{The number of iterations} | ||
40 | |||
41 | In this section, we present the default values for the number of | ||
42 | iterations in fminsearch. | ||
43 | |||
44 | The options input argument is an optionnal data structure which can | ||
45 | contain the options.MaxIter field. It stores the maximum number of | ||
46 | iterations. The default value is 200n, where n is the number of | ||
47 | variables. The factor 200 has not been chosen by chance, but is the | ||
48 | result of experiments performed against quadratic functions with | ||
49 | increasing space dimension. | ||
50 | |||
51 | This result is presented in "Effect of dimensionality on the nelder-mead | ||
52 | simplex method" by Lixing Han and Michael Neumann \cite{HanNeumann2006}. This paper is based | ||
53 | on Lixing Han's PhD, "Algorithms in Unconstrained Optimization" \cite{Han2000}. The | ||
54 | study is based on numerical experiment with a quadratic function where | ||
55 | the number of terms depends on the dimension of the space (i.e. the | ||
56 | number of variables). Their study shows that the number of iterations | ||
57 | required to reach the tolerance criteria is roughly 100n. Most | ||
58 | iterations are based on inside contractions. Since each step of the | ||
59 | Nelder-Mead algorithm only require one or two function evaluations, the | ||
60 | number of required function evaluations in this experiment is also | ||
61 | roughly 100n. | ||
62 | |||
63 | \subsection{The termination criteria} | ||
64 | |||
65 | The algorithm used by \scifunction{fminsearch} uses a particular | ||
66 | termination criteria, based both on the absolute size of the | ||
67 | simplex and the difference of the function values in the simplex. | ||
68 | This termination criteria corresponds to the "-tolssizedeltafvmethod" | ||
69 | termination criteria of the \scifunction{neldermead} component. | ||
70 | |||
71 | The size of the simplex is computed with the $\sigma-+$ method, | ||
72 | which corresponds to the "sigmaplus" method of the \scifunction{optimsimplex} | ||
73 | component. The tolerance associated with this criteria is | ||
74 | given by the "TolX" parameter of the \scifunction{options} data structure. | ||
75 | Its default value is 1.e-4. | ||
76 | |||
77 | The function value difference is the difference | ||
78 | between the highest and the lowest function value in the simplex. | ||
79 | The tolerance associated with this criteria is given by the | ||
80 | "TolFun" parameter of the \scifunction{options} data structure. | ||
81 | Its default value is 1.e-4. | ||
82 | |||
83 | \section{Numerical experiments} | ||
84 | |||
85 | In this section, we analyse the behaviour of Scilab's \scifunction{fminsearch} | ||
86 | function, by comparison of Matlab's \scifunction{fminsearch}. We especially analyse | ||
87 | the results of the optimization, so that we can check that the algorithm | ||
88 | is indeed behaving the same way, even if the implementation is completely | ||
89 | different. | ||
90 | |||
91 | We consider the unconstrained optimization problem \cite{citeulike:1903787} | ||
92 | \begin{eqnarray} | ||
93 | \min f(\bx) | ||
94 | \end{eqnarray} | ||
95 | where $\bx\in\RR^2$ and the objective function $f$ is defined by | ||
96 | \begin{eqnarray} | ||
97 | f(\bx) = 100*(x_2-x_1^2)^2+(1-x_1)^2. | ||
98 | \end{eqnarray} | ||
99 | The initial guess is | ||
100 | \begin{eqnarray} | ||
101 | \bx^0 = ( -1.2 , 1.)^T, | ||
102 | \end{eqnarray} | ||
103 | where the function value is | ||
104 | \begin{eqnarray} | ||
105 | f(\bx^0) = 24.2. | ||
106 | \end{eqnarray} | ||
107 | The global solution of this problem is | ||
108 | \begin{eqnarray} | ||
109 | \bx^\star = ( 1 , 1.)^T | ||
110 | \end{eqnarray} | ||
111 | where the function value is | ||
112 | \begin{eqnarray} | ||
113 | f(\bx^\star) = 0. | ||
114 | \end{eqnarray} | ||
115 | |||
116 | \subsection{Algorithm and numerical precision} | ||
117 | |||
118 | In this section, we are concerned by the comparison of the behavior | ||
119 | of the two algorithms. We are going to check that the algorithms | ||
120 | produces the same intermediate and final results. | ||
121 | We also analyze the numerical precision of the results, | ||
122 | by detailing the number of significant digits. | ||
123 | |||
124 | To make a more living presentation of this topic, we will | ||
125 | include small scripts which allow to produce the output | ||
126 | that we are going to analyze. Because of the similarity of the languages, | ||
127 | in order to avoid confusion, we will specify, for each script, the language | ||
128 | we use by a small comment. Scripts and outputs written in Matlab's language will begin with | ||
129 | \lstset{language=matlabscript} | ||
130 | \begin{lstlisting} | ||
131 | % Matlab | ||
132 | % ... | ||
133 | \end{lstlisting} | ||
134 | while script written in Scilab's language will begin with | ||
135 | \lstset{language=scilabscript} | ||
136 | \begin{lstlisting} | ||
137 | // Scilab | ||
138 | // ... | ||
139 | \end{lstlisting} | ||
140 | |||
141 | The following Matlab script allows to see the behaviour of Matlab's \scifunction{fminsearch} | ||
142 | function on Rosenbrock's test case. | ||
143 | |||
144 | \lstset{language=matlabscript} | ||
145 | \begin{lstlisting} | ||
146 | % Matlab | ||
147 | format long | ||
148 | banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2; | ||
149 | [x,fval,exitflag,output] = fminsearch(banana,[-1.2, 1]) | ||
150 | output.message | ||
151 | \end{lstlisting} | ||
152 | |||
153 | When this script is launched in Matlab, the following output is | ||
154 | produced. | ||
155 | |||
156 | \lstset{language=matlabscript} | ||
157 | \begin{lstlisting} | ||
158 | >> % Matlab | ||
159 | >> format long | ||
160 | >> banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2; | ||
161 | >> [x,fval] = fminsearch(banana,[-1.2, 1]) | ||
162 | >> [x,fval,exitflag,output] = fminsearch(banana,[-1.2, 1]) | ||
163 | x = | ||
164 | 1.000022021783570 1.000042219751772 | ||
165 | fval = | ||
166 | 8.177661197416674e-10 | ||
167 | exitflag = | ||
168 | 1 | ||
169 | output = | ||
170 | iterations: 85 | ||
171 | funcCount: 159 | ||
172 | algorithm: 'Nelder-Mead simplex direct search' | ||
173 | message: [1x194 char] | ||
174 | >> output.message | ||
175 | ans = | ||
176 | Optimization terminated: | ||
177 | the current x satisfies the termination criteria using | ||
178 | OPTIONS.TolX of 1.000000e-04 | ||
179 | and F(X) satisfies the convergence criteria using | ||
180 | OPTIONS.TolFun of 1.000000e-04 | ||
181 | \end{lstlisting} | ||
182 | |||
183 | The following Scilab script allows to solve the problem with Scilab's | ||
184 | \scifunction{fminsearch}. | ||
185 | |||
186 | \lstset{language=scilabscript} | ||
187 | \begin{lstlisting} | ||
188 | // Scilab | ||
189 | format(25) | ||
190 | function y = banana (x) | ||
191 | y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; | ||
192 | endfunction | ||
193 | [x , fval , exitflag , output] = fminsearch ( banana , [-1.2 1] ) | ||
194 | output.message | ||
195 | \end{lstlisting} | ||
196 | |||
197 | The output associated with this Scilab script is the following. | ||
198 | |||
199 | \lstset{language=scilabscript} | ||
200 | \begin{lstlisting} | ||
201 | -->// Scilab | ||
202 | -->format(25) | ||
203 | -->function y = banana (x) | ||
204 | --> y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; | ||
205 | -->endfunction | ||
206 | -->[x , fval , exitflag , output] = fminsearch ( banana , [-1.2 1] ) | ||
207 | output = | ||
208 | algorithm: "Nelder-Mead simplex direct search" | ||
209 | funcCount: 159 | ||
210 | iterations: 85 | ||
211 | message: [3x1 string] | ||
212 | exitflag = | ||
213 | 1. | ||
214 | fval = | ||
215 | 0.0000000008177661099387 | ||
216 | x = | ||
217 | 1.0000220217835567027009 1.0000422197517710998227 | ||
218 | -->output.message | ||
219 | ans = | ||
220 | |||
221 | !Optimization terminated: ! | ||
222 | ! ! | ||
223 | !the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 ! | ||
224 | ! ! | ||
225 | !and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004 ! | ||
226 | \end{lstlisting} | ||
227 | |||
228 | Because the two softwares do not use the same formatting rules | ||
229 | to produce their outputs, we must perform additionnal checking | ||
230 | in order to check our results. | ||
231 | |||
232 | The following Scilab script displays the results with 16 significant digits. | ||
233 | |||
234 | \lstset{language=scilabscript} | ||
235 | \begin{lstlisting} | ||
236 | // Scilab | ||
237 | // Print the result with 15 significant digits | ||
238 | mprintf ( "%.15e" , fval ); | ||
239 | mprintf ( "%.15e %.15e" , x(1) , x(2) ); | ||
240 | \end{lstlisting} | ||
241 | |||
242 | The previous script produces the following output. | ||
243 | |||
244 | \lstset{language=scilabscript} | ||
245 | \begin{lstlisting} | ||
246 | -->// Scilab | ||
247 | -->mprintf ( "%.15e" , fval ); | ||
248 | 8.177661099387146e-010 | ||
249 | -->mprintf ( "%.15e %.15e" , x(1) , x(2) ); | ||
250 | 1.000022021783557e+000 1.000042219751771e+000 | ||
251 | \end{lstlisting} | ||
252 | |||
253 | These results are reproduced verbatim in the table | ||
254 | \ref{fig-fminsearch-comparison}. | ||
255 | |||
256 | \begin{figure}[htbp] | ||
257 | \begin{center} | ||
258 | \begin{tabular}{|l|l|l|} | ||
259 | \hline | ||
260 | Matlab Iterations & 85 &\\ | ||
261 | Scilab Iterations & 85 &\\ | ||
262 | \hline | ||
263 | Matlab Function Evaluations & 159 &\\ | ||
264 | Scilab Function Evaluations & 159 &\\ | ||
265 | \hline | ||
266 | Matlab $\bx^\star$ & 1.000022021783570 & 1.000042219751772 \\ | ||
267 | Scilab $\bx^\star$ & 1.000022021783557e+000 & 1.000042219751771e+000 \\ | ||
268 | \hline | ||
269 | Matlab $f(\bx^\star)$ & 8.177661197416674e-10 &\\ | ||
270 | Scilab $f(\bx^\star)$ & 8.177661099387146e-010 &\\ | ||
271 | \hline | ||
272 | \end{tabular} | ||
273 | \end{center} | ||
274 | \caption{Numerical experiment with Rosenbrock's function -- Comparison of | ||
275 | results produced by Matlab and Scilab.} | ||
276 | \label{fig-fminsearch-comparison} | ||
277 | \end{figure} | ||
278 | |||
279 | We must compute the common number of significant digits | ||
280 | in order to check the consistency of the results. | ||
281 | The following Scilab script computes the relative error | ||
282 | between Scilab and Matlab results. | ||
283 | |||
284 | \lstset{language=scilabscript} | ||
285 | \begin{lstlisting} | ||
286 | // Scilab | ||
287 | // Compare the result | ||
288 | xmb = [1.000022021783570 1.000042219751772 ]; | ||
289 | err = norm(x - xmb) / norm(xmb); | ||
290 | mprintf ( "Relative Error on x : %e\n", err ); | ||
291 | fmb = 8.177661197416674e-10; | ||
292 | err = abs(fval - fmb) / abs(fmb); | ||
293 | mprintf ( "Relative Error on f : %e\n", err ); | ||
294 | \end{lstlisting} | ||
295 | |||
296 | The previous script produces the following output. | ||
297 | |||
298 | \lstset{language=scilabscript} | ||
299 | \begin{lstlisting} | ||
300 | // Scilab | ||
301 | Relative Error on x : 9.441163e-015 | ||
302 | Relative Error on f : 1.198748e-008 | ||
303 | \end{lstlisting} | ||
304 | |||
305 | We must take into account for the floating point implementations | ||
306 | of both Matlab and Scilab. In both these numerical softwares, | ||
307 | double precision floating point numbers are used, i.e. the relative | ||
308 | precision is both these softwares is $\epsilon \approx 10^{-16}$. | ||
309 | That implies that there are approximately 16 significant digits. | ||
310 | Therefore, the relative error on $x$, which is equivalent to 15 | ||
311 | significant digits, is acceptable. | ||
312 | |||
313 | Therefore, the result is as close as possible to the result produced | ||
314 | by Matlab. More specifically : | ||
315 | \begin{itemize} | ||
316 | \item the optimum $x$ is the same up to 15 significant digits, | ||
317 | \item the function value at optimum is the same up to 8 significant digits, | ||
318 | \item the number of iterations is the same, | ||
319 | \item the number of function evaluations is the same, | ||
320 | \item the exit flag is the same, | ||
321 | \item the content of the output is the same (but the string is not | ||
322 | display the same way). | ||
323 | \end{itemize} | ||
324 | |||
325 | The output of the two functions is the same. | ||
326 | We must now check that the algorithms performs the same way, | ||
327 | that is, produces the same intermediate steps. | ||
328 | |||
329 | The following Matlab script allows to get deeper information by printing a message at each iteration | ||
330 | with the "Display" option. | ||
331 | |||
332 | \index{optimset} | ||
333 | |||
334 | \lstset{language=matlabscript} | ||
335 | \begin{lstlisting} | ||
336 | % Matlab | ||
337 | opt = optimset('Display','iter'); | ||
338 | [x,fval,exitflag,output] = fminsearch(banana,[-1.2, 1] , opt ); | ||
339 | \end{lstlisting} | ||
340 | |||
341 | The previous script produces the following output. | ||
342 | |||
343 | \lstset{language=matlabscript} | ||
344 | \begin{lstlisting} | ||
345 | % Matlab | ||
346 | Iteration Func-count min f(x) Procedure | ||
347 | 0 1 24.2 | ||
348 | 1 3 20.05 initial simplex | ||
349 | 2 5 5.1618 expand | ||
350 | 3 7 4.4978 reflect | ||
351 | 4 9 4.4978 contract outside | ||
352 | 5 11 4.38136 contract inside | ||
353 | 6 13 4.24527 contract inside | ||
354 | 7 15 4.21762 reflect | ||
355 | 8 17 4.21129 contract inside | ||
356 | 9 19 4.13556 expand | ||
357 | 10 21 4.13556 contract inside | ||
358 | 11 23 4.01273 expand | ||
359 | 12 25 3.93738 expand | ||
360 | 13 27 3.60261 expand | ||
361 | 14 28 3.60261 reflect | ||
362 | 15 30 3.46622 reflect | ||
363 | 16 32 3.21605 expand | ||
364 | 17 34 3.16491 reflect | ||
365 | 18 36 2.70687 expand | ||
366 | 19 37 2.70687 reflect | ||
367 | 20 39 2.00218 expand | ||
368 | 21 41 2.00218 contract inside | ||
369 | 22 43 2.00218 contract inside | ||
370 | 23 45 1.81543 expand | ||
371 | 24 47 1.73481 contract outside | ||
372 | 25 49 1.31697 expand | ||
373 | 26 50 1.31697 reflect | ||
374 | 27 51 1.31697 reflect | ||
375 | 28 53 1.1595 reflect | ||
376 | 29 55 1.07674 contract inside | ||
377 | 30 57 0.883492 reflect | ||
378 | 31 59 0.883492 contract inside | ||
379 | 32 61 0.669165 expand | ||
380 | 33 63 0.669165 contract inside | ||
381 | 34 64 0.669165 reflect | ||
382 | 35 66 0.536729 reflect | ||
383 | 36 68 0.536729 contract inside | ||
384 | 37 70 0.423294 expand | ||
385 | 38 72 0.423294 contract outside | ||
386 | 39 74 0.398527 reflect | ||
387 | 40 76 0.31447 expand | ||
388 | 41 77 0.31447 reflect | ||
389 | 42 79 0.190317 expand | ||
390 | 43 81 0.190317 contract inside | ||
391 | 44 82 0.190317 reflect | ||
392 | 45 84 0.13696 reflect | ||
393 | 46 86 0.13696 contract outside | ||
394 | 47 88 0.113128 contract outside | ||
395 | 48 90 0.11053 contract inside | ||
396 | 49 92 0.10234 reflect | ||
397 | 50 94 0.101184 contract inside | ||
398 | 51 96 0.0794969 expand | ||
399 | 52 97 0.0794969 reflect | ||
400 | 53 98 0.0794969 reflect | ||
401 | 54 100 0.0569294 expand | ||
402 | 55 102 0.0569294 contract inside | ||
403 | 56 104 0.0344855 expand | ||
404 | 57 106 0.0179534 expand | ||
405 | 58 108 0.0169469 contract outside | ||
406 | 59 110 0.00401463 reflect | ||
407 | 60 112 0.00401463 contract inside | ||
408 | 61 113 0.00401463 reflect | ||
409 | 62 115 0.000369954 reflect | ||
410 | 63 117 0.000369954 contract inside | ||
411 | 64 118 0.000369954 reflect | ||
412 | 65 120 0.000369954 contract inside | ||
413 | 66 122 5.90111e-005 contract outside | ||
414 | 67 124 3.36682e-005 contract inside | ||
415 | 68 126 3.36682e-005 contract outside | ||
416 | 69 128 1.89159e-005 contract outside | ||
417 | 70 130 8.46083e-006 contract inside | ||
418 | 71 132 2.88255e-006 contract inside | ||
419 | 72 133 2.88255e-006 reflect | ||
420 | 73 135 7.48997e-007 contract inside | ||
421 | 74 137 7.48997e-007 contract inside | ||
422 | 75 139 6.20365e-007 contract inside | ||
423 | 76 141 2.16919e-007 contract outside | ||
424 | 77 143 1.00244e-007 contract inside | ||
425 | 78 145 5.23487e-008 contract inside | ||
426 | 79 147 5.03503e-008 contract inside | ||
427 | 80 149 2.0043e-008 contract inside | ||
428 | 81 151 1.12293e-009 contract inside | ||
429 | 82 153 1.12293e-009 contract outside | ||
430 | 83 155 1.12293e-009 contract inside | ||
431 | 84 157 1.10755e-009 contract outside | ||
432 | 85 159 8.17766e-010 contract inside | ||
433 | |||
434 | Optimization terminated: | ||
435 | the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 | ||
436 | and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004 | ||
437 | \end{lstlisting} | ||
438 | |||
439 | The following Scilab script set the "Display" option to "iter" and | ||
440 | run the \scifunction{fminsearch} function. | ||
441 | \index{optimset} | ||
442 | |||
443 | \lstset{language=scilabscript} | ||
444 | \begin{lstlisting} | ||
445 | // Scilab | ||
446 | opt = optimset ( "Display" , "iter" ); | ||
447 | [x , fval , exitflag , output] = fminsearch ( banana , [-1.2 1] , opt ); | ||
448 | \end{lstlisting} | ||
449 | |||
450 | \lstset{language=scilabscript} | ||
451 | \begin{lstlisting} | ||
452 | // Scilab | ||
453 | Iteration Func-count min f(x) Procedure | ||
454 | 0 3 24.2 | ||
455 | 1 3 20.05 initial simplex | ||
456 | 2 5 5.161796 expand | ||
457 | 3 7 4.497796 reflect | ||
458 | 4 9 4.497796 contract outside | ||
459 | 5 11 4.3813601 contract inside | ||
460 | 6 13 4.2452728 contract inside | ||
461 | 7 15 4.2176247 reflect | ||
462 | 8 17 4.2112906 contract inside | ||
463 | 9 19 4.1355598 expand | ||
464 | 10 21 4.1355598 contract inside | ||
465 | 11 23 4.0127268 expand | ||
466 | 12 25 3.9373812 expand | ||
467 | 13 27 3.602606 expand | ||
468 | 14 28 3.602606 reflect | ||
469 | 15 30 3.4662211 reflect | ||
470 | 16 32 3.2160547 expand | ||
471 | 17 34 3.1649126 reflect | ||
472 | 18 36 2.7068692 expand | ||
473 | 19 37 2.7068692 reflect | ||
474 | 20 39 2.0021824 expand | ||
475 | 21 41 2.0021824 contract inside | ||
476 | 22 43 2.0021824 contract inside | ||
477 | 23 45 1.8154337 expand | ||
478 | 24 47 1.7348144 contract outside | ||
479 | 25 49 1.3169723 expand | ||
480 | 26 50 1.3169723 reflect | ||
481 | 27 51 1.3169723 reflect | ||
482 | 28 53 1.1595038 reflect | ||
483 | 29 55 1.0767387 contract inside | ||
484 | 30 57 0.8834921 reflect | ||
485 | 31 59 0.8834921 contract inside | ||
486 | 32 61 0.6691654 expand | ||
487 | 33 63 0.6691654 contract inside | ||
488 | 34 64 0.6691654 reflect | ||
489 | 35 66 0.5367289 reflect | ||
490 | 36 68 0.5367289 contract inside | ||
491 | 37 70 0.4232940 expand | ||
492 | 38 72 0.4232940 contract outside | ||
493 | 39 74 0.3985272 reflect | ||
494 | 40 76 0.3144704 expand | ||
495 | 41 77 0.3144704 reflect | ||
496 | 42 79 0.1903167 expand | ||
497 | 43 81 0.1903167 contract inside | ||
498 | 44 82 0.1903167 reflect | ||
499 | 45 84 0.1369602 reflect | ||
500 | 46 86 0.1369602 contract outside | ||
501 | 47 88 0.1131281 contract outside | ||
502 | 48 90 0.1105304 contract inside | ||
503 | 49 92 0.1023402 reflect | ||
504 | 50 94 0.1011837 contract inside | ||
505 | 51 96 0.0794969 expand | ||
506 | 52 97 0.0794969 reflect | ||
507 | 53 98 0.0794969 reflect | ||
508 | 54 100 0.0569294 expand | ||
509 | 55 102 0.0569294 contract inside | ||
510 | 56 104 0.0344855 expand | ||
511 | 57 106 0.0179534 expand | ||
512 | 58 108 0.0169469 contract outside | ||
513 | 59 110 0.0040146 reflect | ||
514 | 60 112 0.0040146 contract inside | ||
515 | 61 113 0.0040146 reflect | ||
516 | 62 115 0.0003700 reflect | ||
517 | 63 117 0.0003700 contract inside | ||
518 | 64 118 0.0003700 reflect | ||
519 | 65 120 0.0003700 contract inside | ||
520 | 66 122 0.0000590 contract outside | ||
521 | 67 124 0.0000337 contract inside | ||
522 | 68 126 0.0000337 contract outside | ||
523 | 69 128 0.0000189 contract outside | ||
524 | 70 130 0.0000085 contract inside | ||
525 | 71 132 0.0000029 contract inside | ||
526 | 72 133 0.0000029 reflect | ||
527 | 73 135 0.0000007 contract inside | ||
528 | 74 137 0.0000007 contract inside | ||
529 | 75 139 0.0000006 contract inside | ||
530 | 76 141 0.0000002 contract outside | ||
531 | 77 143 0.0000001 contract inside | ||
532 | 78 145 5.235D-08 contract inside | ||
533 | 79 147 5.035D-08 contract inside | ||
534 | 80 149 2.004D-08 contract inside | ||
535 | 81 151 1.123D-09 contract inside | ||
536 | 82 153 1.123D-09 contract outside | ||
537 | 83 155 1.123D-09 contract inside | ||
538 | 84 157 1.108D-09 contract outside | ||
539 | 85 159 8.178D-10 contract inside | ||
540 | |||
541 | Optimization terminated: | ||
542 | the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 | ||
543 | and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004 | ||
544 | \end{lstlisting} | ||
545 | |||
546 | We check that the two softwares produces indeed the same intermediate results in terms | ||
547 | of iteration, function evaluations, function values and type of steps. | ||
548 | The only difference is the iteration \#0, which is associated with | ||
549 | function evaluation \#1 in Matlab and with function evaluation \#3 in Scilab. | ||
550 | This is because Scilab calls back the output function once the initial | ||
551 | simplex is computed, which requires 3 function evaluations. | ||
552 | |||
553 | \subsection{Output and plot functions} | ||
554 | |||
555 | In this section, we check that the output and plot features of the | ||
556 | \scifunction{fminsearch} function are the same. | ||
557 | We also check that the fields and the content of the \scivar{optimValues} | ||
558 | data structure and the \scivar{state} variable are the same in | ||
559 | both languages. | ||
560 | |||
561 | The following output function plots in the current graphic | ||
562 | window the value of the current parameter $\bx$. | ||
563 | It also unloads the content of the \scivar{optimValues} | ||
564 | data structure and prints a message in the console. | ||
565 | To let Matlab load that script, save the content in a | ||
566 | .m file, in a directory known by Matlab. | ||
567 | |||
568 | \lstset{language=matlabscript} | ||
569 | \begin{lstlisting} | ||
570 | % Matlab | ||
571 | function stop = outfun(x, optimValues, state) | ||
572 | stop = false; | ||
573 | hold on; | ||
574 | plot(x(1),x(2),'.'); | ||
575 | fc = optimValues.funccount; | ||
576 | fv = optimValues.fval; | ||
577 | it = optimValues.iteration; | ||
578 | pr = optimValues.procedure; | ||
579 | disp(sprintf ( '%d %e %d -%s- %s\n' , fc , fv , it , pr , state )) | ||
580 | drawnow | ||
581 | \end{lstlisting} | ||
582 | |||
583 | The following Matlab script allows to perform the optimization | ||
584 | so that the output function is called back at each iteration. | ||
585 | \index{optimset} | ||
586 | |||
587 | \lstset{language=matlabscript} | ||
588 | \begin{lstlisting} | ||
589 | % Matlab | ||
590 | options = optimset('OutputFcn', @outfun); | ||
591 | [x fval] = fminsearch(banana, [-1.2, 1], options) | ||
592 | \end{lstlisting} | ||
593 | |||
594 | This produces the plot which is presented in figure \ref{fig-fminsearch-matlab-outputfun}. | ||
595 | |||
596 | \begin{figure} | ||
597 | \begin{center} | ||
598 | \includegraphics[width=10cm]{fminsearch/testFminsearchPlotMatlab.png} | ||
599 | \end{center} | ||
600 | \caption{Plot produced by Matlab's fminsearch, with customized output function.} | ||
601 | \label{fig-fminsearch-matlab-outputfun} | ||
602 | \end{figure} | ||
603 | |||
604 | Matlab also prints the following messages in the console. | ||
605 | |||
606 | \lstset{language=matlabscript} | ||
607 | \begin{lstlisting} | ||
608 | % Matlab | ||
609 | 1 2.420000e+001 0 -- init | ||
610 | 1 2.420000e+001 0 -- iter | ||
611 | 3 2.005000e+001 1 -initial simplex- iter | ||
612 | 5 5.161796e+000 2 -expand- iter | ||
613 | 7 4.497796e+000 3 -reflect- iter | ||
614 | 9 4.497796e+000 4 -contract outside- iter | ||
615 | 11 4.381360e+000 5 -contract inside- iter | ||
616 | 13 4.245273e+000 6 -contract inside- iter | ||
617 | [...] | ||
618 | 149 2.004302e-008 80 -contract inside- iter | ||
619 | 151 1.122930e-009 81 -contract inside- iter | ||
620 | 153 1.122930e-009 82 -contract outside- iter | ||
621 | 155 1.122930e-009 83 -contract inside- iter | ||
622 | 157 1.107549e-009 84 -contract outside- iter | ||
623 | 159 8.177661e-010 85 -contract inside- iter | ||
624 | 159 8.177661e-010 85 -contract inside- done | ||
625 | \end{lstlisting} | ||
626 | |||
627 | The following Scilab script sets the "OutputFcn" option and then calls | ||
628 | the \scifunction{fminsearch} in order to perform the optimization. | ||
629 | \index{optimset} | ||
630 | |||
631 | \lstset{language=scilabscript} | ||
632 | \begin{lstlisting} | ||
633 | // Scilab | ||
634 | function outfun ( x , optimValues , state ) | ||
635 | plot( x(1),x(2),'.'); | ||
636 | fc = optimValues.funccount; | ||
637 | fv = optimValues.fval; | ||
638 | it = optimValues.iteration; | ||
639 | pr = optimValues.procedure; | ||
640 | mprintf ( "%d %e %d -%s- %s\n" , fc , fv , it , pr , state ) | ||
641 | endfunction | ||
642 | opt = optimset ( "OutputFcn" , outfun); | ||
643 | [x fval] = fminsearch ( banana , [-1.2 1] , opt ); | ||
644 | \end{lstlisting} | ||
645 | |||
646 | The previous script produces the plot which is presented | ||
647 | in figure \ref{fig-fminsearch-scilab-outputfun}. | ||
648 | |||
649 | \begin{figure} | ||
650 | \begin{center} | ||
651 | \includegraphics[width=10cm]{fminsearch/testFminsearchPlotScilab.png} | ||
652 | \end{center} | ||
653 | \caption{Plot produced by Scilab's fminsearch, with customized output function.} | ||
654 | \label{fig-fminsearch-scilab-outputfun} | ||
655 | \end{figure} | ||
656 | |||
657 | Except for the size of the dots (which can be configured in | ||
658 | both softwares), the graphics are exactly the same. | ||
659 | |||
660 | Scilab also prints the following messages in the console. | ||
661 | |||
662 | \lstset{language=scilabscript} | ||
663 | \begin{lstlisting} | ||
664 | // Scilab | ||
665 | 3 2.420000e+001 0 -- init | ||
666 | 3 2.005000e+001 1 -initial simplex- iter | ||
667 | 5 5.161796e+000 2 -expand- iter | ||
668 | 7 4.497796e+000 3 -reflect- iter | ||
669 | 9 4.497796e+000 4 -contract outside- iter | ||
670 | 11 4.381360e+000 5 -contract inside- iter | ||
671 | 13 4.245273e+000 6 -contract inside- iter | ||
672 | [...] | ||
673 | 149 2.004302e-008 80 -contract inside- iter | ||
674 | 151 1.122930e-009 81 -contract inside- iter | ||
675 | 153 1.122930e-009 82 -contract outside- iter | ||
676 | 155 1.122930e-009 83 -contract inside- iter | ||
677 | 157 1.107549e-009 84 -contract outside- iter | ||
678 | 159 8.177661e-010 85 -contract inside- iter | ||
679 | 159 8.177661e-010 85 -- done | ||
680 | \end{lstlisting} | ||
681 | |||
682 | We see that the output produced by the two software are identical, | ||
683 | expect for the two first lines and the last line. | ||
684 | The lines \#1 and \#2 are different is because Scilab computes the | ||
685 | function values of all the vertices before calling back the output function. | ||
686 | The last line is different because Scilab considers that once the optimization | ||
687 | is performed, the type of the step is an empty string. Instead, Matlab | ||
688 | displays the type of the last performed step. | ||
689 | |||
690 | \subsection{Predefined plot functions} | ||
691 | |||
692 | \index{optimplotfval} | ||
693 | \index{optimplotx} | ||
694 | \index{optimplotfunccount} | ||
695 | |||
696 | Several pre-defined plot functions are provided with | ||
697 | the \scifunction{fminsearch} function. | ||
698 | These functions are | ||
699 | \begin{itemize} | ||
700 | \item \scifunction{optimplotfval}, | ||
701 | \item \scifunction{optimplotx}, | ||
702 | \item \scifunction{optimplotfunccount}. | ||
703 | \end{itemize} | ||
704 | |||
705 | In the following Matlab script, we use the \scifunction{optimplotfval} | ||
706 | pre-defined function. | ||
707 | \index{optimset} | ||
708 | |||
709 | \lstset{language=matlabscript} | ||
710 | \begin{lstlisting} | ||
711 | % Matlab | ||
712 | options = optimset('PlotFcns',@optimplotfval); | ||
713 | [x fval] = fminsearch(banana , [-1.2, 1] , options) | ||
714 | \end{lstlisting} | ||
715 | |||
716 | The previous script produces the plot which is presented in figure | ||
717 | \ref{fig-fminsearch-matlab-optimplotfval}. | ||
718 | |||
719 | \begin{figure} | ||
720 | \begin{center} | ||
721 | \includegraphics[width=10cm]{fminsearch/testFminsearchOptimplotfvalMatlab.png} | ||
722 | \end{center} | ||
723 | \caption{Plot produced by Matlab's fminsearch, with the \scifunction{optimplotfval} function.} | ||
724 | \label{fig-fminsearch-matlab-optimplotfval} | ||
725 | \end{figure} | ||
726 | |||
727 | The following Scilab script uses the \scifunction{optimplotfval} | ||
728 | pre-defined function. | ||
729 | \index{optimset} | ||
730 | |||
731 | \lstset{language=scilabscript} | ||
732 | \begin{lstlisting} | ||
733 | // Scilab | ||
734 | opt = optimset ( "OutputFcn" , optimplotfval ); | ||
735 | [x fval] = fminsearch ( banana , [-1.2 1] , opt ); | ||
736 | \end{lstlisting} | ||
737 | |||
738 | The previous script produces the plot which is presented in figure | ||
739 | \ref{fig-fminsearch-scilab-optimplotfval}. | ||
740 | |||
741 | \begin{figure} | ||
742 | \begin{center} | ||
743 | \includegraphics[width=10cm]{fminsearch/testFminsearchOptimplotfvalScilab.png} | ||
744 | \end{center} | ||
745 | \caption{Plot produced by Scilab's fminsearch, with the \scifunction{optimplotfval} function.} | ||
746 | \label{fig-fminsearch-scilab-optimplotfval} | ||
747 | \end{figure} | ||
748 | |||
749 | The comparison between the figures \ref{fig-fminsearch-matlab-optimplotfval} and | ||
750 | \ref{fig-fminsearch-scilab-optimplotfval} shows that the two features produce | ||
751 | very similar plots. Notice that Scilab's \scifunction{fminsearch} does not | ||
752 | provide the "Stop" and "Pause" buttons. | ||
753 | |||
754 | The figures \ref{fig-fminsearch-scilab-optimplotx} and \ref{fig-fminsearch-scilab-optimplotfunccount} | ||
755 | present the results of Scilab's \scifunction{optimplotx} and \scifunction{optimplotfunccount} | ||
756 | functions. | ||
757 | |||
758 | \begin{figure} | ||
759 | \begin{center} | ||
760 | \includegraphics[width=10cm]{fminsearch/testFminsearchOptimplotxScilab.png} | ||
761 | \end{center} | ||
762 | \caption{Plot produced by Scilab's fminsearch, with the \scifunction{optimplotx} function.} | ||
763 | \label{fig-fminsearch-scilab-optimplotx} | ||
764 | \end{figure} | ||
765 | |||
766 | \begin{figure} | ||
767 | \begin{center} | ||
768 | \includegraphics[width=10cm]{fminsearch/testFminsearchOptimplotfunccountScilab.png} | ||
769 | \end{center} | ||
770 | \caption{Plot produced by Scilab's fminsearch, with the \scifunction{optimplotfunccount} function.} | ||
771 | \label{fig-fminsearch-scilab-optimplotfunccount} | ||
772 | \end{figure} | ||
773 | |||
774 | \section{Conclusion} | ||
775 | |||
776 | The current version of Scilab's \scifunction{fminsearch} provides the same algorithm | ||
777 | as Matlab's \scifunction{fminsearch}. The numerical precision is the same. | ||
778 | The \scifunction{optimset} and \scifunction{optimget} functions allows to configure the optimization, | ||
779 | as well as the output and plotting function. | ||
780 | Pre-defined plotting function allows to get a fast and nice plot of the optimization. | ||
781 | |||
782 | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfunccountScilab.png b/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfunccountScilab.png deleted file mode 100644 index 28ca428..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfunccountScilab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalMatlab.png b/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalMatlab.png deleted file mode 100644 index 8e50630..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalMatlab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalScilab.png b/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalScilab.png deleted file mode 100644 index 8651bdb..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotfvalScilab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxMatlab.png b/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxMatlab.png deleted file mode 100644 index 9ef102a..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxMatlab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxScilab.png b/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxScilab.png deleted file mode 100644 index 7697c0e..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchOptimplotxScilab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchPlotMatlab.png b/scilab_doc/neldermead/fminsearch/testFminsearchPlotMatlab.png deleted file mode 100644 index 09e3476..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchPlotMatlab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/fminsearch/testFminsearchPlotScilab.png b/scilab_doc/neldermead/fminsearch/testFminsearchPlotScilab.png deleted file mode 100644 index 5408533..0000000 --- a/scilab_doc/neldermead/fminsearch/testFminsearchPlotScilab.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/implementations.tex b/scilab_doc/neldermead/implementations.tex deleted file mode 100644 index 0cd7be6..0000000 --- a/scilab_doc/neldermead/implementations.tex +++ /dev/null | |||
@@ -1,229 +0,0 @@ | |||
1 | \chapter{Implementations of the Nelder-Mead algorithm} | ||
2 | |||
3 | In the following sections, we analyze the various implementations of the | ||
4 | Nelder-Mead algorithm. We analyze the Matlab implementation provided | ||
5 | by the \emph{fminsearch} command. We analyze the matlab algorithm provided by | ||
6 | C.T. Kelley and the Scilab port by Y. Collette. We | ||
7 | present the Numerical Recipes implementations. We analyze the O'Neill | ||
8 | fortran 77 implementation "AS47". The Burkardt implementation is also covered. | ||
9 | The implementation provided in the NAG collection is detailed. | ||
10 | The Nelder-Mead algorithm from the Gnu Scientific Library is analyzed. | ||
11 | |||
12 | \section{Matlab : fminsearch} | ||
13 | |||
14 | The Matlab command fminsearch implements the Nelder-Mead algorithm \cite{MatlabFminsearch}. | ||
15 | It provides features such as | ||
16 | \begin{itemize} | ||
17 | \item maximum number of function evaluations, | ||
18 | \item maximum number of iterations, | ||
19 | \item termination tolerance on the function value, | ||
20 | \item termination tolerance on $x$, | ||
21 | \item output command to display the progress of the algorithm. | ||
22 | \end{itemize} | ||
23 | |||
24 | \section{Kelley and the Nelder-Mead algorithm} | ||
25 | \index{Kelley, C. T.} | ||
26 | |||
27 | C.T. Kelley has written a book \cite{Kelley1999} on optimization method and devotes a | ||
28 | complete chapter to direct search algorithms, especially the Nelder-Mead | ||
29 | algorithm. Kelley provides in \cite{KelleyMethodsOptimizationMatlabCodes} | ||
30 | the Matlab implementation of the | ||
31 | Nelder-Mead algorithm. That implementation uses the restart strategy | ||
32 | that Kelley has published in \cite{589283} and which improves the possible | ||
33 | stagnation of the algorithm on non local optimization points. No tests | ||
34 | are provided. | ||
35 | |||
36 | The following is extracted from the README provided with these | ||
37 | algorithms. | ||
38 | |||
39 | \begin{verbatim} | ||
40 | These files are current as of December 9, 1998. | ||
41 | |||
42 | ----------------- | ||
43 | |||
44 | MATLAB/FORTRAN software for Iterative Methods for Optimization | ||
45 | |||
46 | by C. T. Kelley | ||
47 | |||
48 | These M-files are implementations of the algorithms from the book | ||
49 | "Iterative Methods for Optimization", to be published by SIAM, | ||
50 | by C. T. Kelley. The book, which describes the algorithms, is available | ||
51 | from SIAM (service@siam.org). These files can be modified for non-commercial | ||
52 | purposes provided that the authors: | ||
53 | |||
54 | C. T. Kelley for all MATLAB codes, | ||
55 | P. Gilmore and T. D. Choi for iffco.f | ||
56 | J. M. Gablonsky for DIRECT | ||
57 | |||
58 | are acknowledged and clear comment lines are inserted | ||
59 | that the code has been changed. The authors assume no no responsibility | ||
60 | for any errors that may exist in these routines. | ||
61 | |||
62 | Questions, comments, and bug reports should be sent to | ||
63 | |||
64 | Professor C. T. Kelley | ||
65 | Department of Mathematics, Box 8205 | ||
66 | North Carolina State University | ||
67 | Raleigh, NC 27695-8205 | ||
68 | |||
69 | (919) 515-7163 | ||
70 | (919) 515-3798 (FAX) | ||
71 | |||
72 | Tim_Kelley@ncsu.edu | ||
73 | |||
74 | \end{verbatim} | ||
75 | |||
76 | |||
77 | From Scilab's point of view, that ?licence? is a problem since it | ||
78 | prevents the use of the source for commercial purposes. | ||
79 | |||
80 | \section{Nelder-Mead Scilab Toolbox : Lolimot} | ||
81 | |||
82 | The Lolimot project by Yann Collette provide two Scilab-based Nelder- | ||
83 | Mead implementations \cite{LolimotColletteURL}. The first implementation is a Scilab port of | ||
84 | the Kelley script. The licence problem is therefore not solved by this | ||
85 | script. The second implementation \cite{NelderMeadColletteURL} implements the restart strategy | ||
86 | by Kelley. No tests are provided. | ||
87 | |||
88 | \section{Numerical Recipes} | ||
89 | |||
90 | The Numerical Recipes \cite{NumericalRecipes} provides the C source code of an | ||
91 | implementation of the Nelder-Mead algorithm. Of course, this is a | ||
92 | copyrighted material which cannot be included in Scilab. | ||
93 | |||
94 | \section{NASHLIB : A19} | ||
95 | |||
96 | Nashlib is a collection of Fortran subprograms from "Compact Numerical | ||
97 | Methods for Computers; Linear Algebra and Function Minimisation, " by | ||
98 | J.C. Nash. The subprograms are written without many of the extra | ||
99 | features usually associated with commercial mathematical software, such | ||
100 | as extensive error checking, and are most useful for those applications | ||
101 | where small program size is particularly important. The license is | ||
102 | public domain. | ||
103 | |||
104 | Nahslib includes one implementation of the Nelder-Mead algorithm \cite{GAMS-A19A20-Desc}, | ||
105 | \cite{GAMS-A19A20-Source}. It is written in fortran 77. The coding style is "goto"-based and | ||
106 | may not be easy to maintain. | ||
107 | |||
108 | \section{O'Neill implementations} | ||
109 | |||
110 | The paper \cite{O'Neill1971AAF} by R. O'Neil in the journal of Applied Statistics | ||
111 | presents a fortran 77 implementation of the Nelder-Mead algorithm. The | ||
112 | source code itself is available in \cite{O'NeillAS47}. Many of the following | ||
113 | implementations are based on this primary source code. We were not able | ||
114 | to get the paper \cite{O'Neill1971AAF} itself. | ||
115 | |||
116 | On his website, John Burkardt gives a fortran 77 source code of the | ||
117 | Nelder-Mead algorithm \cite{Burkardtasa047}. The following are the comments in the header | ||
118 | of the source code. | ||
119 | |||
120 | \begin{verbatim} | ||
121 | |||
122 | c Discussion: | ||
123 | c | ||
124 | c This routine seeks the minimum value of a user-specified function. | ||
125 | c | ||
126 | c Simplex function minimisation procedure due to Nelder+Mead(1965), | ||
127 | c as implemented by O'Neill(1971, Appl.Statist. 20, 338-45), with | ||
128 | c subsequent comments by Chambers+Ertel(1974, 23, 250-1), Benyon(1976, | ||
129 | c 25, 97) and Hill(1978, 27, 380-2) | ||
130 | c | ||
131 | c The function to be minimized must be defined by a function of | ||
132 | c the form | ||
133 | c | ||
134 | c function fn ( x, f ) | ||
135 | c double precision fn | ||
136 | c double precision x(*) | ||
137 | c | ||
138 | c and the name of this subroutine must be declared EXTERNAL in the | ||
139 | c calling routine and passed as the argument FN. | ||
140 | c | ||
141 | c This routine does not include a termination test using the | ||
142 | c fitting of a quadratic surface. | ||
143 | c | ||
144 | c Modified: | ||
145 | c | ||
146 | c 27 February 2008 | ||
147 | c | ||
148 | c Author: | ||
149 | c | ||
150 | c FORTRAN77 version by R ONeill | ||
151 | c Modifications by John Burkardt | ||
152 | |||
153 | \end{verbatim} | ||
154 | |||
155 | The "Bayesian Survival Analysis" book by Joseph G. Ibrahim, Ming-Hui | ||
156 | Chen, and Debajyoti Sinha provides in \cite{SurvivalBookOptim} a fortran 77 implementation | ||
157 | of the Nelder-Mead algorithm. The following is the header of the source | ||
158 | code. | ||
159 | |||
160 | \begin{verbatim} | ||
161 | c Simplex function minimisation procedure due to Nelder+Mead(1965), | ||
162 | c as implemented by O'Neill(1971, Appl.Statist. 20, 338-45), with | ||
163 | c subsequent comments by Chambers+Ertel(1974, 23, 250-1), Benyon(1976, | ||
164 | c 25, 97) and Hill(1978, 27, 380-2) | ||
165 | \end{verbatim} | ||
166 | |||
167 | The O'Neill implementation uses a restart procedure which is | ||
168 | based on a local axis by axis search for the optimality of the | ||
169 | computed optimum. | ||
170 | |||
171 | \section{Burkardt implementations} | ||
172 | \index{Burkardt, John} | ||
173 | |||
174 | John Burkardt gives several implementations of the Nelder-Mead | ||
175 | algorithm | ||
176 | \begin{itemize} | ||
177 | \item in fortran 77 \cite{Burkardtasa047} | ||
178 | \item in Matlab by Jeff Borggaard \cite{BurkardtNelderMeadMatlab}. | ||
179 | \end{itemize} | ||
180 | |||
181 | \section{NAG Fortran implementation} | ||
182 | \index{NAG} | ||
183 | |||
184 | The NAG Fortran library provides the E04CCF/E04CCA routines \cite{NAGE04CCF} which | ||
185 | implements the simplex optimization method. | ||
186 | E04CCA is a version of E04CCF that has additional parameters | ||
187 | in order to make it safe for use in multithreaded applications. | ||
188 | As mentioned in the documentation, "The method tends to be slow, but it | ||
189 | is robust and therefore very useful for functions that are subject to inaccuracies.". | ||
190 | The termination criteria is based on the standard deviation of the function | ||
191 | values of the simplex. | ||
192 | |||
193 | The specification of the cost function for E04CCA is: | ||
194 | \begin{verbatim} | ||
195 | SUBROUTINE FUNCT ( N, XC, FC, IUSER, RUSER) | ||
196 | \end{verbatim} | ||
197 | where IUSER and RUSER and integer and double precision array, which allow the | ||
198 | user to supply information to the cost function. | ||
199 | An output routine, called MONIT is called once every iteration in E04CCF/E04CCA. | ||
200 | It can be used to print out the current values of any selection of its parameters | ||
201 | but must not be used to change the values of the parameters. | ||
202 | |||
203 | \section{GSL implementation} | ||
204 | \index{Gnu Scientific Library} | ||
205 | |||
206 | The Gnu Scientific Library provides two Nelder-Mead implementations. | ||
207 | The authors are Tuomo Keskitalo, Ivo Alxneit and Brian Gough. | ||
208 | The size of the simplex is the root mean square sum of length of vectors | ||
209 | from simplex center to corner points. | ||
210 | The termination criteria is based on the size of the simplex. | ||
211 | |||
212 | The C implementation of the minimization algorithm is original. | ||
213 | The communication is direct, in the sense that the specific optimization | ||
214 | algorithm calls back the cost function. | ||
215 | A specific optimization implementation provides four functions : "alloc", "free", "iterate" | ||
216 | and "set". A generic optimizer is created by connecting it to a specific optimizer. | ||
217 | The user must write the loop over the iterations, making successive calls | ||
218 | to the generic "iterate" function, which, in turns, calls the specific "iterate" | ||
219 | associated with the specific optimization algorithm. | ||
220 | |||
221 | The cost function can be provided as three function pointers | ||
222 | \begin{itemize} | ||
223 | \item the cost function $f$, | ||
224 | \item the gradient $g$, | ||
225 | \item both the cost function and the gradient. | ||
226 | \end{itemize} | ||
227 | Some additional parameters can be passed to these functions. | ||
228 | |||
229 | |||
diff --git a/scilab_doc/neldermead/installation-directories.png b/scilab_doc/neldermead/installation-directories.png deleted file mode 100644 index c70b1cb..0000000 --- a/scilab_doc/neldermead/installation-directories.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/installation.tex b/scilab_doc/neldermead/installation.tex deleted file mode 100644 index 66cd62f..0000000 --- a/scilab_doc/neldermead/installation.tex +++ /dev/null | |||
@@ -1,159 +0,0 @@ | |||
1 | \chapter{Installation} | ||
2 | |||
3 | In this section, we present the installation process for the toolbox. | ||
4 | We present the steps which are required to have a running version of the | ||
5 | toolbox and presents the several checks which can be performed before | ||
6 | using the toolbox. | ||
7 | |||
8 | \section{Architecture of the directories} | ||
9 | |||
10 | We suppose that the archive has been unpacked in the "neldermead" | ||
11 | directory. The following is a short list of the steps which are | ||
12 | required to setup the toolbox. | ||
13 | |||
14 | \begin{enumerate} | ||
15 | \item build the toolbox : run the \emph{neldermead/builder.sce} script to | ||
16 | create the binaries of the library, create the binaries | ||
17 | for the gateway, generate the documentation | ||
18 | \item load the toolbox : run the \emph{neldermead/loader.sce} script to | ||
19 | load all commands and setup the documentation | ||
20 | \item setup the startup configuration file of your Scilab system so that the toolbox is | ||
21 | known at startup (see below for details), | ||
22 | \item run the unit tests : run the \emph{neldermead/runtests.sce} script to | ||
23 | perform all unit tests and check that the toolbox is OK | ||
24 | \item run the demos : run the \emph{neldermead/rundemos.sce} script to | ||
25 | run all demonstration scripts and get a quick interactive | ||
26 | overview of its features | ||
27 | \end{enumerate} | ||
28 | |||
29 | The easiest way to setup your Scilab system is to configure the | ||
30 | startup configuration file so that the toolboxes are known immediately | ||
31 | at startup. The directory where this file is located is stored in the | ||
32 | Scilab variable \emph{SCIHOME}. | ||
33 | On my Linux system, the Scilab 5.1 startup file is located | ||
34 | in \emph{/home/myname/.Scilab/scilab-5.1/.scilab}. On my Windows system, the Scilab 5.1 startup file is located | ||
35 | in \emph{C:/Users/myname/AppData/Roaming/Scilab/scilab-5.1/.scilab}. | ||
36 | This file is a regular Scilab script which is automatically | ||
37 | loaded at Scilab's startup. If that file does not already | ||
38 | exist, create it. Copy the following lines into the \emph{.scilab} file | ||
39 | and configure the path to the toolboxes, stored in the \emph{SCILABTBX} variable. | ||
40 | |||
41 | \begin{verbatim} | ||
42 | ilib(0); | ||
43 | SCILABTBX="/home/myname/mytoolboxes"; | ||
44 | exec(SCILABTBX + filesep() + 'optimbase'+ filesep() + 'loader.sce'); | ||
45 | exec(SCILABTBX + filesep() + 'optimsimplex'+ filesep() + 'loader.sce'); | ||
46 | exec(SCILABTBX + filesep() + 'neldermead'+ filesep() + 'loader.sce'); | ||
47 | \end{verbatim} | ||
48 | |||
49 | The figure \ref{installation:builder.sce} presents the messages | ||
50 | which are generated when the builder of the toolbox is launched. | ||
51 | |||
52 | \begin{figure}[htbp] | ||
53 | \begin{small} | ||
54 | \begin{verbatim} | ||
55 | -->cd neldermead/ | ||
56 | ans = | ||
57 | /media/disk/SVN-Scilab/neldermead | ||
58 | -->exec builder.sce | ||
59 | -->// ==================================================================== | ||
60 | -->// Copyright INRIA 2008-2009 | ||
61 | -->// Allan CORNET | ||
62 | -->// Simon LIPP | ||
63 | -->// Michael Baudin | ||
64 | -->// This file is released into the public domain | ||
65 | -->// ==================================================================== | ||
66 | -->mode(-1); | ||
67 | Building macros... | ||
68 | -- CrÃation de [neldermeadlib] (Macros) -- | ||
69 | genlib: Traitement du fichier: nmplot_display.sci | ||
70 | [...] | ||
71 | genlib: Traitement du fichier: nmplot_configure.sci | ||
72 | genlib: Regenere noms et librairie | ||
73 | Building help... | ||
74 | Construit le document principal dans /media/disk/SVN-Scilab/neldermead/help/en_US | ||
75 | Construction du fichier manuel [javaHelp] dans /media/disk/SVN-Scilab/neldermead/help/en_US. (Veuillez patienter ... cela peut prendre un certain temps) | ||
76 | Generating loader.sce... | ||
77 | \end{verbatim} | ||
78 | \end{small} | ||
79 | \caption{Launch of the builder} | ||
80 | \label{installation:builder.sce} | ||
81 | \end{figure} | ||
82 | |||
83 | The figure \ref{installation:loader.sce} presents the messages | ||
84 | which are generated when the loader of the toolbox is launched. | ||
85 | |||
86 | \begin{figure}[htbp] | ||
87 | \begin{small} | ||
88 | \begin{verbatim} | ||
89 | ->exec loader.sce | ||
90 | |||
91 | -->// ==================================================================== | ||
92 | -->// generated by builder.sce | ||
93 | -->// Copyright INRIA 2008 | ||
94 | -->// ==================================================================== | ||
95 | -->try | ||
96 | --> getversion('scilab'); | ||
97 | -->catch | ||
98 | --> warning('Scilab 5.0 or more is required.'); | ||
99 | --> return; | ||
100 | -->end; | ||
101 | -->// ==================================================================== | ||
102 | -->root_tlbx = get_absolute_file_path('loader.sce'); | ||
103 | -->exec(root_tlbx+'etc\'+'neldermead.start'); | ||
104 | Start Nelder-Mead Toolbox | ||
105 | Load macros from : | ||
106 | /media/disk/SVN-Scilab/neldermead/macros/ | ||
107 | Load help | ||
108 | -->// ==================================================================== | ||
109 | -->clear root_tlbx; | ||
110 | -->// ==================================================================== | ||
111 | \end{verbatim} | ||
112 | \end{small} | ||
113 | \caption{Launch of the loader} | ||
114 | \label{installation:loader.sce} | ||
115 | \end{figure} | ||
116 | |||
117 | The figure \ref{installation:runtests.sce} presents the messages | ||
118 | which are generated when the unit tests script of the toolbox is launched. | ||
119 | |||
120 | \begin{figure}[htbp] | ||
121 | \begin{verbatim} | ||
122 | -->exec D:\Baudin\ProjetScilab\toolboxes\neldermead\runtests.sce | ||
123 | -->TODO ... | ||
124 | \end{verbatim} | ||
125 | \caption{Launch of the unit tests script} | ||
126 | \label{installation:runtests.sce} | ||
127 | \end{figure} | ||
128 | |||
129 | |||
130 | \section{Configuration} | ||
131 | |||
132 | The directories which are provided in the toolbox | ||
133 | are presented in figure \ref{installation:neldermeaddirectory}. | ||
134 | |||
135 | \begin{figure}[htbp] | ||
136 | \begin{center} | ||
137 | \includegraphics[height=5cm]{installation-directories.png} | ||
138 | \end{center} | ||
139 | \caption{Architecture of the toolbox} | ||
140 | \label{installation:neldermeaddirectory} | ||
141 | \end{figure} | ||
142 | |||
143 | This is an overview of the content of these directories : | ||
144 | \begin{itemize} | ||
145 | \item \emph{neldermead/demos} : demonstration scripts | ||
146 | \item \emph{neldermead/doc} : the Scilab Enhancement Proposal \#21, about Nelder-Mead algorithm | ||
147 | \item \emph{neldermead/doc/usermanual} : the \LaTeX sources of this manual | ||
148 | \item \emph{neldermead/etc} : startup and shutdow scripts for the toolbox | ||
149 | \item \emph{neldermead/help/en\_US/scilab\_en\_US\_help} : html pages of the help | ||
150 | \item \emph{neldermead/jar} : java archive for the help | ||
151 | \item \emph{neldermead/macros} : Scilab macros files *.sci | ||
152 | \item \emph{neldermead/tests} : tests | ||
153 | \item \emph{neldermead/tests/nonreg\_tests} : tests after some bug has been identified | ||
154 | \item \emph{neldermead/tests/unit\_tests} : unit tests | ||
155 | \end{itemize} | ||
156 | |||
157 | \section{Tests} | ||
158 | |||
159 | |||
diff --git a/scilab_doc/neldermead/introduction/introduction-demos.png b/scilab_doc/neldermead/introduction/introduction-demos.png deleted file mode 100644 index 2cd8327..0000000 --- a/scilab_doc/neldermead/introduction/introduction-demos.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/introduction/introduction-help-fminsearch.png b/scilab_doc/neldermead/introduction/introduction-help-fminsearch.png deleted file mode 100644 index 58fe455..0000000 --- a/scilab_doc/neldermead/introduction/introduction-help-fminsearch.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/introduction/introduction-help.png b/scilab_doc/neldermead/introduction/introduction-help.png deleted file mode 100644 index 2740b7b..0000000 --- a/scilab_doc/neldermead/introduction/introduction-help.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/introduction/introduction.tex b/scilab_doc/neldermead/introduction/introduction.tex deleted file mode 100644 index d8d2647..0000000 --- a/scilab_doc/neldermead/introduction/introduction.tex +++ /dev/null | |||
@@ -1,363 +0,0 @@ | |||
1 | \chapter{Introduction} | ||
2 | |||
3 | In this introductory chapter, we make an overview of simplex-based algorithms. | ||
4 | We present the main features of the \scifunction{neldermead} component, and | ||
5 | show how to use the component with a simple example. | ||
6 | |||
7 | \section{Overview} | ||
8 | \index{Torczon, Virginia} | ||
9 | \index{Wright, Margaret} | ||
10 | \index{Nelder, John} | ||
11 | \index{Mead, Roger} | ||
12 | |||
13 | The Nelder-Mead simplex algorithm \cite{citeulike:3009487}, published in 1965, is an enormously | ||
14 | popular search method for multidimensional unconstrained optimization. | ||
15 | The Nelder-Mead algorithm should not be confused with the (probably) | ||
16 | more famous simplex algorithm of Dantzig for linear programming. The | ||
17 | Nelder-Mead algorithm is especially popular in the fields of chemistry, | ||
18 | chemical engineering, and medicine. Two measures of the ubiquity of the | ||
19 | Nelder-Mead algorithm are that it appears in the best-selling handbook | ||
20 | Numerical Recipes and in Matlab. In \cite{Torczon89multi-directionalsearch}, | ||
21 | Virginia Torczon writes: "Margaret Wright has stated that over | ||
22 | fifty percent of the calls received by the support group for the NAG | ||
23 | software library concerned the version of the Nelder-Mead | ||
24 | simplex algorithm to be found in that library". No derivative of the cost function is | ||
25 | required, which makes the algorithm interesting for noisy problems. | ||
26 | |||
27 | The Nelder-Mead algorithm falls in the more general class of direct | ||
28 | search algorithms. These methods use values of $f$ taken from a set of | ||
29 | sample points and use that information to continue the sampling. The | ||
30 | Nelder-Mead algorithm maintains a simplex which are approximations of an | ||
31 | optimal point. The vertices are sorted according to the objective | ||
32 | function values. The algorithm attemps to replace the worst vertex with | ||
33 | a new point, which depends on the worst point and the centre of the best | ||
34 | vertices. | ||
35 | |||
36 | \index{Spendley, W.} | ||
37 | \index{Hext, G. R.} | ||
38 | \index{Himsworth, F. R.} | ||
39 | \index{Box, M. J.} | ||
40 | |||
41 | The goal of this toolbox is to provide a Nelder-Mead (1965) direct search optimization method to solve the | ||
42 | following unconstrained optimization problem | ||
43 | \begin{eqnarray} | ||
44 | \min f(\bx) | ||
45 | \end{eqnarray} | ||
46 | where $\bx\in \RR^n$, $n$ is the number of optimization parameters and $f$ is the objective | ||
47 | function $f:\RR^n\rightarrow \RR$. | ||
48 | In order to solve the unconstrained optimization problem, the Nelder-Mead | ||
49 | algorithm uses a variable shape simplex. The toolbox also provide Spendley, Hext and Himsworth's | ||
50 | algorithm \cite{Spendley1962} (1962), which uses a fixed shape simplex. Historically, the algorithm created | ||
51 | by Nelder and Mead was designed as an improvement on Spendley's et al. algorithm. | ||
52 | The Box complex algorithm \cite{Box1965} (1965), which is an extension of Spendley's et al. algorithm, solves the | ||
53 | following constrained problem | ||
54 | \begin{eqnarray} | ||
55 | &&\min f(\bx)\\ | ||
56 | &&\ell_i \leq x_i \leq u_i, \qquad i = 1,n\\ | ||
57 | &&g_j(\bx)\geq 0, \qquad j = 1, m\\ | ||
58 | \end{eqnarray} | ||
59 | where $m$ is the number of nonlinear, positive constraints and $\ell_i,u_i\in \RR^n$ are the lower | ||
60 | and upper bounds of the variables. | ||
61 | |||
62 | The Nelder-Mead algorithm may be used in the following optimization context : | ||
63 | \begin{itemize} | ||
64 | \item there is no need to provide the derivatives of the objective function, | ||
65 | \item the number of parameters is small (up to 10-20), | ||
66 | \item there are bounds and/or non linear constraints. | ||
67 | \end{itemize} | ||
68 | |||
69 | The internal design of the system is based on the following components. | ||
70 | \begin{itemize} | ||
71 | \item The "neldermead" component provides various simplex-based | ||
72 | algorithms and manages for Nelder-Mead specific settings, such as the | ||
73 | method to compute the initial simplex and the specific termination | ||
74 | criteria. | ||
75 | \item The "fminsearch" component provides a Scilab commands which aims | ||
76 | at behaving as Matlab's fminsearch. Specific terminations criteria, | ||
77 | initial simplex and auxiliary settings are automatically configured so | ||
78 | that the behavior of Matlab's fminsearch is exactly reproduced. | ||
79 | \item The "optimset" and "optimget" components provide Scilab commands | ||
80 | to emulate their Matlab counterparts. | ||
81 | \item The "nmplot" component provides features to | ||
82 | produce directly output pictures for Nelder-Mead algorithm. | ||
83 | \end{itemize} | ||
84 | The current toolbox is based on (and therefore requires) the following components. | ||
85 | \begin{itemize} | ||
86 | \item The "optimbase" component provides an abstract class for a general optimization | ||
87 | component, including the number of variables, the minimum and maximum | ||
88 | bounds, the number of non linear inequality constraints, the logging | ||
89 | system, various termination criteria, the cost function, etc... | ||
90 | \item The "optimsimplex" component provides a class to manage a simplex made of an | ||
91 | arbitrary number of vertices, including the computation of a simplex by | ||
92 | various methods (axes, regular, Pfeffer's, randomized bounds), the | ||
93 | computation of the size by various methods (diameter, sigma +, sigma-, | ||
94 | etc...) and many algorithms to perform reflections and shrinkages. | ||
95 | \end{itemize} | ||
96 | |||
97 | The following is a list of features the Nelder-Mead algorithm currently provides : | ||
98 | \begin{itemize} | ||
99 | \item manage various simplex initializations | ||
100 | \begin{itemize} | ||
101 | \item initial simplex given by user, | ||
102 | \item initial simplex computed with a length and along the coordinate axes, | ||
103 | \item initial regular simplex computed with Spendley et al. formula | ||
104 | \item initial simplex computed by a small perturbation around the initial guess point | ||
105 | \end{itemize} | ||
106 | \item manage cost function | ||
107 | \begin{itemize} | ||
108 | \item optionnal additionnal argument | ||
109 | \item direct communication of the task to perform : cost function or inequality constraints | ||
110 | \end{itemize} | ||
111 | \item manage various termination criteria | ||
112 | \begin{itemize} | ||
113 | \item maximum number of iterations, | ||
114 | \item tolerance on function value (relative or absolute), | ||
115 | \item tolerance on x (relative or absolute), | ||
116 | \item tolerance on standard deviation of function value (original termination criteria in [3]), | ||
117 | \item maximum number of evaluations of cost function, | ||
118 | \item absolute or relative simplex size, | ||
119 | \end{itemize} | ||
120 | \item manage the history of the convergence, including : | ||
121 | \begin{itemize} | ||
122 | \item the history of function values, | ||
123 | \item the history of optimum point, | ||
124 | \item the history of simplices, | ||
125 | \item the history of termination criterias, | ||
126 | \end{itemize} | ||
127 | \item provide a plot command which allows to graphically see the history of the simplices toward the optimum, | ||
128 | \item provide query functions for | ||
129 | \begin{itemize} | ||
130 | \item the status of the optimization process, | ||
131 | \item the number of iterations, | ||
132 | \item the number of function evaluations, | ||
133 | \item the status of execution, | ||
134 | \item the function value at initial point, | ||
135 | \item the function value at optimal point, | ||
136 | \item etc... | ||
137 | \end{itemize} | ||
138 | \item Spendley et al. fixed shaped algorithm, | ||
139 | \item Kelley restart based on simplex gradient, | ||
140 | \item O'Neill restart based on factorial search around optimum, | ||
141 | \item Box-like method managing bounds and nonlinear inequality constraints based on arbitrary number of vertices in the simplex. | ||
142 | \end{itemize} | ||
143 | |||
144 | \section{How to use the Toolbox} | ||
145 | |||
146 | The design of the toolbox is based on the creation of | ||
147 | a new token by the \scifunction{neldermead\_new} function. | ||
148 | The Nelder-Mead object associated with this token can then | ||
149 | be configured with \scifunction{neldermead\_configure} and queried | ||
150 | with \scifunction{neldermead\_cget}. For example, the | ||
151 | \scifunction{neldermead\_configure} command allows to configure the | ||
152 | number of variables, the objective function and the initial guess. | ||
153 | |||
154 | The main command of the toolbox is the \scifunction{neldermead\_search} command, which | ||
155 | solves the optimization problem. After an optimization has been performed, | ||
156 | the \scifunction{neldermead\_get} command allows to retrieve the optimum $x^\star$, | ||
157 | as well as other parameters, such as the number of iterations performed, the number | ||
158 | of evaluations of the function, etc... | ||
159 | |||
160 | Once the optimization is finished, the \scifunction{neldermead\_destroy} function | ||
161 | deletes the object. | ||
162 | |||
163 | \section{An example} | ||
164 | |||
165 | In the following example, we search the minimum of the 2D Rosenbrock function \cite{citeulike:1903787}, | ||
166 | defined by | ||
167 | \begin{eqnarray} | ||
168 | f(x_1,x_2) = 100(x_2 - x_1)^2 + (1-x_1)^2 | ||
169 | \end{eqnarray} | ||
170 | |||
171 | The following Scilab script allows to find the solution of the problem. | ||
172 | We begin by defining the function \scifunction{rosenbrock} which computes the Rosenbrock function. | ||
173 | The traditionnal initial guess $(-1.2 , 1.0)$ is used, which corresponds | ||
174 | to the "-x0" key. The initial simplex is computed along | ||
175 | the axes with a length equal to 0.1. We want to use the Nelder-Mead algorithm with variable simplex size | ||
176 | is used, which corresponds to the "variable" value of the "-method" option. | ||
177 | The verbose mode is enabled so that messages are generated during the algorithm. | ||
178 | After the optimization is performed, the optimum is retrieved with quiery features. | ||
179 | |||
180 | \lstset{language=scilabscript} | ||
181 | \begin{lstlisting} | ||
182 | function y = rosenbrock (x) | ||
183 | y = 100*(x(2)-x(1)^2)^2 + (1-x(1))^2; | ||
184 | endfunction | ||
185 | nm = neldermead_new (); | ||
186 | nm = neldermead_configure(nm,"-numberofvariables",2); | ||
187 | nm = neldermead_configure(nm,"-x0",[-1.2 1.0]'); | ||
188 | nm = neldermead_configure(nm,"-simplex0method","axes"); | ||
189 | nm = neldermead_configure(nm,"-simplex0length",0.1); | ||
190 | nm = neldermead_configure(nm,"-method","variable"); | ||
191 | nm = neldermead_configure(nm,"-verbose",1); | ||
192 | nm = neldermead_configure(nm,"-function",rosenbrock); | ||
193 | nm = neldermead_search(nm); | ||
194 | xopt = neldermead_get(nm,"-xopt") | ||
195 | fopt = neldermead_get(nm,"-fopt") | ||
196 | status = neldermead_get(nm,"-status") | ||
197 | nm = neldermead_destroy(nm); | ||
198 | \end{lstlisting} | ||
199 | |||
200 | This produces the following output. | ||
201 | |||
202 | \lstset{language=scilabscript} | ||
203 | \begin{lstlisting} | ||
204 | -->nm = neldermead_search(nm); | ||
205 | Function Evaluation #1 is [24.2] at [-1.2 1] | ||
206 | Function Evaluation #1 is [24.2] at [-1.2 1] | ||
207 | Function Evaluation #2 is [8.82] at [-1.1 1] | ||
208 | Function Evaluation #3 is [16.4] at [-1.2 1.1] | ||
209 | Step #1 : order | ||
210 | ================================================================= | ||
211 | Iteration #1 (total = 1) | ||
212 | Function Eval #3 | ||
213 | Xopt : -1.1 1 | ||
214 | Fopt : 8.820000e+000 | ||
215 | DeltaFv : 1.538000e+001 | ||
216 | Center : -1.1666667 1.0333333 | ||
217 | Size : 1.414214e-001 | ||
218 | Vertex #1/3 : fv=8.820000e+000, x=-1.100000e+000 1.000000e+000 | ||
219 | Vertex #2/3 : fv=1.640000e+001, x=-1.200000e+000 1.100000e+000 | ||
220 | Vertex #3/3 : fv=2.420000e+001, x=-1.200000e+000 1.000000e+000 | ||
221 | Reflect | ||
222 | xbar=-1.15 1.05 | ||
223 | Function Evaluation #4 is [5.62] at [-1.1 1.1] | ||
224 | xr=[-1.1 1.1], f(xr)=5.620000 | ||
225 | Expand | ||
226 | Function Evaluation #5 is [4.428125] at [-1.05 1.15] | ||
227 | xe=-1.05 1.15, f(xe)=4.428125 | ||
228 | > Perform Expansion | ||
229 | Sort | ||
230 | [...] | ||
231 | ================================================================= | ||
232 | Iteration #56 (total = 56) | ||
233 | Function Eval #98 | ||
234 | Xopt : 0.6537880 0.4402918 | ||
235 | Fopt : 1.363828e-001 | ||
236 | DeltaFv : 1.309875e-002 | ||
237 | Center : 0.6788120 0.4503999 | ||
238 | Size : 6.945988e-002 | ||
239 | Vertex #1/3 : fv=1.363828e-001, x=6.537880e-001 4.402918e-001 | ||
240 | Vertex #2/3 : fv=1.474625e-001, x=7.107987e-001 4.799712e-001 | ||
241 | Vertex #3/3 : fv=1.494816e-001, x=6.718493e-001 4.309367e-001 | ||
242 | Reflect | ||
243 | xbar=0.6822933 0.4601315 | ||
244 | Function Evaluation #99 is [0.1033237] at [0.6927374 0.4893262] | ||
245 | xr=[0.6927374 0.4893262], f(xr)=0.103324 | ||
246 | Expand | ||
247 | Function Evaluation #100 is [0.1459740] at [0.7031815 0.5185210] | ||
248 | xe=0.7031815 0.5185210, f(xe)=0.145974 | ||
249 | > Perform reflection | ||
250 | Sort | ||
251 | ================================================================= | ||
252 | Iteration #57 (total = 57) | ||
253 | Function Eval #100 | ||
254 | Xopt : 0.6927374 0.4893262 | ||
255 | Fopt : 1.033237e-001 | ||
256 | DeltaFv : 4.413878e-002 | ||
257 | Center : 0.6857747 0.4698631 | ||
258 | Size : 6.262139e-002 | ||
259 | Vertex #1/3 : fv=1.033237e-001, x=6.927374e-001 4.893262e-001 | ||
260 | Vertex #2/3 : fv=1.363828e-001, x=6.537880e-001 4.402918e-001 | ||
261 | Vertex #3/3 : fv=1.474625e-001, x=7.107987e-001 4.799712e-001 | ||
262 | Terminate with status : maxfuneval | ||
263 | -->xopt = neldermead_get(nm,"-xopt") | ||
264 | xopt = | ||
265 | |||
266 | 0.6927374 | ||
267 | 0.4893262 | ||
268 | |||
269 | -->fopt = neldermead_get(nm,"-fopt") | ||
270 | fopt = | ||
271 | |||
272 | 0.1033237 | ||
273 | |||
274 | -->status = neldermead_get(nm,"-status") | ||
275 | status = | ||
276 | |||
277 | maxfuneval | ||
278 | \end{lstlisting} | ||
279 | |||
280 | \section{Help, demonstrations and unit tests} | ||
281 | |||
282 | For a complete presentation of the functions and options, the reader | ||
283 | should consult the help which is provided with the component. | ||
284 | The main menu of the help associated with the optimization | ||
285 | module is presented in figures \ref{fig-intro-help} and \ref{fig-intro-helpfminsearch}. | ||
286 | The corresponding pages provide a complete documentation for the | ||
287 | corresponding functions, as well as many sample uses. | ||
288 | |||
289 | \begin{figure} | ||
290 | \begin{center} | ||
291 | \includegraphics[width=15cm]{introduction/introduction-help.png} | ||
292 | \end{center} | ||
293 | \caption{Built-in help for the Nelder-Mead component} | ||
294 | \label{fig-intro-help} | ||
295 | \end{figure} | ||
296 | |||
297 | \begin{figure} | ||
298 | \begin{center} | ||
299 | \includegraphics[width=15cm]{introduction/introduction-help-fminsearch.png} | ||
300 | \end{center} | ||
301 | \caption{Built-in help for the \scifunction{fminsearch} function} | ||
302 | \label{fig-intro-helpfminsearch} | ||
303 | \end{figure} | ||
304 | |||
305 | Several demonstrations are provided with the component. These | ||
306 | are available from the "Demonstration" menu of the Scilab console | ||
307 | and are presented in figure \ref{fig-intro-demos}. | ||
308 | |||
309 | \begin{figure} | ||
310 | \begin{center} | ||
311 | \includegraphics[width=10cm]{introduction/introduction-demos.png} | ||
312 | \end{center} | ||
313 | \caption{Built-in demonstration scripts for the Nelder-Mead component} | ||
314 | \label{fig-intro-demos} | ||
315 | \end{figure} | ||
316 | |||
317 | The following script shows where the demonstration scripts are | ||
318 | available from the Scilab installation directory. | ||
319 | |||
320 | \lstset{language=scilabscript} | ||
321 | \begin{lstlisting} | ||
322 | -->cd SCI/modules/optimization/demos/neldermead | ||
323 | ans = | ||
324 | |||
325 | D:\Programs\SCFD8E~1\modules\optimization\demos\neldermead | ||
326 | |||
327 | -->ls *.sce | ||
328 | ans = | ||
329 | |||
330 | !nmplot_rosenbrock.sce ! | ||
331 | ! ! | ||
332 | !nmplot_rosenbrock.fixed.sce ! | ||
333 | ! ! | ||
334 | !nmplot_quadratic.fixed.sce ! | ||
335 | ! ! | ||
336 | !nmplot_mckinnon2.sce ! | ||
337 | ! ! | ||
338 | !nmplot_mckinnon.sce ! | ||
339 | ! ! | ||
340 | !nmplot_han2.sce ! | ||
341 | ! ! | ||
342 | !nmplot_han1.sce ! | ||
343 | ! ! | ||
344 | !nmplot_boxproblemA.sce ! | ||
345 | ! ! | ||
346 | !neldermead_rosenbrock.sce ! | ||
347 | ! ! | ||
348 | !neldermead.dem.sce ! | ||
349 | ! ! | ||
350 | !fminsearch.sce ! | ||
351 | \end{lstlisting} | ||
352 | |||
353 | These components were developped based on unit tests, which are | ||
354 | provided with Scilab. | ||
355 | These unit tests are located in the "SCI/modules/optimization/tests/unit\_tests" | ||
356 | directory, under the "neldermead", "optimsimplex" and "optimbase" directories. | ||
357 | Each unit test correspond to a .tst file. These tests are covering most | ||
358 | (if not all) the features provided by the components. This is why there are | ||
359 | a good source of information on how to use the functions. | ||
360 | |||
361 | |||
362 | |||
363 | |||
diff --git a/scilab_doc/neldermead/macros.tex b/scilab_doc/neldermead/macros.tex deleted file mode 100644 index 6b9c367..0000000 --- a/scilab_doc/neldermead/macros.tex +++ /dev/null | |||
@@ -1,344 +0,0 @@ | |||
1 | %% Good fonts for PDF | ||
2 | \usepackage[cyr]{aeguill} | ||
3 | |||
4 | %% Package for page headers | ||
5 | \usepackage{fancyhdr} | ||
6 | |||
7 | %% Package to include graphics | ||
8 | %% Comment for DVI | ||
9 | \usepackage[pdftex]{graphicx} | ||
10 | |||
11 | %% Index | ||
12 | \usepackage{makeidx} | ||
13 | \makeindex | ||
14 | |||
15 | %% Figures formats: jpeg or pdf | ||
16 | %% Comment for DVI | ||
17 | \DeclareGraphicsExtensions{.jpg,.pdf} | ||
18 | |||
19 | %% Package to create Hyperdocuments | ||
20 | %% Comment for DVI | ||
21 | \usepackage[pdftex,colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue]{hyperref} | ||
22 | |||
23 | %% Package to control printed area size | ||
24 | \usepackage{anysize} | ||
25 | %% ...by defining margins {left}{right}{top}{bottom} | ||
26 | \marginsize{22mm}{14mm}{12mm}{25mm} | ||
27 | |||
28 | %% Package used to include a bibliography | ||
29 | \usepackage{natbib} | ||
30 | |||
31 | %% R for real numbers | ||
32 | \usepackage{amssymb} | ||
33 | |||
34 | %% User defined commands | ||
35 | |||
36 | %% Figure reference | ||
37 | \newcommand{\figref}[1]{figure~\ref{#1}} | ||
38 | |||
39 | %% Equation reference | ||
40 | \newcommand{\Ref}[1]{(\ref{#1})} | ||
41 | |||
42 | %% Emphasize a word or a group of words | ||
43 | \newcommand{\empha}[1]{\textit{\textbf{#1}}} | ||
44 | |||
45 | %% Derivation operators | ||
46 | \newcommand{\D}{\partial} | ||
47 | \newcommand{\Dt}{\partial_t} | ||
48 | \newcommand{\Dx}{\partial_x} | ||
49 | \newcommand{\Dy}{\partial_y} | ||
50 | |||
51 | \newcommand{\bd}{\mathbf{d}} | ||
52 | \newcommand{\bl}{\mathbf{l}} | ||
53 | \newcommand{\br}{\mathbf{r}} | ||
54 | \newcommand{\bg}{\mathbf{g}} | ||
55 | \newcommand{\bp}{\mathbf{p}} | ||
56 | \newcommand{\bH}{\mathbf{H}} | ||
57 | \newcommand{\bv}{\mathbf{v}} | ||
58 | \newcommand{\bx}{\mathbf{x}} | ||
59 | \newcommand{\by}{\mathbf{y}} | ||
60 | |||
61 | \usepackage{url} | ||
62 | |||
63 | % Scilab macros | ||
64 | \newcommand{\scifunction}[1]{\textit{#1}} | ||
65 | \newcommand{\scivar}[1]{\textit{#1}} | ||
66 | |||
67 | % To highlight source code | ||
68 | \usepackage{listings} | ||
69 | |||
70 | \lstdefinelanguage{scilabscript}% | ||
71 | {morekeywords={abcd,abinv,abort,abs,acoshm,acosh,acosm,acos,addcolor,% | ||
72 | addf,addinter,addmenu,add_edge,add_node,adj2sp,adj_lists,aff2ab,% | ||
73 | amell,analpf,analyze,ans,apropos,arc_graph,arc_number,argn,arhnk,% | ||
74 | arl2,arma2p,armac,armax1,armax,arma,arsimul,artest,articul,ascii,% | ||
75 | asinhm,asinh,asinm,asin,atanhm,atanh,atanm,atan,augment,auread,% | ||
76 | auwrite,balanc,balreal,bandwr,basename,bdiag,besseli,besselj,% | ||
77 | besselk,bessely,best_match,bezout,bifish,bilin,binomial,black,% | ||
78 | bloc2exp,bloc2ss,bode,bool2s,boolean,boucle,break,bstap,buttmag,% | ||
79 | bvode,cainv,calerf,calfrq,call,canon,casc,case,ccontrg,cdfbet,% | ||
80 | cdfbin,cdfchi,cdfchn,cdffnc,cdff,cdfgam,cdfnbn,cdfnor,cdfpoi,% | ||
81 | cdft,ceil,center,cepstrum,chaintest,chain_struct,champ1,champ,% | ||
82 | chart,chdir,cheb1mag,cheb2mag,check_graph,check_io,chepol,chfact,% | ||
83 | chol,chsolve,circuit,classmarkov,clean,clearfun,clearglobal,% | ||
84 | clear,close,cls2dls,cmb_lin,cmndred,cmoment,code2str,coeff,coffg,% | ||
85 | coff,colcompr,colcomp,colinout,colormap,colregul,companion,comp,% | ||
86 | cond,conj,connex,contour2di,contour2d,contourf,contour,% | ||
87 | contract_edge,contrss,contr,cont_frm,cont_mat,convex_hull,convol,% | ||
88 | convstr,con_nodes,copfac,copy,correl,corr,coshm,cosh,cosm,cos,% | ||
89 | cotg,cothm,coth,covar,csim,cspect,ctr_gram,cumprod,cumsum,% | ||
90 | curblock,cycle_basis,czt,c_link,dasrt,dassl,datafit,date,dbphi,% | ||
91 | dcf,ddp,debug,dec2hex,deff,definedfields,degree,delbpt,% | ||
92 | delete_arcs,delete_nodes,delete,delip,delmenu,demos,denom,% | ||
93 | derivative,derivat,des2ss,des2tf,determ,detr,det,dft,dhinf,% | ||
94 | dhnorm,diag,diary,diff,diophant,dirname,dispbpt,dispfiles,disp,% | ||
95 | dlgamma,double,dragrect,drawaxis,drawlater,drawnow,draw,driver,% | ||
96 | dscr,dsearch,dsimul,dtsi,dt_ility,duplicate,edge_number,% | ||
97 | edit_curv,edit_graph_menus,edit_graph,edit,eigenmarkov,ell1mag,% | ||
98 | elseif,else,emptystr,endfunction,end,eqfir,eqiir,equil1,equil,% | ||
99 | ereduc,erfcx,erfc,erf,errbar,errcatch,errclear,error,eval3dp,% | ||
100 | eval3d,eval,evans,evstr,excel2sci,execstr,exec,exists,exit,expm,% | ||
101 | exp,external,eye,fac3d,factors,faurre,fchamp,fcontour2d,fcontour,% | ||
102 | fec,feedback,feval,ffilt,fftshift,fft,fgrayplot,figure,fileinfo,% | ||
103 | file,filter,findm,findobj,findx0BD,find_freq,find_path,find,% | ||
104 | findABCD,findAC,findBD,findBDK,findR,fit_dat,fix,floor,flts,foo,% | ||
105 | formatman,format,fort,for,fourplan,fplot2d,fplot3d1,fplot3d,% | ||
106 | fprintf,fprintfMat,frep2tf,freq,freson,frexp,frfit,frmag,fscanf,% | ||
107 | fscanfMat,fsfirlin,fsolve,fspecg,fstabst,fstair,ftest,ftuneq,% | ||
108 | fullrfk,fullrf,full,fun2string,funcprot,functions,function,% | ||
109 | funptr,fusee,gainplot,gamitg,gammaln,gamma,gcare,gcd,gcf,% | ||
110 | genfac3d,genlib,genmarkov,gen_net,geom3d,geomean,getblocklabel,% | ||
111 | getcolor,getcurblock,getcwd,getdate,getd,getenv,getfield,getfont,% | ||
112 | getf,getio,getlinestyle,getmark,getpid,getscicosvars,getsymbol,% | ||
113 | getvalue,getversion,get_function_path,get,gfare,gfrancis,girth,% | ||
114 | givens,glever,glist,global,glue,gpeche,graduate,grand,% | ||
115 | graphics_entities,graph_2_mat,graph_center,graph_complement,% | ||
116 | graph_diameter,graph_power,graph_simp,graph_sum,graph_union,% | ||
117 | graph-list,graycolormap,grayplot,graypolarplot,grep,group,% | ||
118 | gr_menu,gschur,gsort,gspec,gstacksize,gtild,g_margin,h2norm,halt,% | ||
119 | hamilton,hankelsv,hank,harmean,havewindow,help,hermit,hess,% | ||
120 | hex2dec,hilb,hinf,hist3d,histplot,horner,host,hotcolormap,% | ||
121 | householder,hrmt,htrianr,hypermat,h_cl,h_inf_st,h_inf,h_norm,% | ||
122 | iconvert,icon_edit,ieee,if,iirgroup,iirlp,iir,ilib_build,% | ||
123 | ilib_compile,ilib_for_link,ilib_gen_gateway,ilib_gen_loader,% | ||
124 | ilib_gen_Make,imag,impl,imrep2ss,imult,im_inv,inistate,input,% | ||
125 | int16,int2d,int32,int3d,int8,intc,intdec,integrate,interpln,% | ||
126 | interp,intersci,intersect,intg,intl,intppty,intsplin,inttrap,% | ||
127 | inttype,int,invr,invsyslin,inv_coeff,inv,iqr,isdef,isdir,isequal,% | ||
128 | iserror,isglobal,isinf,isnan,isoview,isreal,is_connex,jmat,% | ||
129 | justify,kalm,karmarkar,kernel,keyboard,knapsack,kpure,krac2,% | ||
130 | kroneck,kron,lasterror,lattn,lattp,lcf,lcmdiag,lcm,ldivf,ldiv,% | ||
131 | leastsq,legends,length,leqr,levin,lev,lex_sort,lft,lgfft,library,% | ||
132 | lib,lin2mu,lincos,lindquist,lines,line_graph,linfn,linf,link,% | ||
133 | linmeq,linpro,linsolve,linspace,lin,listfiles,list,lmisolver,% | ||
134 | lmitool,loadmatfile,loadplots,loadwave,load_graph,load,locate,% | ||
135 | log10,log1p,log2,logm,logspace,log,lotest,lqe,lqg2stan,lqg_ltr,% | ||
136 | lqg,lqr,lsq,lsslist,lstcat,lstsize,ltitr,ludel,lufact,luget,% | ||
137 | lusolve,lu,lyap,macglov,macr2lst,macrovar,macro,mad,make_graph,% | ||
138 | make_index,manedit,man,mapsound,markp2ss,matfile2sci,matrix,% | ||
139 | mat_2_graph,maxi,max_cap_path,max_clique,max_flow,max,mclearerr,% | ||
140 | mclose,meanf,mean,median,meof,mese,mesh2d,mfft,mfile2sci,mgeti,% | ||
141 | mgetl,mgetstr,mget,milk_drop,mine,mini,minreal,minss,% | ||
142 | min_lcost_cflow,min_lcost_flow1,min_lcost_flow2,min_qcost_flow,% | ||
143 | min_weight_tree,min,mlist,mode,modulo,moment,mopen,move,% | ||
144 | mps2linpro,mputl,mputstr,mput,mrfit,msd,mseek,mtell,mtlb_load,% | ||
145 | mtlb_mode,mtlb_save,mtlb_sparse,mu2lin,mulf,mvvacov,m_circle,% | ||
146 | names,nand2mean,nanmax,nanmeanf,nanmean,nanmedian,nanmin,% | ||
147 | nanstdev,nansum,narsimul,ndims,nearfloat,nehari,neighbors,% | ||
148 | netclose,netwindows,netwindow,newest,newfun,nextpow2,nf3d,nfreq,% | ||
149 | nlev,nnz,nodes_2_path,nodes_degrees,node_number,noisegen,norm,% | ||
150 | null,numdiff,numer,nyquist,obscont1,obscont,observer,obsvss,% | ||
151 | obsv_mat,obs_gram,odedc,odedi,odeoptions,ode_discrete,ode_root,% | ||
152 | ode,oldload,oldsave,ones,optim,orth,param3d1,param3d,% | ||
153 | paramfplot2d,parrot,part,pathconvert,path_2_nodes,pause,pbig,% | ||
154 | pdiv,pen2ea,pencan,penlaur,perctl,perfect_match,pertrans,pfss,% | ||
155 | phasemag,phc,pinv,pipe_network,playsnd,plot2d1,plot2d2,plot2d3,% | ||
156 | plot2d4,plot2d,plot3d1,plot3d2,plot3d3,plot3d,plotframe,% | ||
157 | plotprofile,plot_graph,plot,plzr,pmodulo,pol2des,pol2str,pol2tex,% | ||
158 | polarplot,polar,polfact,poly,portr3d,portrait,power,ppol,prbs_a,% | ||
159 | predecessors,predef,printf,printing,print,prod,profile,projsl,% | ||
160 | projspec,proj,psmall,pspect,pvm_addhosts,pvm_barrier,pvm_bcast,% | ||
161 | pvm_bufinfo,pvm_config,pvm_delhosts,pvm_error,pvm_exit,% | ||
162 | pvm_f772sci,pvm_getinst,pvm_gettid,pvm_get_timer,pvm_gsize,% | ||
163 | pvm_halt,pvm_joingroup,pvm_kill,pvm_lvgroup,pvm_mytid,pvm_parent,% | ||
164 | pvm_probe,pvm_recv,pvm_reduce,pvm_sci2f77,pvm_send,pvm_set_timer,% | ||
165 | pvm_spawn_independent,pvm_spawn,pvm_start,pvm_tasks,% | ||
166 | pvm_tidtohost,pvm,pwd,p_margin,qassign,qr,quapro,quart,quaskro,% | ||
167 | quit,randpencil,rand,range,rankqr,rank,rat,rcond,rdivf,read4b,% | ||
168 | readb,readc_,readmps,read,real,recur,reglin,regress,remezb,remez,% | ||
169 | repfreq,replot,residu,resume,return,riccati,riccsl,ricc,ric_desc,% | ||
170 | rlist,roots,rotate,round,routh_t,rowcompr,rowcomp,rowinout,% | ||
171 | rowregul,rowshuff,rpem,rref,rtitr,rubberbox,salesman,savewave,% | ||
172 | save_graph,save,scaling,scanf,schur,sci2exp,sci2for,sci2map,% | ||
173 | sciargs,scicosim,scicos,scifunc_block,sd2sci,secto3d,select,% | ||
174 | semidef,sensi,setbpt,seteventhandler,setfield,setmenu,% | ||
175 | setscicosvars,set,sfact,sgrid,shortest_path,showprofile,% | ||
176 | show_arcs,show_graph,show_nodes,sident,signm,sign,simp_mode,simp,% | ||
177 | sincd,sinc,sinc,sinhm,sinh,sinm,sin,size,sm2des,sm2ss,smooth,% | ||
178 | solve,sorder,sort,sound,sp2adj,spaninter,spanplus,spantwo,sparse,% | ||
179 | spchol,spcompack,specfact,spec,speye,spget,splin,split_edge,% | ||
180 | spones,sprand,sprintf,spzeros,sqroot,sqrtm,sqrt,squarewave,% | ||
181 | square,srfaur,srkf,ss2des,ss2ss,ss2tf,sscanf,sskf,ssprint,ssrand,% | ||
182 | stabil,stacksize,standard_define,standard_draw,standard_input,% | ||
183 | standard_origin,standard_output,startup,stdevf,stdev,steadycos,% | ||
184 | str2code,strange,strcat,strindex,strings,string,stripblanks,% | ||
185 | strong_connex,strong_con_nodes,strsubst,st_deviation,st_ility,% | ||
186 | subf,subgraph,subplot,successors,sum,supernode,sva,svd,svplot,% | ||
187 | sylm,sylv,sysconv,sysdiag,sysfact,syslin,syssize,systems,system,% | ||
188 | systmat,tabul,tangent,tanhm,tanh,tanm,tan,tdinit,testmatrix,% | ||
189 | texprint,tf2des,tf2ss,then,thrownan,timer,time_id,titlepage,% | ||
190 | tk_getdir,tk_getfile,tlist,toeplitz,tokenpos,tokens,trace,% | ||
191 | translatepaths,trans_closure,trans,trfmod,trianfml,tril,trimmean,% | ||
192 | trisolve,triu,trzeros,typename,typeof,type,uicontrol,uimenu,% | ||
193 | uint16,uint32,uint8,ui_observer,ulink,unglue,union,unique,unix_g,% | ||
194 | unix_s,unix_w,unix_x,unix,unobs,unsetmenu,user,varargin,% | ||
195 | varargout,variancef,variance,varn,warning,wavread,wavwrite,% | ||
196 | wcenter,wfir,what,whereami,whereis,where,while,whos,who_user,who,% | ||
197 | wiener,wigner,window,winsid,with_gtk,with_pvm,with_texmacs,% | ||
198 | with_tk,writb,write4b,write,xarcs,xarc,xarrows,xaxis,xbasc,% | ||
199 | xbasimp,xbasr,xchange,xclear,xclea,xclick,xclip,xdel,xend,xfarcs,% | ||
200 | xfarc,xfpolys,xfpoly,xfrect,xgetech,xgetfile,xgetmouse,xget,% | ||
201 | xgraduate,xgrid,xinfo,xinit,xlfont,xload,xname,xnumb,xpause,% | ||
202 | xpolys,xpoly,xrects,xrect,xrpoly,xs2fig,xs2gif,xs2ppm,xs2ps,% | ||
203 | xsave,xsegs,select,xsetech,xsetm,xset,xstringb,xstringl,xstring,% | ||
204 | xtape,xtitle,x_choices,x_choose,x_dialog,x_matrix,x_mdialog,% | ||
205 | x_message_modeless,x_message,yulewalk,zeropen,zeros,zgrid,zpbutt,% | ||
206 | zpch1,zpch2,zpell,mfprintf,mfscanf,mprintf,mscanf,msprintf,% | ||
207 | msscanf,mucomp,% | ||
208 | ABSBLK_f,AFFICH_f,ANDLOG_f,ANIMXY_f,BIGSOM_f,CLINDUMMY_f,CLKIN_f,% | ||
209 | CLKINV_f,CLKOUT_f,CLKOUTV_f,CLKSOM_f,CLKSOMV_f,CLKSPLIT_f,% | ||
210 | CLOCK_f,CLR_f,CLSS_f,CONST_f,COSBLK_f,CURV_f,DELAY_f,DELAYV_f,% | ||
211 | DEMUX_f,DLR_f,DLRADAPT_f,DLSS_f,EVENTSCOPE_f,EVTDLY_f,EVTGEN_f,% | ||
212 | EXPBLK_f,G_make,GAIN_f,GAINBLK_f,GENERAL_f,GENERIC_f,GENSIN_f,% | ||
213 | GENSQR_f,HALT_f,IFTHEL_f,IN_f,INTEGRAL_f,INTRP2BLK_f,INTRPLBLK_f,% | ||
214 | INVBLK_f,LOGBLK_f,LOOKUP_f,Matplot1,Matplot,MAX_f,MCLOCK_f,% | ||
215 | MFCLCK_f,MIN_f,MUX_f,NDcost,NEGTOPOS_f,OUT_f,POSTONEG_f,POWBLK_f,% | ||
216 | PROD_f,QUANT_f,RAND_f,READC_f,REGISTER_f,RELAY_f,RFILE_f,% | ||
217 | ScilabEval,Sfgrayplot,Sgrayplot,SAMPLEHOLD_f,SAT_f,SAWTOOTH_f,% | ||
218 | SCOPE_f,SCOPXY_f,SELECT_f,SINBLK_f,SOM_f,SPLIT_f,STOP_f,SUPER_f,% | ||
219 | TANBLK_f,TCLSS_f,TEXT_f,TIME_f,TK_EvalFile,TK_EvalStr,TK_GetVar,% | ||
220 | TK_SetVar,TRASH_f,WFILE_f,WRITEC_f,ZCROSS_f,% | ||
221 | \%asn,\%helps,\%k,\%sn},% | ||
222 | alsoletter=\%,% chmod | ||
223 | sensitive,% | ||
224 | morecomment=[l]//,% | ||
225 | morestring=[b]",% | ||
226 | morestring=[m]'% | ||
227 | numbers=none,% | ||
228 | basicstyle=\tiny,% | ||
229 | keywordstyle=\bfseries,% | ||
230 | commentstyle=\bfseries,% | ||
231 | showspaces=false,% | ||
232 | stringstyle=\bfseries | ||
233 | }[keywords,comments,strings]% | ||
234 | |||
235 | \lstdefinelanguage{matlabscript}% | ||
236 | {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,% | ||
237 | all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,% | ||
238 | auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,% | ||
239 | betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,% | ||
240 | cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,% | ||
241 | clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,% | ||
242 | comet,comet3,compan,compass,computer,cond,condest,conj,contour,% | ||
243 | contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,% | ||
244 | cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,% | ||
245 | csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,% | ||
246 | dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,% | ||
247 | ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,% | ||
248 | del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,% | ||
249 | dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,% | ||
250 | end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,% | ||
251 | engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,% | ||
252 | engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,error,% | ||
253 | errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,% | ||
254 | feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,% | ||
255 | fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,% | ||
256 | flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,% | ||
257 | fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,% | ||
258 | gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,% | ||
259 | getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,% | ||
260 | gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,% | ||
261 | hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,% | ||
262 | imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,% | ||
263 | invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,% | ||
264 | isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,% | ||
265 | legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,% | ||
266 | loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,% | ||
267 | matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,% | ||
268 | matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,% | ||
269 | matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,% | ||
270 | meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,% | ||
271 | mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,% | ||
272 | mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,% | ||
273 | min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,% | ||
274 | mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,% | ||
275 | mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,% | ||
276 | mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,% | ||
277 | mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,% | ||
278 | mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,% | ||
279 | mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,% | ||
280 | mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,% | ||
281 | mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,% | ||
282 | nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,% | ||
283 | pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,% | ||
284 | pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,% | ||
285 | pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,% | ||
286 | quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,% | ||
287 | rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,% | ||
288 | return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,% | ||
289 | round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,% | ||
290 | semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,% | ||
291 | spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,% | ||
292 | sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,% | ||
293 | sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,% | ||
294 | str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,% | ||
295 | subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,% | ||
296 | symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,% | ||
297 | toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,% | ||
298 | uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,% | ||
299 | viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,% | ||
300 | whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,% | ||
301 | wk1write,xlabel,xor,ylabel,zeros,zlabel,zoom},% | ||
302 | sensitive,% | ||
303 | morecomment=[l]\%,% | ||
304 | basicstyle=\tiny,% | ||
305 | morestring=[m]'% | ||
306 | }[keywords,comments,strings]% | ||
307 | |||
308 | \usepackage{algorithmic} | ||
309 | |||
310 | % To allow one bibliograph by chapter | ||
311 | %\usepackage[sectionbib]{chapterbib} | ||
312 | \usepackage{url} | ||
313 | |||
314 | % Maths shortcuts | ||
315 | \newcommand{\RR}{\mathbb{R}} | ||
316 | \newcommand{\CC}{\mathbb{C}} | ||
317 | |||
318 | % For symbol degree | ||
319 | \DeclareTextSymbol{\degre}{T1}{6} | ||
320 | |||
321 | % Some environments | ||
322 | \newtheorem{theorem}{Theorem}[section] | ||
323 | \newtheorem{lemma}[theorem]{Lemma} | ||
324 | \newtheorem{proposition}[theorem]{Proposition} | ||
325 | \newtheorem{corollary}[theorem]{Corollary} | ||
326 | \newtheorem{axiom}[theorem]{Axiom} | ||
327 | %\newtheorem{example}[theorem]{Example} | ||
328 | \newtheorem{definition}[theorem]{Definition} | ||
329 | \newtheorem{remark}[theorem]{Remark} | ||
330 | \newtheorem{assumption}[theorem]{Assumption} | ||
331 | |||
332 | \newenvironment{proof}[1][Proof]{\begin{trivlist} | ||
333 | \item[\hskip \labelsep {\bfseries #1}]}{\qed\end{trivlist}} | ||
334 | |||
335 | %\newenvironment{definition}[1][Definition]{\begin{trivlist} \item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}} | ||
336 | \newenvironment{example}[1][Example]{\begin{trivlist}\item[\hskip \labelsep {\bfseries #1}]}{$\Box$\end{trivlist}} | ||
337 | %\newenvironment{remark}[1][Remark]{\begin{trivlist} \item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}} | ||
338 | |||
339 | \newcommand{\qed}{\nobreak \ifvmode \relax \else | ||
340 | \ifdim\lastskip<1.5em \hskip-\lastskip | ||
341 | \hskip1.5em plus0em minus0.5em \fi \nobreak | ||
342 | \vrule height0.75em width0.5em depth0.25em\fi} | ||
343 | |||
344 | |||
diff --git a/scilab_doc/neldermead/neldermead-bibliography-so.pdf b/scilab_doc/neldermead/neldermead-bibliography-so.pdf deleted file mode 100644 index 33e0fdb..0000000 --- a/scilab_doc/neldermead/neldermead-bibliography-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/neldermead-bibliography-so.tex b/scilab_doc/neldermead/neldermead-bibliography-so.tex deleted file mode 100644 index 76f6319..0000000 --- a/scilab_doc/neldermead/neldermead-bibliography-so.tex +++ /dev/null | |||
@@ -1,84 +0,0 @@ | |||
1 | % | ||
2 | % neldermead.tex -- | ||
3 | % Some notes about Nelder-Mead algorithms. | ||
4 | % | ||
5 | % Copyright 2008-2009 Michael Baudin | ||
6 | % | ||
7 | \documentclass[12pt]{report} | ||
8 | |||
9 | \include{macros} | ||
10 | |||
11 | \begin{document} | ||
12 | %% User defined page headers | ||
13 | \pagestyle{fancyplain} | ||
14 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
15 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
16 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
17 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
18 | \cfoot{} | ||
19 | |||
20 | %% User defined figure legends | ||
21 | \makeatletter | ||
22 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
23 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
24 | \let\fnum@figure\f@ffrench% | ||
25 | \let\captionORI\caption | ||
26 | \def\caption#1{\captionORI{\rm\small #1}} | ||
27 | \makeatother | ||
28 | |||
29 | %% First page | ||
30 | \thispagestyle{empty} | ||
31 | { | ||
32 | \begin{center} | ||
33 | %% Comment for DVI | ||
34 | \includegraphics[height=40mm]{scilab_logo} | ||
35 | \vskip4cm | ||
36 | |||
37 | %% Empty space between the box and the text | ||
38 | \fboxsep6mm | ||
39 | %% Box thickness | ||
40 | \fboxrule1.3pt | ||
41 | \Huge | ||
42 | $$\fbox{$ | ||
43 | \begin{array}{c} | ||
44 | \textbf{Nelder-Mead}\\ | ||
45 | \textbf{Toolbox Manual}\\ | ||
46 | \textbf{-- Bibliography --}\\ | ||
47 | \end{array} | ||
48 | $} | ||
49 | $$ | ||
50 | \end{center} | ||
51 | \vskip4cm | ||
52 | |||
53 | \normalsize | ||
54 | |||
55 | \begin{flushright} | ||
56 | Version 0.2 \\ | ||
57 | September 2009 | ||
58 | \end{flushright} | ||
59 | |||
60 | \begin{flushright} | ||
61 | Micha\"el BAUDIN | ||
62 | \end{flushright} | ||
63 | |||
64 | \clearpage | ||
65 | |||
66 | %% Table of contents | ||
67 | \renewcommand{\baselinestretch}{1.30}\small \normalsize | ||
68 | |||
69 | \tableofcontents | ||
70 | |||
71 | \renewcommand{\baselinestretch}{1.18}\small \normalsize | ||
72 | |||
73 | \include{nmbibliography} | ||
74 | |||
75 | \clearpage | ||
76 | |||
77 | |||
78 | %% Bibliography | ||
79 | |||
80 | \addcontentsline{toc}{chapter}{Bibliography} | ||
81 | \bibliographystyle{plain} | ||
82 | \bibliography{neldermead} | ||
83 | |||
84 | \end{document} | ||
diff --git a/scilab_doc/neldermead/neldermead-introduction-so.pdf b/scilab_doc/neldermead/neldermead-introduction-so.pdf deleted file mode 100644 index 0e381d9..0000000 --- a/scilab_doc/neldermead/neldermead-introduction-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/neldermead-introduction-so.tex b/scilab_doc/neldermead/neldermead-introduction-so.tex deleted file mode 100644 index e52c572..0000000 --- a/scilab_doc/neldermead/neldermead-introduction-so.tex +++ /dev/null | |||
@@ -1,88 +0,0 @@ | |||
1 | % | ||
2 | % neldermead.tex -- | ||
3 | % Some notes about Nelder-Mead algorithms. | ||
4 | % | ||
5 | % Copyright 2008-2009 Michael Baudin | ||
6 | % | ||
7 | \documentclass[12pt]{report} | ||
8 | |||
9 | \include{macros} | ||
10 | |||
11 | \begin{document} | ||
12 | %% User defined page headers | ||
13 | \pagestyle{fancyplain} | ||
14 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
15 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
16 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
17 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
18 | \cfoot{} | ||
19 | |||
20 | %% User defined figure legends | ||
21 | \makeatletter | ||
22 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
23 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
24 | \let\fnum@figure\f@ffrench% | ||
25 | \let\captionORI\caption | ||
26 | \def\caption#1{\captionORI{\rm\small #1}} | ||
27 | \makeatother | ||
28 | |||
29 | %% First page | ||
30 | \thispagestyle{empty} | ||
31 | { | ||
32 | \begin{center} | ||
33 | %% Comment for DVI | ||
34 | \includegraphics[height=40mm]{scilab_logo} | ||
35 | \vskip4cm | ||
36 | |||
37 | %% Empty space between the box and the text | ||
38 | \fboxsep6mm | ||
39 | %% Box thickness | ||
40 | \fboxrule1.3pt | ||
41 | \Huge | ||
42 | $$\fbox{$ | ||
43 | \begin{array}{c} | ||
44 | \textbf{Nelder-Mead}\\ | ||
45 | \textbf{Toolbox Manual}\\ | ||
46 | \textbf{-- Introduction --}\\ | ||
47 | \end{array} | ||
48 | $} | ||
49 | $$ | ||
50 | \end{center} | ||
51 | \vskip4cm | ||
52 | |||
53 | \normalsize | ||
54 | |||
55 | \begin{flushright} | ||
56 | Version 0.2 \\ | ||
57 | September 2009 | ||
58 | \end{flushright} | ||
59 | |||
60 | \begin{flushright} | ||
61 | Micha\"el BAUDIN | ||
62 | \end{flushright} | ||
63 | |||
64 | \clearpage | ||
65 | |||
66 | %% Table of contents | ||
67 | \renewcommand{\baselinestretch}{1.30}\small \normalsize | ||
68 | |||
69 | \tableofcontents | ||
70 | |||
71 | \renewcommand{\baselinestretch}{1.18}\small \normalsize | ||
72 | |||
73 | \include{introduction/introduction} | ||
74 | |||
75 | \clearpage | ||
76 | |||
77 | |||
78 | %% Bibliography | ||
79 | |||
80 | \addcontentsline{toc}{chapter}{Bibliography} | ||
81 | \bibliographystyle{plain} | ||
82 | \bibliography{neldermead} | ||
83 | |||
84 | \addcontentsline{toc}{chapter}{Index} | ||
85 | \printindex | ||
86 | |||
87 | \end{document} | ||
88 | |||
diff --git a/scilab_doc/neldermead/neldermead-neldermead-so.pdf b/scilab_doc/neldermead/neldermead-neldermead-so.pdf deleted file mode 100644 index afb8934..0000000 --- a/scilab_doc/neldermead/neldermead-neldermead-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/neldermead-neldermead-so.tex b/scilab_doc/neldermead/neldermead-neldermead-so.tex deleted file mode 100644 index 64b0fc0..0000000 --- a/scilab_doc/neldermead/neldermead-neldermead-so.tex +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | % | ||
2 | % neldermead.tex -- | ||
3 | % Some notes about Nelder-Mead algorithms. | ||
4 | % | ||
5 | % Copyright 2008-2009 Michael Baudin | ||
6 | % | ||
7 | \documentclass[12pt]{report} | ||
8 | |||
9 | \include{macros} | ||
10 | |||
11 | \begin{document} | ||
12 | %% User defined page headers | ||
13 | \pagestyle{fancyplain} | ||
14 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
15 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
16 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
17 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
18 | \cfoot{} | ||
19 | |||
20 | %% User defined figure legends | ||
21 | \makeatletter | ||
22 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
23 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
24 | \let\fnum@figure\f@ffrench% | ||
25 | \let\captionORI\caption | ||
26 | \def\caption#1{\captionORI{\rm\small #1}} | ||
27 | \makeatother | ||
28 | |||
29 | %% First page | ||
30 | \thispagestyle{empty} | ||
31 | { | ||
32 | \begin{center} | ||
33 | %% Comment for DVI | ||
34 | \includegraphics[height=40mm]{scilab_logo} | ||
35 | \vskip2cm | ||
36 | |||
37 | %% Empty space between the box and the text | ||
38 | \fboxsep6mm | ||
39 | %% Box thickness | ||
40 | \fboxrule1.3pt | ||
41 | \Huge | ||
42 | $$\fbox{$ | ||
43 | \begin{array}{c} | ||
44 | \textbf{Nelder-Mead}\\ | ||
45 | \textbf{User's Manual}\\ | ||
46 | \textbf{-- The Nelder-Mead Method --}\\ | ||
47 | \end{array} | ||
48 | $} | ||
49 | $$ | ||
50 | \end{center} | ||
51 | |||
52 | \vskip1cm | ||
53 | |||
54 | \begin{center} | ||
55 | \begin{large} | ||
56 | Micha\"el BAUDIN | ||
57 | \end{large} | ||
58 | \end{center} | ||
59 | |||
60 | \vskip2cm | ||
61 | |||
62 | |||
63 | \vskip1cm | ||
64 | |||
65 | |||
66 | \begin{flushright} | ||
67 | Version 0.3 \\ | ||
68 | September 2009 | ||
69 | \end{flushright} | ||
70 | |||
71 | |||
72 | |||
73 | \clearpage | ||
74 | |||
75 | %% Table of contents | ||
76 | \renewcommand{\baselinestretch}{1.30}\small \normalsize | ||
77 | |||
78 | \tableofcontents | ||
79 | |||
80 | \renewcommand{\baselinestretch}{1.18}\small \normalsize | ||
81 | |||
82 | \include{chapter-notations} | ||
83 | \include{neldermeadmethod/method-neldermead} | ||
84 | |||
85 | \clearpage | ||
86 | |||
87 | |||
88 | %% Bibliography | ||
89 | |||
90 | \addcontentsline{toc}{chapter}{Bibliography} | ||
91 | \bibliographystyle{plain} | ||
92 | \bibliography{neldermead} | ||
93 | |||
94 | % Index | ||
95 | \addcontentsline{toc}{chapter}{Index} | ||
96 | \printindex | ||
97 | |||
98 | \end{document} | ||
diff --git a/scilab_doc/neldermead/neldermead-simplex-so.pdf b/scilab_doc/neldermead/neldermead-simplex-so.pdf deleted file mode 100644 index fa13c27..0000000 --- a/scilab_doc/neldermead/neldermead-simplex-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/neldermead-simplex-so.tex b/scilab_doc/neldermead/neldermead-simplex-so.tex deleted file mode 100644 index 78cb2f4..0000000 --- a/scilab_doc/neldermead/neldermead-simplex-so.tex +++ /dev/null | |||
@@ -1,93 +0,0 @@ | |||
1 | % | ||
2 | % neldermead.tex -- | ||
3 | % Some notes about Nelder-Mead algorithms. | ||
4 | % | ||
5 | % Copyright 2008-2009 Michael Baudin | ||
6 | % | ||
7 | \documentclass[12pt]{report} | ||
8 | |||
9 | \include{macros} | ||
10 | |||
11 | \begin{document} | ||
12 | %% User defined page headers | ||
13 | \pagestyle{fancyplain} | ||
14 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
15 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
16 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
17 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
18 | \cfoot{} | ||
19 | |||
20 | %% User defined figure legends | ||
21 | \makeatletter | ||
22 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
23 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
24 | \let\fnum@figure\f@ffrench% | ||
25 | \let\captionORI\caption | ||
26 | \def\caption#1{\captionORI{\rm\small #1}} | ||
27 | \makeatother | ||
28 | |||
29 | %% First page | ||
30 | \thispagestyle{empty} | ||
31 | { | ||
32 | \begin{center} | ||
33 | %% Comment for DVI | ||
34 | \includegraphics[height=40mm]{scilab_logo} | ||
35 | \vskip4cm | ||
36 | |||
37 | %% Empty space between the box and the text | ||
38 | \fboxsep6mm | ||
39 | %% Box thickness | ||
40 | \fboxrule1.3pt | ||
41 | \Huge | ||
42 | $$\fbox{$ | ||
43 | \begin{array}{c} | ||
44 | \textbf{Nelder-Mead}\\ | ||
45 | \textbf{Toolbox Manual}\\ | ||
46 | \textbf{-- Simplex Theory --} | ||
47 | \end{array} | ||
48 | $} | ||
49 | $$ | ||
50 | \end{center} | ||
51 | \vskip4cm | ||
52 | |||
53 | \normalsize | ||
54 | |||
55 | \begin{flushright} | ||
56 | Version 0.2 \\ | ||
57 | September 2009 | ||
58 | \end{flushright} | ||
59 | |||
60 | \begin{flushright} | ||
61 | Micha\"el BAUDIN | ||
62 | \end{flushright} | ||
63 | |||
64 | \clearpage | ||
65 | |||
66 | %% Table of contents | ||
67 | \renewcommand{\baselinestretch}{1.30}\small \normalsize | ||
68 | |||
69 | \tableofcontents | ||
70 | |||
71 | \renewcommand{\baselinestretch}{1.18}\small \normalsize | ||
72 | |||
73 | |||
74 | \include{chapter-notations} | ||
75 | \include{simplextheory/section-simplex} | ||
76 | |||
77 | |||
78 | \clearpage | ||
79 | |||
80 | %% Appendix | ||
81 | \appendix | ||
82 | |||
83 | %% Bibliography | ||
84 | |||
85 | \addcontentsline{toc}{chapter}{Bibliography} | ||
86 | \bibliographystyle{plain} | ||
87 | \bibliography{neldermead} | ||
88 | |||
89 | % Index | ||
90 | \addcontentsline{toc}{chapter}{Index} | ||
91 | \printindex | ||
92 | |||
93 | \end{document} | ||
diff --git a/scilab_doc/neldermead/neldermead-spendley-so.pdf b/scilab_doc/neldermead/neldermead-spendley-so.pdf deleted file mode 100644 index 7bb1f5b..0000000 --- a/scilab_doc/neldermead/neldermead-spendley-so.pdf +++ /dev/null | |||
Binary files differ | |||
diff --git a/scilab_doc/neldermead/neldermead-spendley-so.tex b/scilab_doc/neldermead/neldermead-spendley-so.tex deleted file mode 100644 index 3b9bcd0..0000000 --- a/scilab_doc/neldermead/neldermead-spendley-so.tex +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | % | ||
2 | % neldermead.tex -- | ||
3 | % Some notes about Nelder-Mead algorithms. | ||
4 | % | ||
5 | % Copyright 2008-2009 Michael Baudin | ||
6 | % | ||
7 | \documentclass[12pt]{report} | ||
8 | |||
9 | \include{macros} | ||
10 | |||
11 | \begin{document} | ||
12 | %% User defined page headers | ||
13 | \pagestyle{fancyplain} | ||
14 | \renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter. #1}{}} | ||
15 | \renewcommand{\sectionmark}[1]{\markright{\thesection. #1}} | ||
16 | \lhead[]{\fancyplain{}{\bfseries\leftmark}} | ||
17 | \rhead[]{\fancyplain{}{\bfseries\thepage}} | ||
18 | \cfoot{} | ||
19 | |||
20 | %% User defined figure legends | ||
21 | \makeatletter | ||
22 | \def\figurename{{\protect\sc \protect\small\bfseries Fig.}} | ||
23 | \def\f@ffrench{\protect\figurename\space{\protect\small\bf \thefigure}\space} | ||
24 | \let\fnum@figure\f@ffrench% | ||
25 | \let\captionORI\caption | ||
26 | \def\caption#1{\captionORI{\rm\small #1}} | ||
27 | \makeatother | ||
28 | |||
29 | %% First page | ||
30 | \thispagestyle{empty} | ||
31 | { | ||
32 | \begin{center} | ||
33 | %% Comment for DVI | ||
34 | \includegraphics[height=40mm]{scilab_logo} | ||
35 | \vskip4cm | ||
36 | |||
37 | %% Empty space between the box and the text | ||
38 | \fboxsep6mm | ||
39 | %% Box thickness | ||
40 | \fboxrule1.3pt | ||
41 | \Huge | ||
42 | $$\fbox{$ | ||
43 | \begin{array}{c} | ||
44 | \textbf{Nelder-Mead}\\ | ||
45 | \textbf{Toolbox Manual}\\ | ||
46 | \textbf{-- Spendley et al. algorithm --}\\ | ||
47 | \end{array} | ||
48 | $} | ||
49 | $$ | ||
50 | \end{center} | ||
51 | \vskip4cm | ||
52 | |||
53 | \normalsize | ||
54 | |||
55 | \begin{flushright} | ||
56 | Version 0.2 \\ | ||
57 | September 2009 | ||
58 | \end{flushright} | ||
59 | |||
60 | \begin{flushright} | ||
61 | Micha\"el BAUDIN | ||
62 | \end{flushright} | ||
63 | |||
64 | \clearpage | ||
65 | |||
66 | %% Table of contents | ||
67 | \renewcommand{\baselinestretch}{1.30}\small \normalsize | ||
68 | |||
69 | \tableofcontents | ||
70 | |||
71 | \renewcommand{\baselinestretch}{1.18}\small \normalsize | ||
72 | |||
73 | \include{chapter-notations} | ||
74 | \include{spendleymethod/method-spendley} | ||
75 | |||
76 | \clearpage | ||
77 | |||
78 | |||
79 | %% Bibliography | ||
80 | |||
81 | \addcontentsline{toc}{chapter}{Bibliography} | ||
82 | \bibliographystyle{plain} | ||
83 | \bibliography{neldermead} | ||
84 | |||
85 | % Index | ||
86 | \addcontentsline{toc}{chapter}{Index} | ||
87 | \printindex | ||
88 | |||
89 | \end{document} | ||
diff --git a/scilab_doc/neldermead/neldermead.bib b/scilab_doc/neldermead/neldermead.bib deleted file mode 100644 index ca70d04..0000000 --- a/scilab_doc/neldermead/neldermead.bib +++ /dev/null | |||
@@ -1,546 +0,0 @@ | |||
1 | @article{lagarias:112, | ||
2 | author = {Jeffrey C. Lagarias and James A. Reeds and Margaret H. Wright and Paul E. Wright}, | ||
3 | collaboration = {}, | ||
4 | title = {Convergence Properties of the Nelder--Mead Simplex Method in Low Dimensions}, | ||
5 | publisher = {SIAM}, | ||
6 | year = {1998}, | ||
7 | journal = {SIAM Journal on Optimization}, | ||
8 | volume = {9}, | ||
9 | number = {1}, | ||
10 | pages = {112-147}, | ||
11 | keywords = {direct search methods; Nelder--Mead simplex methods; nonderivative optimization}, | ||
12 | doi = {10.1137/S1052623496303470} | ||
13 | } | ||
14 | |||
15 | |||
16 | |||
17 | @article{citeulike:3009487, | ||
18 | abstract = {A method is described for the minimization of a function of n variables, which depends on the comparison of function values at the (n + 1) vertices of a general simplex, followed by the replacement of the vertex with the highest value by another point. The simplex adapts itself to the local landscape, and contracts on to the final minimum. The method is shown to be effective and computationally compact. A procedure is given for the estimation of the Hessian matrix in the neighbourhood of the minimum, needed in statistical estimation problems. 10.1093/comjnl/7.4.308}, | ||
19 | author = {Nelder, J. A. and Mead, R. }, | ||
20 | citeulike-article-id = {3009487}, | ||
21 | journal = {The Computer Journal}, | ||
22 | month = {January}, | ||
23 | number = {4}, | ||
24 | pages = {308--313}, | ||
25 | posted-at = {2008-09-15 16:23:09}, | ||
26 | priority = {2}, | ||
27 | title = {A Simplex Method for Function Minimization}, | ||
28 | volume = {7}, | ||
29 | year = {1965} | ||
30 | } | ||
31 | |||
32 | @Book{ nla.cat-vn1060620, | ||
33 | author = { Nash, J. C. }, | ||
34 | title = { Compact numerical methods for computers : linear algebra and function minimisation}, | ||
35 | isbn = { 0852743300 }, | ||
36 | publisher = { Hilger, Bristol}, | ||
37 | pages = { ix, 227 p. : }, | ||
38 | year = { 1979 }, | ||
39 | type = { Book }, | ||
40 | subjects = { Numerical analysis -- Data processing }, | ||
41 | } | ||
42 | |||
43 | @Book{Kelley1999, | ||
44 | title={Iterative Methods for Optimization}, | ||
45 | author = {C. T. Kelley}, | ||
46 | publisher = {SIAM Frontiers in Applied Mathematics}, | ||
47 | volume={19}, | ||
48 | year={1999}, | ||
49 | } | ||
50 | |||
51 | @Book{KelleyMethodsOptimizationMatlabCodes, | ||
52 | title={Iterative Methods for Optimization: Matlab Codes}, | ||
53 | author = {C. T. Kelley}, | ||
54 | publisher = {North Carolina State University}, | ||
55 | } | ||
56 | |||
57 | @article{Spendley1962, | ||
58 | jstor_articletype = {primary_article}, | ||
59 | title = {Sequential Application of Simplex Designs in Optimisation and Evolutionary Operation}, | ||
60 | author = {Spendley, W. and Hext, G. R. and Himsworth, F. R.}, | ||
61 | journal = {Technometrics}, | ||
62 | jstor_issuetitle = {}, | ||
63 | volume = {4}, | ||
64 | number = {4}, | ||
65 | jstor_formatteddate = {Nov., 1962}, | ||
66 | pages = {441--461}, | ||
67 | ISSN = {00401706}, | ||
68 | abstract = {A technique for empirical optimisation is presented in which a sequence of experimental designs each in the form of a regular or irregular simplex is used, each simplex having all vertices but one in common with the preceding simplex, and being completed by one new point. Reasons for the choice of design are outlined, and a formal procedure given. The performance of the technique in the presence and absence of error is studied and it is shown (a) that in the presence of error the rate of advance is inversely proportional to the error standard deviation, so that replication of observations is not beneficial, and (b) that the "efficiency" of the technique appears to increase in direct proportion to the number of factors investigated. It is also noted that, since the direction of movement from each simplex is dependent solely on the ranking of the observations, the technique may be used even in circumstances when a response cannot be quantitatively assessed. Attention is drawn to the ease with which second-order designs having the minimum number of experimental points may be derived from a regular simplex, and a fitting procedure which avoids a direct matrix inversion is suggested. In a brief appendix one or two new rotatable designs derivable from a simplex are noted.}, | ||
69 | publisher = {American Statistical Association and American Society for Quality}, | ||
70 | language = {}, | ||
71 | copyright = {Copyright 1962 American Statistical Association and American Society for Quality}, | ||
72 | year = {1962}, | ||
73 | } | ||
74 | @book{NumericalRecipes, | ||
75 | author = {W. H. Press and Saul A. Teukolsky and William T. Vetterling and Brian P. Flannery}, | ||
76 | title = {Numerical Recipes in C, Second Edition}, | ||
77 | year = {1992}, | ||
78 | publisher= {}} | ||
79 | |||
80 | @article{589283, | ||
81 | author = {Kelley,, C. T.}, | ||
82 | title = {Detection and Remediation of Stagnation in the Nelder--Mead Algorithm Using a Sufficient Decrease Condition}, | ||
83 | journal = {SIAM J. on Optimization}, | ||
84 | volume = {10}, | ||
85 | number = {1}, | ||
86 | year = {1999}, | ||
87 | issn = {1052-6234}, | ||
88 | pages = {43--55}, | ||
89 | doi = {http://dx.doi.org/10.1137/S1052623497315203}, | ||
90 | publisher = {Society for Industrial and Applied Mathematics}, | ||
91 | address = {Philadelphia, PA, USA}, | ||
92 | } | ||
93 | |||
94 | @ARTICLE{O'Neill1971AAF, | ||
95 | AUTHOR = "O'Neill, R.", | ||
96 | TITLE = "Algorithm {AS47} - {F}unction minimization using a simplex procedure", | ||
97 | JOURNAL = "Applied Statistics", | ||
98 | VOLUME = "20", | ||
99 | number = {3}, | ||
100 | YEAR = "1971", | ||
101 | PAGES = "338--346", | ||
102 | } | ||
103 | @ARTICLE{O'NeillAS47, | ||
104 | AUTHOR = {O'Neill, R.}, | ||
105 | TITLE = {Algorithm AS47 - Fortran 77 source code}, | ||
106 | YEAR = {1971}, | ||
107 | note = {\url{http://lib.stat.cmu.edu/apstat/47}} | ||
108 | } | ||
109 | |||
110 | @article{1285769, | ||
111 | author = {Lee,, Donghoon and Wiswall,, Matthew}, | ||
112 | title = {A Parallel Implementation of the Simplex Function Minimization Routine}, | ||
113 | journal = {Comput. Econ.}, | ||
114 | volume = {30}, | ||
115 | number = {2}, | ||
116 | year = {2007}, | ||
117 | issn = {0927-7099}, | ||
118 | pages = {171--187}, | ||
119 | doi = {http://dx.doi.org/10.1007/s10614-007-9094-2}, | ||
120 | publisher = {Kluwer Academic Publishers}, | ||
121 | address = {Hingham, MA, USA}, | ||
122 | } | ||
123 | |||
124 | @article{LolimotColletteURL, | ||
125 | author = {Collette, Yann}, | ||
126 | title = {Lolimot}, | ||
127 | note = {\url{http://sourceforge.net/projects/lolimot/}}, | ||
128 | } | ||
129 | |||
130 | @article{NelderMeadColletteURL, | ||
131 | author = {Collette, Yann}, | ||
132 | title = {Lolimot - optim\_nelder\_mead.sci}, | ||
133 | note = {\url{http://lolimot.cvs.sourceforge.net/viewvc/lolimot/scilab/optim/macros/optim_nelder_mead.sci?revision=1.1.1.1&view=markup}}, | ||
134 | } | ||
135 | |||
136 | |||
137 | @article{MatlabFminsearch, | ||
138 | author = {The Mathworks}, | ||
139 | title = {Matlab ? fminsearch}, | ||
140 | note = {\url{http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/fminsearch.html}}, | ||
141 | } | ||
142 | |||
143 | @article{GAMS-A19A20-Desc, | ||
144 | author = {Nash, J.C.}, | ||
145 | title = {GAMS - A19A20 - Description}, | ||
146 | year = {1980}, | ||
147 | month = {February}, | ||
148 | note = {\url{http://gams.nist.gov/serve.cgi/Module/NASHLIB/A19A20/11238/}}, | ||
149 | } | ||
150 | @article{GAMS-A19A20-Source, | ||
151 | author = {Nash, J.C. }, | ||
152 | title = {GAMS - A19A20 - Source Code}, | ||
153 | year = {1980}, | ||
154 | month = {February}, | ||
155 | note = {\url{http://gams.nist.gov/serve.cgi/ModuleComponent/11238/Source/ITL/A19A20}}, | ||
156 | } | ||
157 | |||
158 | @article{Burkardtasa047, | ||
159 | author = {O'Neill, R. and Burkardt, John}, | ||
160 | title = {GAMS - A19A20 - Source Code}, | ||
161 | year = {2008}, | ||
162 | note = {\url{http://people.sc.fsu.edu/~burkardt/f77_src/asa047/asa047.f}}, | ||
163 | } | ||
164 | |||
165 | |||
166 | @article{BurkardtNelderMeadMatlab, | ||
167 | author = {Jeff Borggaard}, | ||
168 | title = {nelder\_mead}, | ||
169 | year = {2009}, | ||
170 | month = {January}, | ||
171 | note = {\url{http://people.sc.fsu.edu/~burkardt/m_src/nelder_mead/nelder_mead.m}}, | ||
172 | } | ||
173 | |||
174 | @article{SurvivalBookOptim, | ||
175 | title = {optim1.f}, | ||
176 | note = {\url{http://www.stat.uconn.edu/~mhchen/survbook/example51/optim1.f}}, | ||
177 | } | ||
178 | |||
179 | @Article{Guin:1968:DCM, | ||
180 | author = {J. A. Guin}, | ||
181 | title = {Discussion and correspondence: modification of the complex method of constrained optimization}, | ||
182 | journal = {The Computer Journal}, | ||
183 | volume = {10}, | ||
184 | number = {4}, | ||
185 | pages = {416--417}, | ||
186 | month = feb, | ||
187 | year = {1968}, | ||
188 | CODEN = {CMPJA6}, | ||
189 | ISSN = {0010-4620}, | ||
190 | bibdate = {Fri Sep 29 08:51:24 MDT 2000}, | ||
191 | bibsource = {http://www3.oup.co.uk/computer_journal/hdb/Volume_10/Issue_04/}, | ||
192 | acknowledgement = ack-nhfb, | ||
193 | } | ||
194 | |||
195 | @article{372783, | ||
196 | author = {Shere,, Kenneth D.}, | ||
197 | title = {Remark on algorithm 454 : The complex method for constrained optimization}, | ||
198 | journal = {Commun. ACM}, | ||
199 | volume = {17}, | ||
200 | number = {8}, | ||
201 | year = {1974}, | ||
202 | issn = {0001-0782}, | ||
203 | pages = {471}, | ||
204 | doi = {http://doi.acm.org/10.1145/361082.372783}, | ||
205 | publisher = {ACM}, | ||
206 | address = {New York, NY, USA}, | ||
207 | } | ||
208 | |||
209 | @article{362324, | ||
210 | author = {Richardson,, Joel A. and Kuester,, J. L.}, | ||
211 | title = {Algorithm 454: the complex method for constrained optimization}, | ||
212 | journal = {Commun. ACM}, | ||
213 | volume = {16}, | ||
214 | number = {8}, | ||
215 | year = {1973}, | ||
216 | issn = {0001-0782}, | ||
217 | pages = {487--489}, | ||
218 | doi = {http://doi.acm.org/10.1145/355609.362324}, | ||
219 | publisher = {ACM}, | ||
220 | address = {New York, NY, USA}, | ||
221 | } | ||
222 | |||
223 | @misc{NAGE04CCF, | ||
224 | author = {NAG}, | ||
225 | title = {NAG Fortran Library Routine Document : E04CCF/E04CCA}, | ||
226 | note={\url{http://www.nag.co.uk/numeric/Fl/manual/xhtml/E04/e04ccf.xml}} | ||
227 | } | ||
228 | |||
229 | @TECHREPORT{Andersson01multiobjectiveoptimization, | ||
230 | author = {Johan Andersson and Link\"opings Universitet}, | ||
231 | title = {Multiobjective Optimization in Engineering Design: Application to Fluid Power Systems}, | ||
232 | institution = {Department of Mechanical Engineering, Link\"oping University}, | ||
233 | year = {2001}, | ||
234 | note={\url{https://polopoly.liu.se/content/1/c6/10/99/74/phdthesis.pdf}} | ||
235 | } | ||
236 | |||
237 | @article{Box1965, | ||
238 | author = {Box, M. J.}, | ||
239 | journal = {The Computer Journal}, | ||
240 | pages = {42--52}, | ||
241 | volume = {8}, | ||
242 | number = {1}, | ||
243 | title = {A New Method of Constrained Optimization and a Comparison With Other Methods}, | ||
244 | year = {1965 } | ||
245 | } | ||
246 | |||
247 | @article{69970, | ||
248 | author = {Subrahmanyam,, M. B.}, | ||
249 | title = {An extension of the simplex method to constrained nonlinear optimization}, | ||
250 | journal = {J. Optim. Theory Appl.}, | ||
251 | volume = {62}, | ||
252 | number = {2}, | ||
253 | year = {1989}, | ||
254 | issn = {0022-3239}, | ||
255 | pages = {311--319}, | ||
256 | doi = {http://dx.doi.org/10.1007/BF00941060}, | ||
257 | publisher = {Plenum Press}, | ||
258 | address = {New York, NY, USA}, | ||
259 | } | ||
260 | |||
261 | @article{584536, | ||
262 | author = {Nazareth,, Larry and Tseng,, Paul}, | ||
263 | title = {Gilding the Lily: A Variant of the Nelder-Mead Algorithm Based on Golden-Section Search}, | ||
264 | journal = {Comput. Optim. Appl.}, | ||
265 | volume = {22}, | ||
266 | number = {1}, | ||
267 | year = {2002}, | ||
268 | issn = {0926-6003}, | ||
269 | pages = {133--144}, | ||
270 | doi = {http://dx.doi.org/10.1023/A:1014842520519}, | ||
271 | publisher = {Kluwer Academic Publishers}, | ||
272 | address = {Norwell, MA, USA}, | ||
273 | } | ||
274 | |||
275 | @MISC{Perry01anew, | ||
276 | author = {Ronald N. Perry and Ronald N. Perry}, | ||
277 | title = {A New Method For Numerical Constrained Optimization}, | ||
278 | year = {2001} | ||
279 | } | ||
280 | |||
281 | @article{HanNeumann2006, | ||
282 | author = {Han, Lixing and Neumann, Michael}, | ||
283 | title = {Effect of dimensionality on the Nelder-Mead simplex method }, | ||
284 | journal = {Optimization Methods and Software}, | ||
285 | volume = {21}, | ||
286 | number = {1}, | ||
287 | year = {2006}, | ||
288 | pages = {1--16}, | ||
289 | } | ||
290 | |||
291 | @article{0266-5611-23-1-023, | ||
292 | author={W J Barker and P A Conway}, | ||
293 | title={Convergent simplex searches and the \‘gloveless DataGlove\’}, | ||
294 | journal={Inverse Problems}, | ||
295 | volume={23}, | ||
296 | number={1}, | ||
297 | pages={405-419}, | ||
298 | url={http://stacks.iop.org/0266-5611/23/405}, | ||
299 | year={2007}, | ||
300 | abstract={The inversion of data from an electric field sensing array that can track the position and orientation of a hand modelled initially as a rigid bar is investigated as motions in the digits are introduced into the hand model. The inversion is shown to fail with increased dimensionality of the problem due to a pathology in the Nelder-Mead optimization algorithm used. Robust simplex search variants are tested on the problem and shown to successfully address this pathology resulting in a significant increase in the dimensionality for which the problem can be solved.} | ||
301 | } | ||
302 | |||
303 | @article{parkinson1972, | ||
304 | author = {Parkinson and Hutchinson}, | ||
305 | title = {An investigation into the efficiency of variants on the simplex method}, | ||
306 | publisher = {Academic Press}, | ||
307 | year = {1972}, | ||
308 | journal = {F. A. Lootsma, editor, Numerical Methods for Non-linear Optimization}, | ||
309 | pages = {115-135}, | ||
310 | } | ||
311 | |||
312 | |||
313 | |||
314 | |||
315 | @book{Han2000, | ||
316 | author = {Han, Lixing}, | ||
317 | title = {Algorithms in Unconstrained Optimization}, | ||
318 | year = {2000}, | ||
319 | publisher= {Ph.D., The University of Connecticut}} | ||
320 | |||
321 | @TECHREPORT{Torczon89multi-directionalsearch, | ||
322 | author = {Virginia Joanne Torczon}, | ||
323 | title = {Multi-Directional Search: A Direct Search Algorithm for Parallel Machines}, | ||
324 | institution = {Rice University}, | ||
325 | year = {1989} | ||
326 | } | ||
327 | |||
328 | |||
329 | @article{hanNeumann2003, | ||
330 | author = {Han, Lixing and Neumann, Michael and Xu, Jianhong}, | ||
331 | title = {On the roots of certain polynomials arising from the analysis of the Nelder-Mead simplex method}, | ||
332 | publisher = {Academic Press}, | ||
333 | year = {2003}, | ||
334 | journal = {Linear Algebra and its Applications}, | ||
335 | pages = {109-124}, | ||
336 | volume={363} | ||
337 | } | ||
338 | |||
339 | @article{590075, | ||
340 | author = {Peters,, D. and Bolte,, H. and Marschner,, C. and N\"{u}ssen,, O. and Laur,, R.}, | ||
341 | title = {Enhanced Optimization Algorithms for the Development of Microsystems}, | ||
342 | journal = {Analog Integr. Circuits Signal Process.}, | ||
343 | volume = {32}, | ||
344 | number = {1}, | ||
345 | year = {2002}, | ||
346 | issn = {0925-1030}, | ||
347 | pages = {47--54}, | ||
348 | doi = {http://dx.doi.org/10.1023/A:1016071624422}, | ||
349 | publisher = {Kluwer Academic Publishers}, | ||
350 | address = {Hingham, MA, USA}, | ||
351 | } | ||
352 | @article{citeulike:1903787, | ||
353 | abstract = {The greatest or least value of a function of several variables is to be found when the variables are restricted to a given region. A method is developed for dealing with this problem and is compared with possible alternatives. The method can be used on a digital computer, and is incorporated in a program for Mercury. 10.1093/comjnl/3.3.175}, | ||
354 | author = {Rosenbrock, H. H. }, | ||
355 | citeulike-article-id = {1903787}, | ||
356 | doi = {10.1093/comjnl/3.3.175}, | ||
357 | journal = {The Computer Journal}, | ||
358 | keywords = {deterministic, kisao, simulation\_algorithms}, | ||
359 | month = {March}, | ||
360 | number = {3}, | ||
361 | pages = {175--184}, | ||
362 | posted-at = {2007-11-12 19:07:20}, | ||
363 | priority = {2}, | ||
364 | title = {An Automatic Method for Finding the Greatest or Least Value of a Function}, | ||
365 | url = {http://dx.doi.org/10.1093/comjnl/3.3.175}, | ||
366 | volume = {3}, | ||
367 | year = {1960} | ||
368 | } | ||
369 | |||
370 | |||
371 | |||
372 | |||
373 | |||
374 | @article{Powell08011962, | ||
375 | author = {Powell, M. J. D.}, | ||
376 | title = {{An Iterative Method for Finding Stationary Values of a Function of Several Variables}}, | ||
377 | journal = {The Computer Journal}, | ||
378 | volume = {5}, | ||
379 | number = {2}, | ||
380 | pages = {147-151}, | ||
381 | doi = {10.1093/comjnl/5.2.147}, | ||
382 | year = {1962}, | ||
383 | abstract = {An iterative method for finding stationary values of a function of several variables is described. In many ways it is similar to the method of steepest descents; however this new method has second order convergence. | ||
384 | }, | ||
385 | URL = {http://comjnl.oxfordjournals.org/cgi/content/abstract/5/2/147}, | ||
386 | eprint = {http://comjnl.oxfordjournals.org/cgi/reprint/5/2/147.pdf} | ||
387 | } | ||
388 | |||
389 | |||
390 | |||
391 | |||
392 | |||
393 | @article{R.Fletcher08011963, | ||
394 | author = {Fletcher, R. and Powell, M. J. D.}, | ||
395 | title = {{A Rapidly Convergent Descent Method for Minimization}}, | ||
396 | journal = {The Computer Journal}, | ||
397 | volume = {6}, | ||
398 | number = {2}, | ||
399 | pages = {163-168}, | ||
400 | doi = {10.1093/comjnl/6.2.163}, | ||
401 | year = {1963}, | ||
402 | abstract = {A powerful iterative descent method for finding a local minimum of a function of several variables is described. A number of theorems are proved to show that it always converges and that it converges rapidly. Numerical tests on a variety of functions confirm these theorems. The method has been used to solve a system of one hundred non-linear simultaneous equations. | ||
403 | }, | ||
404 | URL = {http://comjnl.oxfordjournals.org/cgi/content/abstract/6/2/163}, | ||
405 | eprint = {http://comjnl.oxfordjournals.org/cgi/reprint/6/2/163.pdf} | ||
406 | } | ||
407 | |||
408 | |||
409 | @article{589109, | ||
410 | author = {McKinnon,, K. I. M.}, | ||
411 | title = {Convergence of the Nelder--Mead Simplex Method to a Nonstationary Point}, | ||
412 | journal = {SIAM J. on Optimization}, | ||
413 | volume = {9}, | ||
414 | number = {1}, | ||
415 | year = {1998}, | ||
416 | issn = {1052-6234}, | ||
417 | pages = {148--158}, | ||
418 | doi = {http://dx.doi.org/10.1137/S1052623496303482}, | ||
419 | publisher = {Society for Industrial and Applied Mathematics}, | ||
420 | address = {Philadelphia, PA, USA}, | ||
421 | } | ||
422 | |||
423 | |||
424 | |||
425 | @article{355943, | ||
426 | author = {Mor\'{e},, J. J. and Garbow,, Burton S. and Hillstrom,, Kenneth E.}, | ||
427 | title = {Algorithm 566: FORTRAN Subroutines for Testing Unconstrained Optimization Software [C5], [E4]}, | ||
428 | journal = {ACM Trans. Math. Softw.}, | ||
429 | volume = {7}, | ||
430 | number = {1}, | ||
431 | year = {1981}, | ||
432 | issn = {0098-3500}, | ||
433 | pages = {136--140}, | ||
434 | doi = {http://doi.acm.org/10.1145/355934.355943}, | ||
435 | publisher = {ACM}, | ||
436 | address = {New York, NY, USA}, | ||
437 | } | ||
438 | |||
439 | @TECHREPORT{Fan2002, | ||
440 | author = {Ellen Fan}, | ||
441 | title = {Global Optimization Of Lennard-Jones Atomic Clusters}, | ||
442 | institution = {McMaster University}, | ||
443 | year = {2002}, | ||
444 | month = {February}, | ||
445 | day={26} | ||
446 | } | ||
447 | |||
448 | @ARTICLE{Singer:2009, | ||
449 | AUTHOR = {Singer, A. and Nelder, J. }, | ||
450 | TITLE = {Nelder-Mead algorithm}, | ||
451 | YEAR = {2009}, | ||
452 | JOURNAL = {Scholarpedia}, | ||
453 | VOLUME = {4}, | ||
454 | NUMBER = {7}, | ||
455 | PAGES = {2928} | ||
456 | } | ||
457 | |||
458 | @ARTICLE{Torczon98fromevolutionary, | ||
459 | author = {Virginia Torczon and Michael W. Trosset}, | ||
460 | title = {From Evolutionary Operation to Parallel Direct Search: Pattern Search Algorithms for Numerical Optimization}, | ||
461 | journal = {Computing Science and Statistics}, | ||
462 | year = {1998}, | ||
463 | volume = {29}, | ||
464 | pages = {396--401} | ||
465 | } | ||
466 | |||
467 | @book{WaltersParkerMorganDeming1991, | ||
468 | author = {Walters, F. S. and Parker, L. R. and Morgan, S. L. and Deming, S. N.}, | ||
469 | title = {Sequential Simplex Optimization for Quality and Productivity in Research, Development, and Manufacturing}, | ||
470 | year = {1991}, | ||
471 | publisher= {CRC Press, Boca Raton, FL}, | ||
472 | series = {Chemometrics series}, | ||
473 | } | ||
474 | |||
475 | @ARTICLE{VanDerWiel1980, | ||
476 | AUTHOR = {Van Der Wiel, P.F.A. }, | ||
477 | TITLE = {Improvement of the super modified simplex optimisation procedure}, | ||
478 | YEAR = {1980}, | ||
479 | JOURNAL = {Analytica Chemica Acta}, | ||
480 | VOLUME = {122}, | ||
481 | PAGES = {421?-433}, | ||
482 | } | ||
483 | |||
484 | @ARTICLE{Routh1977, | ||
485 | author = {Routh, M. W. and Swartz, P.A. and Denton, M.B.}, | ||
486 | title = {Performance of the Super Modified Simplex}, | ||
487 | journal = {Analytical Chemistry}, | ||
488 | year = {1977}, | ||
489 | volume = {49}, | ||
490 | number = {9}, | ||
491 | pages = {1422--1428} | ||
492 | } | ||
493 | |||
494 | @MISC{Brent73algorithmsfor, | ||
495 | author = {Richard P. Brent}, | ||
496 | title = {Algorithms for Minimization without Derivatives}, | ||
497 | year = {1973} | ||
498 | } | ||
499 | |||
500 | @book{Gill81MurrayWright, | ||
501 | address = {London}, | ||
502 | author = {Gill, P. E. and Murray, W. and Wright, M. H. }, | ||
503 | citeulike-article-id = {1055426}, | ||
504 | keywords = {bibtex-import}, | ||
505 | posted-at = {2007-01-20 09:02:15}, | ||
506 | priority = {2}, | ||
507 | publisher = {Academic Press}, | ||
508 | title = {Practical optimization}, | ||
509 | year = {1981} | ||
510 | } | ||
511 | |||
512 | @book{numericaloptimization, | ||
513 | author = {Jorge Nocedal, Stephen J. Wright}, | ||
514 | title = {Numerical Optimization}, | ||
515 | year = {1999}, | ||
516 | publisher= {Springer} | ||
517 | } | ||
518 | |||
519 | @book{citeulike:2122238, | ||
520 | address = {Baltimore, MD, USA}, | ||
521 | author = {Golub, Gene H. and Van Loan, Charles F. }, | ||
522 | citeulike-article-id = {2122238}, | ||
523 | isbn = {0801854148}, | ||
524 | keywords = {algebra, book, computation, numerical}, | ||
525 | posted-at = {2008-03-30 22:15:25}, | ||
526 | priority = {2}, | ||
527 | publisher = {Johns Hopkins University Press}, | ||
528 | title = {Matrix computations (3rd ed.)}, | ||
529 | url = {http://portal.acm.org/citation.cfm?id=248979}, | ||
530 | year = {1996} | ||
531 | } | ||
532 | |||
533 | @article{355936, | ||
534 | author = {Mor\'{e}, Jorge J. and Garbow, Burton S. and Hillstrom, Kenneth E.}, | ||
535 | title = {Testing Unconstrained Optimization Software}, | ||
536 | journal = {ACM Trans. Math. Softw.}, | ||
537 | volume = {7}, | ||
538 | number = {1}, | ||
539 | year = {1981}, | ||
540 | issn = {0098-3500}, | ||
541 | pages = {17--41}, | ||
542 | doi = {http://doi.acm.org/10.1145/355934.355936}, | ||
543 | publisher = {ACM}, | ||
544 | address = {New York, NY, USA}, | ||
545 | } | ||
546 | |||
diff --git a/scilab_doc/neldermead/neldermead.pdf b/scilab_doc/neldermead/neldermead.pdf deleted file mode 100644 index a507fc8..0000000 --- a/scilab_doc/neldermead/neldermead.pdf +++ /dev/null | |||
@@ -1,24555 +0,0 @@ | |||
1 | %PDF-1.4 | ||
2 | %ÐÔÅØ | ||
3 | 4 0 obj | ||
4 | << /S /GoTo /D (chapter.1) >> | ||
5 | endobj | ||
6 | 7 0 obj | ||
7 | (Introduction) | ||
8 | endobj | ||
9 | 8 0 obj | ||
10 | << /S /GoTo /D (section.1.1) >> | ||
11 | endobj | ||
12 | 11 0 obj | ||
13 | (Overview) | ||
14 | endobj | ||
15 | 12 0 obj | ||
16 | << /S /GoTo /D (section.1.2) >> | ||
17 | endobj | ||
18 | 15 0 obj | ||
19 | (How to use the Toolbox) | ||
20 | endobj | ||
21 | 16 0 obj | ||
22 | << /S /GoTo /D (section.1.3) >> | ||
23 | endobj | ||
24 | 19 0 obj | ||
25 | (An example) | ||
26 | endobj | ||
27 | 20 0 obj | ||
28 | << /S /GoTo /D (section.1.4) >> | ||
29 | endobj | ||
30 | 23 0 obj | ||
31 | (Help, demonstrations and unit tests) | ||
32 | endobj | ||
33 | 24 0 obj | ||
34 | << /S /GoTo /D (chapter.2) >> | ||
35 | endobj | ||
36 | 27 0 obj | ||
37 | (Simplex theory) | ||
38 | endobj | ||
39 | 28 0 obj | ||
40 | << /S /GoTo /D (section.2.1) >> | ||
41 | endobj | ||
42 | 31 0 obj | ||
43 | (The simplex) | ||
44 | endobj | ||
45 | 32 0 obj | ||
46 | << /S /GoTo /D (section.2.2) >> | ||
47 | endobj | ||
48 | 35 0 obj | ||
49 | (The size of the complex) | ||
50 | endobj | ||
51 | 36 0 obj | ||
52 | << /S /GoTo /D (section.2.3) >> | ||
53 | endobj | ||
54 | 39 0 obj | ||
55 | (The initial simplex) | ||
56 | endobj | ||
57 | 40 0 obj | ||
58 | << /S /GoTo /D (subsection.2.3.1) >> | ||
59 | endobj | ||
60 | 43 0 obj | ||
61 | (Importance of the initial simplex) | ||
62 | endobj | ||
63 | 44 0 obj | ||
64 | << /S /GoTo /D (subsection.2.3.2) >> | ||
65 | endobj | ||
66 | 47 0 obj | ||
67 | (Spendley's et al regular simplex) | ||
68 | endobj | ||
69 | 48 0 obj | ||
70 | << /S /GoTo /D (subsection.2.3.3) >> | ||
71 | endobj | ||
72 | 51 0 obj | ||
73 | (Axis-by-axis simplex) | ||
74 | endobj | ||
75 | 52 0 obj | ||
76 | << /S /GoTo /D (subsection.2.3.4) >> | ||
77 | endobj | ||
78 | 55 0 obj | ||
79 | (Randomized bounds) | ||
80 | endobj | ||
81 | 56 0 obj | ||
82 | << /S /GoTo /D (subsection.2.3.5) >> | ||
83 | endobj | ||
84 | 59 0 obj | ||
85 | (Pfeffer's method) | ||
86 | endobj | ||
87 | 60 0 obj | ||
88 | << /S /GoTo /D (section.2.4) >> | ||
89 | endobj | ||
90 | 63 0 obj | ||
91 | (The simplex gradient) | ||
92 | endobj | ||
93 | 64 0 obj | ||
94 | << /S /GoTo /D (subsection.2.4.1) >> | ||
95 | endobj | ||
96 | 67 0 obj | ||
97 | (Matrix of simplex directions) | ||
98 | endobj | ||
99 | 68 0 obj | ||
100 | << /S /GoTo /D (subsection.2.4.2) >> | ||
101 | endobj | ||
102 | 71 0 obj | ||
103 | (Taylor's formula) | ||
104 | endobj | ||
105 | 72 0 obj | ||
106 | << /S /GoTo /D (subsection.2.4.3) >> | ||
107 | endobj | ||
108 | 75 0 obj | ||
109 | (Forward difference simplex gradient) | ||
110 | endobj | ||
111 | 76 0 obj | ||
112 | << /S /GoTo /D (section.2.5) >> | ||
113 | endobj | ||
114 | 79 0 obj | ||
115 | (References and notes) | ||
116 | endobj | ||
117 | 80 0 obj | ||
118 | << /S /GoTo /D (chapter.3) >> | ||
119 | endobj | ||
120 | 83 0 obj | ||
121 | (Spendley's et al. method) | ||
122 | endobj | ||
123 | 84 0 obj | ||
124 | << /S /GoTo /D (section.3.1) >> | ||
125 | endobj | ||
126 | 87 0 obj | ||
127 | (Introduction) | ||
128 | endobj | ||
129 | 88 0 obj | ||
130 | << /S /GoTo /D (subsection.3.1.1) >> | ||
131 | endobj | ||
132 | 91 0 obj | ||
133 | (Overview) | ||
134 | endobj | ||
135 | 92 0 obj | ||
136 | << /S /GoTo /D (subsection.3.1.2) >> | ||
137 | endobj | ||
138 | 95 0 obj | ||
139 | (Algorithm) | ||
140 | endobj | ||
141 | 96 0 obj | ||
142 | << /S /GoTo /D (subsection.3.1.3) >> | ||
143 | endobj | ||
144 | 99 0 obj | ||
145 | (Geometric analysis) | ||
146 | endobj | ||
147 | 100 0 obj | ||
148 | << /S /GoTo /D (subsection.3.1.4) >> | ||
149 | endobj | ||
150 | 103 0 obj | ||
151 | (General features of the algorithm) | ||
152 | endobj | ||
153 | 104 0 obj | ||
154 | << /S /GoTo /D (section.3.2) >> | ||
155 | endobj | ||
156 | 107 0 obj | ||
157 | (Numerical experiments) | ||
158 | endobj | ||
159 | 108 0 obj | ||
160 | << /S /GoTo /D (subsection.3.2.1) >> | ||
161 | endobj | ||
162 | 111 0 obj | ||
163 | (Quadratic function) | ||
164 | endobj | ||
165 | 112 0 obj | ||
166 | << /S /GoTo /D (subsection.3.2.2) >> | ||
167 | endobj | ||
168 | 115 0 obj | ||
169 | (Badly scaled quadratic function) | ||
170 | endobj | ||
171 | 116 0 obj | ||
172 | << /S /GoTo /D (subsection.3.2.3) >> | ||
173 | endobj | ||
174 | 119 0 obj | ||
175 | (Sensitivity to dimension) | ||
176 | endobj | ||
177 | 120 0 obj | ||
178 | << /S /GoTo /D (section.3.3) >> | ||
179 | endobj | ||
180 | 123 0 obj | ||
181 | (Conclusion) | ||
182 | endobj | ||
183 | 124 0 obj | ||
184 | << /S /GoTo /D (chapter.4) >> | ||
185 | endobj | ||
186 | 127 0 obj | ||
187 | (Nelder-Mead method) | ||
188 | endobj | ||
189 | 128 0 obj | ||
190 | << /S /GoTo /D (section.4.1) >> | ||
191 | endobj | ||
192 | 131 0 obj | ||
193 | (Introduction) | ||
194 | endobj | ||
195 | 132 0 obj | ||
196 | << /S /GoTo /D (subsection.4.1.1) >> | ||
197 | endobj | ||
198 | 135 0 obj | ||
199 | (Overview) | ||
200 | endobj | ||
201 | 136 0 obj | ||
202 | << /S /GoTo /D (subsection.4.1.2) >> | ||
203 | endobj | ||
204 | 139 0 obj | ||
205 | (Algorithm) | ||
206 | endobj | ||
207 | 140 0 obj | ||
208 | << /S /GoTo /D (section.4.2) >> | ||
209 | endobj | ||
210 | 143 0 obj | ||
211 | (Geometric analysis) | ||
212 | endobj | ||
213 | 144 0 obj | ||
214 | << /S /GoTo /D (section.4.3) >> | ||
215 | endobj | ||
216 | 147 0 obj | ||
217 | (Automatic restarts) | ||
218 | endobj | ||
219 | 148 0 obj | ||
220 | << /S /GoTo /D (subsection.4.3.1) >> | ||
221 | endobj | ||
222 | 151 0 obj | ||
223 | (Automatic restart algorithm) | ||
224 | endobj | ||
225 | 152 0 obj | ||
226 | << /S /GoTo /D (subsection.4.3.2) >> | ||
227 | endobj | ||
228 | 155 0 obj | ||
229 | (O'Neill factorial test) | ||
230 | endobj | ||
231 | 156 0 obj | ||
232 | << /S /GoTo /D (subsection.4.3.3) >> | ||
233 | endobj | ||
234 | 159 0 obj | ||
235 | (Kelley's stagnation detection) | ||
236 | endobj | ||
237 | 160 0 obj | ||
238 | << /S /GoTo /D (section.4.4) >> | ||
239 | endobj | ||
240 | 163 0 obj | ||
241 | (Convergence properties on a quadratic) | ||
242 | endobj | ||
243 | 164 0 obj | ||
244 | << /S /GoTo /D (subsection.4.4.1) >> | ||
245 | endobj | ||
246 | 167 0 obj | ||
247 | (With default parameters) | ||
248 | endobj | ||
249 | 168 0 obj | ||
250 | << /S /GoTo /D (subsection.4.4.2) >> | ||
251 | endobj | ||
252 | 171 0 obj | ||
253 | (With variable parameters) | ||
254 | endobj | ||
255 | 172 0 obj | ||
256 | << /S /GoTo /D (section.4.5) >> | ||
257 | endobj | ||
258 | 175 0 obj | ||
259 | (Numerical experiments) | ||
260 | endobj | ||
261 | 176 0 obj | ||
262 | << /S /GoTo /D (subsection.4.5.1) >> | ||
263 | endobj | ||
264 | 179 0 obj | ||
265 | (Quadratic function) | ||
266 | endobj | ||
267 | 180 0 obj | ||
268 | << /S /GoTo /D (subsection.4.5.2) >> | ||
269 | endobj | ||
270 | 183 0 obj | ||
271 | (Sensitivity to dimension) | ||
272 | endobj | ||
273 | 184 0 obj | ||
274 | << /S /GoTo /D (subsection.4.5.3) >> | ||
275 | endobj | ||
276 | 187 0 obj | ||
277 | (O'Neill test cases) | ||
278 | endobj | ||
279 | 188 0 obj | ||
280 | << /S /GoTo /D (subsection.4.5.4) >> | ||
281 | endobj | ||
282 | 191 0 obj | ||
283 | (Mc Kinnon: convergence to a non stationnary point) | ||
284 | endobj | ||
285 | 192 0 obj | ||
286 | << /S /GoTo /D (subsection.4.5.5) >> | ||
287 | endobj | ||
288 | 195 0 obj | ||
289 | (Kelley: oriented restart) | ||
290 | endobj | ||
291 | 196 0 obj | ||
292 | << /S /GoTo /D (subsection.4.5.6) >> | ||
293 | endobj | ||
294 | 199 0 obj | ||
295 | (Han counter examples) | ||
296 | endobj | ||
297 | 200 0 obj | ||
298 | << /S /GoTo /D (subsection.4.5.7) >> | ||
299 | endobj | ||
300 | 203 0 obj | ||
301 | (Torczon's numerical experiments) | ||
302 | endobj | ||
303 | 204 0 obj | ||
304 | << /S /GoTo /D (section.4.6) >> | ||
305 | endobj | ||
306 | 207 0 obj | ||
307 | (Conclusion) | ||
308 | endobj | ||
309 | 208 0 obj | ||
310 | << /S /GoTo /D (chapter.5) >> | ||
311 | endobj | ||
312 | 211 0 obj | ||
313 | (The fminsearch function) | ||
314 | endobj | ||
315 | 212 0 obj | ||
316 | << /S /GoTo /D (section.5.1) >> | ||
317 | endobj | ||
318 | 215 0 obj | ||
319 | (fminsearch's algorithm) | ||
320 | endobj | ||
321 | 216 0 obj | ||
322 | << /S /GoTo /D (subsection.5.1.1) >> | ||
323 | endobj | ||
324 | 219 0 obj | ||
325 | (The algorithm) | ||
326 | endobj | ||
327 | 220 0 obj | ||
328 | << /S /GoTo /D (subsection.5.1.2) >> | ||
329 | endobj | ||
330 | 223 0 obj | ||
331 | (The initial simplex) | ||
332 | endobj | ||
333 | 224 0 obj | ||
334 | << /S /GoTo /D (subsection.5.1.3) >> | ||
335 | endobj | ||
336 | 227 0 obj | ||
337 | (The number of iterations) | ||
338 | endobj | ||
339 | 228 0 obj | ||
340 | << /S /GoTo /D (subsection.5.1.4) >> | ||
341 | endobj | ||
342 | 231 0 obj | ||
343 | (The termination criteria) | ||
344 | endobj | ||
345 | 232 0 obj | ||
346 | << /S /GoTo /D (section.5.2) >> | ||
347 | endobj | ||
348 | 235 0 obj | ||
349 | (Numerical experiments) | ||
350 | endobj | ||
351 | 236 0 obj | ||
352 | << /S /GoTo /D (subsection.5.2.1) >> | ||
353 | endobj | ||
354 | 239 0 obj | ||
355 | (Algorithm and numerical precision) | ||
356 | endobj | ||
357 | 240 0 obj | ||
358 | << /S /GoTo /D (subsection.5.2.2) >> | ||
359 | endobj | ||
360 | 243 0 obj | ||
361 | (Output and plot functions) | ||
362 | endobj | ||
363 | 244 0 obj | ||
364 | << /S /GoTo /D (subsection.5.2.3) >> | ||
365 | endobj | ||
366 | 247 0 obj | ||
367 | (Predefined plot functions) | ||
368 | endobj | ||
369 | 248 0 obj | ||
370 | << /S /GoTo /D (section.5.3) >> | ||
371 | endobj | ||
372 | 251 0 obj | ||
373 | (Conclusion) | ||
374 | endobj | ||
375 | 252 0 obj | ||
376 | << /S /GoTo /D (chapter.6) >> | ||
377 | endobj | ||
378 | 255 0 obj | ||
379 | (Conclusion) | ||
380 | endobj | ||
381 | 256 0 obj | ||
382 | << /S /GoTo /D (chapter.7) >> | ||
383 | endobj | ||
384 | 259 0 obj | ||
385 | (Acknowledgments) | ||
386 | endobj | ||
387 | 260 0 obj | ||
388 | << /S /GoTo /D (appendix.A) >> | ||
389 | endobj | ||
390 | 263 0 obj | ||
391 | (Nelder-Mead bibliography) | ||
392 | endobj | ||
393 | 264 0 obj | ||
394 | << /S /GoTo /D (section.A.1) >> | ||
395 | endobj | ||
396 | 267 0 obj | ||
397 | (Spendley, Hext, Himsworth, 1962) | ||
398 | endobj | ||
399 | 268 0 obj | ||
400 | << /S /GoTo /D (section.A.2) >> | ||
401 | endobj | ||
402 | 271 0 obj | ||
403 | (Nelder, Mead, 1965) | ||
404 | endobj | ||
405 | 272 0 obj | ||
406 | << /S /GoTo /D (section.A.3) >> | ||
407 | endobj | ||
408 | 275 0 obj | ||
409 | (Box, 1965) | ||
410 | endobj | ||
411 | 276 0 obj | ||
412 | << /S /GoTo /D (section.A.4) >> | ||
413 | endobj | ||
414 | 279 0 obj | ||
415 | (Guin, 1968) | ||
416 | endobj | ||
417 | 280 0 obj | ||
418 | << /S /GoTo /D (section.A.5) >> | ||
419 | endobj | ||
420 | 283 0 obj | ||
421 | (O'Neill, 1971) | ||
422 | endobj | ||
423 | 284 0 obj | ||
424 | << /S /GoTo /D (section.A.6) >> | ||
425 | endobj | ||
426 | 287 0 obj | ||
427 | (Parkinson and Hutchinson, 1972) | ||
428 | endobj | ||
429 | 288 0 obj | ||
430 | << /S /GoTo /D (section.A.7) >> | ||
431 | endobj | ||
432 | 291 0 obj | ||
433 | (Richardson and Kuester, 1973) | ||
434 | endobj | ||
435 | 292 0 obj | ||
436 | << /S /GoTo /D (section.A.8) >> | ||
437 | endobj | ||
438 | 295 0 obj | ||
439 | (Shere, 1973) | ||
440 | endobj | ||
441 | 296 0 obj | ||
442 | << /S /GoTo /D (section.A.9) >> | ||
443 | endobj | ||
444 | 299 0 obj | ||
445 | (Routh, Swartz, Denton, 1977) | ||
446 | endobj | ||
447 | 300 0 obj | ||
448 | << /S /GoTo /D (section.A.10) >> | ||
449 | endobj | ||
450 | 303 0 obj | ||
451 | (Van Der Wiel, 1980) | ||
452 | endobj | ||
453 | 304 0 obj | ||
454 | << /S /GoTo /D (section.A.11) >> | ||
455 | endobj | ||
456 | 307 0 obj | ||
457 | (Walters, Parker, Morgan and Deming, 1991) | ||
458 | endobj | ||
459 | 308 0 obj | ||
460 | << /S /GoTo /D (section.A.12) >> | ||
461 | endobj | ||
462 | 311 0 obj | ||
463 | (Subrahmanyam, 1989) | ||
464 | endobj | ||
465 | 312 0 obj | ||
466 | << /S /GoTo /D (section.A.13) >> | ||
467 | endobj | ||
468 | 315 0 obj | ||
469 | (Numerical Recipes in C, 1992) | ||
470 | endobj | ||
471 | 316 0 obj | ||
472 | << /S /GoTo /D (section.A.14) >> | ||
473 | endobj | ||
474 | 319 0 obj | ||
475 | (Lagarias, Reeds, Wright, Wright, 1998) | ||
476 | endobj | ||
477 | 320 0 obj | ||
478 | << /S /GoTo /D (section.A.15) >> | ||
479 | endobj | ||
480 | 323 0 obj | ||
481 | (Mc Kinnon, 1998) | ||
482 | endobj | ||
483 | 324 0 obj | ||
484 | << /S /GoTo /D (section.A.16) >> | ||
485 | endobj | ||
486 | 327 0 obj | ||
487 | (Kelley, 1999) | ||
488 | endobj | ||
489 | 328 0 obj | ||
490 | << /S /GoTo /D (section.A.17) >> | ||
491 | endobj | ||
492 | 331 0 obj | ||
493 | (Han, 2000) | ||
494 | endobj | ||
495 | 332 0 obj | ||
496 | << /S /GoTo /D (section.A.18) >> | ||
497 | endobj | ||
498 | 335 0 obj | ||
499 | (Nazareth, Tseng, 2001) | ||
500 | endobj | ||
501 | 336 0 obj | ||
502 | << /S /GoTo /D (section.A.19) >> | ||
503 | endobj | ||
504 | 339 0 obj | ||
505 | (Perry, Perry, 2001) | ||
506 | endobj | ||
507 | 340 0 obj | ||
508 | << /S /GoTo /D (section.A.20) >> | ||
509 | endobj | ||
510 | 343 0 obj | ||
511 | (Andersson, 2001) | ||
512 | endobj | ||
513 | 344 0 obj | ||
514 | << /S /GoTo /D (section.A.21) >> | ||
515 | endobj | ||
516 | 347 0 obj | ||
517 | (Peters, Bolte, Marschner, N\374ssen and Laur, 2002) | ||
518 | endobj | ||
519 | 348 0 obj | ||
520 | << /S /GoTo /D (section.A.22) >> | ||
521 | endobj | ||
522 | 351 0 obj | ||
523 | (Han, Neumann, 2006) | ||
524 | endobj | ||
525 | 352 0 obj | ||
526 | << /S /GoTo /D (section.A.23) >> | ||
527 | endobj | ||
528 | 355 0 obj | ||
529 | (Singer, Nelder, 2008) | ||
530 | endobj | ||
531 | 356 0 obj | ||
532 | << /S /GoTo /D (appendix.B) >> | ||
533 | endobj | ||
534 | 359 0 obj | ||
535 | (Implementations of the Nelder-Mead algorithm) | ||
536 | endobj | ||
537 | 360 0 obj | ||
538 | << /S /GoTo /D (section.B.1) >> | ||
539 | endobj | ||
540 | 363 0 obj | ||
541 | (Matlab : fminsearch) | ||
542 | endobj | ||
543 | 364 0 obj | ||
544 | << /S /GoTo /D (section.B.2) >> | ||
545 | endobj | ||
546 | 367 0 obj | ||
547 | (Kelley and the Nelder-Mead algorithm) | ||
548 | endobj | ||
549 | 368 0 obj | ||
550 | << /S /GoTo /D (section.B.3) >> | ||
551 | endobj | ||
552 | 371 0 obj | ||
553 | (Nelder-Mead Scilab Toolbox : Lolimot) | ||
554 | endobj | ||
555 | 372 0 obj | ||
556 | << /S /GoTo /D (section.B.4) >> | ||
557 | endobj | ||
558 | 375 0 obj | ||
559 | (Numerical Recipes) | ||
560 | endobj | ||
561 | 376 0 obj | ||
562 | << /S /GoTo /D (section.B.5) >> | ||
563 | endobj | ||
564 | 379 0 obj | ||
565 | (NASHLIB : A19) | ||
566 | endobj | ||
567 | 380 0 obj | ||
568 | << /S /GoTo /D (section.B.6) >> | ||
569 | endobj | ||
570 | 383 0 obj | ||
571 | (O'Neill implementations) | ||
572 | endobj | ||
573 | 384 0 obj | ||
574 | << /S /GoTo /D (section.B.7) >> | ||
575 | endobj | ||
576 | 387 0 obj |