數學建模(一):用python解決線性規劃問題

2021-02-21 北航學習生活卷
最近準備去美賽觀光一波,於是了解了一下數學建模的相關知識,我準備以復現代碼為目的學習,在此寫點東西與大家共同探討一下。

線性規劃說起來很高端,但實際上在高中學習過數學的同學應該對此不陌生。

舉個慄子,工廠生產甲、乙兩種商品,其需要A、B、C三種資源,每種產品資源消耗量及單位產品銷售後所能獲得的利潤值以及這三種資源的儲備如下表所示:

消耗資源
A
B

C

銷售利潤

9
4
370

4
610
120
資源儲備
360200300

線性規劃問題可以表述為一個目標函數與一系列約束條件:

其中c、x為n行列向量,G是m*n的實數矩陣,A是p*n的實數矩陣,⪯是廣義不等號。

那麼對於這道例題,設甲生產x_1單位,乙生產x_2單位,則可將其表述為:

            

(第一次用latex,打的好醜)

這樣的題我想大多數人看一眼就知道了思路,但當數據過大,或變量過多時,人腦就難以對問題進行處理了。


二、python代碼實現


由於你航榮獲matlab背刺,我也懶得再學,所以決定使用泛用性最強的python來解決這類問題。

from scipy import optimize as opimport numpy as npc=np.array([70,120])A_ub=np.array([[9,4],[4,6],[3,10]])B_ub=np.array([360,200,300])x1=(0,None)x2=(0,None)res=op.linprog(-c,A_ub,B_ub,bounds=(x1,x2),options={"disp": True})print(res)

首先我解釋一下linprog中各參數的含義:

c:minimize中的x的係數向量,但該函數是用來求最小值的,所以想求最大值就得加個負號,在例題程序中我在最後使用了-c。

A_ub:  各小於等於式子中x的係數向量,如果題給約束是大於等於那就乘個負號。

B_ub:  各小於等於式子中右側的常數項。

A_eq:  等式約束中的x係數向量。

B_eq:  等式約束中的右側常數項。

bounds:x的範圍矩陣,如例題,沒有就填None

這樣一運行,就可以得出結果

函數最大值

要生產9.0909個甲和27.2727個乙實在是太為難工人師傅了,然而這串代碼並不能求得整數解,這個我再用其他的庫嘗試一下。


三、思考及延申


線性規劃問題即約束和目標函數都是線性的,用簡單的矩陣就能解釋。那麼當其為非線性的時候呢?這時又該怎麼處理,怎麼計算?(見下篇)

本篇中的代碼無法求出整數解,x少時還可以就近試一下,如果變量賊多那實在不行就撿起matlab用linprog吧。

