Artikel ini bukan mengenai Metode simpleks untuk penyelesaian masalah optimisasi linear.
Metode Nelder-Mead diterapkan untuk mencari nilai minimum fungsi Himmelblau.
**Metode Nelder-Mead**, dikenal pula sebagai **metode polihedron fleksibel**, **metode amoeba**, atau **metode *downhill simplex***, adalah suatu metode numerik untuk menemukan nilai minimum atau maksimum dari sebuah fungsi objektif multivariabel. Metode ini termasuk metode telusur langsung (dengan membandingkan nilai fungsi) dan umum diterapkan pada masalah optimisasi nonlinear dengan turunan fungsi objektif yang mungkin tidak diketahui. Akan tetapi, metode Nelder-Mead juga merupakan metode telusur heuristik, yang dapat konvergen ke titik non-stasioner pada masalah yang bisa diselesaikan oleh metode-metode alternatif.

Metode Nelder-Mead diperkenalkan oleh John Nelder dan Roger Mead pada tahun 1965, sebagai pengembangan metode Spendley et al. Sebagai contoh penerapan, metode ini dapat dipakai untuk menghitung komposisi beton bertulang pada struktur beton bertulang, sehingga dapat diketahui komposisi struktur yang efisien apabila diketahui harga masing-masing komponen struktur beton bertulang.

Gambaran umum
-------------

Metode Nelder-Mead menggunakan konsep simpleks, yakni suatu bentuk politop yang memiliki {\displaystyle n+1} sisi dalam {\displaystyle n} dimensi. Contoh-contoh simpleks antara lain adalah: ruas garis dalam ruang satu dimensi, segitiga dalam ruang dua dimensi, tetrahedron dalam ruang tiga dimensi, dan seterusnya. Metode ini menentukan hampiran nilai optimal dari masalah dengan {\displaystyle n} variabel, yang fungsi objektifnya bersifat mulus dan unimodal. Penerapan metode yang umum adalan untuk mencari minimum fungsi; mencari maksimum fungsi {\displaystyle f(\mathbf {x} )} dilakukan dengan meminimumkan {\displaystyle -f(\mathbf {x} )}.

Sebagai contoh, seorang insinyur jembatan gantung harus menentukan tebal setiap penyangga, kabel, dan tiang dari jembatan. Semua komponen tersebut saling bergantung, namun tidak mudah untuk memvisualisasikan dampak dari mengubah tebal dari suatu komponen. Simulasi struktur yang rumit seperti itu sering kali sangat mahal secara komputasi untuk dijalankan, mungkin membutuhkan waktu berjam-jam untuk setiap eksekusi. Metode Nelder-Mead membutuhkan, dalam varian aslinya, tidak lebih dari dua evaluasi per iterasi, kecuali untuk operasi *penyusutan* yang akan dijelaskan nanti. Hal tersebut yang membuat metode ini menarik, dibandingkan dengan beberapa metode optimasi penelusuran langsung lainnya. Tapi, metode ini mungkin memerlukan total iterasi yang besar untuk mencapai nilai optimal.

Titik-titik pada iterasi metode Nelder-Mead pada ruang dimensi dua.
Pencarian nilai minimum fungsi Simionescu menggunakan Nelder–Mead.
Nelder-Mead dalam {\displaystyle n} dimensi mencatat sebuah himpunan {\displaystyle n+1} titik uji yang disusun sebagai sebuah simpleks. Metode ini lalu mengekstrapolasi perilaku fungsi objektif yang diukur pada setiap titik uji untuk menemukan titik uji baru, yang selanjutnya digunakan untuk menggantikan satu titik uji yang lama; lalu proses diulangi lagi. Cara penerapan termudah adalah mengganti titik uji terburuk dengan titik uji yang dihasilkan dari pencerminannya dengan sentroid (titik pusat) dari {\displaystyle n} titik uji yang lain. Jika titik baru ini lebih baik daripada titik uji terbaik saat ini, kita dapat mencoba merenggangkan titik uji ini dari sentroid. Tapi jika titik baru tidak lebih baik daripada sebelumnya, kita akan mengecilkan ukuran simpleks. Berikut penjelasan yang intuitif dari *Numerical Recipes*:

