J'utilise MPI pour parrler un programme qui essaie de résoudre le problème Metric TSP. J'ai P processeurs, et N villes à passer.
Chaque fil demande du travail au maître, reçoit un chunk - qui est une gamme de permutation qu'il doit vérifier et calcule le minimum parmi eux. J'optimise cela en élaguant les mauvaises routes à l'avance.
Il y a un total de (N-1) ! routes à calculer. Chaque travailleur reçoit un morceau avec un numéro qui représente la première route qu'il doit vérifier et aussi la dernière. En outre, le maître lui envoie le meilleur résultat connu le plus récent, ce qui lui permet de repousser facilement les mauvaises routes à l'avance avec une certaine limite inférieure sur leurs restes.
Chaque fois qu'un travailleur trouve un résultat meilleur que le global, il l'envoie de manière asynchrone à tous les autres travailleurs et au maître.
Je ne cherche pas une meilleure solution, j'essaie juste de déterminer quelle est la meilleure taille de morceau.
La meilleure taille de morceau que j'ai trouvée jusqu'à présent est (n !)/(n/2) ! mais elle ne donne pas de si bons résultats.
Veuillez m'aider à comprendre quelle est la meilleure taille de morceau ici. J'essaie de trouver un équilibre entre la quantité de calculs et de communications. Merci