Sunting: Mari kita coba penjelasan ini lagi, kali ini ketika saya lebih terjaga.
Ada tiga masalah besar dengan formulasi (dalam urutan keparahan):
- Tidak ada reformulasi masalah yang jelas, halus, cembung, atau linier.
- Ini bukan omong kosong.
- Itu tidak harus cembung.
Tidak ada reformulasi yang mulus / cembung / linier
Pertama, tidak ada standar, reformulasi yang jelas dari setiap batasan . Saran Aron berlaku untuk batasan min yang lebih umum , di mana batasan seperti U i j ≤ min k { U i k , U k j } digantikan oleh dua ketidaksetaraan setara berikut: U i j ≤ U i kmaxmin
Uij≤mink{Uik,Ukj}
U i j ≤ U k j ,Uij≤Uik,∀k
Formulasi ulang tidak ideal, setiapbatasan
min telah diganti dengan
2 nUij≤Ukj,∀k.
min2n batasan linier, tetapi ia mengubah program non-linear non-linear menjadi program linier, yang merupakan urutan besarnya lebih cepat untuk dipecahkan.
Wolfgang menunjukkan bahwa dimungkinkan (dia tidak menyertakan bukti) untuk merumuskan kembali batasan sehingga linear dan halus dengan menambahkan variabel kendur. Variabel slack perlu ditambahkan untuk setiap batasan maks dalam formulasi asli, yang berarti bahwa kami menambahkan n 2 kendala dalam reformulasi ini. Selain itu, setiap batasan maks diganti dengan 2 n (atau lebih) kendala linier. Pembunuh yang sebenarnya adalah bahwa ketidak-munduran dipindahkan dari batasan ke tujuan, sehingga formulasi Wolfgang masih menghasilkan program non-linear yang tidak.maxmaxn2max2n
Tidak ada reformulasi standar batasan dalam masalah minimisasi yang saya ketahui, setelah memeriksa buku teks pemrograman linier saya dan telah melakukan pencarian literatur. Itu tidak berarti bahwa reformulasi semacam itu tidak ada; itu hanya berarti saya belum menemukan itu. Jika saya harus menebak, saya akan mengatakan formulasi LP tidak ada.max
Ketidaknyamanan
Dalam konteks ini, nonsmoothness berarti bahwa setidaknya salah satu fungsi dalam perumusan (tujuan atau kendala) tidak dua kali terus menerus dapat dibedakan. Fungsi nonsmooth dalam formulasi ini adalah fungsi .max
Nonsmoothness adalah masalah besar karena:
- itu segera membuat masalah Anda menjadi nonlinier
- kebanyakan pemecah pemrograman nonlinear mengasumsikan dua kali fungsi yang dapat dibedakan secara kontinu
Karena fungsi-fungsi bahkan tidak pernah dapat dibedakan secara terus-menerus, Anda bahkan tidak dapat menggunakan metode gradient descent tradisional tanpa kesulitan. Algoritma pemrograman nonlinier non-linear lebih lambat dari pada yang halus.max
Kemungkinan ketidaksesuaian
Masalah Anda bisa nonconvex, karena dalam "bentuk standar" untuk program nonlinier (yaitu, menyatakan semua kendala dalam bentuk ), kendala yang merepotkan dalam formulasi Anda adalahg(x)≤0
Uij−maxk{Uik,Ukj}≤0,∀i,j,k.
Fungsi-fungsi ini cekung.
Bukti: Dalam hal ini, fungsinya dan maks k { U i k , U k j } keduanya cembung. Jumlah fungsi cembung adalah cembung, dan mengalikan fungsi cembung dengan -1 menghasilkan fungsi cekung. (QED.)−Uijmaxk{Uik,Ukj}
Seperti yang ditunjukkan Tim, hanya karena nonconvex tidak berarti bahwa masalah Anda sebenarnya nonconvex, tetapi jika Anda mencoba menyelesaikan masalah optimisasi menjadi optimal global, Anda hanya dapat menjamin bahwa solver optimasi cembung akan mengembalikan global optimal jika masalah Anda cembung. Jika Anda benar-benar menginginkan global optimal, Anda harus menentukan apakah set yang layak adalah cembung (atau tidak). Dengan tidak adanya informasi seperti itu, Anda harus mengasumsikan bahwa masalah Anda mungkin nonconvex, dan menggunakan algoritma yang tidak bergantung pada informasi konveksitas. Meskipun demikian, ketidak-beresan dan kurangnya reformulasi yang baik adalah masalah yang jauh lebih besar.g
Opsi untuk memecahkan masalah
Setuju untuk menemukan solusi yang layak. Dalam hal ini, lakukan apa yang dikatakan Aron, dan ganti dengan U i j ≤ min k { U i k , U k j } ,
Uij≤maxk{Uik,Ukj},∀i,j,k
yang kemudian dapat dinyatakan kembali sebagai dua ketidaksetaraan yang terpisah menggunakan reformulasi LP standar. Masalah yang dihasilkan akan menjadi pembatasan LP dari masalah yang ingin Anda pecahkan; itu harus menyelesaikan dengan cepat relatif terhadap masalah asli Anda, dan jika ia memiliki solusi, solusi itu akan layak untuk masalah asli Anda, dan nilai fungsi objektifnya akan menjadi batas bawah pada nilai fungsi objektif optimal dari masalah asli Anda.Uij≤mink{Uik,Ukj},∀i,j,k,
Coba keberuntungan Anda pada formulasi Anda seperti halnya dengan bundle solver untuk program nonsmooth. Saya tidak punya banyak pengalaman dengan jenis pemecah ini. (Seorang kolega saya menggunakannya dalam penelitiannya.) Mereka mungkin lambat, karena mereka tidak dapat menggunakan informasi turunan. (Saya pikir mereka menggunakan subgradien atau informasi gradien umum Clarke sebagai gantinya.) Ini juga tidak mungkin bahwa Anda akan dapat memecahkan contoh masalah besar dengan pemecah bundel.