Stack Exchange network consists of 183 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
This function does not map 1 -> 1. In fact, f -> 1 as x -> ∞. Depending on k the value of f at x=1 may be quite small, but it will never be exactly 0. In fact, that is the main reason for using e^... in the denominator, i.e. so that the relevant domain is [0,∞) instead of [0,1].
You can add an extra level of adjustment so that you can tune the position at which the function is equal to .5 by using y=1/(1+(x^r/(1-x^r))^-b). Then, to attain y=.5 at x0 set r=-log(2)/log(x0). Or, if you want to ensure that y=k for some k between 0 and 1 at x=x0 then set r=-log((1/k - 1)^(1/b)+1)/log(x0)