python中如何實(shí)現(xiàn)線性規(guī)劃,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
十余年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)戶外休閑椅等多個(gè)領(lǐng)域,擁有多年的網(wǎng)站維護(hù)經(jīng)驗(yàn)。
說(shuō)明
1、圖解法,用幾何繪圖的方法,求出最優(yōu)解。
中學(xué)就講過(guò)這種方法,在經(jīng)濟(jì)學(xué)研究中非常常用。
2、矩陣法,引入松弛變量。
將線性規(guī)劃問(wèn)題轉(zhuǎn)化為增廣矩陣形式,然后逐步解決,是簡(jiǎn)單性法之前的典型方法;
3、單純法,利用多面體在可行領(lǐng)域逐步構(gòu)建新的頂點(diǎn),不斷逼近最優(yōu)解。
是線性規(guī)劃研究的里程碑,至今仍是最重要的方法之一;
4、內(nèi)點(diǎn)法。
通過(guò)選擇可行域內(nèi)點(diǎn)沿下降方向不斷迭代,達(dá)到最佳解決方案,是目前理論上最好的線性規(guī)劃問(wèn)題解決方案;
5、啟發(fā)法。
依靠經(jīng)驗(yàn)準(zhǔn)則不斷迭代改進(jìn),搜索最優(yōu)解,如貪心法、模擬退火、遺傳算法、神經(jīng)網(wǎng)絡(luò)等。
單純法實(shí)例
import numpy as np #導(dǎo)入相應(yīng)的庫(kù) 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]))
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。