相關焦點

  • 用Python求解線性規劃問題
    線性規劃簡介及數學模型表示線性規劃簡介一個典型的線性規劃問題線性規劃模型的三要素線性規劃模型的數學表示圖解法和單純形法圖解法單純形法使用python求解簡單線性規劃模型編程思路求解案例例1:使用scipy求解例2:包含非線性項的求解從整數規劃到0-1規劃整數規劃模型0-1規劃模型案例:投資的收益和風險問題描述與分析建立與簡化模型線性規劃簡介及數學模型表示線性規劃簡介在人們的生產實踐中
  • 如何使用python完成數學建模常見算法
    在數學建模中主流的程式語言是MATLAB,但隨著python/R中數學軟體包的不斷完善,熟悉這兩種程式語言的同學也可以快速數學建模的編程環節。後面我們將介紹幾種常見數學建模算法的python實現,旨在展示python在本領域的強大威力。
  • 使用Python進行線性規劃示例
    約束:決策變量的一組約束(即線性不等式或等式)。非負性約束限制了決策變量取正值。優化模型的解稱為最優可行解。建模步驟對運籌學問題進行準確建模是最重要的任務,也是最困難的任務。錯誤的模型會導致錯誤的解決方案,從而不能解決原來的問題。團隊成員應按照以下步驟進行建模:問題定義:定義項目的範圍,並確定三個要素:決策變量、目標和限制(即約束)。模型構建:將問題定義轉化為數學關係。模型求解:使用標準優化算法。
  • 如何用Python解決整數規劃問題?
    我們將使用整數規劃來做出最佳決策整數規劃(IP)問題是所有變量都被限制為整數的優化問題
  • 數學建模(二):非線性規劃問題
    上回書說到線性規劃是目標函數和約束條件都是線性的,那麼當他們不是線性的時候,就是如題的非線性規劃了。
  • python多重線性回歸分析
    python多重線性回歸分析多重線性回歸分析定義多重線性回歸模型:MulitipleLinear Regression多元線性回歸模型:Multivariate Linear Regression數據準備#多重線性回歸#數據準備import pandas as pddf=pd.read_csv('e:/python/out/corr.csv',encoding='utf8')
  • 數學建模專家張利利專訪:學好數學建模,激發學生潛能-對教學老師的...
    數學建模需要大量繁多的知識模塊和算法模型,但是大部分經驗豐富的數學老師只注重一般的數學考試大綱中的知識,沒有研究過、也沒有系統學習過數學建模需要的理論知識,最多只是知道一、二個數學模型.最後是教師的編程能力較弱.
  • 數學建模專家張利利專訪2:學好數學建模,激發學生潛能-對教學老師...
    數學建模需要大量繁多的知識模塊和算法模型,但是大部分經驗豐富的數學老師只注重一般的數學考試大綱中的知識,沒有研究過、也沒有系統學習過數學建模需要的理論知識,最多只是知道一、二個數學模型.最後是教師的編程能力較弱.
  • 利用python解決凸優化問題
    用數學公式對其進行定義就是,給定一個數據的集合C,x,y∈C,0≤θ≤1,如果數據集滿足條件:θx+(1θy)∈C,那麼C就是凸集。用圖形表示:圖中,左側為凸集,右側非凸集。凸優化問題下面我們給出凸優化問題的定義:其中函數f和g是凸函數,h為仿射函數(affine functions),仿射函數可以理解為簡單的線性變換
  • 線性規劃python手冊03:使用Scipy包解LP
    Scipy是一個用於數學、科學、工程領域的常用軟體包,可以處理插值、積分、優化、圖像處理、常微分方程數值解的求解、信號處理等問題。
  • MATLAB規劃問題——線性規劃和非線性規劃
    例,求如下的線性規劃問題由目標函數可知f=[-5;-4;-6];由約束條件可知矩陣A = [1 -11;3 2 4;3 2 0];右端向量為b = [20;42;30];由自變量都大於零可知lb =[0;0;0];所以求該線性規劃問題最優解的代碼如下f = [-5;
  • 吳國平:高考數學線性規劃問題難度不大,但為何很多人都錯了?
    什麼是線性規劃問題?定義目標函數在線性約束條件下的最大值或最小值問題,就統稱為線性規劃問題。線性規劃的問題應用比較廣泛,題目非常靈活,常和其他知識交叉融合讓學生進行求解,所以對學生的學習能力是一次考驗。因此,線性規劃問題也成為高考數學一個熱點和「分值增長點」。
  • 數學建模-規劃模型總結 | MATLAB求解
    本推送總結數學建模中常用的數學規劃模型,並附詳細的MATLAB求解案例。分為四個模塊:
  • 數學高考中有關線性規劃問題的考試題型分析
    線性規劃是數形結合的體現線性規劃實質上是「數形結合」數學思想方法在一個方面的體現,將最值問題藉助圖形直觀、簡便地尋找出來,是一種較快地求最值的方法。探究提高解線性規劃應用問題的一般步驟是:1分析題意,設出未知量;2列出線性約束條件和目標函數;3作出可行域並利用數形結合求解;4作答.
  • 乾貨來了,關於數學建模你想知道的都在這裡!
    東北三省數學建模聯賽初審剛剛過去,相信很多同學經過自己的努力已經獲得了參賽的機會,也有一些同學很遺憾地沒能繼續走下去,還有一些萌新剛剛了解到數學建模這一領域,準備學習相關知識,抓住下一次比賽的機會,大展身手。作為參加過多次建模比賽的「老選手」,小編想在這裡提供給大家一些建議和建模用得上的資源~(文末有乾貨大禮包!)
  • 徹底解決數學問題-《機器學習的數學》出版了
    如果將機器學習算法的輸入、輸出看作隨機變量/向量, 則可以用概率論的觀點對問題進行建模。概率論的一個好處是可以對不確定性進行建模,這對於某些問題是非常有必要的。另外,它還可以挖掘變量之間的概率依賴關係,實現因果推理。概率論為某些隨機算法-如蒙特卡洛算法, 遺傳算法,以及隨機數生成算法-包括基本隨機數生成,以及採樣算法提供了理論依據和指導。最後,概率論也是資訊理論,隨機過程的先導課程。
  • 用 Python 進行多元線性回歸分析(附代碼)
    很多人在做數據分析時會經常用到一元線性回歸,這是描述兩個變量間統計關係的最簡單的回歸模型。但現實問題中,我們往往會碰到多個變量間的線性關係的問題,這時就要用到多元線性回歸,多元線性回歸是一元回歸的一種推廣,其在實際應用中非常廣泛,本文就用python代碼來展示一下如何用多元線性回歸來解決實際問題。圖1.
  • 如何用Python解決最優化問題?
    這是一個線性規劃問題,即在有限的資源(約束條件)下如何使效用(線性目標函數)最大化。註:關於線性規劃更多可參考https://www.math.ucla.edu/~tom/LP.pdf把5個廣告渠道各自能使用的次數作為決策變量,分別用
  • 怎樣用Crystal ball進行離散決策變量的線性規劃
    問題是這個方程組是解不出來的,因為,這其實是一個線性規劃的問題了。線性規劃(Linearprogramming,簡稱LP)是運籌學中研究較早、發展較快、應用廣泛、方法較成熟的一個重要分支,它是輔助人們進行科學管理的一種數學方法。研究線性約束條件下線性目標函數的極值問題的數學理論和方法。它是運籌學的一個重要分支,廣泛應用於軍事作戰、經濟分析、經營管理和工程技術等方面。為合理地利用有限的人力、物力、財力等資源作出的最優決策,提供科學的依據。
  • 多重線性回歸
    python多重線性回歸分析多重線性回歸分析定義linear_model import LinearRegression#使用線性回歸模型進行建模linear_model import LinearRegression#使用線性回歸模型進行建模