婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺談Python數學建模之線性規劃

淺談Python數學建模之線性規劃

熱門標簽:無錫客服外呼系統一般多少錢 百度地圖標注位置怎么修改 北京電信外呼系統靠譜嗎 大連crm外呼系統 高德地圖標注是免費的嗎 洪澤縣地圖標注 地圖標注視頻廣告 梅州外呼業務系統 老人電話機器人

一、求解方法、算法和編程方案

線性規劃 (Linear Programming,LP) 是很多數模培訓講的第一個算法,算法很簡單,思想很深刻。

線性規劃問題是中學數學的內容,雞兔同籠就是一個線性規劃問題。數學規劃的題目在高考中也經常出現,有直接給出線性約束條件求線性目標函數極值,有間接給出約束條件求線性目標函數極值,還有已知約束條件求非線性目標函數極值問題。

因此,線性規劃在數學建模各類問題和算法中確實是比較簡單的問題。下面我們通過這個比較簡單、也比較熟悉的問題,分析一下數學模型問題的方法、算法和學習方案。探討這些容易混淆的概念,也便于大家理解本系列教程的初衷和特色。

1.1、線性規劃問題的求解方法

解決線性規劃問題有很多數學方法,例如:

  • 圖解法, 用幾何作圖的方法并求出其最優解,中學就講過這種方法,在經濟學研究中十分常用;
  • 矩陣法, 引進松弛變量將線性規劃問題轉換成增廣矩陣形式后逐次求解, 是單純性法之前的典型方法;
  • 單純性法, 利用多面體在可行域內逐步構造新的頂點來不斷逼近最優解,是線性規劃研究的里程碑,至今仍然是最重要的方法之一;
  • 內點法,通過選取可行域內部點沿下降方向不斷迭代來達到最優解,是目前理論上最好的線性規劃問題求解方法;
  • 啟發式方法,依靠經驗準則不斷迭代改進來搜索最優解 ,如貪心法、模擬退火、遺傳算法、神經網絡。

雖然不同的求解方法都是面對線性規劃問題,也就必然會殊途同歸,但它們在思想上就存在著本質區別,在求解方法和步驟上也就完全不同。

不夸張地說,對于很多小白,學沒學過單純性法,對于學習啟發式方法可能完全沒有區別。

這意味著什么呢?這就是說,對于非數學專業的同學,對于學習數學建模的同學,針對每一類問題,完全沒必要學習各種解決方法。即便是數學專業的同學,也不可能在數模學習期間把各種方法都學會。

對于小白,本文推薦選擇較為通用、相對簡單(思路簡單、程序簡單)的方法來進行學習,沒必要貪多求新。

1.2、線性規劃的最快算法

算法,跟方法有什么不同呢?

算法的定義是“解題方案的準確而完整的描述”,是一系列解決問題的清晰指令,算法代表著用系統的方法描述解決問題的策略機制。

我對“方法”的理解是思想方法,是求解問題總體框架,而“算法”是具體和明確的實現步驟,在計算機編程中相當于詳細的流程圖。

在每一種方法的基本思想和方案提出后,往往都會有很多變形、改進和發展的算法。極少的改進算法具有實質貢獻而成為主流的經典算法,即便如此往往也只是性能、效率上的提升,對于求解數模競賽中的問題基本沒有影響。

而絕大多數改進算法只是針對某些特殊情況、特殊問題(自稱)有效,常用于大量的灌水論文。對于數學建模來說,學習基本算法或者目前的經典算法就足夠了,不需要聽信改進算法中自稱的優點,那都是莆田系的廣告。

有一種例外情況,就是一些算法是有適用范圍和限制條件的。舉個例子,內點法的基本算法不能處理等式約束,最短路徑問題中 Dijkstar算法不能處理負權邊。這種情況下如果選錯算法,問題是無法求解的。所以對我們來說,搞清楚算法的適用范圍,比理解算法本身更重要。

回到本節的標題,對于線性規劃問題,什么算法是最快的呢?答案是:猜。不是讓你猜,而是說求解線性規劃問題,猜起來比較快。不是開玩笑,我是認真的。

