成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > 淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃

淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃

熱門標(biāo)簽:無(wú)錫客服外呼系統(tǒng)一般多少錢 梅州外呼業(yè)務(wù)系統(tǒng) 北京電信外呼系統(tǒng)靠譜嗎 百度地圖標(biāo)注位置怎么修改 老人電話機(jī)器人 大連crm外呼系統(tǒng) 地圖標(biāo)注視頻廣告 洪澤縣地圖標(biāo)注 高德地圖標(biāo)注是免費(fèi)的嗎

一、從線性規(guī)劃到整數(shù)規(guī)劃

1.1、為什么會(huì)有整數(shù)規(guī)劃?

線性規(guī)劃問題的最優(yōu)解可能是分?jǐn)?shù)或小數(shù)。整數(shù)規(guī)劃是指變量的取值只能是整數(shù)的規(guī)劃。

這在實(shí)際問題中很常見,例如車間人數(shù)、設(shè)備臺(tái)數(shù)、行駛次數(shù),這些變量顯然必須取整數(shù)解。

根據(jù)對(duì)變量的不同情況,整數(shù)規(guī)劃又可以分為:

  • 完全整數(shù)規(guī)劃,全部變量都要求是整數(shù);
  • 混合整數(shù)規(guī)劃,部分變量要求是整數(shù);
  • 0-1整數(shù)規(guī)劃,變量的取值只能是 0 或 1;
  • 混合0-1規(guī)劃,部分變量的取值只能是 0 或 1。

0-1整數(shù)規(guī)劃 是非常重要也非常特殊的整數(shù)規(guī)劃,需要在另外的文章進(jìn)行討論。

1.2、四舍五入就能得到整數(shù)解嗎?

整數(shù)規(guī)劃問題與線性規(guī)劃問題的區(qū)別只是增加了整數(shù)約束。這看上去好像只要把線性規(guī)劃得到的非整數(shù)解舍入化整,就可以得到整數(shù)解,并不是多么復(fù)雜的問題。

但是問題并沒有這么簡(jiǎn)單?;蟮慕獠粌H不一定是最優(yōu)解,甚至不一定是可行解的——線性規(guī)劃的最優(yōu)解,取整后可能就不滿足約束條件了。

那么,不要按四舍五入取整,而是向滿足約束條件的方向取整,是不是就可以呢?這是很好的想法,通常這樣可以獲得可行解,但卻不一定是最優(yōu)解了。

因此,整數(shù)規(guī)劃問題比線性規(guī)劃復(fù)雜的多,以至于至今還沒有通用的多項(xiàng)式解法,也就是說算法復(fù)雜度與問題規(guī)模成指數(shù)關(guān)系(NP問題)。還沒有意識(shí)到與問題規(guī)模指數(shù)關(guān)系意味著什么嗎?就是那個(gè)在象棋棋盤上放麥子,每格比前一格加倍的故事。

問題區(qū)別一點(diǎn)點(diǎn),難度卻相差千萬(wàn)里。小白與學(xué)霸,差距其實(shí)并不大。

二、整數(shù)規(guī)劃的求解方法

2.1、分支定界法(Branch and bound)

分支定界法的基本思想是把原問題(整數(shù)規(guī)劃問題)轉(zhuǎn)換為一個(gè)個(gè)線性規(guī)劃問題來處理,并在求解這些線性規(guī)劃問題的過程中不斷追蹤原問題的上界(最優(yōu)可行解)和下界(最優(yōu)線性松弛解)。

分支定界法把全部可行解空間反復(fù)地分割為越來越小的子集,稱為分枝;并且對(duì)每個(gè)子集內(nèi)的解集計(jì)算一個(gè)目標(biāo)上界,稱為定界。每次分枝后,對(duì)于超出已知可行解集目標(biāo)值的那些子集不再進(jìn)一步分枝,就可以刪減很多子集,這稱為剪枝。

數(shù)學(xué)課代表的說法是:設(shè)有最大化的整數(shù)規(guī)劃問題 A,先解與之相應(yīng)的線性規(guī)劃問題 B,若 B 的最優(yōu)解不符合 A 的整數(shù)條件,則 B 的最優(yōu)目標(biāo)函數(shù)必是 A 的最優(yōu)目標(biāo)函數(shù) z 的上界,記為 z2,而 A 的任意可行解的目標(biāo)函數(shù)值將是 z 的一個(gè)下界 z1。分支定界法就是將 B 的可行域分成子區(qū)域(分支)的方法,逐步減小 z2 和增大 z1,最終求到 z*。

