J'ai installé différents solveurs linéaires et modules pour Python au cours des dernières heures avec diverses erreurs d'installation et d'exécution. Voici un résumé de ce que je l'ai fait jusqu'à présent:Optimisation linéaire de la pâte/Optimisation linéaire avec Python
- J'ai installé Pulp w/pip installer la pâte
Bien qu'il soit dit d'inclure un optimiseur de COIN, qui ne se sont pas à la Cas. J'ai couru l'un des exemples:
import pulp
# Create problem instance
giapetto = pulp.LpProblem("Giapetto's Workshop", pulp.LpMaximize)
# Define Variables with lower bounds of zero
x1 = pulp.LpVariable("Soldiers",0)
x2 = pulp.LpVariable("Trains",0)
# Add Objective
giapetto += 3*x1 + 2*x2, "Profit"
# Add Constraints
giapetto += 2*x1 + x2 <= 100,"Finishing Labor"
giapetto += x1 + x2 <= 80, "Carpentry Labor"
giapetto += x1 <= 40, "Soldier Demand"
giapetto += x1 + x2 == 20, "Minimum Production"
giapetto.solve()
#giapetto.solve(GLPK())
print pulp.LpStatus[giapetto.status]
print pulp.LpSenses[giapetto.sense], giapetto.objective.name, "=", pulp.value(giapetto.objective)
..included dans la documentation de Pulp, et a reçu cette erreur:
AttributeError: objet 'NoneType' n'a pas d'attribut 'actualSolve'
J'ai aussi essayé après l'importation GLPK (infusion installation glpk, qui a pris> 30mins bc d'une dépendance gcc manquante), et a obtenu l'erreur:
NameError: nom 'GLPK' n'est pas défini
Cependant, quand je simulé la ligne de commande en ipython, j'ai pu obtenir GLPK à exécuter:
%%script glpsol -m /dev/stdin -o /dev/stdout --out output
# declare problem variables
var x;
var y;
var z;
# list all equations
eqn1 : 3*x + 2*y + z = 12;
eqn2 : 2.1*x + y = -3;
eqn3 : y - z = 4;
# solve
solve;
# display results
display x, y, z;
end;
print output
[Out:]
GLPSOL: GLPK LP/MIP Solver, v4.52
Parameter(s) specified in the command line:
-m /dev/stdin -o /dev/stdout
Reading model section from /dev/stdin...
18 lines were read
Generating eqn1...
Generating eqn2...
Generating eqn3...
Model has been successfully generated
Alors, ma question est double:
- Comment puis-je obtenir GLPK (ou tout solveur) à exécuter avec le premier exemple de code (sans l'utilisation de la ligne de commande)?
- Existe-t-il un solveur plus compatible avec Python, ou plus facile à utiliser, que je peux utiliser dans la liste ci-dessous?
* Solver pulp.solvers.GLPK_CMD passed.
Solver pulp.solvers.PULP_CBC_CMD unavailable
Solver pulp.solvers.CPLEX_DLL unavailable
Solver pulp.solvers.CPLEX_CMD unavailable
Solver pulp.solvers.CPLEX_PY unavailable
Solver pulp.solvers.COIN_CMD unavailable
Solver pulp.solvers.COINMP_DLL unavailable
Solver pulp.solvers.GLPK_CMD unavailable
Solver pulp.solvers.XPRESS unavailable
Solver pulp.solvers.GUROBI unavailable
Solver pulp.solvers.GUROBI_CMD unavailable
Solver pulp.solvers.PYGLPK unavailable
Solver pulp.solvers.YAPOSIB unavailable
Quel système d'exploitation utilisez-vous? – dassouki