佐治亞理工學院彭泱教授在 2021年計算機理論頂會 SODA2021 獲得最佳論文(Best paper award at ACM-SIAM symposium on discrete algorithms 2021),正是研究線性規劃問題的求解——“Solving sparse linear systems faster than matrix multiplication”,所用的全新思路是:猜,反復猜,迭代猜。

當然,猜起來比較快只是在某些特殊條件下才有效的,至于在什么條件下猜,怎么猜,這不是我們所要關心,所能理解的問題了。只是以此說明,簡單的問題也有復雜的情況,每個問題都有很多求解的思路、方法和算法。

1.3、選擇適合自己的編程方案

編程方案是我杜撰的術語。我所要表達意思是,在選擇了求解方法和算法以后,是自己按照算法步驟一步步編程實現,或者找到例程調試使用,還是調用第三方工具包/庫函數來完成呢?

首先,對于學習數學建模、參加數模競賽,不建議自己按照算法步驟去編程。我們在《01.新手必讀》中討論過這個問題,對于數學小白兼計算機小白,這樣做既不可行也沒必要;即使你愿意挑戰自我去試試,那其實已經是走在學習另一門計算機或算法課程的路上了。

其次,要不要找到例程自己調試、使用?很多數模培訓就是這么說,這么做的,而且把這些收集的例程當作核心機密吸引同學。我不反對這樣做,這種學習方法對于理解算法、提高編程能力很有幫助;但是并不推薦這樣做,原因是:

(1)我認為學習數學建模、參加數模競賽,重點應該放在識別問題、分析問題、解決問題,能使用算法和編程就足夠了;

(2)第三方庫與例程沒有本質區別,第三方庫就是經典的、規范的、標準化的例程,既然選擇例程為什么不選擇優秀的例程——第三方庫呢?

(3)大部分例程都存在很多問題,即使調試通過仍然有很多坑,而且新手難以識別。

所以我是明確推薦優選直接使用第三方庫來解決問題,這也是 Python 語言“不要重復造輪子”的思想。

進一步地,很多工具包/庫函數都能實現常用的算法,應該如何選擇呢?

如果你對某個工具包已經很熟悉,又能實現所要的算法,這當然是理想的選擇。如果你是小白,就跟著我走吧。

本系列選擇第三方工具包的原則是:

(1)優選常用的工具包;

(2)優選通用功能的工具包和函數(例如,最好既能實現線性規劃,又能實現整數規劃、非線性規劃);

(3)優選安裝簡單、使用簡單、配置靈活的工具包;

(4)優選兼模型檢驗、圖形繪制的工具包。

二、PuLP庫求解線性規劃問題

2.1、線性規劃問題的描述

線性規劃是研究線性等式或不等式約束條件下求解線性目標函數的極值問題,常用于解決資源分配、生產調度和混合問題。

一般線性規劃問題的標準形式為:

滿足所有約束條件的解,稱為線性規劃問題的可行解;所有可行解構成的集合,稱為可行域。

使目標函數達到最小值的解,稱為最優解。

線性規劃問題的建模和求解,通常按照以下步驟進行:

  • 問題定義,確定決策變量、目標函數和約束條件;
  • 模型構建,由問題描述建立數學方程,并轉化為標準形式的數學模型;
  • 模型求解,用標準模型的優化算法對模型求解,得到優化結果。

很多 Python 的第三方包,都提供求解線性規劃問題的算法,有的工具包還提供整數規劃、非線性規劃的算法。例如:

  • Scipy 庫提供了解簡單線性或非線性規劃問題,但是不能求解如背包問題的0-1規劃問題,或整數規劃問題,混合整數規劃問題。
  • PuLP 可以求解線性規劃、整數規劃、0-1規劃、混合整數規劃問題,提供多種針對不同類型問題的求解器。
  • Cvxpy 是一種凸優化工具包,可以求解線性規劃、整數規劃、0-1規劃、混合整數規劃、二次規劃和幾何規劃問題。

此外,SKlearn、DOcplex、Pymprog 等很多第三方工具包也都能求解線性規劃問題。

2.2、PuLP 求解線性規劃問題的步驟