分支定界法是一個(gè)迭代算法,隨著迭代過程不斷更新上界和下界,直到上界和下界非常接近時(shí)結(jié)束。通常設(shè)置 Gap 0.1%,就可把當(dāng)前的最優(yōu)可行解近似為問題的全局最優(yōu)解了。因此,分支定界法的“收斂” 不是分析意義上的而是算法意義上的,優(yōu)化結(jié)果是近似解而不是精確解。

分支定界法不用區(qū)分完全整數(shù)規(guī)劃與混合整數(shù)規(guī)劃,算法便于實(shí)現(xiàn),但計(jì)算量比較大。

2.2、割平面法(Cutting plane)

割平面法的基本思路是先求解普通線性規(guī)劃問題的最優(yōu)解,再對(duì)非整數(shù)解添加約束條件使可行域縮小,如此反復(fù)求解添加了約束條件的普通線性規(guī)劃問題,直到得到整數(shù)解。

也就是說,先不考慮整數(shù)約束條件,直接求解松弛問題的最優(yōu)解,如果滿足整數(shù)條件就結(jié)束了,如果不滿足整數(shù)條件,就在此非整數(shù)解的基礎(chǔ)上增加新的約束條件重新求解。這個(gè)新增加的約束條件稱為割平面,對(duì)松弛問題的可行域割一刀,割去松弛問題的部分非整數(shù)解。經(jīng)過有限次的反復(fù)切割,必定可在縮小的可行域的一個(gè)整數(shù)極點(diǎn)上達(dá)到整數(shù)規(guī)劃問題的最優(yōu)解 。

割平面法的計(jì)算量比較小,但對(duì)問題的結(jié)構(gòu)及求解的要求較高,算法比較復(fù)雜。

2.3、整數(shù)規(guī)劃的編程方案

在各種算法的介紹和評(píng)價(jià)中,有時(shí)會(huì)說“算法比較簡(jiǎn)單,編程比較容易”。對(duì)此小白千萬(wàn)不要當(dāng)真。不論分支定界法還是割平面法,小白不要說自己按照算法步驟一步步編程實(shí)現(xiàn),就是給你現(xiàn)成的程序估計(jì)你也看不懂的。這很正常,就算大神也沒幾個(gè)人能看懂哪怕是自己寫出來的算法。

但是如果給你程序也不會(huì)使用,那就是問題了。不幸的是,這是數(shù)學(xué)建模學(xué)習(xí)和參賽中經(jīng)常遇到的問題:有了調(diào)試好的程序,例程運(yùn)行結(jié)果也正常,但換個(gè)問題仍然不會(huì)使用。

這并不是你的錯(cuò)。程序有漏洞,接口不標(biāo)準(zhǔn),文檔對(duì)不上,教程說不清,這就是你所拿到的例程。你的錯(cuò)誤,是選擇了這樣的例程,或者說選擇了這樣的編程方案。

這也是本系列教程希望解決的問題。就拿線性規(guī)劃、整數(shù)規(guī)劃來說,算法還不是很復(fù)雜,第三方軟件包也很豐富。但是,Scipy 只能求解線性規(guī)劃,不能求解整數(shù)規(guī)劃,如果選擇 Scipy 做線性規(guī)劃,那在學(xué)整數(shù)規(guī)劃時(shí)就要再學(xué)另一種工具包,二者的模型描述、函數(shù)定義、參數(shù)設(shè)置肯定也是不同的。接下來遇到非線性規(guī)劃問題再學(xué)一種軟件包,最后別說熟練掌握算法函數(shù),連什么時(shí)候該用哪個(gè) 工具包都搞暈了。

閑話少說,我們還是用上節(jié)求解線性規(guī)劃問題的 PuLP 工具包。

三、PuLP 求解整數(shù)規(guī)劃問題

我們不僅繼續(xù)用 PuLP 工具包,而且解題過程和編程步驟也與求解線性規(guī)劃問題完全一致。

下面我們以一個(gè)簡(jiǎn)單的數(shù)學(xué)模型練習(xí),來講解整個(gè)解題過程,而不僅給出例程。

3.1、案例問題描述

例題 1:

某廠生產(chǎn)甲乙兩種飲料,每百箱甲飲料需用原料 6千克、工人 10名,獲利 10萬(wàn)元;每百箱乙飲料需用原料 5千克、工人 20名,獲利 9萬(wàn)元。

今工廠共有原料 60千克、工人 150名,又由于其他條件所限甲飲料產(chǎn)量不超過8百箱。

