# -*- 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...