Vì một trong những câu trả lời của tôi đã được trích dẫn, tôi sẽ cố gắng làm rõ lý do tại sao tôi đề xuất sử dụng IPOPT thay vì MINPACK.
Sự phản đối của tôi đối với việc sử dụng MINPACK không liên quan gì đến các thuật toán mà MINPACK sử dụng và mọi thứ phải làm với việc thực hiện chúng. Phản đối chính của tôi là phần mềm có từ năm 1980, và được cập nhật lần cuối vào năm 1999. Jorge Moré đã nghỉ hưu; Tôi nghi ngờ anh ta hoặc bất kỳ tác giả nào khác của phần mềm giữ các tab trên đó nữa và không có nhóm người nào tích cực hỗ trợ nó. Tài liệu duy nhất tôi có thể tìm thấy trên phần mềm là bản báo cáo kỹ thuật gốc năm 1980 của Argonne được viết bởi Jorge Moré và các tác giả MINPACK khác. (Chương 1-3 có thể được tìm thấy ở đây và Chương 4 có thể được tìm thấy ở đây.) Sau khi tìm kiếm mã nguồn MINPACK và xem qua tài liệu (các tệp PDF là hình ảnh được quét và không thể tìm kiếm), tôi không thấy bất kỳ tùy chọn nào để điều chỉnh các ràng buộc. Vì áp phích ban đầu của bài toán bình phương nhỏ nhất phi tuyến muốn giải một bài toán bình phương nhỏ nhất bị hạn chế, MINPACK thậm chí sẽ không giải quyết được vấn đề đó.
Nếu bạn xem danh sách gửi thư IPOPT, một số người dùng chỉ ra rằng hiệu suất của gói đối với các vấn đề bình phương nhỏ nhất (NLS) được trộn lẫn với các thuật toán Levenberg-Marquest và các thuật toán NLS chuyên biệt hơn (xem tại đây , tại đây và tại đây ). Hiệu suất của IPOPT liên quan đến thuật toán NLS, tất nhiên, phụ thuộc vào vấn đề. Cho rằng phản hồi của người dùng, IPOPT có vẻ như là một khuyến nghị hợp lý liên quan đến các thuật toán NLS.
Tuy nhiên, bạn đưa ra một điểm tốt là các thuật toán NLS nên được nghiên cứu. Tôi đồng ý. Tôi chỉ nghĩ rằng một gói hiện đại hơn MINPACK nên được sử dụng bởi vì tôi tin rằng nó sẽ hoạt động tốt hơn, có thể sử dụng nhiều hơn và được hỗ trợ. Ceres có vẻ như là một gói ứng viên thú vị, nhưng nó không thể xử lý các vấn đề bị ràng buộc ngay bây giờ. TAOsẽ hoạt động trên các bài toán bình phương nhỏ nhất có ràng buộc hộp, mặc dù nó không thực hiện Levenberg-Marquest cổ điển, mà thay vào đó thực hiện một thuật toán không có đạo hàm. Một thuật toán không có đạo hàm có thể sẽ hoạt động tốt cho các vấn đề quy mô lớn, nhưng tôi sẽ không sử dụng nó cho các vấn đề quy mô nhỏ. Tôi không thể tìm thấy bất kỳ gói nào khác truyền cảm hứng rất tự tin vào công nghệ phần mềm của họ. Chẳng hạn, GALAHAD dường như không sử dụng kiểm soát phiên bản hoặc bất kỳ thử nghiệm tự động nào, thoạt nhìn. MINPACK dường như cũng không làm những điều đó. Nếu bạn có kinh nghiệm với MINPACK hoặc các đề xuất liên quan đến phần mềm tốt hơn, tôi sẽ nghe thấy.
Với tất cả những điều đó trong tâm trí, quay trở lại trích dẫn nhận xét của tôi:
Bất kỳ hệ phương trình nào cũng tương đương với một vấn đề tối ưu hóa, đó là lý do tại sao các phương pháp tối ưu hóa dựa trên Newton trông rất giống các phương pháp dựa trên Newton để giải các hệ phương trình phi tuyến.
Một nhận xét tốt hơn có lẽ là một cái gì đó ảnh hưởng đến:
Khi chúng ta muốn giải một hệ phương trình với ẩn , chúng ta có thể coi đây là một bài toán tối ưu hóa bình phương tối thiểu. (Diễn giải đoạn cuối của tr.102 của Lập trình phi tuyến , ấn bản 2, của Dmitri Bertsekas.)nng( x ) = 0
Tuyên bố này giữ ngay cả để giải các hệ phương trình dưới các ràng buộc. Tôi không biết bất kỳ thuật toán nào được coi là "bộ giải phương trình" cho trường hợp có các ràng buộc về các biến. Cách tiếp cận phổ biến mà tôi biết, có lẽ bị vàng da bởi một số học kỳ của các khóa học tối ưu hóa và nghiên cứu trong phòng thí nghiệm tối ưu hóa, là kết hợp các ràng buộc trên hệ thống các phương trình vào một công thức tối ưu hóa. Nếu bạn đã cố gắng sử dụng các ràng buộc trong sơ đồ giống như Newton-Raphson để giải phương trình, thì có lẽ bạn sẽ kết thúc với một phương pháp gradient hoặc vùng tin cậy được chiếu, giống như các phương thức được sử dụng trong tối ưu hóa bị ràng buộc.