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