Quando usar e não usar qualquer método específico de maximização depende em grande parte do tipo de dados que você possui. nlmfuncionará bem se a superfície de probabilidade não for particularmente "áspera" e for diferenciada em toda parte. nlminbfornece uma maneira de restringir valores de parâmetros para caixas delimitadoras específicas. optim, que provavelmente é o otimizador mais usado, fornece algumas rotinas de otimização diferentes; por exemplo, BFGS, L-BFGS-B e recozimento simulado (via opção SANN), o último dos quais pode ser útil se você tiver um problema de otimização difícil. Há também vários otimizadores disponíveis no CRAN. rgenoud, por exemplo, fornece um algoritmo genético para otimização.DEoptimusa uma rotina diferente de otimização genética. Os algoritmos genéticos podem demorar a convergir, mas geralmente garantem a convergência (com o tempo), mesmo quando há descontinuidades na probabilidade. Eu não sei DEoptim, mas rgenoudestá configurado para uso snowem processamento paralelo, o que ajuda um pouco.
Portanto, uma resposta provavelmente um tanto insatisfatória é que você deve usar nlm ou qualquer outro otimizador se funcionar para os dados que você possui. Se você tem uma probabilidade bem-comportada, qualquer uma das rotinas fornecidas por optimou nlmfornecerá o mesmo resultado. Alguns podem ser mais rápidos que outros, o que pode ou não importar, dependendo do tamanho do conjunto de dados, etc. Quanto ao número de parâmetros que essas rotinas podem manipular, eu não sei, embora sejam provavelmente alguns. Obviamente, quanto mais parâmetros você tiver, maior a probabilidade de encontrar problemas com a convergência.