[英]PuLP not printing output on IPython cell
我正在為一個項目使用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))
當我執行單元格時,output 很簡單:
1
當我查看運行筆記本服務器的終端時,我可以看到求解器的 output(在本例中為: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))
求解器的 output 顯示在筆記本單元格上,這是我想要的行為。 事實上,我會很高興任何免費的求解器直接在筆記本單元上打印它的 output。
我無法在 PuLP 文檔中找到有關如何解決此問題的說明。 任何幫助,將不勝感激。 我也很想知道其他人是否有這種行為。
我正在使用 Linux Mint、64 位、IPython 4.0.0 和 PuLP 1.6.0。
使用%%python
cell magic 打印終端的 output。
%%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))
派對遲到了,但對於仍在尋找解決方案的任何人......
創建一個名為monkeypatch.py
的文件並將其放在與筆記本相同的目錄中
將以下內容粘貼到其中,並保存
from pulp import PULP_CBC_CMD, LpProblem
original_solve_method = LpProblem.solve
def solve(prob):
solver = PULP_CBC_CMD(logPath=r'log.txt', msg=False)
original_solve_method(prob, solver=solver)
with open('log.txt', 'r') as f:
print(f.read())
LpProblem.solve = solve
然后在你的筆記本中插入一行
import monkeypatch
靠近頂部。
它將覆蓋 solve 方法,以便將日志文件寫入“log.txt”,然后讀入該文件並將其顯示在筆記本中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.