問題 1:?jiǎn)柸绾伟才派a(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?

問題 2:若投資0.8萬(wàn)元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?

問題 3:若不允許散箱(按整百箱生產(chǎn)),如何安排生產(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?

問題 4:若不允許散箱(按整百箱生產(chǎn)),若投資0.8萬(wàn)元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?

3.2、建模過程分析

線性規(guī)劃和整數(shù)規(guī)劃類的問題的建模和求解,通??梢园磫栴}定義、模型構(gòu)建、模型求解的步驟進(jìn)行。

3.2.1、問題定義

問題定義, 確定決策變量、目標(biāo)函數(shù)和約束條件。

1.決策變量是問題中可以在一定范圍內(nèi)進(jìn)行變化而獲得不同結(jié)果的變量。

對(duì)于問題 1,問題描述中說的很明確,希望通過改變甲、乙兩種飲料的產(chǎn)量使總利潤(rùn)最大,甲、乙兩種飲料的產(chǎn)量就是決策變量。

對(duì)于問題 2 則要注意,如果只看前一句,就是比較問題 1 與問題 2 的利潤(rùn),還是把甲、乙兩種飲料的產(chǎn)量作為決策變量。但要回答后一句“投資多少合理”,這就出現(xiàn)了一個(gè)新的變量“投資額”,因此對(duì)問題 2 要建立 3個(gè)決策變量:甲產(chǎn)量、乙產(chǎn)量和投資額。

2.目標(biāo)函數(shù)是決策變量的函數(shù),我們希望通過改變決策變量的值而獲得目標(biāo)函數(shù)的最大值或最小值,通常是總成本(最?。⒖偫麧?rùn)(最大)、總時(shí)間(最短)。

對(duì)于本案例,每個(gè)問題都是希望獲得最大利潤(rùn),目標(biāo)函數(shù)都是總利潤(rùn),問題是求目標(biāo)函數(shù)即總利潤(rùn)的最大值。

3.約束條件是決策變量所要滿足的限制條件。

約束條件 3 種情況:

一是不等式約束,例如題目指出共有原料 60千克、工人 150名,因此生產(chǎn)計(jì)劃所用的原料、工人的需求不能大于題目中數(shù)值。

二是等式約束,本題沒有等式約束條件。

三是決策變量取值范圍的約束。

通常,題目隱含著決策變量大于等于 0 的條件,例如工人人數(shù)、原料數(shù)量都要大于等于 0。

另外,如果能通過分析前面的等式約束或不等式約束,得出決策變量的上限,將會(huì)極大的提高問題求解的速度和性能。后文將對(duì)此舉例說明。

3.2.2、模型構(gòu)建

模型構(gòu)建, 由問題描述建立數(shù)學(xué)方程,并轉(zhuǎn)化為標(biāo)準(zhǔn)形式的數(shù)學(xué)模型。

對(duì)于問題 1,目標(biāo)函數(shù)是生產(chǎn)甲、乙兩種飲料的總利潤(rùn),約束條件是原料總量、工人總數(shù)的約束,而且原料、工人都要大于等于 0。

進(jìn)一步分析決策變量取值范圍的約束條件,由原料數(shù)量、工人數(shù)量的不等式約束可以推出:

對(duì)于問題 2,可以通過增加投資來獲得更多的原料,投資額是一個(gè)新的變量。要注意的是,此時(shí)目標(biāo)函數(shù)雖然也是生產(chǎn)兩種飲料的總利潤(rùn),但總利潤(rùn)不等于總收入,而是總收入減去總成本,在本例中就是要減去購(gòu)買原料的投資。

對(duì)于問題 3 和問題 4,區(qū)別只是不允許散箱,明確提出了決策變量 x1、x2 的取值要取整數(shù)值,所以是整數(shù)規(guī)劃問題。
需要注意的是,問題 4 中對(duì)增加的投資額即購(gòu)買的原料數(shù)量并沒有整數(shù)限制,因此 x1、x2 的取值范圍是正整數(shù),但 x3 的取值范圍是正數(shù),這是一個(gè)混合整數(shù)規(guī)劃問題。
還要說明的是,對(duì)于問題 1 和問題 2,雖然題目中沒有明確要求生產(chǎn)甲、乙飲料的工人人數(shù)為整數(shù),但是人數(shù)也不可能是小數(shù)的,那么這是不是也是整數(shù)規(guī)劃問題呢?
如果你能提出這個(gè)問題,那么恭喜你,你已經(jīng)從小白升級(jí)為菜鳥了。
我的理解是,這個(gè)問題怎么說都可以。如果要簡(jiǎn)化問題,使用線性規(guī)劃模型,最好在問題假設(shè)中說一句,假設(shè)甲乙飲料在同一車間先后生產(chǎn),只要允許甲乙飲料散箱生產(chǎn),即使根據(jù)產(chǎn)量所求出的工人數(shù)是小數(shù),也可以解釋的通。如果你掌握了整數(shù)規(guī)劃問題的求解,那就先按線性規(guī)劃建模,再補(bǔ)充討論工人人數(shù)也必須是整數(shù)的條件,按整數(shù)規(guī)劃建模求解,這就是妥妥的獲獎(jiǎng)?wù)撐牧恕?/p>

