Это определенно проблема линейного программирования - ее часто называют проблемой диеты.Как сказал Хью Ботвелл, посмотрите на 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)