簡體   English   中英

PuLP 緩慢添加許多約束

[英]PuLP slow adding many constraints

我已經閱讀了很多關於這個問題的問題,但我還沒有想出如何為自己解決。 基本上我需要為 LP 問題添加很多約束,但是添加約束需要幾分鍾。 問題似乎是,我對每個循環都使用“prob + =”,但我不確定如何解決這個問題。 我的代碼如下所示:

for i in range(0,numpy.size(Aeq,0)-1):  
    prob += lpSum(Aeq.getrow(i).toarray()*x)==0
prob += lpSum(Aeq.getrow(numpy.size(Aeq,0)-1).toarray()*x)==1

非常感謝任何幫助加快速度。

看起來 for 循環只是執行矩陣乘法,在這種情況下,您應該能夠獲取子矩陣並對其進行數學運算。

我不確定你是否可以在 PuLP 中做到這一點,但你肯定可以在 CVXPY 中做到:

import cvxpy as cp
import numpy as np

Aeq = np.random.random((10,10))
x   = cp.Variable(10)

constraints = [
  cp.sum(Aeq[:-1,:]@x, axis=1)==0,
  cp.sum(Aeq[-1,:]@x)==1
]

JuMP可能是另一種需要研究的技術。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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