> Metode *downhill simplex* sekarang mengambil serangkaian langah, sebagian besar langkah hanyalah menggerakkan titik pada simpleks dengan nilai fungsi terbesar (titik tertinggi) melewati sisi simpleks yang menghadapnya, ke titik yang lebih rendah. Tahap ini disebut pencerminan, dan dilakukan dengan cara yang menjaga volume dari simpleks (untuk mempertahankan sifat non-degeneratifnya). Jika tahap tersebut bisa dilakukan, Metode akan memperbesar simpleks ke suatu arah tertentu untuk mengambil "langkah yang lebih besar". Ketika mencapai "dasar lembah", Metode akan menyempitkan ukuran dirinya dan mencoba mengalir menelurusi lembah. Jika ada situasi ketika metode mencoba "melewati lubang jarum", simpleks akan menyusut dari semua arah, menarik dirinya sendiri disekitar titik terendahnya (terbaik).
> 
> 

Berbeda dengan metode-metode optimisasi modern, heuristik yang digunakan Nelder-Mead dapat konvergen ke titik non-stasioner, kecuali jika masalah memenuhi kondisi-kondisi kuat yang lebih banyak daripada yang diperlukan metode-metode modern. Perbaikan-perbaikan modern untuk heuristik Nelder-Mead telah ditemukan sejak tahun 1979.

Banyak variasi metode yang muncul bergantung dari sifat dari masalah yang ingin diselesaikan. Salah satu variasi yang umum menggunakan simpleks kecil berukuran tetap, yang bergerak mengikuti arah gradien (mirip metode penurunan gradien). Hal ini dapat dibayangkan sebagai sebuah segitiga mengelinding menuruni lembah menuju dasarnya. Metode ini juga dikenal dengan *metode polihedron fleksibel*. Tapi performa metode ini cenderung buruk ketimbang metode yang dijelaskan pada artikel ini, karena melakukan langkah-langkah kecil yang tidak diperlukan, pada daerah fungsi yang tidak diminati.

Salah satu variasi metode Nelder-Mead
-------------------------------------

Variasi yang disajikan di bagian ini mirip dengan prosedur yang disajikan pada artikel asli Nelder-Mead. Dalam metode ini, kita ingin meminimumkan fungsi {\displaystyle f(\mathbf {x} )}, dengan {\displaystyle \mathbf {x} \in \mathbb {R} ^{n}}. Titik-titik uji saat ini adalah {\displaystyle \mathbf {x} \_{1},\ldots ,\mathbf {x} \_{n+1}}.

