溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中求解線性規(guī)劃的包是什么

發(fā)布時間:2021-08-10 12:38:29 來源:億速云 閱讀:129 作者:小新 欄目:編程語言

這篇文章主要介紹python中求解線性規(guī)劃的包是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

說明

1、Scipy庫提供簡單的線性或非線性規(guī)劃問題。

但不能解決背包問題的0-1規(guī)劃問題,或者整數(shù)規(guī)劃問題,混合整數(shù)規(guī)劃問題。

2、PuLP可以解決線性規(guī)劃、整數(shù)規(guī)劃、0-1規(guī)劃和混合整數(shù)規(guī)劃問題。

為不同類型的問題提供各種解決方案。

3、Cvxpy是一個凸優(yōu)化工具包。

可以解決線性規(guī)劃、整數(shù)規(guī)劃、0-1規(guī)劃、混合整數(shù)規(guī)劃、二次規(guī)劃和幾何規(guī)劃等問題。

實例

以整數(shù)線性規(guī)劃為例

# -*- coding: utf-8 -*-
import pulp as pulp
 
def solve_ilp(objective , constraints) :
    print objective
    print constraints
    prob = pulp.LpProblem('LP1' , pulp.LpMaximize)
    prob += objective
    for cons in constraints :
        prob += cons
    print prob
    status = prob.solve()
    if status != 1 :
        #print 'status'
        #print status
        return None
    else :
        #return [v.varValue.real for v in prob.variables()]
        return [v.varValue.real for v in prob.variables()]
 
 
 
#解如下整數(shù)線性規(guī)劃
#maximize  z = c*x = 3*x1 + 4*x2 + 5*x3
#subject to :
#x1 2 3 >= 0
#x1 + 2*x2 <  20
#x2 + 3*x3 <= 40     
 
 
 
 
 
V_NUM = 3
#變量,直接設置下限
variables = [pulp.LpVariable('X%d'%i , lowBound = 0 , cat = pulp.LpInteger) for i in range(0 , V_NUM)]
#目標函數(shù)
c = [3 , 4 , 5]
objective = sum([c[i]*variables[i] for i in range(0 , V_NUM)])
#約束條件
constraints = []
 
a1 = [1 , 2 , 0]
constraints.append(sum([a1[i]*variables[i] for i in range(0 , V_NUM)]) <= 100)
a2 = [0 , 1 , 3]
constraints.append(sum([a2[i]*variables[i] for i in range(0 , V_NUM)]) <= 40)
print constraints
 
res = solve_ilp(objective , constraints)
print res

以上是“python中求解線性規(guī)劃的包是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI