簡體   English   中英

PuLP 不在 IPython 單元格上打印 output

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM