2011-10-11 9 views
11

के साथ उपयोग कर पाइथन पल्प मैं मैटलैब के वर्षों और वर्षों के बाद भी पाइथन के लिए बहुत नया हूं। मैं एक पूर्णांक रैखिक कार्यक्रम स्थापित करने के लिए पल्प का उपयोग करने की कोशिश कर रहा हूं।मैट्रिस

संख्या की एक सरणी को देखते हुए:

{P[i]:i=1...N} 

मैं अधिकतम करना चाहते हैं:

sum(x_i P_i) 

बाधाओं

A x <= b 
A_eq x = b_eq 

गुना (वेक्टर आधारित सीमा)

साथ के अधीन
LB <= x <= UB 

लुगदी में हालांकि, मुझे नहीं लगता कि वेक्टर घोषणाओं को सही तरीके से कैसे करें। मैं उपयोग कर रहा था:

RANGE = range(numpy.size(P)) 
x = pulp.LpVariable.dicts("x", LB_ind, UB_ind, "Integer") 

जहां मैं केवल व्यक्तिगत सीमाएं (इसलिए केवल 1 संख्या) दर्ज कर सकता हूं।

prob = pulp.LpProblem("Test", pulp.LpMaximize) 
prob += pulp.lpSum([Prices[i]*Dispatch[i] for i in RANGE]) 

और बाधाओं के लिए, मैं वास्तव में प्रत्येक पंक्ति में इस लाइन क्या करना होगा? ऐसा लगता है कि मुझे कुछ याद आ रही है। मैं कुछ मदद की सराहना करता हूं। दस्तावेज़ीकरण एक संक्षिप्त उदाहरण पर चर्चा करता है। मेरे मामले में चर की संख्या कुछ हज़ार है।

+0

जैसा कि मुझे पुलप में याद है, आपको प्रत्येक बाधा को व्यक्तिगत रूप से (लाइन-बाय-लाइन) जोड़ना होगा। – arboc7

+0

मेरे पास एक ही सवाल है। मुझे पता है कि यह पुराना है। मैं एक संतोषजनक उत्तर की सराहना करता हूं! –

उत्तर

2

प्रारंभिकरण के बाद आप चर पर बाउंड और अपबाउंड सेट कर सकते हैं। आप

LB[i] <= x[i] <= UB[i] 
निम्नलिखित कोड के साथ

साथ चर की एक सरणी बना सकते हैं।

x = pulp.LpVariable.dicts("x", RANGE, cat="Integer") 
for i in x.viewkeys(): 
    x[i].lowBound = LB_ind[i] 
    x[i].upBound = UB_ind[i] 

LpVariable.dict का दूसरा पैरामीटर निर्णय चर के सूचकांक सेट है, न कि उनकी निचली सीमाएं।

संबंधित मुद्दे