Python Pulp
1、問題描述
某廠生產(chǎn)甲乙兩種飲料,每百箱甲飲料需用原料6千克、工人10名,獲利10萬元;每百箱乙飲料需用原料5千克、工人20名,獲利9萬元。
今工廠共有原料60千克、工人150名,又由于其他條件所限甲飲料產(chǎn)量不超過8百箱。
(1)問如何安排生產(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?
(2)若投資0.8萬元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?
(3)若每百箱甲飲料獲利可增加1萬元,是否應(yīng)否改變生產(chǎn)計(jì)劃?
(4)若每百箱甲飲料獲利可增加1萬元,若投資0.8萬元可增加原料1千克,是否應(yīng)作這項(xiàng)投資?投資多少合理?
(5)若不允許散箱(按整百箱生產(chǎn)),如何安排生產(chǎn)計(jì)劃,即兩種飲料各生產(chǎn)多少使獲利最大?
2、用PuLP 庫求解線性規(guī)劃
2.1 問題
(1)數(shù)學(xué)建模
設(shè) 生產(chǎn)甲 X箱,乙 Y箱
Objective:max 100000*X + 90000*Y Constraint:
1) 原料:6*X + 5*Y
60
2) 工人:10*X + 20*Y
150
3) 甲箱數(shù)不超過800:X
800
4) X,Y
0
5) X,Y
int
(2)PuLP建模求解
problem1 = LpProblem('Problem1LP',LpMaximize)#定義線性規(guī)劃問題本身 x = LpVariable('x',lowBound= 0, upBound= 800, cat= 'Continuous')#定義變量X代表制造甲的箱數(shù) y = LpVariable('y',lowBound=0, cat = 'Continuous') problem1 += (100000*x + 90000*y) #目標(biāo)函數(shù) problem1 += (6*x + 5*y) <= 60 problem1 += (10*x + 20*y) <= 150 problem1.solve()#response 為1 print(problem1.name) #輸出求解狀態(tài) print('Status:', LpStatus[problem1.status])#輸出求解狀態(tài) #Problem1LP #Status: Optimal for v in problem1.variables(): print(v.name, "=", v.varValue) # 輸出每個(gè)變量的最優(yōu)值 print("F1(x)=", pulp.value(problem1.objective)) # 輸出最優(yōu)解的目標(biāo)函數(shù)值 #x = 6.4285714 #y = 4.2857143 #F1(x)= 1028571.427