3.2.3、模型求解

模型求解,用標(biāo)準(zhǔn)模型的優(yōu)化算法對(duì)模型求解,得到優(yōu)化結(jié)果。

在線性規(guī)劃問題中已經(jīng)講過使用 PuLP 的求解步驟:

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

import pulp

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

ProbLP1 = pulp.LpProblem("ProbLP1", sense=pulp.LpMaximize)    # 定義問題 1,求最大值

pulp.LpProblem 用來定義問題的構(gòu)造函數(shù)。"ProbLP1"是用戶定義的問題名。
參數(shù) sense 指定問題求目標(biāo)函數(shù)的最小值/最大值 。本例求最大值,選擇 “pulp.LpMaximize” 。

(2)定義決策變量

對(duì)于問題 1:

x1 = pulp.LpVariable('x1', lowBound=0, upBound=15, cat='Continuous')  # 定義 x1
x2 = pulp.LpVariable('x2', lowBound=0, upBound=7.5, cat='Continuous')  # 定義 x2

pulp.LpVariable 用來定義決策變量的函數(shù)。'x1'、'x2' 是用戶定義的變量名。
參數(shù) lowBound、upBound 用來設(shè)定決策變量的下界、上界;可以不定義下界/上界,默認(rèn)的下界/上界是負(fù)無(wú)窮/正無(wú)窮。本例中 x1、x2 的取值區(qū)間分別為 [0,15]、[0,7.5]。
參數(shù) cat 用來設(shè)定變量類型,可選參數(shù)值:'Continuous' 表示連續(xù)變量(默認(rèn)值)、' Integer ' 表示離散變量(用于整數(shù)規(guī)劃問題)、' Binary ' 表示0/1變量(用于0/1規(guī)劃問題)。

對(duì)于問題 3, 甲乙飲料產(chǎn)量 x1、x2 必須取整數(shù),是整數(shù)規(guī)劃問題,因此要設(shè)置變量類型為離散變量(整數(shù)變量):

x1 = pulp.LpVariable('x1', lowBound=0, upBound=15, cat='Integer')  # 定義 x1,變量類型:整數(shù)
x2 = pulp.LpVariable('x2', lowBound=0, upBound=7.5, cat='Integer')  # 定義 x2,變量類型:整數(shù)

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

ProbLP1 += (10*x1 + 9*x2)  # 設(shè)置目標(biāo)函數(shù) f(x)

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

(4)添加約束條件

ProbLP1 += (6*x1 + 5*x2 = 60)  # 不等式約束
ProbLP1 += (10*x1 + 20*x2 = 150)  # 不等式約束

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

(5)求解

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

solve() 是求解函數(shù),可以對(duì)求解器、求解精度進(jìn)行設(shè)置。
PuLP默認(rèn)采用 CBC 求解器來求解優(yōu)化問題,也可以調(diào)用其它的優(yōu)化器來求解,但需要另外安裝。 

3.3、Python 例程

import pulp      # 導(dǎo)入 pulp 庫(kù)

