PuLP不在IPython单元格上打印输出

时间:2015-12-26 21:47:06

标签: python ipython-notebook mathematical-optimization pulp

我正在使用PuLP和IPython / Jupyter Notebook进行项目。

我有以下代码单元格:

import pulp
model = pulp.LpProblem('Example', pulp.LpMinimize)
x1 = pulp.LpVariable('x1', lowBound=0, cat='Integer')
x2 = pulp.LpVariable('x2', lowBound=0, cat='Integer')

model += -2*x1 - 3*x2 
model += x1 + 2*x2 <= 7
model += 2*x1 + x2 <= 7
model.solve(pulp.solvers.COIN(msg=True))

当我执行单元格时,输出只是:

1

当我查看运行Notebook服务器的终端时,我可以看到解算器的输出(在这种情况下:COIN)。如果将 model.solve 参数更改为

,也会发生同样的情况
model.solve(pulp.solvers.PULP_CBC_CMD(msg=True))

model.solve(pulp.solvers.PYGLPK(msg=True))

但是,当我使用Gurobi Solver时,使用

model.solve(pulp.solvers.GUROBI(msg=True))

解算器的输出显示在Notebook单元格上,这是我想要的行为。事实上,我很高兴任何免费解算器直接在Notebook单元上打印输出。

我在PuLP文档中找不到如何处理此问题的说明。任何帮助,将不胜感激。我也很想知道其他人是否有这种行为。

我正在使用Linux Mint,64位,IPython 4.0.0和PuLP 1.6.0。

1 个答案:

答案 0 :(得分:1)

使用%%python单元格法打印终端的输出。

%%python
import pulp
model = pulp.LpProblem('Example', pulp.LpMinimize)
x1 = pulp.LpVariable('x1', lowBound=0, cat='Integer')
x2 = pulp.LpVariable('x2', lowBound=0, cat='Integer')

model += -2*x1 - 3*x2 
model += x1 + 2*x2 <= 7
model += 2*x1 + x2 <= 7

model.solve(pulp.solvers.COIN(msg=True))