日韩av片子_国产自在自线午夜精品视频在_使劲快高潮了国语对白在线_久久免费毛片大全_激情丁香综合_欧美成人精品欧美一级乱黄码

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 軟件研發(fā) > Python中的線性編程:直接教程

Python中的線性編程:直接教程

2020-09-11 17:47:58 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

線性編程是最常見(jiàn)的優(yōu)化技術(shù)之一。它具有廣泛的應(yīng)用范圍,并且經(jīng)常用于運(yùn)籌學(xué),工業(yè)設(shè)計(jì),計(jì)劃等,并且還在不斷增加。Python中的線性編程并沒(méi)有像機(jī)器學(xué)習(xí)那樣被大肆宣傳,但是它是可以通過(guò)具有線性關(guān)系的決策變量,來(lái)解決問(wèn)題。這是一個(gè)快速實(shí)用的Python中的線性教程。下面讓我們來(lái)詳細(xì)了解一下這些內(nèi)容吧。

  問(wèn)題陳述

只是想知道一個(gè)主意,我們將解決一個(gè)有關(guān)生產(chǎn)計(jì)劃的簡(jiǎn)單問(wèn)題。想象一下,您在一家制造計(jì)算機(jī)的公司工作。計(jì)算機(jī)是一種相當(dāng)復(fù)雜的產(chǎn)品,有幾家工廠組裝它們,而公司每單位要支付一定的費(fèi)用。這種計(jì)算機(jī)模型在市場(chǎng)上的價(jià)格固定為500美元,不同的工廠以不同的速度和成本組裝計(jì)算機(jī)。f0工廠每天生產(chǎn)2000件,每件450美元;f1工廠每天生產(chǎn)1500件,每件420 $;f2 1000件每天生產(chǎn),每件400 $。我們有1個(gè)月的時(shí)間來(lái)組裝8萬(wàn)個(gè)單元,這是因?yàn)槿魏喂S的產(chǎn)量都不是其他任何工廠的兩倍。問(wèn)題是,工廠之間的最佳生產(chǎn)分配是什么,以使我們?cè)谶@些限制下通過(guò)出售計(jì)算機(jī)獲得的利潤(rùn)最大化 ?

  在本教程中,我們將使用Python和線性編程優(yōu)化包PuLP,并使用pip復(fù)制粘貼安裝:

  點(diǎn)安裝紙漿

  現(xiàn)在,為了通過(guò)線性編程解決計(jì)算機(jī)生產(chǎn)問(wèn)題,我們需要執(zhí)行以下操作:

  1. 決策變量集;

  2. 這些變量的線性約束集;

  3. 線性目標(biāo)函數(shù)以最大化或最小化。

  因此,打開(kāi)您喜歡的編輯器,讓我們開(kāi)始吧。在PuLP中定義變量之前,我們需要使用以下代碼創(chuàng)建問(wèn)題對(duì)象:

  來(lái)自紙漿進(jìn)口*

  問(wèn)題= LpProblem(“ problemName”,LpMaximize)

  我們將向該對(duì)象添加約束和目標(biāo)函數(shù)。請(qǐng)注意,問(wèn)題構(gòu)造函數(shù)收到問(wèn)題名稱和LpMaximize,這意味著我們要最大化目標(biāo)函數(shù)。在我們的案例中,這是銷(xiāo)售一定數(shù)量的計(jì)算機(jī)所獲得的利潤(rùn)。此外,我們還定義了從問(wèn)題陳述中收到的常量:

  #每天的工廠成本

  cf0 = 450

  cf1 = 420

  cf2 = 400

  #每天的工廠吞吐量

  f0 = 2000

  f1 = 1500

  f2 = 1000

  #生產(chǎn)目標(biāo)

  目標(biāo)= 80000

  #時(shí)間限制

  max_num_days = 30

  num_factories = 3

  在下一節(jié)中,我們將定義決策變量。

  決策變量

  在PuLP中,通過(guò)以下方式定義決策變量:

  變量= LpVariable(“ variableName”)

  有時(shí)我們需要為變量提供界限(默認(rèn)為無(wú)界限),在這種情況下,我們將編寫(xiě)以下內(nèi)容:

  var = LpVariable(“ boundedVariableName”,lowerBound,upperBound)

  在PuLP中定義變量的另一種有用方法是使用dicts函數(shù)。在我們需要定義大量相同類型和范圍的變量的情況下,這很有用,variableNames是字典的鍵列表:

  varDict = LpVariable.dicts(“ varDict”,variableNames,lowBound,upBound)

  因此,根據(jù)先前的定義,計(jì)算機(jī)生產(chǎn)問(wèn)題的決策變量是我們?yōu)槊總€(gè)工廠花費(fèi)的生產(chǎn)天數(shù):

  #工廠

  num_factories = 3個(gè)

  factory_days = LpVariable.dicts( “factoryDays”,列表(范圍(num_factories)),0,30,貓= “連續(xù)”)

  約束條件

  現(xiàn)在我們定義了決策變量,我們可以轉(zhuǎn)到定義問(wèn)題的約束條件了。注意,在線性編程設(shè)置中約束必須是線性的。我們關(guān)注的約束條件是,組裝的單元數(shù)應(yīng)大于或等于目標(biāo)數(shù)量,并且生產(chǎn)約束條件是任何工廠的產(chǎn)量都不應(yīng)該超過(guò)其他工廠的兩倍:

  #目標(biāo)約束

  c1 = factory_days [0] * f1 + factory_days [1] * f2 + factory_days [2] * f3> =目標(biāo)

  #生產(chǎn)限制條件

  c2 = factory_days [0] * f0 <= 2 * factory_days [1] * f1

  c3 = factory_days [0] * f0 <= 2 * factory_days [2] * f2

  c4 = factory_days [1] * f1 <= 2 * factory_days [2] * f2

  c5 = factory_days [1] * f1 <= 2 * factory_days [0] * f0

  c6 = factory_days [2] * f2 <= 2 * factory_days [1] * f1

  c7 = factory_days [2] * f2 <= 2 * factory_days [0] * f0

  #將約束添加到問(wèn)題

  問(wèn)題+ = c1

  問(wèn)題+ = c2

  問(wèn)題+ = c3

  問(wèn)題+ = c4

  問(wèn)題+ = c5

  問(wèn)題+ = c6

  問(wèn)題+ = c7

  計(jì)算機(jī)組裝問(wèn)題的目標(biāo)功能基本上是最小化組裝所有這些計(jì)算機(jī)的成本。這可以簡(jiǎn)單地寫(xiě)成最大化負(fù)成本:

  #目標(biāo)函數(shù)

  問(wèn)題+ = -factory_days [0] * cf0 * f0-factory_days [1] * cf1 * f1-factory_days [2] * cf2 * f2

  讓我們看一下問(wèn)題定義,這可以通過(guò)調(diào)用簡(jiǎn)單地實(shí)現(xiàn):

  打印(問(wèn)題)

  這導(dǎo)致以下輸出,我認(rèn)為這是不言自明的,它列出了問(wèn)題中的目標(biāo)函數(shù),約束和各種決策變量:

  computerAssembly:

  MAXIMIZE

  -900000 * factoryDays_0 + -630000 * factoryDays_1 + -400000 * factoryDays_2 + 0

  SUBJECT TO

  _c1:1500 factoryDays_0 + 1000 factoryDays_1 + 1000 factoryDays_2> = 80000

  _c2:2000 factoryDays_0 - 3000 factoryDays_1 <= 0

  _c3:2000 factoryDays_0 - 2000

  factoryDays_2 <= 0 _C4:1500 factoryDays_1-2000 factoryDays_2 <= 0 _C5:

  -4000 factoryDays_0 + 1500

  factoryDays_1 <= 0 _C6:-3000 factoryDays_1 + 1000

  factoryDays_2 <= 0 _C7:-4000 factoryDays_0 + 1000 factoryDays_2 <= 0

  變量

  factoryDays_0 < = 30連續(xù)

  factoryDays_1 <= 30連續(xù)

  factoryDays_2 <= 30連續(xù)

  解決

  在定義了線性編程問(wèn)題中的所有必要條件之后,我們可以調(diào)用solve方法,如果解決了該問(wèn)題,則輸出1;如果不可行,則輸出-1,這很簡(jiǎn)單:

  #解決

  問(wèn)題.solve()

  可以通過(guò)訪問(wèn)每個(gè)變量的varValue屬性來(lái)獲得該問(wèn)題的解決方案:

  對(duì)于范圍(3)中的i:

  print(f“ Factory {i}:{factory_days [i] .varValue}”)

  結(jié)果為以下輸出:

  工廠0:23.076923

  工廠1:15.384615

  工廠2:30.0

  在線性編程中,我們假設(shè)變量之間的關(guān)系是線性的,并且變量本身是連續(xù)的。