# 主程序
def main():

    # 模型參數(shù)設(shè)置
    """
    問題描述:
        某廠生產(chǎn)甲乙兩種飲料,每百箱甲飲料需用原料6千克、工人10名,獲利10萬(wàn)元;每百箱乙飲料需用原料5千克、工人20名,獲利9萬(wàn)元。
        今工廠共有原料60千克、工人150名,又由于其他條件所限甲飲料產(chǎn)量不超過8百箱。
        (1)問如何安排生產(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?
        (2)若投資0.8萬(wàn)元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?
        (3)若不允許散箱(按整百箱生產(chǎn)),如何安排生產(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?
        (4)若不允許散箱(按整百箱生產(chǎn)),若投資0.8萬(wàn)元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?
    """

    # 問題 1:
    """
    問題建模:
        決策變量:
            x1:甲飲料產(chǎn)量(單位:百箱)
            x2:乙飲料產(chǎn)量(單位:百箱)
        目標(biāo)函數(shù):
            max fx = 10*x1 + 9*x2
        約束條件:
            6*x1 + 5*x2 = 60
            10*x1 + 20*x2 = 150            
            x1, x2 >= 0,x1 = 8
    此外,由 x1,x2>=0 和 10*x1+20*x2=150 可知 0=x2=7.5
    """
    ProbLP1 = pulp.LpProblem("ProbLP1", sense=pulp.LpMaximize)    # 定義問題 1,求最大值
    x1 = pulp.LpVariable('x1', lowBound=0, upBound=8, cat='Continuous')  # 定義 x1
    x2 = pulp.LpVariable('x2', lowBound=0, upBound=7.5, cat='Continuous')  # 定義 x2
    ProbLP1 += (10*x1 + 9*x2)  # 設(shè)置目標(biāo)函數(shù) f(x)
    ProbLP1 += (6*x1 + 5*x2 = 60)  # 不等式約束
    ProbLP1 += (10*x1 + 20*x2 = 150)  # 不等式約束
    ProbLP1.solve()
    print(ProbLP1.name)  # 輸出求解狀態(tài)
    print("Status youcans:", pulp.LpStatus[ProbLP1.status])  # 輸出求解狀態(tài)
    for v in ProbLP1.variables():
        print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
    print("F1(x) =", pulp.value(ProbLP1.objective))  # 輸出最優(yōu)解的目標(biāo)函數(shù)值


    # 問題 2:
    """
    問題建模:
        決策變量:
            x1:甲飲料產(chǎn)量(單位:百箱)
            x2:乙飲料產(chǎn)量(單位:百箱)
            x3:增加投資(單位:萬(wàn)元)
        目標(biāo)函數(shù):
            max fx = 10*x1 + 9*x2 - x3
        約束條件:
            6*x1 + 5*x2 = 60 + x3/0.8
            10*x1 + 20*x2 = 150
            x1, x2, x3 >= 0,x1 = 8
    此外,由 x1,x2>=0 和 10*x1+20*x2=150 可知 0=x2=7.5
    """
    ProbLP2 = pulp.LpProblem("ProbLP2", sense=pulp.LpMaximize)    # 定義問題 2,求最大值
    x1 = pulp.LpVariable('x1', lowBound=0, upBound=8, cat='Continuous')  # 定義 x1
    x2 = pulp.LpVariable('x2', lowBound=0, upBound=7.5, cat='Continuous')  # 定義 x2
    x3 = pulp.LpVariable('x3', lowBound=0, cat='Continuous')  # 定義 x3
    ProbLP2 += (10*x1 + 9*x2 - x3)  # 設(shè)置目標(biāo)函數(shù) f(x)
    ProbLP2 += (6*x1 + 5*x2 - 1.25*x3 = 60)  # 不等式約束
    ProbLP2 += (10*x1 + 20*x2 = 150)  # 不等式約束
    ProbLP2.solve()
    print(ProbLP2.name)  # 輸出求解狀態(tài)
    print("Status  youcans:", pulp.LpStatus[ProbLP2.status])  # 輸出求解狀態(tài)
    for v in ProbLP2.variables():
        print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
    print("F2(x) =", pulp.value(ProbLP2.objective))  # 輸出最優(yōu)解的目標(biāo)函數(shù)值

    # 問題 3:整數(shù)規(guī)劃問題
    """
    問題建模:
        決策變量:
            x1:甲飲料產(chǎn)量,正整數(shù)(單位:百箱)
            x2:乙飲料產(chǎn)量,正整數(shù)(單位:百箱)
        目標(biāo)函數(shù):
            max fx = 10*x1 + 9*x2
        約束條件:
            6*x1 + 5*x2 = 60
            10*x1 + 20*x2 = 150
            x1, x2 >= 0,x1 = 8,x1, x2 為整數(shù)
    此外,由 x1,x2>=0 和 10*x1+20*x2=150 可知 0=x2=7.5
    """
    ProbLP3 = pulp.LpProblem("ProbLP3", sense=pulp.LpMaximize)  # 定義問題 3,求最大值
    print(ProbLP3.name)  # 輸出求解狀態(tài)
    x1 = pulp.LpVariable('x1', lowBound=0, upBound=8, cat='Integer')  # 定義 x1,變量類型:整數(shù)
    x2 = pulp.LpVariable('x2', lowBound=0, upBound=7.5, cat='Integer')  # 定義 x2,變量類型:整數(shù)
    ProbLP3 += (10 * x1 + 9 * x2)  # 設(shè)置目標(biāo)函數(shù) f(x)
    ProbLP3 += (6 * x1 + 5 * x2 = 60)  # 不等式約束
    ProbLP3 += (10 * x1 + 20 * x2 = 150)  # 不等式約束
    ProbLP3.solve()
    print("Shan Status:", pulp.LpStatus[ProbLP3.status])  # 輸出求解狀態(tài)
    for v in ProbLP3.variables():
        print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
    print("F3(x) =", pulp.value(ProbLP3.objective))  # 輸出最優(yōu)解的目標(biāo)函數(shù)值


    # 問題 4:
    """
    問題建模:
        決策變量:
            x1:甲飲料產(chǎn)量,正整數(shù)(單位:百箱)
            x2:乙飲料產(chǎn)量,正整數(shù)(單位:百箱)
            x3:增加投資(單位:萬(wàn)元)
        目標(biāo)函數(shù):
            max fx = 10*x1 + 9*x2 - x3
        約束條件:
            6*x1 + 5*x2 = 60 + x3/0.8
            10*x1 + 20*x2 = 150
            x1, x2, x3 >= 0,x1 = 8,x1, x2 為整數(shù)
    此外,由 x1,x2>=0 和 10*x1+20*x2=150 可知 0=x2=7.5
    """
    ProbLP4 = pulp.LpProblem("ProbLP4", sense=pulp.LpMaximize)  # 定義問題 4,求最大值
    print(ProbLP4.name)  # 輸出求解狀態(tài)
    x1 = pulp.LpVariable('x1', lowBound=0, upBound=8, cat='Integer')  # 定義 x1,變量類型:整數(shù)
    x2 = pulp.LpVariable('x2', lowBound=0, upBound=7, cat='Integer')  # 定義 x2,變量類型:整數(shù)
    x3 = pulp.LpVariable('x3', lowBound=0, cat='Continuous')  # 定義 x3
    ProbLP4 += (10*x1 + 9*x2 - x3)  # 設(shè)置目標(biāo)函數(shù) f(x)
    ProbLP4 += (6*x1 + 5*x2 - 1.25*x3 = 60)  # 不等式約束
    ProbLP4 += (10*x1 + 20*x2 = 150)  # 不等式約束
    ProbLP4.solve()
    print("Shan Status:", pulp.LpStatus[ProbLP4.status])  # 輸出求解狀態(tài)
    for v in ProbLP4.variables():
        print(v.name, "=", v.varValue)  # 輸出每個(gè)變量的最優(yōu)值
    print("F4(x) =", pulp.value(ProbLP4.objective))  # 輸出最優(yōu)解的目標(biāo)函數(shù)值

    return

