Fitting with funtional parameter constraints in Python
Like James Phillips, I was going to suggest SciPy's curve_fit.  But the way that you have defined your function, one of the constraints is on the function itself, and SciPy's bounds are defined only in terms of input variables.
What, exactly, are the forms of your functions?  Can you transform them so that you can use a standard definition of bounds, and then reverse the transformation to give a function in the original form that you wanted?
I have encountered a related problem when trying to fit exponential regressions using SciPy's curve_fit.  The parameter search algorithms vary in a linear fashion, and it's really easy to fail to establish a gradient.  If I write a function which fits the logarithm of the function I want, it's much easier to make curve_fit work.  Then, for my final work, I take the exponent of my fitted function.
This same strategy could work for you.  Predict ln(y).  The value of that function can be unbounded.  Then for your final result, output exp(ln(y)) = y.
I have some data {x_i,y_i} and I want to fit a model function y=f(x,a,b,c) to find the best fitting values of the parameters (a,b,c); however, the three of them are not totally independent but constraints to 1<b , 0<=c<1 and g(a,b,c)>0, where g is a "good" function. How could I implement this in Python since with curve_fit one cannot put the parametric constraints directly?
I have been reading with lmfit but I only see numerical constraints like 1<b, 0<=c<1 and not the one with g(a,b,c)>0, which is the most important.