Я устанавливал различные линейные решатели и модули для Python в течение последних нескольких часов с различными ошибками установки и времени выполнения. Вот краткое описание того, что я сделал до сих пор:Целевая линейная оптимизация/линейная оптимизация с помощью Python
- Я установил Pulp ж/PIP установки Целлюлозно
Хотя говорят, включает монетку оптимизатор, что не получится быть дело. Я побежал один из примеров:
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 в документации Pulp, и получил эту ошибку:
AttributeError: объект 'NoneType' не имеет атрибута 'actualSolve'
Я также попробовал его после импорта GLPK (brew install glpk, который взял> 30 минут bc отсутствующей зависимости gcc) и получил ошибку:
NameError: имя 'GLPK' не определено
Однако, когда я моделируется командной строки в IPython, я смог GLPK бежать:
%%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
Итак, мой вопрос имеет два аспекта:
- Как я могу получить GLPK (или любой решатель) для запуска с первым примером кода (без использования командной строки)?
- Есть ли решатель, который более совместим с Python или проще в использовании, что я могу использовать inline из списка ниже?
* 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
В какой ОС вы работаете? – dassouki