11
votes

Optimisation parallèle dans r

Cette question est venue au bon moment, alors que je me débatte avec une optimisation également. Je suis conscient des différentes routines d'optimisation "normales" dans R, et je suis conscient des packages parallèles tels que la neige, la chute de neige, le RMPI et les goûts. Pourtant, je n'ai pas réussi à obtenir une optimisation en parallèle sur mon ordinateur.

Certains code de jouet illustrer: xxx

Ce que je veux faire, c'est de parallémenter la fonction optim () (ou la fonction NLM (), qui fait fondamentalement le même). Ma vraie fonction F () est beaucoup plus compliquée et une telle d'optimisation dure environ une demi-heure. Si je veux exécuter une simulation de 100 échantillons, celui-ci prend des âges. J'aimerais éviter d'écrire mon propre algorithme de Newton comme un algorithme de Newton pour l'informatique parallèle, j'espère donc que quelqu'un pourrait me donner quelques astuces sur la manière d'utiliser l'informatique parallèle pour des problèmes d'optimisation complexes dans R.


< EM> Je pense que ce problème est d'une nature différente de celle de la question connexe. Ma requête est spécifiquement dirigée vers l'informatique parallèle, pas une alternative plus rapide pour OPTI.


2 commentaires

Si votre fonction est beaucoup plus compliquée, pourriez-vous le parallementer au lieu de optim ?


@Joshua: Thx, il y a bien un peu de parallélisation possible. Pourtant, j'aimerais également utiliser une méthode d'essaim pour l'optimisation, car je dois augmenter la vitesse au moins un autre supplément pour que le modèle soit fonctionnel dans les simulations.


3 Réponses :


0
votes

Sprint pourrait être d'intérêt. Je ne sais rien à ce sujet mais je suis tombé à travers elle récemment.


1 commentaires

Thx pour le pointeur, mais je le savais déjà. Il existe plus de cadres pour l'informatique parallèle dans R, en fonction des protocoles que vous souhaitez utiliser. Pourtant, je n'ai pas pu trouver une fonction d'optimisation-bêta qui utilise la puissance de l'informatique parallèle.



3
votes

Pour répondre à ma propre question:

Il y a un paquet de développement qui semble prometteur. Il présente des méthodes d'optimisation d'essaim de particules et s'appuie sur le package RMPI pour l'informatique parallèle. On peut le trouver sur RFORGE:

http://www.rforge.net/pppso/index.html

C'est toujours à Beta Afaik, mais il semble prometteur. Je vais y jeter un coup d'œil plus tard, je ferai rapport quand j'en sais plus. Néanmoins, je laisse la question ouverte, alors si quelqu'un d'autre a une autre option ...


3 commentaires

Si vous envisagez de PSO, avez-vous pensé à l'évolution différentielle (via le paquet DEOPTIM)? Le support informatique parallèle est sur la liste de tâches de l'emballage et ne devrait pas prendre plus de quelques heures de travail (pour moi, pas vous :-).


@Joshua thx pour la pointe, je ne savais pas encore désagrément de Duoptim. Il semble prometteur, mais pour le problème que je travaille maintenant, il est en fait assez lent que NLM (). J'ai 13 paramètres et pas de limites inférieures et supérieures claires, je dois donc les mettre assez gros pour éviter de manquer un paramètre ...


Essayé la bêta et il semble fonctionner. Sur mon problème, cela ne fournit toujours pas la même amélioration que parallèle la fonction elle-même. Pourtant, je peux voir que dans d'autres cas, ce serait vraiment un outil utile. J'attends avec impatience la première libération stable.



3
votes

Le package R OptimParallel pourrait être utile dans votre cas. Le paquet fournit des versions parallèles des méthodes d'optimisation basées sur gradient de optim () . La fonction principale du package est optimalparallel () , qui a la même utilisation et la même sortie que optim () . Utilisation de Optimitharallel () peut réduire considérablement les temps d'optimisation, comme illustré dans la figure suivante ( p est le nombre de paramètres). Entrez la description de l'image ici Voir https://cran.r-project.org/package=OptimParallel et < Un href = "http://arxiv.org/abs/1804.11058" rel = "nOfollow noreferrer"> http://arxiv.org/abs/1804.11058 Pour plus d'informations.


0 commentaires