3 votes

Comment configurer PuLP pour appeler le solveur GLPK

J'utilise la bibliothèque PuLP en Python pour résoudre un problème MILP. J'ai exécuté mon problème avec succès avec le solveur par défaut (CBC). Je voudrais maintenant utiliser PuLP avec un autre solveur (GLPK). Comment configurer PuLP avec GLPK ?

J'ai fait quelques recherches en ligne et trouvé des informations sur la façon d'utiliser GLPK (par exemple avec lp_prob.solve(pulp.GLPK_CMD()) ) mais je n'ai pas trouvé d'informations sur la façon de configurer PuLP avec GLPK (ou tout autre solveur d'ailleurs), afin qu'il trouve mon installation GLPK. J'ai déjà installé GLPK séparément (mais je ne l'ai pas ajouté à ma variable d'environnement PATH).

J'ai lancé la commande pulp.pulpTestAll()

et a obtenu :

Solver <class 'pulp.solvers.GLPK_CMD'> unavailable

Je sais que je devrais obtenir un "réussi" au lieu d'un "indisponible" pour pouvoir l'utiliser.

3voto

johnwolf1987 Points 4797

Après avoir lu plus en détail le code et testé certaines choses, j'ai finalement trouvé comment utiliser GLPK avec PuLP, sans rien changer dans le paquet PuLP lui-même.

Vous devez passer le chemin en tant qu'argument à GLPK_CMD dans solve comme suit (remplacez avec votre glpsol chemin) :

lp_prob.solve(GLPK_CMD(path = 'C:\\Users\\username\\glpk-4.65\\w64\\glpsol.exe')

Vous pouvez également passer des options de cette façon, par exemple

lp_prob.solve(GLPK_CMD(path = 'C:\\Users\\username\\glpk-4.65\\w64\\glpsol.exe', options = ["--mipgap", "0.01","--tmlim", "1000"])

0voto

Alysson Bruno Points 24

J'ai eu le même problème, mais il n'est pas lié à l'installation de glpk, mais à la création du fichier de solution, le message est confusim. Mon problème est que j'utilise des noms numériques pour mes variables, comme '0238' ou '1342', j'ai ajouté un 'x' avant, alors ils ressemblent à 'x0238'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X