http://cran.r-project.org/web/packages/quadprog/quadprog.pdf
Paket R quadprog
tampaknya dapat menyelesaikan masalah pemrograman kuadrat hanya ketika matriks pasti positif.
Namun, ada kasus ketika matriks tidak pasti positif. seperti
Bagaimana saya bisa menyelesaikan masalah seperti ini?
r
optimization
pengguna67275
sumber
sumber
Jawaban:
Ada rutin optimasi khusus untuk optimasi lokal atau global masalah Pemrograman Kuadratik, apakah fungsi objektifnya cembung atau tidak.
BARON adalah pengoptimal global tujuan umum yang dapat menangani dan memanfaatkan masalah pemrograman kuadratik, cembung atau tidak.
CPLEX memiliki pemecah pemrograman kuadratik yang dapat dipanggil dengan solutiontarget = 2 untuk menemukan optimum lokal atau = 3 untuk menemukan global optimal. Dalam MATLAB, itu bisa dipanggil dengan cplexqp.
Pengoptimal lokal tujuan umum yang dapat menangani kendala linier juga dapat digunakan untuk menemukan optimal lokal. Contoh dalam R adalah https://cran.r-project.org/web/packages/trust/trust.pdf . Pengoptimal untuk R tercantum di https://cran.r-project.org/web/views/Optimization.html .
Dalam MATLAB, fungsi quadprog dalam Kotak Alat Pengoptimalan dapat digunakan untuk menemukan optimal lokal.
Di Julia, ada berbagai pengoptimal yang tersedia.
Algoritma gradient descent "Any" mungkin tidak mendaratkan Anda pada apa pun, apalagi berurusan dengan kendala. Gunakan paket yang dikembangkan oleh seseorang yang tahu apa yang mereka lakukan.
Contoh masalah yang diberikan mudah diselesaikan untuk membuktikan optimalitas global. Mungkin dengan berlalunya lebih dari 2 tahun itu tidak lagi diperlukan, atau mungkin menjadi contoh yang tidak pernah ada, tetapi dalam hal apa pun, optimum global adalah pada x = 0,321429, y = 0,535714
sumber
Anda dapat membangun solusi dengan menggunakan
nearPD
dariMatrix
paket seperti:nearPD(D)$mat
.nearPD
menghitung matriks pasti positif terdekat.sumber