溫馨提示×

溫馨提示×

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

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

python線性規(guī)劃如何求解

發(fā)布時間:2022-05-27 15:20:19 來源:億速云 閱讀:131 作者:iii 欄目:大數(shù)據(jù)

這篇“python線性規(guī)劃如何求解”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python線性規(guī)劃如何求解”文章吧。

說明

1、圖解法,用幾何繪圖的方法,求出最優(yōu)解。

中學(xué)就講過這種方法,在經(jīng)濟(jì)學(xué)研究中非常常用。

2、矩陣法,引入松弛變量。

將線性規(guī)劃問題轉(zhuǎn)化為增廣矩陣形式,然后逐步解決,是簡單性法之前的典型方法;

3、單純法,利用多面體在可行領(lǐng)域逐步構(gòu)建新的頂點,不斷逼近最優(yōu)解。

是線性規(guī)劃研究的里程碑,至今仍是最重要的方法之一;

4、內(nèi)點法。

通過選擇可行域內(nèi)點沿下降方向不斷迭代,達(dá)到最佳解決方案,是目前理論上最好的線性規(guī)劃問題解決方案;

5、啟發(fā)法。

依靠經(jīng)驗準(zhǔn)則不斷迭代改進(jìn),搜索最優(yōu)解,如貪心法、模擬退火、遺傳算法、神經(jīng)網(wǎng)絡(luò)等。

單純法實例

import numpy as np #導(dǎo)入相應(yīng)的庫
import sys
def solve(d,bn):
    while max(list(d[0][:-1])) > 0:
        l = list(d[0][:-2])
        jnum = l.index(max(l)) #轉(zhuǎn)入下標(biāo)
        m=[]
        for i in range(bn):
            if d[i][jnum] == 0:
                m.append(0.)
            else:
                m.append(d[i][-1]/d[i][jnum])
        inum = m.index(min([x for x in m[1:] if x!=0])) #轉(zhuǎn)出下標(biāo)
        s[inum-1] = jnum  #更新基變量
        d[inum] /= d[inum][jnum]
        for i in range(bn):
            if i != inum:
                d[i] -= d[i][jnum] * d[inum]
            
def printSol(d,cn):
    for i in range(cn - 1):
        if i in s:
            print("x"+str(i)+"=%.2f" %d[s.index(i)+1][-1])
        else:
            print("x"+str(i)+"=0.00")
    print("objective is %.2f"%(-d[0][-1]))

以上就是關(guān)于“python線性規(guī)劃如何求解”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

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

AI