python 线性规划问题_一学高数,线代就头疼?让python帮你解决(内含教程)
欄目「有學(xué)問(wèn)」是UBook知識(shí)在線的趣味科普專欄,專注于分享有趣好玩的科普知識(shí),旨在發(fā)現(xiàn)更多有趣好玩的冷知識(shí),發(fā)掘更多生活中的趣味。
自從上了大學(xué)以后,各種高數(shù)線代數(shù)學(xué)課防不勝防,有人說(shuō),如果你覺得高數(shù)難,那是因?yàn)槟銢]有遇到過(guò)線性規(guī)劃。
但是小編一直覺得線性規(guī)劃問(wèn)題不大,每次作業(yè)我都能保證全對(duì),并且能夠快速做完,因?yàn)樵诖髮W(xué)里早已經(jīng)學(xué)會(huì)了用python來(lái)幫我解決問(wèn)題。
當(dāng)然,也不是鼓勵(lì)大家自己不做作業(yè),只是學(xué)會(huì)利用工具使得自己更加效(tou)率(lan),最重要的是,每次做出題目答案后可以檢驗(yàn)下自己是否能做對(duì),再者說(shuō),能夠用編程實(shí)現(xiàn)問(wèn)題求解,本身也是對(duì)知識(shí)的掌握。
市面上有不少軟件可以直接求解,但是靈活性要低于python,python提供了很多包可以用來(lái)數(shù)學(xué)計(jì)算,今天我為大家介紹的是scripy的linprog,我們利用linprog可以很好的求解線性規(guī)劃問(wèn)題。
話不多說(shuō),讓我們一起進(jìn)入正式學(xué)習(xí)——
我們以一個(gè)實(shí)際例題為例:
例1 求解下列線性規(guī)劃問(wèn)題
Min Z = 2x1 + 3x2 + x3
s.t.? ? ?
-x1 - x2 + 2x3 <= 10
2x1 - 2x2 + x3 >= 2
x1 + 2x2 + x3 = 5
在這里我們用到scipy中的linprog進(jìn)行求解,linprog官方的介紹鏈接如下:https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linprog.html?
我們要使用的函數(shù)為:
scipy.optimize.linprog(c,A_ub=None,b_ub=None,A_eq=None,b_eq=None,bounds=None, method='simplex', callback=None, options=None)
注意要使用linprog,目標(biāo)函數(shù)要變成求最小值,如果原題目要求求max(最大值),只需對(duì)目標(biāo)函數(shù)取負(fù),但要注意求解的最終值是取負(fù)后的目標(biāo)函數(shù)的最小值,取負(fù)即為最大值。
下面開始代碼編寫——
導(dǎo)入我們所需要的linprog
運(yùn)行結(jié)果如下:
un為目標(biāo)函數(shù)的最優(yōu)值,slack為松弛變量,status表示優(yōu)化結(jié)果狀態(tài),x為最優(yōu)解。
在該例題中,目標(biāo)函數(shù)最小值約為-22.5,最優(yōu)解為 x1=-5.75, x2=12.25, x3=-13.75。
好啦,本次python求解線性規(guī)劃的問(wèn)題就介紹到這,如果大家感興趣的話,后期會(huì)繼續(xù)推出更為復(fù)雜的數(shù)學(xué)求解。
代碼已打包,在后臺(tái)回復(fù)“線性規(guī)劃”即可獲取。
Archer
UBook簽約作者
勵(lì)志做一個(gè)不掉頭發(fā)的程序員
對(duì)改變世界尤其熱衷
喜歡就星標(biāo)我們,不要走丟了哦~
總結(jié)
以上是生活随笔為你收集整理的python 线性规划问题_一学高数,线代就头疼?让python帮你解决(内含教程)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RTX5 | 线程管理04 - 线程加入
- 下一篇: java 1.7 hashmap源码_j