最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)學(xué)建模PuLP庫線性規(guī)劃入門示例詳解

 更新時(shí)間:2021年10月18日 15:23:42   作者:youcans  
這篇文章主要為大家介紹了Python數(shù)學(xué)建模PuLP庫線性規(guī)劃入門示例詳解,想學(xué)習(xí)關(guān)于Python建模的同學(xué)可以學(xué)習(xí)參考下,希望能夠有所幫助

1、什么是線性規(guī)劃

線性規(guī)劃(Linear programming),在線性等式或不等式約束條件下求解線性目標(biāo)函數(shù)的極值問題,常用于解決資源分配、生產(chǎn)調(diào)度和混合問題。例如:

max		fx = 2*x1 + 3*x2 - 5*x3
s.t.	x1 + 3*x2 + x3 <= 12
		2*x1 - 5*x2 + x3 >= 10
		x1 + x2 + x3 = 7
		x1, x2, x3 >=0

線性規(guī)劃問題的建模和求解,通常按照以下步驟進(jìn)行:

(1)問題定義,確定決策變量、目標(biāo)函數(shù)和約束條件;
(2)模型構(gòu)建,由問題描述建立數(shù)學(xué)方程,并轉(zhuǎn)化為標(biāo)準(zhǔn)形式的數(shù)學(xué)模型;
(3)模型求解,用標(biāo)準(zhǔn)模型的優(yōu)化算法對模型求解,得到優(yōu)化結(jié)果;

2、PuLP 庫求解線性規(guī)劃

PuLP是一個(gè)開源的第三方工具包,可以求解線性規(guī)劃、整數(shù)規(guī)劃、混合整數(shù)規(guī)劃問題。
下面以該題為例講解 PuLP 求解線性規(guī)劃問題的步驟:

-(0)導(dǎo)入 PuLP庫函數(shù)

    import pulp

-(1)定義一個(gè)規(guī)劃問題

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

pulp.LpProblem 是定義問題的構(gòu)造函數(shù)。
  "LPProbDemo1"是用戶定義的問題名(用于輸出信息)。
  參數(shù) sense 用來指定求最小值/最大值問題,可選參數(shù)值:LpMinimize、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 是定義決策變量的函數(shù)。
  ‘x1' 是用戶定義的變量名。
  參數(shù) lowBound、upBound 用來設(shè)定決策變量的下界、上界;可以不定義下界/上界,默認(rèn)的下界/上界是負(fù)無窮/正無窮。本例中 x1,x2,x3 的取值區(qū)間為 [0,7]。
  參數(shù) cat 用來設(shè)定變量類型,可選參數(shù)值:‘Continuous' 表示連續(xù)變量(默認(rèn)值)、' Integer ' 表示離散變量(用于整數(shù)規(guī)劃問題)、' Binary ' 表示0/1變量(用于0/1規(guī)劃問題)。

-(3)添加目標(biāo)函數(shù)

    MyProbLP += 2*x1 + 3*x2 - 5*x3  	# 設(shè)置目標(biāo)函數(shù)

添加目標(biāo)函數(shù)使用 “問題名 += 目標(biāo)函數(shù)式” 格式。

-(4)添加約束條件

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

添加約束條件使用 “問題名 += 約束條件表達(dá)式” 格式。
  約束條件可以是等式約束或不等式約束,不等式約束可以是 小于等于 或 大于等于,分別使用關(guān)鍵字">="、"<=“和”=="。

-(5)求解

    MyProbLP.solve()
    print("Status:", pulp.LpStatus[MyProbLP.status]) # 輸出求解狀態(tài)
    for v in MyProbLP.variables():
        print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
    print("F(x) = ", pulp.value(MyProbLP.objective))  #輸出最優(yōu)解的目標(biāo)函數(shù)值    

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

3、Python程序和運(yùn)行結(jié)果

完整的程序代碼如下:

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  	# 設(shè)置目標(biāo)函數(shù)
MyProbLP += (2*x1 - 5*x2 + x3 >= 10)  # 不等式約束
MyProbLP += (x1 + 3*x2 + x3 <= 12)  # 不等式約束
MyProbLP += (x1 + x2 + x3 == 7)  # 等式約束
MyProbLP.solve()
print("Status:", pulp.LpStatus[MyProbLP.status]) # 輸出求解狀態(tài)
for v in MyProbLP.variables():
    print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