if __name__ == '__main__':  # Copyright 2021 YouCans, XUPT
    main()  

3.4、Python 例程運(yùn)行結(jié)果

Welcome to the CBC MILP Solver 

Version: 2.9.0 

Build Date: Feb 12 2015 

ProbLP1

Status: Optimal

x1 = 6.4285714

x2 = 4.2857143

F1(x) = 102.8571427

ProbLP2

Status: Optimal

x1 = 8.0

x2 = 3.5

x3 = 4.4

F2(x) = 107.1

ProbLP3

Result - Optimal solution found

Status Shan: Optimal

Status: Optimal

x1 = 8.0

x2 = 2.0

F3(x) = 98.0

ProbLP4

Result - Optimal solution found

Status: Optimal

x1 = 8.0

x2 = 3.0

x3 = 2.4

F4(x) = 104.6

以上就是淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃的詳細(xì)內(nèi)容,更多關(guān)于Python 數(shù)學(xué)建模 整數(shù)規(guī)劃的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 淺談Python數(shù)學(xué)建模之?dāng)?shù)據(jù)導(dǎo)入
  • 淺談Python數(shù)學(xué)建模之線性規(guī)劃
  • Python進(jìn)行統(tǒng)計(jì)建模
  • 利用python實(shí)現(xiàn)平穩(wěn)時(shí)間序列的建模方式
  • python實(shí)現(xiàn)數(shù)據(jù)分析與建模
  • 淺談Python數(shù)學(xué)建模之固定費(fèi)用問題

