線性規劃算是數學建模中最基礎的模型了,其典型特征就是線性和有限資源,即在一組線性約束條件下,求解一個線性目標函數的最大值或最小值問題:
其中x?是決策變量向量,c?是目標函數系數向量,a 和?b?分別是約束系數矩陣和右側常數向量。因為比較簡單,以下內容都會簡寫。
?
1.基礎實例
以下是基于python的實現:
# 創建問題實例,最大化目標函數
prob = LpProblem("生產計劃問題", LpMaximize)# 定義決策變量
x1 = LpVariable("產品A", lowBound=0) # x1 >= 0
x2 = LpVariable("產品B", lowBound=0) # x2 >= 0# 設置目標函數
prob += 4 * x1 + 3 * x2, "總利潤"# 添加約束條件
prob += 2 * x1 + x2 <= 10, "機器時間約束1"
prob += x1 + x2 <= 8, "機器時間約束2"
prob += x2 <= 7, "機器時間約束3"# 求解問題
prob.solve()# 輸出結果
print("狀態:", "最優" if prob.status == 1 else "未找到最優解")
print(f"產品A生產數量: {x1.value():.2f} 單位")
print(f"產品B生產數量: {x2.value():.2f} 單位")
print(f"最大利潤: {prob.objective.value():.2f} 元")
2.可轉化的線性規劃模型
多任務轉化
又要使收益大又要使風險小,顯然是一個多任務。那么就把它化成單任務,比如引入一個預期值,這個值是收益與風險的比值,在不同預期值下求收益最大的情況進行對比;又或者是將二者做差,再求該表達式最值(注意二者單位系數轉換)
3.總結
線性規劃的模型很好判斷,在有限資源(即約束條件)下求極值,且所求的函數極值是一個線性表達式,這時找好決策變量和約束條件就可以求解了。