1. *Pengurutan* dilakukan berdasarkan nilai dari setiap titik uji, {\displaystyle f(\mathbf {x} \_{1})\leq f(\mathbf {x} \_{2})\leq \cdots \leq f(\mathbf {x} \_{n+1}).}Titik {\displaystyle \mathbf {x} \_{n+1}} akan menjadi titik dengan nilai fungsi terburuk. Cek jika metode perlu dihentikan. Lihat bagian Kriteria penghentian (juga disebut dengan "kekonvergenan").
2. Hitung {\displaystyle \mathbf {x} \_{o}}, sentroid dari semua titik uji selain {\displaystyle \mathbf {x} \_{n+1}}.
3. *Pencerminan* Hitung titik hasil pencerminan {\displaystyle \mathbf {x} \_{r}=\mathbf {x} \_{o}+\alpha (\mathbf {x} \_{o}-\mathbf {x} \_{n+1})} dengan {\displaystyle \alpha >0}. Jika titik pencerminan lebih baik daripada titik kedua terburuk namun tidak daripada titik terbaik, dengan kata lain {\displaystyle f(\mathbf {x} \_{1})\leq f(\mathbf {x} \_{r})<f(\mathbf {x} \_{n})}, maka buat simpleks baru dengan menukar titik terburuk {\displaystyle \mathbf {x} \_{n+1}} dengan titik pencerminan {\displaystyle \mathbf {x} \_{r}}, dan kembali ke Tahap 1.
4. *Perluasan* terjadi jika titik pencerminan lebih baik daripada titik terbaik saat ini, {\displaystyle f(\mathbf {x} \_{r})<f(\mathbf {x} \_{1})}. Hal ini dilakukan dengan menghitung titik perluasan {\displaystyle \mathbf {x} \_{e}=\mathbf {x} \_{o}+\gamma (\mathbf {x} \_{r}-\mathbf {x} \_{o})} dengan {\displaystyle \gamma >1}. Jika titik perluasan lebih baik daripada titik pencerminan, {\displaystyle f(\mathbf {x} \_{e})<f(\mathbf {x} \_{r})}, maka buat simpleks baru dengan menukar titik terburuk {\displaystyle \mathbf {x} \_{n+1}} dengan titik perluasan {\displaystyle \mathbf {x} \_{e}}. Tapi jika tidak, simpleks baru dibuat dengan menukar titik terburuk dengan titik pencerminan {\displaystyle \mathbf {x} \_{r}}, dan kembali ke Tahap 1.
5. *Penyempitan*. Pada tahap ini jelas titik pencerminan lebih buruk daripada titik kedua terburuk, {\displaystyle f(\mathbf {x} \_{r})\geq f(\mathbf {x} \_{n})}. Selanjutnya:
	* Jika {\displaystyle f(\mathbf {x} \_{r})<f(\mathbf {x} \_{n+1})}, maka hitung titik penyempitan {\displaystyle \mathbf {x} \_{c}=\mathbf {x} \_{o}+\rho (\mathbf {x} \_{r}-\mathbf {x} \_{o})} dengan {\displaystyle 0<\rho \leq 0.5}. Lalu, jika titik penyempitan lebih baik daripada titik pencerminan, {\displaystyle f(\mathbf {x} \_{c})<f(\mathbf {x} \_{r})}, buat simpleks baru dengan menukar titik terburuk {\displaystyle \mathbf {x} \_{n+1}} dengan titik penyempitan {\displaystyle \mathbf {x} \_{c}}, dan kembali ke Tahap 1.
	* Tapi jika tidak, yakni {\displaystyle f(\mathbf {x} \_{r})\geq f(\mathbf {x} \_{n+1})}, titik penyempitan dihitung sebagai {\displaystyle \mathbf {x} \_{c}=\mathbf {x} \_{o}+\rho (\mathbf {x} \_{n+1}-\mathbf {x} \_{o})} dengan {\displaystyle 0<\rho \leq 0.5}. Lalu, jika titik penyempitan lebih baik daripada titik terburuk {\displaystyle f(\mathbf {x} \_{c})<f(\mathbf {x} \_{n+1})}, buat simpleks baru dengan menukar titik terburuk {\displaystyle \mathbf {x} \_{n+1}} dengan titik penyempitan {\displaystyle \mathbf {x} \_{c}}, dan kembali ke Tahap 1.
6. *Penyusutan*. Tukar nilai setiap titik uji selain titik terbaik ({\displaystyle \mathbf {x} \_{1}}) dengan {\displaystyle \mathbf {x} \_{i}=\mathbf {x} \_{1}+\sigma (\mathbf {x} \_{i}-\mathbf {x} \_{1})}, lalu kembali ke Tahap 1.

Pada prosedur metode di atas, simbol {\displaystyle \alpha }, {\displaystyle \gamma }, {\displaystyle \rho } dan {\displaystyle \sigma } secara berurutan menyatakan koefisien besar pencerminan, perluasan, penyempitan, dan penyusutan. Nilai yang umum digunakan adalah {\displaystyle \alpha =1}, {\displaystyle \gamma =2}, {\displaystyle \rho =1/2} dan {\displaystyle \sigma =1/2}.