標(biāo)簽:安慶 泉州 吉林 怒江 清遠(yuǎn) 岳陽(yáng) 長(zhǎng)春 洛陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃》,本文關(guān)鍵詞  淺談,Python,數(shù)學(xué)建模,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于淺談Python數(shù)學(xué)建模之整數(shù)規(guī)劃的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    三级在线免费观看| 美女网站在线| 久久国产精品久久精品国产| 国产欧美高清视频在线| 天天操夜夜草| 91在线视频网址| 伊人天天综合| 在线看的片片片免费| 99中文字幕一区| 国产91精品网站| 成人中心免费视频| 你懂的在线免费观看| 美女精品自拍一二三四| 天天鲁一鲁摸一摸爽一爽| 91嫩草国产线观看亚洲一区二区| 欧美黄色激情| 久久久久久九九九九| 国产视频不卡一区| 波多野结衣视频一区| 国产一级aa大片毛片| 毛片视频免费观看| 色综合视频一区二区三区44| 九色porny丨首页入口在线| 色噜噜狠狠色综合中国| 第一av在线| 开心丁香婷婷深爱五月| 天堂av.com| 亚洲一区二区观看| 久久一区二区三| 欧美三级一区二区三区| 95精品视频在线| 成人羞羞视频免费看看| 日本女人高潮视频| 色欲AV无码精品一区二区久久| 伦理一区二区三区| 亚洲欧美综合在线观看| 蜜乳av另类精品一区二区| 国内揄拍国内精品| 国产美女av一区二区三区| 亚洲成人av在线影院| 亚洲自拍偷拍网| 麻豆91在线播放免费| 污视频网站在线| 妞干网2018| 日韩一二三在线视频播| 一本一道无码中文字幕精品热| 亚洲永久免费观看| 亚洲精品日产| 农村老熟妇乱子伦视频| 青青草av在线播放| 中文在线字幕在线观看| 欧美风情第一页| 中文字幕在线观看视频www| 欧美精品二区| 亚洲成年人av| 欧美视频精品全部免费观看| 国产mv久久久| 中文字幕在线观看日| 亚洲一区高清| 一级片免费在线| 九色精品美女在线| 中文字幕成人一区| 国产a级片免费观看| 一本色道久久88| 综合欧美亚洲日本| 国产私拍一区| 久久久久99精品国产片| 欧美在线观看视频网站| 免费av福利在线观看| 91超碰国产精品| 国产又粗又黄又爽视频| 亚洲一区二区三区中文字幕| 国产精品丝袜高跟| 最新av电影网站| 中日韩精品视频在线观看| 国产激情999| 一区二区三区电影网| 日韩欧美在线影院| 夜色资源网av在先锋网站观看| 久久久久久久色| 亚洲午夜av久久乱码| 又黄又爽在线观看| 国产精品二区三区四区| 亚洲免费在线视频一区 二区| 91九色对白| 在线免费看黄视频| 国产1卡2卡三卡四卡网站| 日本精品久久久久| 欧美一区二区视频在线播放| 精品久久久久久久大神国产| 五月天亚洲色图| 综合五月婷婷| 日韩电影免费观看在线观看| 殴美一级黄色片| 不卡电影免费在线播放一区| 日日夜夜精品网站| 欧洲vs亚洲vs国产| 久久99久久人婷婷精品综合| 成人高潮成人免费观看| 午夜精品一区二区三区免费视频| 99麻豆久久久国产精品免费优播| 136福利第一导航国产在线| 99re在线视频| 欧美性感美女h网站在线观看免费| 日韩Av无码精品| 熟女少妇精品一区二区| 久久综合九色综合久| 日韩理论电影大全| 亚洲999一在线观看www| 亚洲免费观看高清完整版在线观看熊| 精品人妻一区二区三区麻豆91| 亚洲综合激情| 精品久久久中文| 色综合久久天天| 日韩av在线免费播放| 午夜成人鲁丝片午夜精品| 亚洲欧美日韩国产综合精品二区| 亚洲国产欧美精品| 欧美一级片在线免费观看| 日韩在线观看电影完整版高清免费| 欧美中文字幕在线| 草草浮力影院| www..com国产| 1769免费视频在线观看| 国产精品成人**免费视频| 中文字幕日韩一级| 亚洲美女在线国产| 亚洲国产综合久久| www.日韩一区| 色婷婷综合在线观看| 不卡免费追剧大全电视剧网站| 男人的天堂va免费视频| 午夜dj在线观看高清视频完整版| 中文字幕一区二区三区波野结| 97最新国自产拍视频在线完整在线看| 天天色综合天天| 亚洲精品免费在线观看视频| 国产又粗又硬视频| 91精品久久久久久| 99成人免费视频| 国产午夜精品无码一区二区| 精品人妻一区二区三区日产| 国产成+人+日韩+欧美+亚洲| 欧美不卡视频一区发布| 围产精品久久久久久久| 综合成人在线| 男生裸体视频网站| 久久亚洲色图| 国产欧美日韩影院| 亚洲www免费| 中文字幕的av| 豆国产97在线| 欧美乱大交xxxxx潮喷l头像| 色爱综合区网| 国产偷国产偷亚洲高清97cao| 成人久久电影| 2020国产精品久久精品不卡| av大全在线观看| 国产在线二区| 天天干天天玩天天操| 亚洲成人av免费看| 国产乱子伦精品视频| 久久九九99| 国产成人97精品免费看片| 日韩欧美午夜| 国产69精品久久久久777| 高清一区二区视频| 国产中文字幕91| 免费vip影院| 国产欧美一区二区三区久久| 国产精品久久久久久超碰| 在线视频第一页| 丝袜国产免费观看| jizzjizz免费| 俄罗斯男人又粗又大| 91国产在线播放| 中文字幕色婷婷在线视频| 最近2019好看的中文字幕免费| 国产精品亚洲午夜一区二区三区| 中文在线手机av| 色综合久久久久综合一本到桃花网| 美女又黄又免费| jizzjizzjizzjizz日本老师| 福利一区福利二区| caoporn视频在线观看| 国产大学生av| 色诱女教师一区二区三区| 国产精品久久久久久久久动漫| 精品视频一二三| 91成人国产精品| 欧美一级午夜免费电影| sm捆绑调教视频| 尤物精品国产第一福利三区| 欧美精品日韩一区| 久久精品免费av| 午夜免费福利在线| 中文永久免费观看| 精品久久久久中文慕人妻| 青草青草久热精品视频在线观看| 国产精品三区四区| 久久午夜色播影院免费高清| sm捆绑调教视频| 久久精品国产sm调教网站演员| 三上悠亚在线观看视频| 9797在线看片亚洲精品| 男女午夜激情视频| 欧美一区二区三区免费观看| 四虎影成人精品a片| 国产精品电影一区二区三区| 精品视频久久久久久久| 免费的黄色片| 色婷婷精品久久二区二区密| 亚洲丝袜精品丝袜在线| 精品资源在线| 动漫av在线免费观看| www99xav| 亚洲国产另类久久久精品极度| 国产在线免费看| 亚洲精品一区三区三区在线观看| 九色视频网站在线观看| 精品午夜一区二区三区| 国产中文第一页| 成人av在线播放网址| 国产成人久久久精品一区| 国产精品1区2区3区4区| 四虎影视在线观看2413| 国产精品每日更新在线播放网址| 国语自产精品视频在线看8查询8| 美女av一区二区三区| 日韩av手机在线观看| 久久亚洲一区二区三区四区| 精品精品国产高清一毛片一天堂| 精品人妻无码一区二区色欲产成人| 亚洲国产aⅴ天堂久久| 91午夜在线播放| 美女被人操视频在线观看| 欧美www视频在线观看| 久久99精品久久久水蜜桃| 亚洲免费观看高清完整版在线观| av亚洲一区| 高清1区2区| 日韩久久99| 欧美黄色免费在线观看| 久久久久久久精| 色天堂在线视频| 久久高清国产| 国产suv精品一区二区33| 日本免费高清视频| 日韩免费av片| 在线免费观看av电影| 女人公敌韩国| 日韩美女网站| 国内精品一区二区三区四区| 国产亚洲精品免费| 九草视频在线观看| 亚洲大片一区二区三区| 超碰国产在线| 青青操在线视频| 亚洲色图偷拍视频| 亚洲国产精品一区二区www在线| 伊人免费在线观看高清版| 国产麻豆精品久久| 免费毛片一区二区三区| 开心色怡人综合网站| 91蜜桃视频在线观看| 被黑人猛躁10次高潮视频| 99久久99九九99九九九| 香蕉人人精品| 中文字幕の友人北条麻妃| 欧美激情videoshd| 精品黑人一区二区三区在线观看| av国产精品| 青青草视频在线青草免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 无遮挡爽大片在线观看视频| 日韩免费视频网站| 欧美在线视频网| 久久偷看各类女兵18女厕嘘嘘| 日韩福利视频导航| 黄色电影在线免费观看| 天堂网av成人| 亚洲精品自拍区在线观看| 国产精品亚洲一区二区在线观看| 日本中文不卡| 91香蕉国产在线观看| 日韩国产中文字幕| 男人操女人免费网站| 欧美日本一道| 麻豆一区在线观看| 国模精品一区二区三区色天香| 国产精品久久久99| 欧美 日韩 国产 成人 在线 91| 久久久久在线视频| 美国av在线播放| 国产日本一区二区| 欧美精品v日韩精品v韩国精品v| 日韩视频免费播放| 久久精品视频播放| 亚洲精品美女在线| 国产高潮流白浆| 国产欧美88| 亚洲经典一区二区三区| 国产福利精品一区二区| 欧美视频一区二区三区| 激情综合网五月天| 精品国产av无码一区二区三区| 亚洲在线一区二区| 国产一区二区三区成人| 免费成人黄色大片| 一区二区三区四区视频在线| 欧美成人免费高清视频| 欧美亚洲韩国| 欧美天天综合| 2018中文字幕在线观看| 日本成人一区二区三区| 国产成人精品一区二区三区在线| 校园春色 亚洲色图| 天堂久久一区二区三区| 午夜久久久久久久久久一区二区| www.桃色.com| 99青草视频在线播放视| 色av男人的天堂免费在线| 国产三级生活片| 日本va欧美va精品发布| 久草视频在线播放| 日本大胆人体视频| 国产91丝袜在线播放| 一级日韩一区在线观看|