Skip to main content

Optimasi Paket 'nlminb' pada R Statistical Software

Fungsi nlminb pada software statistik R merupakan fungsi optimasi unconstrained dan box-constrained menggunakan PORT routines yang ditulis oleh Gay (1990) di Bell Labs, selanjutnya diimpor ke software R oleh Dauglas Bates. Fungsi nlminb menggunakan metode optimasi Newton (Nash dan Varadhan, 2011). Beberapa optimisasi PORT routines memilki struktur dan tampilan muka (user interface) yang umum. Semua kontrol, toleransi dan semua penyimpanan awal yang digunakan oleh routines terkandung dalam dua array: IV untuk solusi yang bernilai integer, V untuk solusi yang bernilai floating-point (REAL dalam versi presisi tunggal, DOUBLE PRECISION dalam versi presisi ganda).

Diberikan suatu fungsi \(f\) dari sebanyak \(p\) variabel, optimasi routines mencoba untuk menemukan p-vektor \(x*\) yang meminimumkan fungsi \(f(x).\) Berbagai macam batasan bisa dilakukan pada \(x\), yaitu:
  1. tidak ada batasan,
  2. batasan sederhana \(\underline{\widetilde{b}}^x \leq x \leq \overline{\widetilde{b}}^x,\) dimana \(\underline{\widetilde{b}}^x\) dan \(\overline{\widetilde{b}}^x\) adalah vektor, dan
  3. batasan linier umum \(\underline{\widetilde{b}}^\widetilde{c} \leq \mathbf{C}x \leq \overline{\widetilde{b}}^\widetilde{c},\) dimana \(\underline{\widetilde{b}}^\widetilde{c}\) dan \(\overline{\widetilde{b}}^\widetilde{c}\) merupakan vektor dan \(\mathbf {C}\) adalah matriks.
Gradien \(f\) pada \(x\) (vektor turunan parsial pertama dari \(f\)) dinotasikan oleh \(\triangledown f(x),\) dan Hessian dari \(f\) pada \(x\) (matriks dari turunan parsial kedua dari \(f\)) dinotasikan oleh \(\triangledown^2 f(x).\)

Optimasi routines memiliki dua tingkat, yaitu forward-communication routine dan reverse-communication iteration driver. Forward-communication routine mempelajari tentang \(f(x)\) dengan cara konvensional. Jika diberikan subroutines, maka forward-communication routine dapat melakukan panggilan untuk menghitung \(f(x).\) Di sisi lain, reverse-communication driver kembali melakukan pemanggilan ketika reverse-communication driver perlu mengetahui \(f(x)\) pada \(x\) yang baru. Pemanggilan routines harus menghitung informasi yang diperlukan (misalnya \(f(x)\) itu sendiri, atau untuk beberapa routines regresi, vektor residual) dan memanggil reverse-communication driver kembali. Biasanya lebih mudah untuk menggunakan optimasi forward-communication routine, tapi kadang-kadang lebih mudah untuk memanggil optimasi reverse-communication driver, misalnya ketika penulisan sebuah subroutine yang menghitung \(f(x)\) sulit.

Kedua versi forward-communication dan reverse-communication dari optimasi routines menerima IV dan V sebagai parameter. Parameter untuk reverse-communication drivers juga termasuk \(x,\) salah satu dari nilai \(f(x)\) dan mungkin \(\triangledown f(x)\) atau informasi yang cukup untuk menghitung nilai-nilai ini (untuk routines regresi). Driver kembali dengan IV(1) = 1 ketika menginginkan memiliki \(f\) yang dievaluasi pada \(x\) saat ini dan dengan IV(1) = 2 ketika menginginkan \(\triangledown f\) yang dievaluasi. Beberapa drivers memiliki kemungkinan lain untuk kembali, seperti pada IV(1) = –1 atau –2.

Referensi:
Gay, D. M. (1990). Usage Summary for Selected Optimization Routines. Computing Science Technical Report No. 153, Murray Hill: AT&T Bell Laboratories.
Nash, J. C., & Varadhan, N. (2011). "Unifying Optimization Algorithms to Aid Software System Users: optimx for R". Journal of Statistical Software, Vol. 43, Issue 9.