Şansal Birbaş, 23.02.2011 07:34:
I needed to find the cheapest combination among given data and I developed an
algorithm for this task. It works correctly. But it takes much time (nearly 2
minutes) for second function to find the result while it is just
one second for the first function. How can I improve the calculation speed?
[...]
for i in range(1,5):
for j in i*range(max_expander+1):
for k in i*range(max_expander+1):
for m in i*range(max_expander+1):
for r in i*range(max_expander+1):
if (j+k+m+r)<=(i*max_expander):
mevcut=zeros((1,5))
mevcut+=X*i
mevcut+=Y*j
mevcut+=Z*k
mevcut+=T*m
mevcut+=W*r
m_UI=mevcut[0][0]
m_UO=mevcut[0][1]
m_AO=mevcut[0][2]
m_BO=mevcut[0][3]
i_AI=istenen[0]
i_AO=istenen[1]
i_BI=istenen[2]
i_BO=istenen[3]
if (m_UI>=(i_AI+i_BI)):
if ((m_BO>=i_BO)):
kalanUO=m_UO
elif ((m_UO+m_BO)>=i_BO):
kalanUO=(m_UO+m_BO)-i_BO
if ((kalanUO+m_AO)>=i_AO):
temp=[]
temp.append(i)
temp.append(j)
temp.append(k)
temp.append(m)
temp.append(r)
fiyat=i*X[4]+j*Y[4]+k*Z[4]+m*T[4]+r*W[4]
temp.append(fiyat)
combinations.append(temp)
For this kind of computation, Cython is usually much faster than NumPy by
itself.
http://cython.org/
http://docs.cython.org/src/tutorial/numpy.html
http://docs.cython.org/src/userguide/numpy_tutorial.html
Stefan
--
http://mail.python.org/mailman/listinfo/python-list