Коли використовувати та не використовувати якийсь конкретний метод максимізації, значною мірою залежить від типу даних, які ви маєте. nlm
буде добре працювати, якщо вірогідність поверхні не буде особливо «шорсткою» і є скрізь диференційованою. nlminb
надає спосіб обмежити значення параметрів певними обмежувальними полями. optim
, який, мабуть, найбільш використовуваний оптимізатор, забезпечує декілька різних процедур оптимізації; наприклад, BFGS, L-BFGS-B та імітований відпал (через опцію SANN), останній з яких може бути корисним, якщо у вас складна проблема оптимізації. На CRAN також є ряд оптимізаторів. rgenoud
наприклад, забезпечує генетичний алгоритм для оптимізації.DEoptim
використовує іншу процедуру генетичної оптимізації. Генетичні алгоритми можуть зближуватися повільно, але, як правило, гарантовано конвергуються (у часі), навіть коли є ймовірності розривів. Я не знаю про це DEoptim
, але rgenoud
він створений для використання snow
для паралельної обробки, що дещо допомагає.
Отже, ймовірно дещо незадовільна відповідь - ви повинні використовувати nlm
або будь-який інший оптимізатор, якщо він працює для ваших даних. Якщо у вас є хороша вірогідність, будь-яка з процедур, наданих optim
або nlm
дасть вам такий же результат. Деякі можуть бути швидшими, ніж інші, що може мати значення або не мати значення, залежно від розміру набору даних тощо. Щодо кількості параметрів, якими ці підпрограми можуть керувати, я не знаю, хоча, мабуть, їх досить багато. Звичайно, чим більше у вас параметрів, тим більше шансів на те, що у вас виникнуть проблеми з конвергенцією.