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