Yanıtlarımdan birinden alıntı yapıldığından, neden MINPACK yerine IPOPT kullanılmasını önerdiğimi açıklığa kavuşturmaya çalışacağım.
MINPACK kullanmaya yönelik itirazlarımın MINPACK'in kullandığı algoritmalarla ve bunların uygulanmasıyla ilgili her şeyi ilgilendirmiyor. Ana itirazım, yazılımın 1980'e kadar uzanması ve son olarak 1999'da güncellenmesidir. Jorge Moré emekli oldu; O ya da yazılımın diğer yazarlarından herhangi birinin artık üzerinde durduğundan şüpheleniyorum ve aktif olarak destekleyen hiçbir ekip yok. Yazılımda bulabileceğim tek belge, Jorge Moré ve diğer MINPACK yazarları tarafından yazılmış orijinal 1980 Argonne teknik raporudur. (Bölüm 1-3 burada bulunabilir ve Bölüm 4 burada bulunabilir).) MINPACK kaynak kodunu araştırıp belgeleri inceledikten sonra (PDF'ler taranan görüntülerdir ve aranamaz), kısıtlamaları karşılamak için herhangi bir seçenek göremiyorum. Doğrusal olmayan en küçük kareler sorununun orijinal posteri, kısıtlı doğrusal olmayan en küçük kareler sorununu çözmek istediğinden MINPACK bu sorunu bile çözmez.
IPOPT posta listesine bakarsanız, bazı kullanıcılar paketin doğrusal olmayan en küçük kareler (NLS) sorunlarındaki performansının Levenberg-Marquardt algoritmalarına ve daha özel NLS algoritmalarına göre karışık olduğunu belirtir ( buraya , buraya ve buraya bakın ). IPOPT'nin NLS algoritmalarına göre performansı elbette probleme bağlıdır. Kullanıcı geri bildirimi göz önüne alındığında IPOPT, NLS algoritmalarına göre makul bir öneri gibi görünüyor.
Ancak, NLS algoritmalarının araştırılması gerektiğine dikkat çekiyorsunuz. Katılıyorum. Sadece MINPACK'ten daha modern bir paketin kullanılması gerektiğini düşünüyorum çünkü daha iyi performans göstereceğine, daha kullanışlı olacağına ve destekleneceğine inanıyorum. Ceres ilginç bir aday paketi gibi görünüyor, ancak şu anda kısıtlı sorunları ele alamıyor. TAOklasik Levenberg-Marquardt'ı uygulamasa da bunun yerine türev içermeyen bir algoritma uygulasa da, kutu kısıtlı en küçük kareler sorunları üzerinde çalışacaktı. Türevsiz bir algoritma muhtemelen büyük ölçekli problemler için iyi çalışır, ancak küçük ölçekli problemler için kullanmazdım. Yazılım mühendisliğine büyük güven veren başka paketler bulamadım. Örneğin GALAHAD, ilk bakışta sürüm kontrolü veya otomatik test kullanmıyor gibi görünüyor. MINPACK de bunları yapmıyor. MINPACK ile ilgili deneyiminiz veya daha iyi yazılımlarla ilgili önerileriniz varsa, tamamen kulaklarım.
Tüm bunları göz önünde bulundurarak, yorumumun alıntısına geri dönelim:
Herhangi bir denklem sistemi bir optimizasyon problemine eşdeğerdir, bu yüzden optimizasyondaki Newton tabanlı yöntemler doğrusal olmayan denklem sistemlerini çözmek için Newton tabanlı yöntemlere çok benzemektedir.
Daha iyi bir yorum muhtemelen aşağıdakilerin etkisiyle ilgilidir:
N unknowns g ( x ) = 0 ile denklem sistemini çözmek istediğimizde , bunu en küçük kareler optimizasyon problemi olarak formüle edebiliriz. ( Doğrusal Olmayan Programlama s. 102'nin son paragrafının açıklaması , 2. baskı, Dmitri Bertsekas tarafından.)nng(x)=0
Bu ifade, kısıtlamalar altındaki denklem sistemlerinin çözümü için bile geçerlidir. Değişkenler üzerinde kısıtlamalar olduğu durumda "denklem çözücüler" olarak kabul edilen herhangi bir algoritma bilmiyorum. Belki de bir optimizasyon laboratuarında birkaç dönem optimizasyon kursu ve araştırması tarafından sarılan bildiğim ortak yaklaşım, denklem sistemi üzerindeki kısıtlamaları bir optimizasyon formülasyonuna dahil etmektir. Kısıtlamaları denklem çözümü için Newton-Raphson benzeri bir şemada kullanmaya çalışacak olsaydınız, muhtemelen kısıtlı optimizasyonda kullanılan yöntemlere benzer şekilde, öngörülen bir gradyan veya öngörülen güven bölgesi yöntemi ile karşılaşırsınız.