2011-02-24 71 views
3

我想为动物饲养做一个饲料优化计算,但我是一个在Python编码方面的新手。排序蟒蛇总数和尊重标准的数字算法

实际上,我试图实现的是计算n个成分的组合较低的组合,它们提供了足够多的A和B准则。

我的问题是,当配料数量开始上升,python挂在计算。那么有没有办法让Python使用更多的内存或更好的算法,或者已经有了可用于这些计算的软件包。我搜索网络的答案,但也许这个特定的问题有一个数学名称,我不知道。

我现在正在做的:

  1. 创建成分矩阵:每个 成分都有一个名字,然后 P,A,B,C,d ......其中P是价格 和A ,B,C ...是 不同营养元素的值
  2. 创建限制矩阵:每个元素都有总混合的最小值和最大值。
  3. 创建目标矢量:我现在想要获得的是A = X矢量和B = Y矢量,但是我想在将来指定C,D等。
  4. 然后,我计算所有可能的成分总和(通常为1000)和k组成成分的组合。
  5. 删除不符合限制矩阵组合,以获得可用的组合矩阵
  6. 乘以组合矩阵配料矩阵得到最终组成矩阵
  7. 在不构成矩阵删除所有值拟合标准A和B的目标向量。
  8. 按价格对结果列表进行排序并给出结果。

我对这些操作中的大多数都使用Numpy。

该方法(据我所知)不能是一个简单的线性代数问题,因为有时不会有完美的解决方案,这就是为什么首先采用数值方法。

感谢

+0

你的问题可以被视为线性编程问题(http://en.wikipedia.org/wiki/Linear_programming)? – unutbu 2011-02-24 15:22:08

+0

我们在这里谈论的有多少食材?另外,如果我能看到代码,我会发现它更容易帮助。如果时间不长,您可以考虑发布您迄今为止所写的内容。 – senderle 2011-02-24 15:31:30

+0

最多使用约20至30种不同成分,最大使用量约为15-20个标准。虽然典型的用途将与约10成分和4-5标准。它仍然可以扩展到庞大的数字运算,因为它基于1/1000精度。 – Carpincho 2011-02-25 11:28:09

回答

1

我想你应该看scipy.optimize - 它会很愉快地处理numpy的阵列,通常是相当快的。见参考文献http://docs.scipy.org/doc/scipy-0.8.x/reference/tutorial/optimize.html

如果你有一个输入矢量指定每种成分的量和成分矩阵指定每种成分的价格和营养价值,然后AI应该给你给定混合物的总价格和营养价值。

现在,您需要的任何数量的评价函数进行规范化一个(以尽可能低的恒定,使得所有的营养价值至少他们的最低要求值相乘的话),并返回总价,加上陡峭的处罚超过最大值的营养素,加上对大量成分的较小惩罚。优化器随后用起着(同时保持所有的值> = 0)到评价函数的结果最小化。

+0

感谢您的快速回答,我一定会检查它。再次 – Carpincho 2011-02-25 11:25:36

1

这绝对是一个线性规划问题---它通常被称为饮食问题。正如休·博斯韦尔说的看scipy.optimize。下面应该让你开始,

from scipy import array,dot 
from scipy.optimize import fmin_slsqp as fmin 

c = array([173.0,184.0,167.0]) # cost or prices 
b = array([0.1,0.1,0.1])   # lower nutrient bounds 
A = array([[ 0.39, 0.09, 0.77], # nutrient composition 
      [ 0.75, 0.32, 0.15], 
      [ 0.32, 0.76, 0.65]]) 

x = array([0.5,0.5,0.5])   # initial guess 

def obj(x): 
    # I'm the objective function 
    return dot(c,x) 

def con(x): 
    # I'm the inequality constraints 
    return dot(A,x) - b 

print fmin(obj,x,f_ieqcons=con) 
+0

谢谢,我会检查到scipy.optimize,这将需要更多的时间,我尝试一下比你们回答我,但是当它完成我会发布一些意见。 – Carpincho 2011-02-25 11:27:14

+0

@Carpincho另一种有用的溶液可以找到[这里](http://stackoverflow.com/questions/5179889/optimization-problem-in-python),或者看[纸浆(HTTPS://www.coin- or.org/PuLP/CaseStudies/a_blending_problem.html)文档。 – lafras 2011-03-03 12:43:44