例題 1:

下面以該題為例講解 PuLP 求解線性規劃問題的步驟:

(0)導入 PuLP庫函數

import pulp

(1)定義一個規劃問題

MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMaximize)

pulp.LpProblem 是定義問題的構造函數。

"LPProbDemo1"是用戶定義的問題名(用于輸出信息)。

參數 sense 用來指定求最小值/最大值問題,可選參數值:LpMinimize、LpMaximize 。本例 “sense=pulp.LpMaximize” 表示求目標函數的最大值。

(2)定義決策變量

x1 = pulp.LpVariable('x1', lowBound=0, upBound=7, cat='Continuous') 
x2 = pulp.LpVariable('x2', lowBound=0, upBound=7, cat='Continuous')
x3 = pulp.LpVariable('x3', lowBound=0, upBound=7, cat='Continuous') 

pulp.LpVariable 是定義決策變量的函數。
'x1' 是用戶定義的變量名。

參數 lowBound、upBound 用來設定決策變量的下界、上界;可以不定義下界/上界,默認的下界/上界是負無窮/正無窮。本例中 x1,x2,x3 的取值區間為 [0,7]。

參數 cat 用來設定變量類型,可選參數值:'Continuous' 表示連續變量(默認值)、' Integer ' 表示離散變量(用于整數規劃問題)、' Binary ' 表示0/1變量(用于0/1規劃問題)。

(3)添加目標函數

MyProbLP += 2*x1 + 3*x2 - 5*x3  	# 設置目標函數

添加目標函數使用 "問題名 += 目標函數式" 格式。

(4)添加約束條件

MyProbLP += (2*x1 - 5*x2 + x3 >= 10)  # 不等式約束
MyProbLP += (x1 + 3*x2 + x3 = 12)  # 不等式約束
MyProbLP += (x1 + x2 + x3 == 7)  # 等式約束

添加約束條件使用 "問題名 += 約束條件表達式" 格式。

約束條件可以是等式約束或不等式約束,不等式約束可以是 小于等于 或 大于等于,分別使用關鍵字">="、"="和"=="。

(5)求解

MyProbLP.solve()
print("Status:", pulp.LpStatus[MyProbLP.status]) # 輸出求解狀態
for v in MyProbLP.variables():
    print(v.name, "=", v.varValue)  # 輸出每個變量的最優值
print("F(x) = ", pulp.value(MyProbLP.objective))  #輸出最優解的目標函數值   

solve() 是求解函數。PuLP默認采用 CBC 求解器來求解優化問題,也可以調用其它的優化器來求解,如:GLPK,COIN CLP/CBC,CPLEX,和GUROBI,但需要另外安裝。 

2.3、Python例程:線性規劃問題

例程 1:求解線性規劃問題

import pulp
MyProbLP = pulp.LpProblem("LPProbDemo1", sense=pulp.LpMaximize)  # 求最大值
x1 = pulp.LpVariable('x1', lowBound=0, upBound=7, cat='Continuous') 
x2 = pulp.LpVariable('x2', lowBound=0, upBound=7, cat='Continuous') 
x3 = pulp.LpVariable('x3', lowBound=0, upBound=7, cat='Continuous') 
MyProbLP += 2*x1 + 3*x2 - 5*x3  	# 設置目標函數
MyProbLP += (2*x1 - 5*x2 + x3 >= 10)  # 不等式約束
MyProbLP += (x1 + 3*x2 + x3 = 12)  # 不等式約束
MyProbLP += (x1 + x2 + x3 == 7)  # 等式約束
MyProbLP.solve()  # youcans@xupt
print("Status:", pulp.LpStatus[MyProbLP.status]) # 輸出求解狀態
for v in MyProbLP.variables():  # youcans
    print(v.name, "=", v.varValue)  # 輸出每個變量的最優值
print("Max F(x) = ", pulp.value(MyProbLP.objective))  #輸出最優解的目標函數值

例程 1 運行結果:

Welcome to the CBC MILP Solver 

Version: 2.9.0 

Build Date: Feb 12 2015 

Status: Optimal

x1 = 6.4285714