print("F(x) = ", pulp.value(MyProbLP.objective))  #輸出最優(yōu)解的目標(biāo)函數(shù)值
#= 關(guān)注 Youcans,分享原創(chuàng)系列 https://blog.csdn.net/youcans =

程序運(yùn)行結(jié)果如下:

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
F(x) =  14.57142851

以上就是Python數(shù)學(xué)建模PuLP庫線性規(guī)劃入門示例詳解的詳細(xì)內(nèi)容,更多關(guān)于數(shù)學(xué)建模PuLP庫線性規(guī)劃入門的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pandas數(shù)據(jù)缺失的兩種處理辦法

    pandas數(shù)據(jù)缺失的兩種處理辦法

    本文主要介紹了在pandas中處理數(shù)據(jù)缺失和0值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • python中的sort方法使用詳解

    python中的sort方法使用詳解

    這篇文章主要介紹了python中的sort方法,需要的朋友可以參考下
    2014-07-07
  • 安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法

    安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法

    這篇文章主要介紹了安裝ElasticSearch搜索工具并配置Python驅(qū)動的方法,文中還介紹了其與Kibana數(shù)據(jù)顯示客戶端的配合使用,需要的朋友可以參考下
    2015-12-12
  • 利用Python操作MongoDB數(shù)據(jù)庫的詳細(xì)指南

    利用Python操作MongoDB數(shù)據(jù)庫的詳細(xì)指南

    MongoDB是由C++語言編寫的非關(guān)系型數(shù)據(jù)庫,是一個(gè)基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng),其內(nèi)容存儲形式類似JSON對象,下面這篇文章主要給大家介紹了關(guān)于利用Python操作MongoDB數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Python密碼學(xué)Caesar?Cipher凱撒密碼算法教程

    Python密碼學(xué)Caesar?Cipher凱撒密碼算法教程

    這篇文章主要為大家介紹了Python密碼學(xué)Caesar?Cipher凱撒密碼算法教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python定時(shí)任務(wù)實(shí)現(xiàn)方案

    Python定時(shí)任務(wù)實(shí)現(xiàn)方案

    這篇文章主要介紹了Python定時(shí)任務(wù)實(shí)現(xiàn)的方案,定時(shí)執(zhí)行的任務(wù),可以是一段bash命令,也可以是一個(gè)腳本文件。通常用于我們需要在特定時(shí)刻做事情,下面來看看文章詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Pandas中DataFrame基本函數(shù)整理(小結(jié))

    Pandas中DataFrame基本函數(shù)整理(小結(jié))

    這篇文章主要介紹了Pandas中DataFrame基本函數(shù)整理(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 跟老齊學(xué)Python之變量和參數(shù)

    跟老齊學(xué)Python之變量和參數(shù)

    對于變量和參數(shù),不管是已經(jīng)敲代碼多年的老鳥,還是剛剛接觸編程的小白,都會有時(shí)候清楚,有時(shí)候又有點(diǎn)模糊。因?yàn)椋趯?shí)際應(yīng)用中,它們之間分分離離,比如,敲代碼都知道,x=3中x是變量,它不是參數(shù),但是在函數(shù)y=3x+4中,x是變量,也是參數(shù)。
    2014-10-10
  • python實(shí)現(xiàn)打印類的所有屬性和方法

    python實(shí)現(xiàn)打印類的所有屬性和方法

    這篇文章主要介紹了python實(shí)現(xiàn)打印類的所有屬性和方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python中的探索性數(shù)據(jù)分析(功能式)

    Python中的探索性數(shù)據(jù)分析(功能式)

    這篇文章主要介紹了功能式Python中的探索性數(shù)據(jù)分析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12

最新評論

屯留县| 成武县| 沁源县| 布拖县| 南宫市| 白城市| 威海市| 大姚县| 页游| 锦州市| 东台市| 都昌县| 济源市| 望城县| 武穴市| 高邮市| 玉山县| 龙南县| 绍兴市| 临汾市| 嘉义市| 丁青县| 封丘县| 黄平县| 武冈市| 阆中市| 吉安县| 晋城| 丹凤县| 竹北市| 百色市| 江永县| 佛山市| 准格尔旗| 侯马市| 巴马| 印江| 襄樊市| 福建省| 革吉县| 珲春市|