上述就是關(guān)于Python中的線性編程:直接教程的全部?jī)?nèi)容介紹,想了解更多關(guān)于Python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: Python 線性編程
主站蜘蛛池模板: 免费a爱片猛猛 | 日韩av在线中文 | 西欧FREE性满足HD老熟妇 | 成人免费久久 | 日韩av免费在线 | 亚洲欧美高清一区二区三区 | 福利姬液液酱喷水 | 青草草在线视频永久免费 | 久久不色 | 国产河南妇女毛片精品久久 | 黄色三级av | bestialityvideo另类灌满 | 激情欧美一区二区三区黑长吊 | 久久久久久久久久久大尺度免费视频 | 好爽进去了视频在线观看国版 | 天天爽天天狠久久久综合麻豆 | 情欲久久 | 国产在线播放精品视频 | 无遮挡边摸边吃奶边做视频 | 国产51人人成人人人人爽色哟哟 | 成人免费一区二区三区视频 | 天天摸天天做天天爽天天舒服 | 国产97免费视频 | 无码专区—VA亚洲V天堂 | 久久精品黄AA片一区二区三区 | www99久久com| 一区欧美 | 日本一区二区久久久 | 免费久久久久久久 | 午夜影院一级 | 亚洲一区二区三区四区在线视频 | 欧洲美熟女乱av在 | 精品少妇爆乳无码av无码专区 | 国产免费久久精品99久久 | 夜夜草专业av导航 | 狼人青草久久网伊人 | 久久不雅视频 | 国产黄色的视频 | 在线观看中文字幕国产 | 91麻豆久久 | 午夜视频网 |