x2 = 0.57142857

x3 = 0.0

Max F(x) =  14.57142851

例程01 程序說明:

  • 用 PuLP 庫求解線性規劃問題,可以選擇求最大值或最小值,可以按照問題的數學描述,直接輸入目標函數、等式約束和不等式約束,不等式約束可以選擇 = 或 >=,不需要進行轉換。這中方式簡單直觀,非常適合初學者掌握。
  • 對于較大規模線性規劃問題, PuLP 庫支持用字典類型(dict)建立多個變量,設置目標函數和約束條件。

三、小結

求解線性規劃問題的方法非常簡單,本文實際上并未講解具體的算法。

希望通過對求解方法、算法和編程方案的講解,闡明作者對于數學建模學什么、怎么學的理解,也使讀者能了解本系列教程的特點:本教程不打算詳細講解各種算法的具體方法,重點介紹如何使用第三方包實現算法、解決問題。

以上就是淺談Python數學建模之線性規劃的詳細內容,更多關于Python 線性規劃的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python小白必備的8個最常用的內置函數(推薦)
  • 小白入門篇使用Python搭建點擊率預估模型
  • 深入解析Python小白學習【操作列表】
  • 初學python數學建模之數據導入(小白篇)

標簽:佳木斯 盤錦 湖北 上饒 宜昌 西寧 珠海 潮州

