2017-09-22 6 views
0

J'utilise pyomo pour le modèle de programmation linéaire mixte-entier. J'appelle cplex dans pyomo pour résoudre le modèle. Le problème que je suis en train de résoudre est important, ce qui nécessite un calcul parallèle.pyomo et CPLEX pour le calcul parallèle entier mixte programmation linéaire

Dois-je mettre en parallèle pyomo ou CPLEX?

En pyomo, je trouve cette syntaxe, mais semble ne fonctionne pas.

solver_manager = SolverManagerFactory('pyro') 

Si elle est définie en parallèle dans cplex, comment modifier cette syntaxe? Pour ajouter quelque chose appelant l'informatique parallèle?

result = opt.solve(inst, tee=True, warmstart=True) 

Je n'ai aucune idée de la façon de procéder..Merci de votre aide!

Best, Lei

Répondre

0

Par défaut, CPLEX doit déjà utiliser des fils parallèles. Par exemple, dans la documentation pour le paramètre global thread count, nous avons:

Lorsque ce paramètre est à sa valeur par défaut 0 (zéro), et votre application ne comporte pas callbacks ou seulement un rappel d'information, CPLEX peut utiliser tous les fils disponibles; c'est-à-dire, au plus 32 fils ou le nombre de noyaux de la machine, le plus petit des deux. Si votre machine offre plus de 32 threads, vous pouvez en profiter en ajoutant pour augmenter la valeur de ce paramètre.

Dans la documentation pyomo here, il dit:

S'il y a des problèmes avec le solutionneur (après Pyomo a une sortie "Application Solver"), il est souvent utile d'utiliser l'option - solveur qui provoque l'affichage de la sortie du solveur plutôt que sa capture.

Si vous faites cela, vous devriez voir la sortie du journal CPLEX sur l'écran. Recherchez une ligne comme celle-ci:

Mode parallèle: déterministe, utilisant jusqu'à 8 threads.

Sinon, peut-être que cela vous donne un indice.

+0

Oui, il affiche des informations sur le mode parallèle. En d'autres termes, il suffit de laisser le code seul, il utilise directement le calcul parallèle avec le solveur CPLEX. Merci, rkersh. – Lei