Beberapa tahap dapat dijelaskan secara intuitif sebagai berikut. Dalam tahap pencerminan, {\displaystyle \mathbf {x} \_{n+1}} merupakan titik uji dengan nilai terbesar dibandingkan titik-titik uji lainnya. Kita dapat mengharapkan titik uji yang lebih baik (nilai fungsi yang lebih kecil) dengan mencerminkan titik ini ke sisi simpleks (dengan sentroid {\displaystyle \mathbf {x} \_{o}}) yang menghadap dirinya. Lalu pada tahap perluasan, jika titik {\displaystyle \mathbf {x} \_{r}} menjadi minimum terbaik saat ini, kita dapat mengharapkan ada nilai yang lebih baik diantara titik {\displaystyle \mathbf {x} \_{o}} dan {\displaystyle \mathbf {x} \_{r}}. Di tahap penyempitan, jika {\displaystyle f(\mathbf {x} \_{r})>f(\mathbf {x} \_{n})}, kita dapat mengharapkan nilai yang lebih baik di dalam simpleks saat ini. Terakhir, tahap penyusutan mengurus kasus langka ketika titik penyempitan menghasilkan nilai fungsi yang lebih besar, yang menurut kutipan Nelder-Mead dijelaskan berikut:

> Proses penyempitan yang gagal jarang ditemui, namun dapat terjadi ketika pada lembah melengkung dan satu titik simpleks terletak sangat jauh dari dasar lembah daripada yang lain; penyempitan dapat menyebabkan titik pencerminan menjauhi dasar lembah dan bukannya menuju ke sana. Alhasil penyempitan-penyempitan berikutnya menjadi tidak berguna. Tindakan yang diusulkan akan menyusutkan simpleks ke arah titik uji terendah, yang pada akhirnya akan membawa semua titik ke dasar lembah.
> 
> 

Akan tetapi, Nash menunjukkan implementasi pada aritmetika presisi-tetap dapat gagal untuk menyusutkan simpleks, sehingga sebuah uji tambahan untuk mengecek ukuran simpleks diperlukan.

### Penentuan simpleks awal

Hasil dari metode Nelder-Mead bergantung pada simpleks awal yang dipilih. Simpleks dengan ukuran yang kecil dapat membuat metode sering terjebak dalam penelurusan lokal, dan tidak menghasilkan minimum global. Nelder dan Mead menyarankan simpleks dibuat dari suatu titik {\displaystyle \mathbf {x} \_{1},} dan titik pada setiap dimensi lainnya berjarak konstan dari {\displaystyle \mathbf {x} \_{1}.} Alhasil cara ini sensitif terhadap penskalaan dari variabel-variabel yang menyusun {\displaystyle \mathbf {x} }.

Kriteria penghentian
--------------------

Suatu kriteria diperlukan untuk menghentikan siklus iterasi. Nelder dan Mead menggunakan nilai standar deviasi sampel dari nilai-nilai fungsi dari simpleks terbaru. Jika nilai tersebut berada dibawah suatu batas toleransi, maka siklus dihentikan dan nilai fungsi terkecil dari simpleks dipilih sebagai nilai optimal. Kriteria ini dapat sensitif terhadap toleransi, khususnya pada fungsi yang "datar", nilai setiap titik uji dapat sangat mirip walau simpleks masih berukuran besar. Nash mengusulkan uji penyusutan sebagai alternatif kriteria penghentian.

Referensi
---------

1. 1 2  
	* Powell, Michael J. D. (1973). "On Search Directions for Minimization Algorithms". *Mathematical Programming*. **4**: 193–201. doi:10.1007/bf01584660.  Parameter `|s2cid=` yang tidak diketahui akan diabaikan (bantuan)
	* McKinnon, K. I. M. (1999). "Convergence of the Nelder–Mead simplex method to a non-stationary point". *SIAM Journal on Optimization*. **9**: 148–158. CiteSeerX 10.1.1.52.3900 alt=Dapat diakses gratis. doi:10.1137/S1052623496303482.  (algorithm summary online).
