线性规划问题(excel和python)
文章目錄
- 前言
- 一、線性規劃的來源及內容
- 1.運籌學
- 2.建模步驟
- 3.線性規劃
- 二、Excel求解線性規劃的實際案例-廣告媒體組合優化問題
- 1.建立數據源
- 2.寫出資源配置三要素
- 3. 在excel中設置目標函數
- 4.在excel中設置約束條件
- 5.加載excel的規劃求解模塊
- 6.在excel規劃求解模塊中設置決策變量和目標函數
- 7.在excel規劃中求解模塊中設置約束條件
- 三、python求解線性規劃的實際案例
- 1.最小化問題
- 2.最大化問題
前言
在數學中,線性規劃(Linear Programming,簡稱LP)特指目標函數和約束條件皆為線性的最優化問題。
線性規劃是最優化問題中的一個重要領域。在作業研究中所面臨的許多實際問題都可以用線性規劃來處理,特別是某些特殊情況,例如:網絡流、多商品流量等問題,都被認為非常重要
一、線性規劃的來源及內容
1.運籌學
運籌學是一種科學的決策方法,它通常是在需要分配稀缺資源的條件下,尋求系統的最佳設計??茖W的決策方法需要使用一個或多個數學模型(優化模型)來做出最優決策。
優化模型試圖在滿足給定約束的決策變量的所有值的集合中,找到優化(最大化或最小化)目標函數的決策變量的值。 它的三個主要組成部分是:
目標函數:要優化的函數(最大化或最小化)。
決策變量:影響系統性能的可控變量。
約束:決策變量的一組約束(即線性不等式或等式)。非負性約束限制了決策變量取正值。
優化模型的解稱為最優可行解。
2.建模步驟
對運籌學問題進行準確建模是最重要的任務,也是最困難的任務。錯誤的模型會導致錯誤的解決方案,從而不能解決原來的問題。團隊成員應按照以下步驟進行建模:
問題定義:定義項目的范圍,并確定三個要素:決策變量、目標和限制(即約束)。
模型構建:將問題定義轉化為數學關系。
模型求解:使用標準優化算法。在獲得解后,需要進行靈敏度分析,以找出由于某些參數的變化而導致的解的行為。
模型有效性:檢查模型是否按預期工作。
實現:將模型和結果轉換為解決方案。
3.線性規劃
線性規劃(Linear Programming,也稱為LP)是一種運籌學技術,當當所有的目標和約束都是線性的(在變量中)并且當所有的決策變量都是連續的時使用。線性規劃是最簡單的運籌學方法。
二、Excel求解線性規劃的實際案例-廣告媒體組合優化問題
1.建立數據源
建立如圖的excel表格
2.寫出資源配置三要素
3. 在excel中設置目標函數
根據前面的分析可知,目標函數為B2:E6與F2:F6區域兩列數的乘積之和,在C10單元格輸入"=SUMPRODUCT(E2:E6,F2:F6)"
如圖:
4.在excel中設置約束條件
將第二步中所寫的約束條件表達式設置在excel中
5.加載excel的規劃求解模塊
選擇"文件"——>“選項”——>“加載項”——>“轉到”,勾選"規劃求解加載項",點擊“確定”,在“數據”菜單中會出現規劃求解的模塊
6.在excel規劃求解模塊中設置決策變量和目標函數
選擇“數據”——>“規劃求解”,進行如下設置
7.在excel規劃中求解模塊中設置約束條件
在下圖設置6個約束條件
約束條件1:電視廣告費<=30000元
約束條件2:電視廣告次數>=20次
約束條件3:廣告費用<=40000元
約束條件4:被告知人數>=100000人
約束條件5:各媒體使用次數不超過次數限量的設置
約束條件6:各媒體使用次數為整正數
完成約束條件設置之后的六個約束條件的設置結果
三、python求解線性規劃的實際案例
1.最小化問題
Python的SciPy庫包含用于解決線性編程問題的linprog函數。在使用linprog時,編寫代碼要考慮的兩個注意事項:
這個問題必須表述為一個最小化問題。
不等式必須表示為≤。
實驗代碼:
實驗結果:
2.最大化問題
由于Python的SciPy庫中的linprog函數是用來解決最小化問題的,因此有必要對原始目標函數進行轉換。通過將目標函數的系數乘以-1(即通過改變其符號),可以將最小化問題轉化為一個最大化問題。
讓我們考慮下面需要解決的最大化問題:
實驗代碼:
實驗結果:
總結
以上是生活随笔為你收集整理的线性规划问题(excel和python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word文档如何设置多级标题
- 下一篇: Object C语法