python pulp包求解整數線性規劃和線性規劃

2021-08-15 10:21:49 字數 1244 閱讀 5542

# -*- coding: utf-8 -*-

import pulp as pulp

defsolve_ilp

(objective , constraints) :

print objective

print constraints

prob = pulp.lpproblem('lp1' , pulp.lpmaximize)

prob += objective

for cons in constraints :

prob += cons

print prob

status = prob.solve()

if status != 1 :

#print 'status'

#print status

return

none

else :

#return [v.varvalue.real for v in prob.variables()]

return [v.varvalue.real for v in prob.variables()]

#解如下整數線性規劃

#maximize z = c*x = 3*x1 + 4*x2 + 5*x3

#subject to :

#x1 2 3 >= 0

#x1 + 2*x2 < 20

#x2 + 3*x3 <= 40

v_num = 3

#變數,直接設定下限

variables = [pulp.lpvariable('x%d'%i , lowbound = 0 , cat = pulp.lpinteger) for i in range(0 , v_num)]

#目標函式

c = [3 , 4 , 5]

objective = sum([c[i]*variables[i] for i in range(0 , v_num)])

#約束條件

constraints =

a1 = [1 , 2 , 0]

a2 = [0 , 1 , 3]

print constraints

res = solve_ilp(objective , constraints)

print res

約束條件中的不等式只支援》=或<=,不支援《和》

如果是解線性規劃只需要在生成變數時cat = pulp.lpcontinuous

凸包問題求解

什麼是凸包呢?凸包 convex hull 是乙個計算幾何 圖形學 中的概念。在乙個實數 向量空間v中,對於給定集合x,所有包含x的凸集的交集s被稱為x的凸包。x的凸包可以用x內所有點 x1,xn 的凸組合來構造.在二維歐幾里得空間中,凸包可想象為一條剛好包著所有點的橡皮圈。用不嚴謹的話來講,給定二...

遞迴求解整數劃分問題

定義乙個陣列dnum用來儲存乙個劃分中的每個數,用show函式來對一次劃分進行一次輸出,運用遞迴的方法進行整數的劃分,遞迴的時時候考慮5種情況,分別是nm 1,n 1 m和 0 subject 計算機演算法設計與分析 title 整數劃分問題 輸出乙個整數的所有劃分並統計總劃分數 coder lea...

揹包問題的求解

1 問題描述 假設有乙個能裝入總體積為t的揹包和n件體積分別為w1,w2,wn的物品,能否從n件物品中挑選若干件恰好裝滿揹包,即使w1 w2 wm t,要求找出所有滿足上述條件的解。2 設計功能要求 例如 當t 10,各件物品的體積時,可找到下列4組解 1,4,3,2 1,4,5 8,2 3,5,2...