2. 1 2  
	* Yu, Wen Ci. 1979. "Positive basis and a class of direct search techniques". *Scientia Sinica* [*Zhongguo Kexue*]: 53—68.
	* Yu, Wen Ci. 1979. "The convergent property of the simplex evolutionary technique". *Scientia Sinica* [*Zhongguo Kexue*]: 69–77.
	* Kolda, Tamara G.; Lewis, Robert Michael; Torczon, Virginia (2003). "Optimization by direct search: new perspectives on some classical and modern methods". *SIAM Rev*. **45** (3): 385–482. CiteSeerX 10.1.1.96.8672 alt=Dapat diakses gratis. doi:10.1137/S003614450242889.
	* Lewis, Robert Michael; Shepherd, Anne; Torczon, Virginia (2007). "Implementing generating set search methods for linearly constrained minimization". *SIAM J. Sci. Comput*. **29** (6): 2507–2530. Bibcode:2007SJSC...29.2507L. CiteSeerX 10.1.1.62.8771 alt=Dapat diakses gratis. doi:10.1137/050635432.
3. ↑  Nelder, John A.; R. Mead (1965). "A simplex method for function minimization". *Computer Journal*. **7** (4): 308–313. doi:10.1093/comjnl/7.4.308.
4. ↑  Spendley, W.; Hext, G. R.; Himsworth, F. R. (1962). "Sequential Application of Simplex Designs in Optimisation and Evolutionary Operation". *Technometrics*. **4** (4): 441–461. doi:10.1080/00401706.1962.10490033.
5. ↑  Press, W. H.; Teukolsky, S. A.; Vetterling, W. T.; Flannery, B. P. (2007). "Section 10.5. Downhill Simplex Method in Multidimensions". *Numerical Recipes: The Art of Scientific Computing* (edisi ke-3rd). New York: Cambridge University Press. ISBN 978-0-521-88068-8.
6. 1 2  Nash, J. C. (1979). *Compact Numerical Methods: Linear Algebra and Function Minimisation*. Bristol: Adam Hilger. ISBN 978-0-85274-330-0.

Bacaan lebih lanjut
-------------------

* Avriel, Mordecai (2003). *Nonlinear Programming: Analysis and Methods*. Dover Publishing. ISBN 978-0-486-43227-4.
* Coope, I. D.; Price, C. J. (2002). "Positive Bases in Numerical Optimization". *Computational Optimization and Applications*. **21** (2): 169–176. doi:10.1023/A:1013760716801.  Parameter `|s2cid=` yang tidak diketahui akan diabaikan (bantuan)
* Gill, Philip E.; Murray, Walter; Wright, Margaret H. (1981). "Methods for Multivariate Non-Smooth Functions". *Practical Optimization*Akses gratis dibatasi (uji coba), biasanya perlu berlangganan. New York: Academic Press. hlm. 93–96. ISBN 978-0-12-283950-4.
* Kowalik, J.; Osborne, M. R. (1968). *Methods for Unconstrained Optimization Problems*Perlu mendaftar (gratis). New York: Elsevier. hlm. 24–27. ISBN 0-444-00041-0.
* Swann, W. H. (1972). "Direct Search Methods". Dalam Murray, W. *Numerical Methods for Unconstrained Optimization*. New York: Academic Press. hlm. 13–28. ISBN 978-0-12-512250-4.

Pranala luar
------------

* Nelder–Mead (Downhill Simplex) explanation and visualization with the Rosenbrock banana function
* John Burkardt: Nelder–Mead code in Matlab - Variasi dari metode Nelder–Mead yang digunakan fungsi Matlab `fminsearch`.
* Nelder-Mead optimization in Python in the SciPy library.
* nelder-mead - Implementasi bahasa Python metode Nelder–Mead
* NelderMead() - Implementasi bahasa Go/Golang
* SOVA 1.0 (freeware) - Simplex Optimization for Various Application

Templat:Algoritma optimisasi