巨人網絡通訊聲明:本文標題《淺談Python數學建模之線性規劃》,本文關鍵詞  淺談,Python,數學建模,之,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Python數學建模之線性規劃》相關的同類信息!
  • 本頁收集關于淺談Python數學建模之線性規劃的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美视频第二页| 欧美大胆一级视频| 亚洲高清在线精品| 亚洲国产成人av网| 偷拍与自拍一区| 99久久精品一区二区| 日韩一二在线观看| 亚洲国产成人精品视频| 成人app在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 中文字幕在线观看不卡| 色综合中文字幕| 国产伦精一区二区三区| 久久综合色婷婷| 国产精品99久久久久久似苏梦涵| 精品对白一区国产伦| 91蝌蚪porny九色| 日韩中文字幕区一区有砖一区 | 亚洲妇女屁股眼交7| 欧美一区二区观看视频| 成人精品免费视频| 日韩高清一区二区| 亚洲精品一区二区精华| 日韩女优制服丝袜电影| 一本一道综合狠狠老| 91在线视频观看| 欧美性xxxxxxxx| 欧美一区二视频| 久久精品在这里| 中文字幕一区二区三区蜜月| 亚洲老司机在线| 秋霞电影一区二区| 极品瑜伽女神91| 久久色视频免费观看| 一区二区三区不卡视频| √…a在线天堂一区| 久久久www成人免费无遮挡大片| 免费观看日韩电影| 久久综合久久综合久久综合| 亚洲欧美日韩一区二区| 免费成人你懂的| 欧美老女人第四色| 亚洲伦理在线精品| 日韩精品乱码av一区二区| 午夜亚洲国产au精品一区二区| 日韩黄色一级片| 国产激情一区二区三区四区| 国内精品自线一区二区三区视频| 国产一区二区三区在线观看免费 | 精品国产髙清在线看国产毛片| 欧美日韩中字一区| 5566中文字幕一区二区电影| 一本久道中文字幕精品亚洲嫩| 欧美日韩亚洲综合在线 | 亚洲一区二区三区四区在线观看 | 亚洲国产一区二区视频| 亚洲国产精品激情在线观看| 国产精品久久久久久久久图文区 | 99国产精品久久久久| 91久久人澡人人添人人爽欧美 | 国产精品每日更新| 亚洲一二三区视频在线观看| 人人狠狠综合久久亚洲| 成人毛片视频在线观看| 91精品国产入口在线| 一区二区在线电影| 91免费精品国自产拍在线不卡| 日韩亚洲欧美一区| 日韩av二区在线播放| 欧美日韩一区不卡| 久久精品久久综合| 欧美极品aⅴ影院| 成人av资源下载| 亚洲欧美日韩成人高清在线一区| 欧美浪妇xxxx高跟鞋交| 亚洲激情图片qvod| 色婷婷激情久久| 日本亚洲电影天堂| 亚洲不卡在线观看| 成人高清在线视频| 一区二区三区在线视频免费| 欧美网站一区二区| 亚洲mv大片欧洲mv大片精品| 欧美日韩一区高清| 亚洲成人av中文| 日韩美女在线视频| a美女胸又www黄视频久久| 亚洲色图.com| 国产丝袜在线精品| 欧美特级限制片免费在线观看| 麻豆精品国产91久久久久久| 日韩精品在线一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 91小视频免费看| 久久久久久久久久久久久夜| 久久99精品国产91久久来源| 国产精品午夜免费| 成人v精品蜜桃久久一区| 成人性生交大片免费看中文| 成人精品亚洲人成在线| 韩国v欧美v亚洲v日本v| 91丨porny丨中文| 精品三级在线看| 亚洲免费观看高清完整版在线 | 国产99久久精品| 精品视频在线看| 亚洲国产综合在线| 欧美在线观看一二区| 欧美日韩一区小说| 国产乱码精品一区二区三| 欧美日韩免费观看一区二区三区| 日韩伦理免费电影| 欧美日韩亚洲不卡| 韩国三级电影一区二区| 国产精品久久久久久亚洲毛片| 不卡高清视频专区| 日韩精品电影在线| 国产精品超碰97尤物18| 波多野结衣的一区二区三区| 久久综合狠狠综合| 成人美女视频在线看| 国产精品成人一区二区艾草| 一本久道中文字幕精品亚洲嫩 | 欧美日韩一区国产| 丝袜亚洲另类欧美综合| 日韩欧美视频一区| 99免费精品视频| 免费在线观看成人| 国产精品理论片| 欧美午夜宅男影院| 丁香另类激情小说| 婷婷成人激情在线网| 国产精品国产三级国产普通话三级| 色一情一乱一乱一91av| 久久99日本精品| 亚洲激情欧美激情| 欧美成人精品1314www| 在线视频综合导航| 粉嫩绯色av一区二区在线观看| 性做久久久久久久久| 中文在线一区二区| 久久亚洲一级片| 91麻豆精品91久久久久久清纯| 91在线播放网址| 97久久超碰国产精品电影| 国产成a人无v码亚洲福利| 久久国产精品99精品国产| 亚洲国产精品久久人人爱| 亚洲蜜臀av乱码久久精品| 亚洲欧洲日韩在线| 亚洲国产综合视频在线观看| 日韩一区中文字幕| 国产精品欧美精品| 国产精品少妇自拍| 国产三级欧美三级| 国产欧美视频在线观看| 欧美精品一区二区在线观看| 欧美日韩激情一区二区三区| 欧美三区在线观看| 在线播放91灌醉迷j高跟美女| 欧美无人高清视频在线观看| 中文字幕免费一区| 亚洲精品国产成人久久av盗摄| 亚洲素人一区二区| 天天操天天干天天综合网| 人人爽香蕉精品| 波多野结衣在线一区| 欧美制服丝袜第一页| 日韩欧美国产麻豆| 国产精品久久看| 日韩电影在线一区二区| 久久国产人妖系列| 91视频在线观看免费| 2023国产精华国产精品| 一区二区三区四区精品在线视频 | 成人午夜激情在线| 欧美人与性动xxxx| 亚洲欧洲日韩一区二区三区| 肉肉av福利一精品导航| 暴力调教一区二区三区| 精品久久久影院| 亚洲国产一区在线观看| 国产精品77777竹菊影视小说| 欧美亚一区二区| 亚洲精品成a人| av毛片久久久久**hd| 久久精品综合网| 日韩av在线播放中文字幕| 91视频www| 国产精品毛片a∨一区二区三区| 日韩中文字幕麻豆| 97aⅴ精品视频一二三区| 久久精品一区二区三区av| 亚洲国产色一区| 欧亚洲嫩模精品一区三区| 亚洲视频一区二区在线| 国产精品18久久久久| 国产情人综合久久777777| 国产精品亚洲午夜一区二区三区 | 91极品视觉盛宴|